From a297bfdbb9a48e593263b9041c89b9652651b191 Mon Sep 17 00:00:00 2001 From: cby3149 Date: Wed, 5 Jul 2023 09:50:09 -0700 Subject: [PATCH 1/8] Add seq and historical RPC endpoints --- cmd/erigon-el/backend/backend.go | 44 +++++++++-- cmd/rpcdaemon/cli/config.go | 4 + cmd/rpcdaemon/cli/httpcfg/http_cfg.go | 5 ++ cmd/rpcdaemon/commands/call_traces_test.go | 8 +- .../commands/corner_cases_support_test.go | 2 +- cmd/rpcdaemon/commands/daemon.go | 8 +- cmd/rpcdaemon/commands/debug_api_test.go | 16 ++-- .../commands/erigon_receipts_test.go | 8 +- cmd/rpcdaemon/commands/eth_accounts.go | 75 +++++++++++++++++++ cmd/rpcdaemon/commands/eth_api.go | 22 +++++- cmd/rpcdaemon/commands/eth_api_test.go | 24 +++--- cmd/rpcdaemon/commands/eth_block_test.go | 22 +++--- cmd/rpcdaemon/commands/eth_call.go | 17 ++++- cmd/rpcdaemon/commands/eth_callMany_test.go | 2 +- cmd/rpcdaemon/commands/eth_call_test.go | 18 ++--- cmd/rpcdaemon/commands/eth_filters_test.go | 2 +- cmd/rpcdaemon/commands/eth_mining_test.go | 2 +- cmd/rpcdaemon/commands/eth_system_test.go | 2 +- cmd/rpcdaemon/commands/gen_traces_test.go | 9 ++- .../otterscan_contract_creator_test.go | 2 +- .../otterscan_search_backward_test.go | 2 +- ...an_transaction_by_sender_and_nonce_test.go | 2 +- cmd/rpcdaemon/commands/send_transaction.go | 7 ++ .../commands/send_transaction_test.go | 2 +- cmd/rpcdaemon/commands/trace_adhoc_test.go | 8 +- cmd/rpcdaemon/commands/txpool_api_test.go | 2 +- cmd/rpcdaemon/main.go | 30 +++++++- cmd/utils/flags.go | 33 ++++++++ eth/backend.go | 32 ++++++-- eth/ethconfig/config.go | 5 ++ rpc/errors.go | 10 +++ rpc/rpccfg/rpccfg.go | 2 + turbo/cli/default_flags.go | 4 + turbo/cli/flags.go | 4 + 34 files changed, 348 insertions(+), 87 deletions(-) diff --git a/cmd/erigon-el/backend/backend.go b/cmd/erigon-el/backend/backend.go index 94453696884..5c988031c77 100644 --- a/cmd/erigon-el/backend/backend.go +++ b/cmd/erigon-el/backend/backend.go @@ -119,12 +119,14 @@ type Ethereum struct { networkID uint64 - lock sync.RWMutex // Protects the variadic fields (e.g. gas price and etherbase) - chainConfig *chain.Config - genesisHash libcommon.Hash - miningSealingQuit chan struct{} - pendingBlocks chan *types.Block - minedBlocks chan *types.Block + lock sync.RWMutex // Protects the variadic fields (e.g. gas price and etherbase) + chainConfig *chain.Config + genesisHash libcommon.Hash + seqRPCService *rpc.Client + historicalRPCService *rpc.Client + miningSealingQuit chan struct{} + pendingBlocks chan *types.Block + minedBlocks chan *types.Block // downloader fields sentryCtx context.Context @@ -482,6 +484,26 @@ func NewBackend(stack *node.Node, config *ethconfig.Config, logger log.Logger) ( backend.pendingBlocks = miner.PendingResultCh backend.minedBlocks = miner.MiningResultCh + // Setup sequencer and hsistorical RPC relay services + if config.RollupSequencerHTTP != "" { + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + client, err := rpc.DialContext(ctx, config.RollupSequencerHTTP, logger) + cancel() + if err != nil { + return nil, err + } + backend.seqRPCService = client + } + if config.RollupHistoricalRPC != "" { + ctx, cancel := context.WithTimeout(context.Background(), config.RollupHistoricalRPCTimeout) + client, err := rpc.DialContext(ctx, config.RollupHistoricalRPC, logger) + cancel() + if err != nil { + return nil, err + } + backend.historicalRPCService = client + } + // proof-of-work mining mining := stagedsync.New( stagedsync.MiningStages(backend.sentryCtx, @@ -672,8 +694,8 @@ func NewBackend(stack *node.Node, config *ethconfig.Config, logger log.Logger) ( if casted, ok := backend.engine.(*bor.Bor); ok { borDb = casted.DB } - apiList := commands.APIList(chainKv, borDb, ethRpcClient, txPoolRpcClient, miningRpcClient, ff, stateCache, backend.blockReader, backend.agg, httpRpcCfg, backend.engine, logger) - authApiList := commands.AuthAPIList(chainKv, ethRpcClient, txPoolRpcClient, miningRpcClient, ff, stateCache, backend.blockReader, backend.agg, httpRpcCfg, backend.engine, logger) + apiList := commands.APIList(chainKv, borDb, ethRpcClient, txPoolRpcClient, miningRpcClient, ff, stateCache, backend.blockReader, backend.agg, httpRpcCfg, backend.engine, backend.seqRPCService, backend.historicalRPCService, logger) + authApiList := commands.AuthAPIList(chainKv, ethRpcClient, txPoolRpcClient, miningRpcClient, ff, stateCache, backend.blockReader, backend.agg, httpRpcCfg, backend.engine, backend.seqRPCService, backend.historicalRPCService, logger) go func() { if err := cli.StartRpcServer(ctx, httpRpcCfg, apiList, authApiList, logger); err != nil { logger.Error(err.Error()) @@ -1011,6 +1033,12 @@ func (s *Ethereum) Stop() error { if s.agg != nil { s.agg.Close() } + if s.seqRPCService != nil { + s.seqRPCService.Close() + } + if s.historicalRPCService != nil { + s.historicalRPCService.Close() + } s.chainDB.Close() return nil } diff --git a/cmd/rpcdaemon/cli/config.go b/cmd/rpcdaemon/cli/config.go index ddb8ea56bd0..61f2cf5f31f 100644 --- a/cmd/rpcdaemon/cli/config.go +++ b/cmd/rpcdaemon/cli/config.go @@ -121,6 +121,10 @@ func RootCommand() (*cobra.Command, *httpcfg.HttpCfg) { rootCmd.PersistentFlags().IntVar(&cfg.BatchLimit, utils.RpcBatchLimit.Name, utils.RpcBatchLimit.Value, utils.RpcBatchLimit.Usage) rootCmd.PersistentFlags().IntVar(&cfg.ReturnDataLimit, utils.RpcReturnDataLimit.Name, utils.RpcReturnDataLimit.Value, utils.RpcReturnDataLimit.Usage) + rootCmd.PersistentFlags().StringVar(&cfg.RollupSequencerHTTP, utils.RollupSequencerHTTPFlag.Name, "", "HTTP endpoint for the sequencer mempool") + rootCmd.PersistentFlags().StringVar(&cfg.RollupHistoricalRPC, utils.RollupHistoricalRPCFlag.Name, "", "RPC endpoint for historical data") + rootCmd.PersistentFlags().DurationVar(&cfg.RollupHistoricalRPCTimeout, utils.RollupHistoricalRPCTimeoutFlag.Name, rpccfg.DefaultHistoricalRPCTimeout, "Timeout for historical RPC requests") + if err := rootCmd.MarkPersistentFlagFilename("rpc.accessList", "json"); err != nil { panic(err) } diff --git a/cmd/rpcdaemon/cli/httpcfg/http_cfg.go b/cmd/rpcdaemon/cli/httpcfg/http_cfg.go index fb5f4165043..e26b64720ea 100644 --- a/cmd/rpcdaemon/cli/httpcfg/http_cfg.go +++ b/cmd/rpcdaemon/cli/httpcfg/http_cfg.go @@ -64,4 +64,9 @@ type HttpCfg struct { BatchLimit int // Maximum number of requests in a batch ReturnDataLimit int // Maximum number of bytes returned from calls (like eth_call) + + RollupSequencerHTTP string + RollupHistoricalRPC string + RollupHistoricalRPCTimeout time.Duration + RollupDisableTxPoolGossip bool } diff --git a/cmd/rpcdaemon/commands/call_traces_test.go b/cmd/rpcdaemon/commands/call_traces_test.go index 0a618572c1b..520c0e5ee4f 100644 --- a/cmd/rpcdaemon/commands/call_traces_test.go +++ b/cmd/rpcdaemon/commands/call_traces_test.go @@ -55,7 +55,7 @@ func TestCallTraceOneByOne(t *testing.T) { agg := m.HistoryV3Components() br, _ := m.NewBlocksIO() api := NewTraceAPI( - NewBaseApi(nil, kvcache.New(kvcache.DefaultCoherentConfig), br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), + NewBaseApi(nil, kvcache.New(kvcache.DefaultCoherentConfig), br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, &httpcfg.HttpCfg{}) // Insert blocks 1 by 1, to tirgget possible "off by one" errors for i := 0; i < chain.Length(); i++ { @@ -103,7 +103,7 @@ func TestCallTraceUnwind(t *testing.T) { agg := m.HistoryV3Components() br, _ := m.NewBlocksIO() - api := NewTraceAPI(NewBaseApi(nil, kvcache.New(kvcache.DefaultCoherentConfig), br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, &httpcfg.HttpCfg{}) + api := NewTraceAPI(NewBaseApi(nil, kvcache.New(kvcache.DefaultCoherentConfig), br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, &httpcfg.HttpCfg{}) if err = m.InsertChain(chainA); err != nil { t.Fatalf("inserting chainA: %v", err) @@ -166,7 +166,7 @@ func TestFilterNoAddresses(t *testing.T) { } agg := m.HistoryV3Components() br, _ := m.NewBlocksIO() - api := NewTraceAPI(NewBaseApi(nil, kvcache.New(kvcache.DefaultCoherentConfig), br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, &httpcfg.HttpCfg{}) + api := NewTraceAPI(NewBaseApi(nil, kvcache.New(kvcache.DefaultCoherentConfig), br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, &httpcfg.HttpCfg{}) // Insert blocks 1 by 1, to tirgget possible "off by one" errors for i := 0; i < chain.Length(); i++ { if err = m.InsertChain(chain.Slice(i, i+1)); err != nil { @@ -192,7 +192,7 @@ func TestFilterAddressIntersection(t *testing.T) { m := stages.Mock(t) agg := m.HistoryV3Components() br, _ := m.NewBlocksIO() - api := NewTraceAPI(NewBaseApi(nil, kvcache.New(kvcache.DefaultCoherentConfig), br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, &httpcfg.HttpCfg{}) + api := NewTraceAPI(NewBaseApi(nil, kvcache.New(kvcache.DefaultCoherentConfig), br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, &httpcfg.HttpCfg{}) toAddress1, toAddress2, other := common.Address{1}, common.Address{2}, common.Address{3} diff --git a/cmd/rpcdaemon/commands/corner_cases_support_test.go b/cmd/rpcdaemon/commands/corner_cases_support_test.go index 567eff969a5..8f7476814d7 100644 --- a/cmd/rpcdaemon/commands/corner_cases_support_test.go +++ b/cmd/rpcdaemon/commands/corner_cases_support_test.go @@ -23,7 +23,7 @@ func TestNotFoundMustReturnNil(t *testing.T) { br, _ := m.NewBlocksIO() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) api := NewEthAPI( - NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), + NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) ctx := context.Background() diff --git a/cmd/rpcdaemon/commands/daemon.go b/cmd/rpcdaemon/commands/daemon.go index 9902ab6f179..7389cc68066 100644 --- a/cmd/rpcdaemon/commands/daemon.go +++ b/cmd/rpcdaemon/commands/daemon.go @@ -18,9 +18,9 @@ import ( func APIList(db kv.RoDB, borDb kv.RoDB, eth rpchelper.ApiBackend, txPool txpool.TxpoolClient, mining txpool.MiningClient, filters *rpchelper.Filters, stateCache kvcache.Cache, blockReader services.FullBlockReader, agg *libstate.AggregatorV3, cfg httpcfg.HttpCfg, engine consensus.EngineReader, - logger log.Logger, + seqRPCService, historicalRPCService *rpc.Client, logger log.Logger, ) (list []rpc.API) { - base := NewBaseApi(filters, stateCache, blockReader, agg, cfg.WithDatadir, cfg.EvmCallTimeout, engine, cfg.Dirs) + base := NewBaseApi(filters, stateCache, blockReader, agg, cfg.WithDatadir, cfg.EvmCallTimeout, engine, cfg.Dirs, seqRPCService, historicalRPCService) ethImpl := NewEthAPI(base, db, eth, txPool, mining, cfg.Gascap, cfg.ReturnDataLimit, logger) erigonImpl := NewErigonAPI(base, db, eth) txpoolImpl := NewTxPoolAPI(base, db, txPool) @@ -142,9 +142,9 @@ func AuthAPIList(db kv.RoDB, eth rpchelper.ApiBackend, txPool txpool.TxpoolClien filters *rpchelper.Filters, stateCache kvcache.Cache, blockReader services.FullBlockReader, agg *libstate.AggregatorV3, cfg httpcfg.HttpCfg, engine consensus.EngineReader, - logger log.Logger, + seqRPCService, historicalRPCService *rpc.Client, logger log.Logger, ) (list []rpc.API) { - base := NewBaseApi(filters, stateCache, blockReader, agg, cfg.WithDatadir, cfg.EvmCallTimeout, engine, cfg.Dirs) + base := NewBaseApi(filters, stateCache, blockReader, agg, cfg.WithDatadir, cfg.EvmCallTimeout, engine, cfg.Dirs, seqRPCService, historicalRPCService) ethImpl := NewEthAPI(base, db, eth, txPool, mining, cfg.Gascap, cfg.ReturnDataLimit, logger) engineImpl := NewEngineAPI(base, db, eth, cfg.InternalCL) diff --git a/cmd/rpcdaemon/commands/debug_api_test.go b/cmd/rpcdaemon/commands/debug_api_test.go index 58275080c2c..bcd58513d94 100644 --- a/cmd/rpcdaemon/commands/debug_api_test.go +++ b/cmd/rpcdaemon/commands/debug_api_test.go @@ -54,7 +54,7 @@ func TestTraceBlockByNumber(t *testing.T) { agg := m.HistoryV3Components() br, _ := m.NewBlocksIO() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - baseApi := NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs) + baseApi := NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil) ethApi := NewEthAPI(baseApi, m.DB, nil, nil, nil, 5000000, 100_000, log.New()) api := NewPrivateDebugAPI(baseApi, m.DB, 0) for _, tt := range debugTraceTransactionTests { @@ -103,7 +103,7 @@ func TestTraceBlockByHash(t *testing.T) { agg := m.HistoryV3Components() br, _ := m.NewBlocksIO() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - baseApi := NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs) + baseApi := NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil) ethApi := NewEthAPI(baseApi, m.DB, nil, nil, nil, 5000000, 100_000, log.New()) api := NewPrivateDebugAPI(baseApi, m.DB, 0) for _, tt := range debugTraceTransactionTests { @@ -139,7 +139,7 @@ func TestTraceTransaction(t *testing.T) { agg := m.HistoryV3Components() br, _ := m.NewBlocksIO() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - base := NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs) + base := NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil) api := NewPrivateDebugAPI(base, m.DB, 0) for _, tt := range debugTraceTransactionTests { var buf bytes.Buffer @@ -172,7 +172,7 @@ func TestTraceTransactionNoRefund(t *testing.T) { br, _ := m.NewBlocksIO() agg := m.HistoryV3Components() api := NewPrivateDebugAPI( - NewBaseApi(nil, kvcache.New(kvcache.DefaultCoherentConfig), br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), + NewBaseApi(nil, kvcache.New(kvcache.DefaultCoherentConfig), br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, 0) for _, tt := range debugTraceTransactionNoRefundTests { var buf bytes.Buffer @@ -206,7 +206,7 @@ func TestStorageRangeAt(t *testing.T) { br, _ := m.NewBlocksIO() agg := m.HistoryV3Components() api := NewPrivateDebugAPI( - NewBaseApi(nil, kvcache.New(kvcache.DefaultCoherentConfig), br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), + NewBaseApi(nil, kvcache.New(kvcache.DefaultCoherentConfig), br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, 0) t.Run("invalid addr", func(t *testing.T) { var block4 *types.Block @@ -304,7 +304,7 @@ func TestAccountRange(t *testing.T) { br, _ := m.NewBlocksIO() agg := m.HistoryV3Components() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - base := NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs) + base := NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil) api := NewPrivateDebugAPI(base, m.DB, 0) t.Run("valid account", func(t *testing.T) { @@ -367,7 +367,7 @@ func TestGetModifiedAccountsByNumber(t *testing.T) { br, _ := m.NewBlocksIO() agg := m.HistoryV3Components() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - base := NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs) + base := NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil) api := NewPrivateDebugAPI(base, m.DB, 0) t.Run("correct input", func(t *testing.T) { @@ -473,7 +473,7 @@ func TestAccountAt(t *testing.T) { agg := m.HistoryV3Components() br, _ := m.NewBlocksIO() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - base := NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs) + base := NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil) api := NewPrivateDebugAPI(base, m.DB, 0) var blockHash0, blockHash1, blockHash3, blockHash10, blockHash12 common.Hash diff --git a/cmd/rpcdaemon/commands/erigon_receipts_test.go b/cmd/rpcdaemon/commands/erigon_receipts_test.go index a46d75e5878..939c8fc8633 100644 --- a/cmd/rpcdaemon/commands/erigon_receipts_test.go +++ b/cmd/rpcdaemon/commands/erigon_receipts_test.go @@ -32,7 +32,7 @@ func TestGetLogs(t *testing.T) { m, _, _ := rpcdaemontest.CreateTestSentry(t) br, _ := m.NewBlocksIO() agg := m.HistoryV3Components() - baseApi := NewBaseApi(nil, kvcache.New(kvcache.DefaultCoherentConfig), br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs) + baseApi := NewBaseApi(nil, kvcache.New(kvcache.DefaultCoherentConfig), br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil) { ethApi := NewEthAPI(baseApi, m.DB, nil, nil, nil, 5000000, 100_000, log.New()) @@ -67,7 +67,7 @@ func TestErigonGetLatestLogs(t *testing.T) { stateCache := kvcache.New(kvcache.DefaultCoherentConfig) db := m.DB agg := m.HistoryV3Components() - api := NewErigonAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), db, nil) + api := NewErigonAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), db, nil) expectedLogs, _ := api.GetLogs(m.Ctx, filters.FilterCriteria{FromBlock: big.NewInt(0), ToBlock: big.NewInt(rpc.LatestBlockNumber.Int64())}) expectedErigonLogs := make([]*types.ErigonLog, 0) @@ -102,7 +102,7 @@ func TestErigonGetLatestLogsIgnoreTopics(t *testing.T) { stateCache := kvcache.New(kvcache.DefaultCoherentConfig) db := m.DB agg := m.HistoryV3Components() - api := NewErigonAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), db, nil) + api := NewErigonAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), db, nil) expectedLogs, _ := api.GetLogs(m.Ctx, filters.FilterCriteria{FromBlock: big.NewInt(0), ToBlock: big.NewInt(rpc.LatestBlockNumber.Int64())}) expectedErigonLogs := make([]*types.ErigonLog, 0) @@ -192,7 +192,7 @@ func TestGetBlockReceiptsByBlockHash(t *testing.T) { agg := m.HistoryV3Components() br, _ := m.NewBlocksIO() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - api := NewErigonAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil) + api := NewErigonAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil) expect := map[uint64]string{ 0: `[]`, diff --git a/cmd/rpcdaemon/commands/eth_accounts.go b/cmd/rpcdaemon/commands/eth_accounts.go index 40feb36b6da..b3d8b9af491 100644 --- a/cmd/rpcdaemon/commands/eth_accounts.go +++ b/cmd/rpcdaemon/commands/eth_accounts.go @@ -26,6 +26,26 @@ func (api *APIImpl) GetBalance(ctx context.Context, address libcommon.Address, b return nil, fmt.Errorf("getBalance cannot open tx: %w", err1) } defer tx.Rollback() + + bn, err := api.blockNumberFromBlockNumberOrHash(tx, &blockNrOrHash) + if err != nil { + return nil, err + } + chainConfig, err := api.chainConfig(tx) + if err != nil { + return nil, fmt.Errorf("read chain config: %v", err) + } + if !chainConfig.IsBedrock(bn) { + if api.historicalRPCService != nil { + var result hexutil.Big + if err := api.historicalRPCService.CallContext(ctx, &result, "eth_getBalance", address, hexutil.EncodeUint64(bn)); err != nil { + return nil, fmt.Errorf("historical backend failed: %w", err) + } + return &result, nil + } + return nil, rpc.ErrNoHistoricalFallback + } + reader, err := rpchelper.CreateStateReader(ctx, tx, blockNrOrHash, 0, api.filters, api.stateCache, api.historyV3(tx), "") if err != nil { return nil, err @@ -62,6 +82,26 @@ func (api *APIImpl) GetTransactionCount(ctx context.Context, address libcommon.A return nil, fmt.Errorf("getTransactionCount cannot open tx: %w", err1) } defer tx.Rollback() + + bn, err := api.blockNumberFromBlockNumberOrHash(tx, &blockNrOrHash) + if err != nil { + return nil, err + } + chainConfig, err := api.chainConfig(tx) + if err != nil { + return nil, fmt.Errorf("read chain config: %v", err) + } + if !chainConfig.IsBedrock(bn) { + if api.historicalRPCService != nil { + var result hexutil.Uint64 + if err := api.historicalRPCService.CallContext(ctx, &result, "eth_getTransactionCount", address, hexutil.EncodeUint64(bn)); err != nil { + return nil, fmt.Errorf("historical backend failed: %w", err) + } + return &result, nil + } + return nil, rpc.ErrNoHistoricalFallback + } + reader, err := rpchelper.CreateStateReader(ctx, tx, blockNrOrHash, 0, api.filters, api.stateCache, api.historyV3(tx), "") if err != nil { return nil, err @@ -81,10 +121,26 @@ func (api *APIImpl) GetCode(ctx context.Context, address libcommon.Address, bloc return nil, fmt.Errorf("getCode cannot open tx: %w", err1) } defer tx.Rollback() + + bn, err := api.blockNumberFromBlockNumberOrHash(tx, &blockNrOrHash) + if err != nil { + return nil, err + } chainConfig, err := api.chainConfig(tx) if err != nil { return nil, fmt.Errorf("read chain config: %v", err) } + if !chainConfig.IsBedrock(bn) { + if api.historicalRPCService != nil { + var result hexutility.Bytes + if err := api.historicalRPCService.CallContext(ctx, &result, "eth_getCode", address, hexutil.EncodeUint64(bn)); err != nil { + return nil, fmt.Errorf("historical backend failed: %w", err) + } + return result, nil + } + return nil, rpc.ErrNoHistoricalFallback + } + reader, err := rpchelper.CreateStateReader(ctx, tx, blockNrOrHash, 0, api.filters, api.stateCache, api.historyV3(tx), chainConfig.ChainName) if err != nil { return nil, err @@ -111,6 +167,25 @@ func (api *APIImpl) GetStorageAt(ctx context.Context, address libcommon.Address, } defer tx.Rollback() + bn, err := api.blockNumberFromBlockNumberOrHash(tx, &blockNrOrHash) + if err != nil { + return hexutility.Encode(common.LeftPadBytes(empty, 32)), err + } + chainConfig, err := api.chainConfig(tx) + if err != nil { + return hexutility.Encode(common.LeftPadBytes(empty, 32)), fmt.Errorf("read chain config: %v", err) + } + if !chainConfig.IsBedrock(bn) { + if api.historicalRPCService != nil { + var result hexutility.Bytes + if err := api.historicalRPCService.CallContext(ctx, &result, "eth_getStorageAt", address, index, hexutil.EncodeUint64(bn)); err != nil { + return hexutility.Encode(common.LeftPadBytes(empty, 32)), fmt.Errorf("historical backend failed: %w", err) + } + return hexutility.Encode(common.LeftPadBytes(result, 32)), nil + } + return hexutility.Encode(common.LeftPadBytes(empty, 32)), rpc.ErrNoHistoricalFallback + } + reader, err := rpchelper.CreateStateReader(ctx, tx, blockNrOrHash, 0, api.filters, api.stateCache, api.historyV3(tx), "") if err != nil { return hexutility.Encode(common.LeftPadBytes(empty, 32)), err diff --git a/cmd/rpcdaemon/commands/eth_api.go b/cmd/rpcdaemon/commands/eth_api.go index 61b3b0b938f..1f67153a9b7 100644 --- a/cmd/rpcdaemon/commands/eth_api.go +++ b/cmd/rpcdaemon/commands/eth_api.go @@ -123,9 +123,13 @@ type BaseAPI struct { evmCallTimeout time.Duration dirs datadir.Dirs + + // Optimism specific field + seqRPCService *rpc.Client + historicalRPCService *rpc.Client } -func NewBaseApi(f *rpchelper.Filters, stateCache kvcache.Cache, blockReader services.FullBlockReader, agg *libstate.AggregatorV3, singleNodeMode bool, evmCallTimeout time.Duration, engine consensus.EngineReader, dirs datadir.Dirs) *BaseAPI { +func NewBaseApi(f *rpchelper.Filters, stateCache kvcache.Cache, blockReader services.FullBlockReader, agg *libstate.AggregatorV3, singleNodeMode bool, evmCallTimeout time.Duration, engine consensus.EngineReader, dirs datadir.Dirs, seqRPCService, historicalRPCService *rpc.Client) *BaseAPI { blocksLRUSize := 128 // ~32Mb if !singleNodeMode { blocksLRUSize = 512 @@ -135,7 +139,7 @@ func NewBaseApi(f *rpchelper.Filters, stateCache kvcache.Cache, blockReader serv panic(err) } - return &BaseAPI{filters: f, stateCache: stateCache, blocksLRU: blocksLRU, _blockReader: blockReader, _txnReader: blockReader, _agg: agg, evmCallTimeout: evmCallTimeout, _engine: engine, dirs: dirs} + return &BaseAPI{filters: f, stateCache: stateCache, blocksLRU: blocksLRU, _blockReader: blockReader, _txnReader: blockReader, _agg: agg, evmCallTimeout: evmCallTimeout, _engine: engine, dirs: dirs, seqRPCService: seqRPCService, historicalRPCService: historicalRPCService} } func (api *BaseAPI) chainConfig(tx kv.Tx) (*chain.Config, error) { @@ -311,6 +315,20 @@ func (api *BaseAPI) pruneMode(tx kv.Tx) (*prune.Mode, error) { return p, nil } +func (api *BaseAPI) blockNumberFromBlockNumberOrHash(tx kv.Tx, bnh *rpc.BlockNumberOrHash) (uint64, error) { + if number, ok := bnh.Number(); ok { + return uint64(number.Int64()), nil + } + if hash, ok := bnh.Hash(); ok { + number := rawdb.ReadHeaderNumber(tx, hash) + if number == nil { + return 0, fmt.Errorf("block %x not found", hash) + } + return *number, nil + } + return 0, fmt.Errorf("invalid block number of hash") +} + // APIImpl is implementation of the EthAPI interface based on remote Db access type APIImpl struct { *BaseAPI diff --git a/cmd/rpcdaemon/commands/eth_api_test.go b/cmd/rpcdaemon/commands/eth_api_test.go index 8f13aa52320..fd6aab470d6 100644 --- a/cmd/rpcdaemon/commands/eth_api_test.go +++ b/cmd/rpcdaemon/commands/eth_api_test.go @@ -28,7 +28,7 @@ func TestGetBalanceChangesInBlock(t *testing.T) { stateCache := kvcache.New(kvcache.DefaultCoherentConfig) db := m.DB agg := m.HistoryV3Components() - api := NewErigonAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), db, nil) + api := NewErigonAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), db, nil) balances, err := api.GetBalanceChangesInBlock(context.Background(), myBlockNum) if err != nil { t.Errorf("calling GetBalanceChangesInBlock resulted in an error: %v", err) @@ -51,7 +51,7 @@ func TestGetTransactionReceipt(t *testing.T) { agg := m.HistoryV3Components() br, _ := m.NewBlocksIO() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), db, nil, nil, nil, 5000000, 100_000, log.New()) + api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), db, nil, nil, nil, 5000000, 100_000, log.New()) // Call GetTransactionReceipt for transaction which is not in the database if _, err := api.GetTransactionReceipt(context.Background(), common.Hash{}); err != nil { t.Errorf("calling GetTransactionReceipt with empty hash: %v", err) @@ -63,7 +63,7 @@ func TestGetTransactionReceiptUnprotected(t *testing.T) { agg := m.HistoryV3Components() br, _ := m.NewBlocksIO() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) + api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) // Call GetTransactionReceipt for un-protected transaction if _, err := api.GetTransactionReceipt(context.Background(), common.HexToHash("0x3f3cb8a0e13ed2481f97f53f7095b9cbc78b6ffb779f2d3e565146371a8830ea")); err != nil { t.Errorf("calling GetTransactionReceipt for unprotected tx: %v", err) @@ -78,7 +78,7 @@ func TestGetStorageAt_ByBlockNumber_WithRequireCanonicalDefault(t *testing.T) { agg := m.HistoryV3Components() br, _ := m.NewBlocksIO() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) + api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) addr := common.HexToAddress("0x71562b71999873db5b286df957af199ec94617f7") result, err := api.GetStorageAt(context.Background(), addr, "0x0", rpc.BlockNumberOrHashWithNumber(0)) @@ -95,7 +95,7 @@ func TestGetStorageAt_ByBlockHash_WithRequireCanonicalDefault(t *testing.T) { agg := m.HistoryV3Components() br, _ := m.NewBlocksIO() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) + api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) addr := common.HexToAddress("0x71562b71999873db5b286df957af199ec94617f7") result, err := api.GetStorageAt(context.Background(), addr, "0x0", rpc.BlockNumberOrHashWithHash(m.Genesis.Hash(), false)) @@ -112,7 +112,7 @@ func TestGetStorageAt_ByBlockHash_WithRequireCanonicalTrue(t *testing.T) { agg := m.HistoryV3Components() br, _ := m.NewBlocksIO() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) + api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) addr := common.HexToAddress("0x71562b71999873db5b286df957af199ec94617f7") result, err := api.GetStorageAt(context.Background(), addr, "0x0", rpc.BlockNumberOrHashWithHash(m.Genesis.Hash(), true)) @@ -128,7 +128,7 @@ func TestGetStorageAt_ByBlockHash_WithRequireCanonicalDefault_BlockNotFoundError agg := m.HistoryV3Components() br, _ := m.NewBlocksIO() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) + api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) addr := common.HexToAddress("0x71562b71999873db5b286df957af199ec94617f7") offChain, err := core.GenerateChain(m.ChainConfig, m.Genesis, m.Engine, m.DB, 1, func(i int, block *core.BlockGen) { @@ -152,7 +152,7 @@ func TestGetStorageAt_ByBlockHash_WithRequireCanonicalTrue_BlockNotFoundError(t agg := m.HistoryV3Components() br, _ := m.NewBlocksIO() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) + api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) addr := common.HexToAddress("0x71562b71999873db5b286df957af199ec94617f7") offChain, err := core.GenerateChain(m.ChainConfig, m.Genesis, m.Engine, m.DB, 1, func(i int, block *core.BlockGen) { @@ -177,7 +177,7 @@ func TestGetStorageAt_ByBlockHash_WithRequireCanonicalDefault_NonCanonicalBlock( agg := m.HistoryV3Components() br, _ := m.NewBlocksIO() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) + api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) addr := common.HexToAddress("0x71562b71999873db5b286df957af199ec94617f7") orphanedBlock := orphanedChain[0].Blocks[0] @@ -199,7 +199,7 @@ func TestGetStorageAt_ByBlockHash_WithRequireCanonicalTrue_NonCanonicalBlock(t * agg := m.HistoryV3Components() br, _ := m.NewBlocksIO() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) + api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) addr := common.HexToAddress("0x71562b71999873db5b286df957af199ec94617f7") orphanedBlock := orphanedChain[0].Blocks[0] @@ -218,7 +218,7 @@ func TestCall_ByBlockHash_WithRequireCanonicalDefault_NonCanonicalBlock(t *testi agg := m.HistoryV3Components() br, _ := m.NewBlocksIO() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) + api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) from := common.HexToAddress("0x71562b71999873db5b286df957af199ec94617f7") to := common.HexToAddress("0x0d3ab14bbad3d99f4203bd7a11acb94882050e7e") @@ -244,7 +244,7 @@ func TestCall_ByBlockHash_WithRequireCanonicalTrue_NonCanonicalBlock(t *testing. agg := m.HistoryV3Components() br, _ := m.NewBlocksIO() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) + api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) from := common.HexToAddress("0x71562b71999873db5b286df957af199ec94617f7") to := common.HexToAddress("0x0d3ab14bbad3d99f4203bd7a11acb94882050e7e") diff --git a/cmd/rpcdaemon/commands/eth_block_test.go b/cmd/rpcdaemon/commands/eth_block_test.go index 3c73377422d..3fe4614ba7e 100644 --- a/cmd/rpcdaemon/commands/eth_block_test.go +++ b/cmd/rpcdaemon/commands/eth_block_test.go @@ -28,7 +28,7 @@ func TestGetBlockByNumberWithLatestTag(t *testing.T) { agg := m.HistoryV3Components() br, _ := m.NewBlocksIO() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) + api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) b, err := api.GetBlockByNumber(context.Background(), rpc.LatestBlockNumber, false) expected := common.HexToHash("0x5883164d4100b95e1d8e931b8b9574586a1dea7507941e6ad3c1e3a2591485fd") if err != nil { @@ -61,7 +61,7 @@ func TestGetBlockByNumberWithLatestTag_WithHeadHashInDb(t *testing.T) { } tx.Commit() - api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) + api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) block, err := api.GetBlockByNumber(ctx, rpc.LatestBlockNumber, false) if err != nil { t.Errorf("error retrieving block by number: %s", err) @@ -93,7 +93,7 @@ func TestGetBlockByNumberWithPendingTag(t *testing.T) { RplBlock: rlpBlock, }) - api := NewEthAPI(NewBaseApi(ff, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) + api := NewEthAPI(NewBaseApi(ff, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) b, err := api.GetBlockByNumber(context.Background(), rpc.PendingBlockNumber, false) if err != nil { t.Errorf("error getting block number with pending tag: %s", err) @@ -107,7 +107,7 @@ func TestGetBlockByNumber_WithFinalizedTag_NoFinalizedBlockInDb(t *testing.T) { br, _ := m.NewBlocksIO() ctx := context.Background() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) + api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) if _, err := api.GetBlockByNumber(ctx, rpc.FinalizedBlockNumber, false); err != nil { assert.ErrorIs(t, rpchelper.UnknownBlockError, err) } @@ -137,7 +137,7 @@ func TestGetBlockByNumber_WithFinalizedTag_WithFinalizedBlockInDb(t *testing.T) } tx.Commit() - api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) + api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) block, err := api.GetBlockByNumber(ctx, rpc.FinalizedBlockNumber, false) if err != nil { t.Errorf("error retrieving block by number: %s", err) @@ -152,7 +152,7 @@ func TestGetBlockByNumber_WithSafeTag_NoSafeBlockInDb(t *testing.T) { br, _ := m.NewBlocksIO() ctx := context.Background() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) + api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) if _, err := api.GetBlockByNumber(ctx, rpc.SafeBlockNumber, false); err != nil { assert.ErrorIs(t, rpchelper.UnknownBlockError, err) } @@ -182,7 +182,7 @@ func TestGetBlockByNumber_WithSafeTag_WithSafeBlockInDb(t *testing.T) { } tx.Commit() - api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) + api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) block, err := api.GetBlockByNumber(ctx, rpc.SafeBlockNumber, false) if err != nil { t.Errorf("error retrieving block by number: %s", err) @@ -198,7 +198,7 @@ func TestGetBlockTransactionCountByHash(t *testing.T) { ctx := context.Background() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) + api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) blockHash := common.HexToHash("0x6804117de2f3e6ee32953e78ced1db7b20214e0d8c745a03b8fecf7cc8ee76ef") tx, err := m.DB.BeginRw(ctx) @@ -234,7 +234,7 @@ func TestGetBlockTransactionCountByHash_ZeroTx(t *testing.T) { ctx := context.Background() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) + api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) blockHash := common.HexToHash("0x5883164d4100b95e1d8e931b8b9574586a1dea7507941e6ad3c1e3a2591485fd") tx, err := m.DB.BeginRw(ctx) @@ -269,7 +269,7 @@ func TestGetBlockTransactionCountByNumber(t *testing.T) { br, _ := m.NewBlocksIO() ctx := context.Background() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) + api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) blockHash := common.HexToHash("0x6804117de2f3e6ee32953e78ced1db7b20214e0d8c745a03b8fecf7cc8ee76ef") tx, err := m.DB.BeginRw(ctx) @@ -304,7 +304,7 @@ func TestGetBlockTransactionCountByNumber_ZeroTx(t *testing.T) { br, _ := m.NewBlocksIO() ctx := context.Background() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) + api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) blockHash := common.HexToHash("0x5883164d4100b95e1d8e931b8b9574586a1dea7507941e6ad3c1e3a2591485fd") diff --git a/cmd/rpcdaemon/commands/eth_call.go b/cmd/rpcdaemon/commands/eth_call.go index a4208afcb8e..0f914b8f03a 100644 --- a/cmd/rpcdaemon/commands/eth_call.go +++ b/cmd/rpcdaemon/commands/eth_call.go @@ -45,10 +45,25 @@ func (api *APIImpl) Call(ctx context.Context, args ethapi2.CallArgs, blockNrOrHa } defer tx.Rollback() - chainConfig, err := api.chainConfig(tx) + bn, err := api.blockNumberFromBlockNumberOrHash(tx, &blockNrOrHash) if err != nil { return nil, err } + chainConfig, err := api.chainConfig(tx) + if err != nil { + return nil, fmt.Errorf("read chain config: %v", err) + } + if !chainConfig.IsBedrock(bn) { + if api.historicalRPCService != nil { + var result hexutility.Bytes + if err := api.historicalRPCService.CallContext(ctx, &result, "eth_call", args, hexutil.EncodeUint64(bn)); err != nil { + return nil, fmt.Errorf("historical backend failed: %w", err) + } + return result, nil + } + return nil, rpc.ErrNoHistoricalFallback + } + engine := api.engine() if args.Gas == nil || uint64(*args.Gas) == 0 { diff --git a/cmd/rpcdaemon/commands/eth_callMany_test.go b/cmd/rpcdaemon/commands/eth_callMany_test.go index b772ec2093f..baa18f0d0a1 100644 --- a/cmd/rpcdaemon/commands/eth_callMany_test.go +++ b/cmd/rpcdaemon/commands/eth_callMany_test.go @@ -84,7 +84,7 @@ func TestCallMany(t *testing.T) { db := contractBackend.DB() engine := contractBackend.Engine() api := NewEthAPI(NewBaseApi(nil, stateCache, contractBackend.BlockReader(), contractBackend.Agg(), false, rpccfg.DefaultEvmCallTimeout, engine, - datadir.New(t.TempDir())), db, nil, nil, nil, 5000000, 100_000, log.New()) + datadir.New(t.TempDir()), nil, nil), db, nil, nil, nil, 5000000, 100_000, log.New()) callArgAddr1 := ethapi.CallArgs{From: &address, To: &tokenAddr, Nonce: &nonce, MaxPriorityFeePerGas: (*hexutil.Big)(big.NewInt(1e9)), diff --git a/cmd/rpcdaemon/commands/eth_call_test.go b/cmd/rpcdaemon/commands/eth_call_test.go index 604b348326b..c4a97ee1c0c 100644 --- a/cmd/rpcdaemon/commands/eth_call_test.go +++ b/cmd/rpcdaemon/commands/eth_call_test.go @@ -43,7 +43,7 @@ func TestEstimateGas(t *testing.T) { ctx, conn := rpcdaemontest.CreateTestGrpcConn(t, stages.Mock(t)) mining := txpool.NewMiningClient(conn) ff := rpchelper.New(ctx, nil, nil, mining, func() {}, m.Log) - api := NewEthAPI(NewBaseApi(ff, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) + api := NewEthAPI(NewBaseApi(ff, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) var from = libcommon.HexToAddress("0x71562b71999873db5b286df957af199ec94617f7") var to = libcommon.HexToAddress("0x0d3ab14bbad3d99f4203bd7a11acb94882050e7e") if _, err := api.EstimateGas(context.Background(), ðapi.CallArgs{ @@ -59,7 +59,7 @@ func TestEthCallNonCanonical(t *testing.T) { agg := m.HistoryV3Components() br, _ := m.NewBlocksIO() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) + api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) var from = libcommon.HexToAddress("0x71562b71999873db5b286df957af199ec94617f7") var to = libcommon.HexToAddress("0x0d3ab14bbad3d99f4203bd7a11acb94882050e7e") if _, err := api.Call(context.Background(), ethapi.CallArgs{ @@ -84,7 +84,7 @@ func TestEthCallToPrunedBlock(t *testing.T) { agg := m.HistoryV3Components() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) + api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) callData := hexutil.MustDecode("0x2e64cec1") callDataBytes := hexutility.Bytes(callData) @@ -110,7 +110,7 @@ func TestGetProof(t *testing.T) { agg := m.HistoryV3Components() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) + api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) key := func(b byte) libcommon.Hash { result := libcommon.Hash{} @@ -240,7 +240,7 @@ func TestGetBlockByTimestampLatestTime(t *testing.T) { defer tx.Rollback() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - api := NewErigonAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil) + api := NewErigonAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil) latestBlock := rawdb.ReadCurrentBlock(tx) response, err := ethapi.RPCMarshalBlockDeprecated(latestBlock, true, false) @@ -278,7 +278,7 @@ func TestGetBlockByTimestampOldestTime(t *testing.T) { defer tx.Rollback() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - api := NewErigonAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil) + api := NewErigonAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil) oldestBlock, err := rawdb.ReadBlockByNumber(tx, 0) if err != nil { @@ -320,7 +320,7 @@ func TestGetBlockByTimeHigherThanLatestBlock(t *testing.T) { defer tx.Rollback() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - api := NewErigonAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil) + api := NewErigonAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil) latestBlock := rawdb.ReadCurrentBlock(tx) @@ -359,7 +359,7 @@ func TestGetBlockByTimeMiddle(t *testing.T) { defer tx.Rollback() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - api := NewErigonAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil) + api := NewErigonAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil) currentHeader := rawdb.ReadCurrentHeader(tx) oldestHeader, err := api._blockReader.HeaderByNumber(ctx, tx, 0) @@ -410,7 +410,7 @@ func TestGetBlockByTimestamp(t *testing.T) { defer tx.Rollback() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - api := NewErigonAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil) + api := NewErigonAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil) highestBlockNumber := rawdb.ReadCurrentHeader(tx).Number pickedBlock, err := rawdb.ReadBlockByNumber(tx, highestBlockNumber.Uint64()/3) diff --git a/cmd/rpcdaemon/commands/eth_filters_test.go b/cmd/rpcdaemon/commands/eth_filters_test.go index 5ae8b133942..fbe068a4cb2 100644 --- a/cmd/rpcdaemon/commands/eth_filters_test.go +++ b/cmd/rpcdaemon/commands/eth_filters_test.go @@ -31,7 +31,7 @@ func TestNewFilters(t *testing.T) { ctx, conn := rpcdaemontest.CreateTestGrpcConn(t, stages.Mock(t)) mining := txpool.NewMiningClient(conn) ff := rpchelper.New(ctx, nil, nil, mining, func() {}, m.Log) - api := NewEthAPI(NewBaseApi(ff, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) + api := NewEthAPI(NewBaseApi(ff, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) ptf, err := api.NewPendingTransactionFilter(ctx) assert.Nil(err) diff --git a/cmd/rpcdaemon/commands/eth_mining_test.go b/cmd/rpcdaemon/commands/eth_mining_test.go index 53f4134d677..d02951f451f 100644 --- a/cmd/rpcdaemon/commands/eth_mining_test.go +++ b/cmd/rpcdaemon/commands/eth_mining_test.go @@ -28,7 +28,7 @@ func TestPendingBlock(t *testing.T) { engine := ethash.NewFaker() br, _ := m.NewBlocksIO() api := NewEthAPI(NewBaseApi(ff, stateCache, br, nil, false, rpccfg.DefaultEvmCallTimeout, engine, - m.Dirs), nil, nil, nil, mining, 5000000, 100_000, log.New()) + m.Dirs, nil, nil), nil, nil, nil, mining, 5000000, 100_000, log.New()) expect := uint64(12345) b, err := rlp.EncodeToBytes(types.NewBlockWithHeader(&types.Header{Number: big.NewInt(int64(expect))})) require.NoError(t, err) diff --git a/cmd/rpcdaemon/commands/eth_system_test.go b/cmd/rpcdaemon/commands/eth_system_test.go index c51ca5c0c33..89a74ef1c0b 100644 --- a/cmd/rpcdaemon/commands/eth_system_test.go +++ b/cmd/rpcdaemon/commands/eth_system_test.go @@ -44,7 +44,7 @@ func TestGasPrice(t *testing.T) { defer m.DB.Close() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) br, _ := m.NewBlocksIO() - base := NewBaseApi(nil, stateCache, br, nil, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs) + base := NewBaseApi(nil, stateCache, br, nil, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil) eth := NewEthAPI(base, m.DB, nil, nil, nil, 5000000, 100_000, log.New()) ctx := context.Background() diff --git a/cmd/rpcdaemon/commands/gen_traces_test.go b/cmd/rpcdaemon/commands/gen_traces_test.go index 143ceec32f5..47ef5ef020d 100644 --- a/cmd/rpcdaemon/commands/gen_traces_test.go +++ b/cmd/rpcdaemon/commands/gen_traces_test.go @@ -16,6 +16,7 @@ import ( "github.com/ledgerwatch/erigon/eth/tracers" "github.com/ledgerwatch/erigon/rpc" "github.com/ledgerwatch/erigon/rpc/rpccfg" + // Force-load native and js packages, to trigger registration _ "github.com/ledgerwatch/erigon/eth/tracers/js" _ "github.com/ledgerwatch/erigon/eth/tracers/native" @@ -30,7 +31,7 @@ func TestGeneratedDebugApi(t *testing.T) { agg := m.HistoryV3Components() br, _ := m.NewBlocksIO() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - baseApi := NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs) + baseApi := NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil) api := NewPrivateDebugAPI(baseApi, m.DB, 0) var buf bytes.Buffer stream := jsoniter.NewStream(jsoniter.ConfigDefault, &buf, 4096) @@ -118,7 +119,7 @@ func TestGeneratedTraceApi(t *testing.T) { agg := m.HistoryV3Components() br, _ := m.NewBlocksIO() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - baseApi := NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs) + baseApi := NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil) api := NewTraceAPI(baseApi, m.DB, &httpcfg.HttpCfg{}) traces, err := api.Block(context.Background(), rpc.BlockNumber(1), new(bool)) if err != nil { @@ -277,7 +278,7 @@ func TestGeneratedTraceApiCollision(t *testing.T) { agg := m.HistoryV3Components() br, _ := m.NewBlocksIO() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - baseApi := NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs) + baseApi := NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil) api := NewTraceAPI(baseApi, m.DB, &httpcfg.HttpCfg{}) traces, err := api.Transaction(context.Background(), common.HexToHash("0xb2b9fa4c999c1c8370ce1fbd1c4315a9ce7f8421fe2ebed8a9051ff2e4e7e3da"), new(bool)) if err != nil { @@ -333,7 +334,7 @@ func TestGeneratedTraceApiCollision(t *testing.T) { "transactionPosition": 2, "type": "create" } -] +] ` var expected interface{} if err = json.Unmarshal([]byte(expectedJSON), &expected); err != nil { diff --git a/cmd/rpcdaemon/commands/otterscan_contract_creator_test.go b/cmd/rpcdaemon/commands/otterscan_contract_creator_test.go index 129ab0cb436..1f0f7ffcaae 100644 --- a/cmd/rpcdaemon/commands/otterscan_contract_creator_test.go +++ b/cmd/rpcdaemon/commands/otterscan_contract_creator_test.go @@ -13,7 +13,7 @@ func TestGetContractCreator(t *testing.T) { m, _, _ := rpcdaemontest.CreateTestSentry(t) agg := m.HistoryV3Components() br, _ := m.NewBlocksIO() - api := NewOtterscanAPI(NewBaseApi(nil, nil, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB) + api := NewOtterscanAPI(NewBaseApi(nil, nil, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB) addr := libcommon.HexToAddress("0x537e697c7ab75a26f9ecf0ce810e3154dfcaaf44") expectCreator := libcommon.HexToAddress("0x71562b71999873db5b286df957af199ec94617f7") diff --git a/cmd/rpcdaemon/commands/otterscan_search_backward_test.go b/cmd/rpcdaemon/commands/otterscan_search_backward_test.go index 1ba30ff9fb8..369a267a375 100644 --- a/cmd/rpcdaemon/commands/otterscan_search_backward_test.go +++ b/cmd/rpcdaemon/commands/otterscan_search_backward_test.go @@ -151,7 +151,7 @@ func TestSearchTransactionsBefore(t *testing.T) { m, _, _ := rpcdaemontest.CreateTestSentry(t) agg := m.HistoryV3Components() br, _ := m.NewBlocksIO() - api := NewOtterscanAPI(NewBaseApi(nil, nil, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB) + api := NewOtterscanAPI(NewBaseApi(nil, nil, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB) addr := libcommon.HexToAddress("0x537e697c7ab75a26f9ecf0ce810e3154dfcaaf44") t.Run("small page size", func(t *testing.T) { diff --git a/cmd/rpcdaemon/commands/otterscan_transaction_by_sender_and_nonce_test.go b/cmd/rpcdaemon/commands/otterscan_transaction_by_sender_and_nonce_test.go index fa989faf73a..e644d5e939f 100644 --- a/cmd/rpcdaemon/commands/otterscan_transaction_by_sender_and_nonce_test.go +++ b/cmd/rpcdaemon/commands/otterscan_transaction_by_sender_and_nonce_test.go @@ -13,7 +13,7 @@ func TestGetTransactionBySenderAndNonce(t *testing.T) { m, _, _ := rpcdaemontest.CreateTestSentry(t) agg := m.HistoryV3Components() br, _ := m.NewBlocksIO() - api := NewOtterscanAPI(NewBaseApi(nil, nil, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB) + api := NewOtterscanAPI(NewBaseApi(nil, nil, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB) addr := common.HexToAddress("0x537e697c7ab75a26f9ecf0ce810e3154dfcaaf44") expectCreator := common.HexToAddress("0x71562b71999873db5b286df957af199ec94617f7") diff --git a/cmd/rpcdaemon/commands/send_transaction.go b/cmd/rpcdaemon/commands/send_transaction.go index c527aca4815..07e5c82ab22 100644 --- a/cmd/rpcdaemon/commands/send_transaction.go +++ b/cmd/rpcdaemon/commands/send_transaction.go @@ -24,6 +24,13 @@ func (api *APIImpl) SendRawTransaction(ctx context.Context, encodedTx hexutility return common.Hash{}, err } + if api.seqRPCService != nil { + if err := api.seqRPCService.CallContext(ctx, nil, "eth_sendRawTransaction", hexutility.Encode(encodedTx)); err != nil { + return common.Hash{}, err + } + return txn.Hash(), nil + } + // If the transaction fee cap is already specified, ensure the // fee of the given transaction is _reasonable_. if err := checkTxFee(txn.GetPrice().ToBig(), txn.GetGas(), ethconfig.Defaults.RPCTxFeeCap); err != nil { diff --git a/cmd/rpcdaemon/commands/send_transaction_test.go b/cmd/rpcdaemon/commands/send_transaction_test.go index 332f13700d8..2a1439ed320 100644 --- a/cmd/rpcdaemon/commands/send_transaction_test.go +++ b/cmd/rpcdaemon/commands/send_transaction_test.go @@ -75,7 +75,7 @@ func TestSendRawTransaction(t *testing.T) { ff := rpchelper.New(ctx, nil, txPool, txpool.NewMiningClient(conn), func() {}, m.Log) stateCache := kvcache.New(kvcache.DefaultCoherentConfig) br, _ := m.NewBlocksIO() - api := commands.NewEthAPI(commands.NewBaseApi(ff, stateCache, br, nil, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, nil, txPool, nil, 5000000, 100_000, logger) + api := commands.NewEthAPI(commands.NewBaseApi(ff, stateCache, br, nil, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, txPool, nil, 5000000, 100_000, logger) buf := bytes.NewBuffer(nil) err = txn.MarshalBinary(buf) diff --git a/cmd/rpcdaemon/commands/trace_adhoc_test.go b/cmd/rpcdaemon/commands/trace_adhoc_test.go index 7212b8cd7d1..300956aa81b 100644 --- a/cmd/rpcdaemon/commands/trace_adhoc_test.go +++ b/cmd/rpcdaemon/commands/trace_adhoc_test.go @@ -24,7 +24,7 @@ func TestEmptyQuery(t *testing.T) { stateCache := kvcache.New(kvcache.DefaultCoherentConfig) br, _ := m.NewBlocksIO() - api := NewTraceAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, &httpcfg.HttpCfg{}) + api := NewTraceAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, &httpcfg.HttpCfg{}) // Call GetTransactionReceipt for transaction which is not in the database var latest = rpc.LatestBlockNumber results, err := api.CallMany(context.Background(), json.RawMessage("[]"), &rpc.BlockNumberOrHash{BlockNumber: &latest}) @@ -44,7 +44,7 @@ func TestCoinbaseBalance(t *testing.T) { stateCache := kvcache.New(kvcache.DefaultCoherentConfig) br, _ := m.NewBlocksIO() - api := NewTraceAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, &httpcfg.HttpCfg{}) + api := NewTraceAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, &httpcfg.HttpCfg{}) // Call GetTransactionReceipt for transaction which is not in the database var latest = rpc.LatestBlockNumber results, err := api.CallMany(context.Background(), json.RawMessage(` @@ -74,7 +74,7 @@ func TestReplayTransaction(t *testing.T) { stateCache := kvcache.New(kvcache.DefaultCoherentConfig) br, _ := m.NewBlocksIO() - api := NewTraceAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, &httpcfg.HttpCfg{}) + api := NewTraceAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, &httpcfg.HttpCfg{}) var txnHash libcommon.Hash if err := m.DB.View(context.Background(), func(tx kv.Tx) error { b, err := rawdb.ReadBlockByNumber(tx, 6) @@ -105,7 +105,7 @@ func TestReplayBlockTransactions(t *testing.T) { br, _ := m.NewBlocksIO() stateCache := kvcache.New(kvcache.DefaultCoherentConfig) - api := NewTraceAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, &httpcfg.HttpCfg{}) + api := NewTraceAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, &httpcfg.HttpCfg{}) // Call GetTransactionReceipt for transaction which is not in the database n := rpc.BlockNumber(6) diff --git a/cmd/rpcdaemon/commands/txpool_api_test.go b/cmd/rpcdaemon/commands/txpool_api_test.go index b6b936b12ba..9fb2fdeef42 100644 --- a/cmd/rpcdaemon/commands/txpool_api_test.go +++ b/cmd/rpcdaemon/commands/txpool_api_test.go @@ -36,7 +36,7 @@ func TestTxPoolContent(t *testing.T) { ff := rpchelper.New(ctx, nil, txPool, txpool.NewMiningClient(conn), func() {}, m.Log) agg := m.HistoryV3Components() br, _ := m.NewBlocksIO() - api := NewTxPoolAPI(NewBaseApi(ff, kvcache.New(kvcache.DefaultCoherentConfig), br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs), m.DB, txPool) + api := NewTxPoolAPI(NewBaseApi(ff, kvcache.New(kvcache.DefaultCoherentConfig), br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, txPool) expectValue := uint64(1234) txn, err := types.SignTx(types.NewTransaction(0, libcommon.Address{1}, uint256.NewInt(expectValue), params.TxGas, uint256.NewInt(10*params.GWei), nil), *types.LatestSignerForChainID(m.ChainConfig.ChainID), m.Key) diff --git a/cmd/rpcdaemon/main.go b/cmd/rpcdaemon/main.go index ba4522e1da9..d97446f1210 100644 --- a/cmd/rpcdaemon/main.go +++ b/cmd/rpcdaemon/main.go @@ -1,13 +1,16 @@ package main import ( + "context" "fmt" "os" + "time" "github.com/ledgerwatch/erigon-lib/common" "github.com/ledgerwatch/erigon/cmd/rpcdaemon/cli" "github.com/ledgerwatch/erigon/cmd/rpcdaemon/commands" "github.com/ledgerwatch/erigon/consensus/ethash" + "github.com/ledgerwatch/erigon/rpc" "github.com/ledgerwatch/erigon/turbo/debug" "github.com/ledgerwatch/log/v3" "github.com/spf13/cobra" @@ -34,9 +37,34 @@ func main() { defer borDb.Close() } + var seqRPCService *rpc.Client + var historicalRPCService *rpc.Client + + // Setup sequencer and hsistorical RPC relay services + if cfg.RollupSequencerHTTP != "" { + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + client, err := rpc.DialContext(ctx, cfg.RollupSequencerHTTP, logger) + cancel() + if err != nil { + log.Error(err.Error()) + return nil + } + seqRPCService = client + } + if cfg.RollupHistoricalRPC != "" { + ctx, cancel := context.WithTimeout(context.Background(), cfg.RollupHistoricalRPCTimeout) + client, err := rpc.DialContext(ctx, cfg.RollupHistoricalRPC, logger) + cancel() + if err != nil { + log.Error(err.Error()) + return nil + } + historicalRPCService = client + } + // TODO: Replace with correct consensus Engine engine := ethash.NewFaker() - apiList := commands.APIList(db, borDb, backend, txPool, mining, ff, stateCache, blockReader, agg, *cfg, engine, logger) + apiList := commands.APIList(db, borDb, backend, txPool, mining, ff, stateCache, blockReader, agg, *cfg, engine, seqRPCService, historicalRPCService, logger) if err := cli.StartRpcServer(ctx, *cfg, apiList, nil, logger); err != nil { logger.Error(err.Error()) return nil diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 5c09a3c668a..2326ed76ae3 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -776,6 +776,27 @@ var ( Usage: "Port for sentinel", Value: 7777, } + + // Rollup Flags + RollupSequencerHTTPFlag = cli.StringFlag{ + Name: "rollup.sequencerhttp", + Usage: "HTTP endpoint for the sequencer mempool", + EnvVars: []string{"ROLLUP_SEQUENCER_HTTP_ENDPOINT"}, + } + RollupHistoricalRPCFlag = cli.StringFlag{ + Name: "rollup.historicalrpc", + Usage: "RPC endpoint for historical data.", + EnvVars: []string{"ROLLUP_HISTORICAL_RPC_ENDPOINT"}, + } + RollupHistoricalRPCTimeoutFlag = cli.StringFlag{ + Name: "rollup.historicalrpctimeout", + Usage: "Timeout for historical RPC requests.", + Value: "5s", + } + RollupDisableTxPoolGossipFlag = cli.BoolFlag{ + Name: "rollup.disabletxpoolgossip", + Usage: "Disable transaction pool gossip.", + } ) var MetricFlags = []cli.Flag{&MetricsEnabledFlag, &MetricsHTTPFlag, &MetricsPortFlag} @@ -1581,6 +1602,18 @@ func SetEthConfig(ctx *cli.Context, nodeConfig *nodecfg.Config, cfg *ethconfig.C if ctx.IsSet(SentryDropUselessPeers.Name) { cfg.DropUselessPeers = ctx.Bool(SentryDropUselessPeers.Name) } + + // Rollup params + if ctx.IsSet(RollupSequencerHTTPFlag.Name) && !ctx.IsSet(MiningEnabledFlag.Name) { + cfg.RollupSequencerHTTP = ctx.String(RollupSequencerHTTPFlag.Name) + } + if ctx.IsSet(RollupHistoricalRPCFlag.Name) { + cfg.RollupHistoricalRPC = ctx.String(RollupHistoricalRPCFlag.Name) + } + if ctx.IsSet(RollupDisableTxPoolGossipFlag.Name) { + cfg.RollupDisableTxPoolGossip = ctx.Bool(RollupDisableTxPoolGossipFlag.Name) + } + cfg.RollupHistoricalRPCTimeout = ctx.Duration(RollupHistoricalRPCTimeoutFlag.Name) } // SetDNSDiscoveryDefaults configures DNS discovery with the given URL if diff --git a/eth/backend.go b/eth/backend.go index 910dbcbcc9d..18ddb26aa9e 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -136,9 +136,11 @@ type Ethereum struct { genesisBlock *types.Block genesisHash libcommon.Hash - ethBackendRPC *privateapi.EthBackendServer - miningRPC txpool_proto.MiningServer - stateChangesClient txpool2.StateChangesClient + ethBackendRPC *privateapi.EthBackendServer + seqRPCService *rpc.Client + historicalRPCService *rpc.Client + miningRPC txpool_proto.MiningServer + stateChangesClient txpool2.StateChangesClient miningSealingQuit chan struct{} pendingBlocks chan *types.Block @@ -489,6 +491,26 @@ func New(stack *node.Node, config *ethconfig.Config, logger log.Logger) (*Ethere return nil, err } + // Setup sequencer and hsistorical RPC relay services + if config.RollupSequencerHTTP != "" { + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + client, err := rpc.DialContext(ctx, config.RollupSequencerHTTP, logger) + cancel() + if err != nil { + return nil, err + } + backend.seqRPCService = client + } + if config.RollupHistoricalRPC != "" { + ctx, cancel := context.WithTimeout(context.Background(), config.RollupHistoricalRPCTimeout) + client, err := rpc.DialContext(ctx, config.RollupHistoricalRPC, logger) + cancel() + if err != nil { + return nil, err + } + backend.historicalRPCService = client + } + var miningRPC txpool_proto.MiningServer stateDiffClient := direct.NewStateDiffClientDirect(kvRPC) if config.DeprecatedTxPool.Disable { @@ -765,8 +787,8 @@ func (s *Ethereum) Init(stack *node.Node, config *ethconfig.Config) error { if casted, ok := s.engine.(*bor.Bor); ok { borDb = casted.DB } - apiList := commands.APIList(chainKv, borDb, ethRpcClient, txPoolRpcClient, miningRpcClient, ff, stateCache, blockReader, s.agg, httpRpcCfg, s.engine, s.logger) - authApiList := commands.AuthAPIList(chainKv, ethRpcClient, txPoolRpcClient, miningRpcClient, ff, stateCache, blockReader, s.agg, httpRpcCfg, s.engine, s.logger) + apiList := commands.APIList(chainKv, borDb, ethRpcClient, txPoolRpcClient, miningRpcClient, ff, stateCache, blockReader, s.agg, httpRpcCfg, s.engine, s.seqRPCService, s.historicalRPCService, s.logger) + authApiList := commands.AuthAPIList(chainKv, ethRpcClient, txPoolRpcClient, miningRpcClient, ff, stateCache, blockReader, s.agg, httpRpcCfg, s.engine, s.seqRPCService, s.historicalRPCService, s.logger) go func() { if err := cli.StartRpcServer(ctx, httpRpcCfg, apiList, authApiList, s.logger); err != nil { s.logger.Error(err.Error()) diff --git a/eth/ethconfig/config.go b/eth/ethconfig/config.go index f3882fcb28c..5a0c2a13cd6 100644 --- a/eth/ethconfig/config.go +++ b/eth/ethconfig/config.go @@ -251,6 +251,11 @@ type Config struct { OverrideShanghaiTime *big.Int `toml:",omitempty"` DropUselessPeers bool + + RollupSequencerHTTP string + RollupHistoricalRPC string + RollupHistoricalRPCTimeout time.Duration + RollupDisableTxPoolGossip bool } type Sync struct { diff --git a/rpc/errors.go b/rpc/errors.go index b6f8f2ff67e..c9527bd9151 100644 --- a/rpc/errors.go +++ b/rpc/errors.go @@ -30,6 +30,16 @@ var ( const defaultErrorCode = -32000 +var ErrNoHistoricalFallback = NoHistoricalFallbackError{} + +type NoHistoricalFallbackError struct{} + +func (e NoHistoricalFallbackError) ErrorCode() int { return -32801 } + +func (e NoHistoricalFallbackError) Error() string { + return "no historical RPC is available for this historical (pre-bedrock) execution request" +} + type methodNotFoundError struct{ method string } func (e *methodNotFoundError) ErrorCode() int { return -32601 } diff --git a/rpc/rpccfg/rpccfg.go b/rpc/rpccfg/rpccfg.go index f1cde689c78..b7b936eaf05 100644 --- a/rpc/rpccfg/rpccfg.go +++ b/rpc/rpccfg/rpccfg.go @@ -37,3 +37,5 @@ var DefaultHTTPTimeouts = HTTPTimeouts{ } const DefaultEvmCallTimeout = 5 * time.Minute + +const DefaultHistoricalRPCTimeout = 5 * time.Second diff --git a/turbo/cli/default_flags.go b/turbo/cli/default_flags.go index 106825217ae..ce41c70b42c 100644 --- a/turbo/cli/default_flags.go +++ b/turbo/cli/default_flags.go @@ -145,6 +145,10 @@ var DefaultFlags = []cli.Flag{ &utils.HeimdallgRPCAddressFlag, &utils.EthStatsURLFlag, &utils.OverrideShanghaiTime, + &utils.RollupSequencerHTTPFlag, + &utils.RollupHistoricalRPCFlag, + &utils.RollupHistoricalRPCTimeoutFlag, + &utils.RollupDisableTxPoolGossipFlag, &utils.ConfigFlag, diff --git a/turbo/cli/flags.go b/turbo/cli/flags.go index 211706e0a8d..31ef85ac2f5 100644 --- a/turbo/cli/flags.go +++ b/turbo/cli/flags.go @@ -400,6 +400,10 @@ func setEmbeddedRpcDaemon(ctx *cli.Context, cfg *nodecfg.Config, logger log.Logg TxPoolApiAddr: ctx.String(utils.TxpoolApiAddrFlag.Name), StateCache: kvcache.DefaultCoherentConfig, + + RollupSequencerHTTP: ctx.String(utils.RollupSequencerHTTPFlag.Name), + RollupHistoricalRPC: ctx.String(utils.RollupHistoricalRPCFlag.Name), + RollupHistoricalRPCTimeout: ctx.Duration(utils.RollupHistoricalRPCTimeoutFlag.Name), } if ctx.IsSet(utils.HttpCompressionFlag.Name) { c.HttpCompression = ctx.Bool(utils.HttpCompressionFlag.Name) From dc9f58304b3b2a0f351d53acb097dad47dc2baff Mon Sep 17 00:00:00 2001 From: cby3149 Date: Thu, 6 Jul 2023 16:35:04 -0700 Subject: [PATCH 2/8] Add legacy support for some RPC methods --- cmd/rpcdaemon/commands/eth_accounts.go | 8 ++-- cmd/rpcdaemon/commands/eth_call.go | 61 +++++++++++++++++++++++--- cmd/rpcdaemon/commands/tracing.go | 16 +++++++ 3 files changed, 75 insertions(+), 10 deletions(-) diff --git a/cmd/rpcdaemon/commands/eth_accounts.go b/cmd/rpcdaemon/commands/eth_accounts.go index b3d8b9af491..76fc4e61795 100644 --- a/cmd/rpcdaemon/commands/eth_accounts.go +++ b/cmd/rpcdaemon/commands/eth_accounts.go @@ -35,7 +35,7 @@ func (api *APIImpl) GetBalance(ctx context.Context, address libcommon.Address, b if err != nil { return nil, fmt.Errorf("read chain config: %v", err) } - if !chainConfig.IsBedrock(bn) { + if chainConfig.IsOptimismPreBedrock(bn) { if api.historicalRPCService != nil { var result hexutil.Big if err := api.historicalRPCService.CallContext(ctx, &result, "eth_getBalance", address, hexutil.EncodeUint64(bn)); err != nil { @@ -91,7 +91,7 @@ func (api *APIImpl) GetTransactionCount(ctx context.Context, address libcommon.A if err != nil { return nil, fmt.Errorf("read chain config: %v", err) } - if !chainConfig.IsBedrock(bn) { + if chainConfig.IsOptimismPreBedrock(bn) { if api.historicalRPCService != nil { var result hexutil.Uint64 if err := api.historicalRPCService.CallContext(ctx, &result, "eth_getTransactionCount", address, hexutil.EncodeUint64(bn)); err != nil { @@ -130,7 +130,7 @@ func (api *APIImpl) GetCode(ctx context.Context, address libcommon.Address, bloc if err != nil { return nil, fmt.Errorf("read chain config: %v", err) } - if !chainConfig.IsBedrock(bn) { + if chainConfig.IsOptimismPreBedrock(bn) { if api.historicalRPCService != nil { var result hexutility.Bytes if err := api.historicalRPCService.CallContext(ctx, &result, "eth_getCode", address, hexutil.EncodeUint64(bn)); err != nil { @@ -175,7 +175,7 @@ func (api *APIImpl) GetStorageAt(ctx context.Context, address libcommon.Address, if err != nil { return hexutility.Encode(common.LeftPadBytes(empty, 32)), fmt.Errorf("read chain config: %v", err) } - if !chainConfig.IsBedrock(bn) { + if chainConfig.IsOptimismPreBedrock(bn) { if api.historicalRPCService != nil { var result hexutility.Bytes if err := api.historicalRPCService.CallContext(ctx, &result, "eth_getStorageAt", address, index, hexutil.EncodeUint64(bn)); err != nil { diff --git a/cmd/rpcdaemon/commands/eth_call.go b/cmd/rpcdaemon/commands/eth_call.go index 0f914b8f03a..8361c05fedb 100644 --- a/cmd/rpcdaemon/commands/eth_call.go +++ b/cmd/rpcdaemon/commands/eth_call.go @@ -53,7 +53,7 @@ func (api *APIImpl) Call(ctx context.Context, args ethapi2.CallArgs, blockNrOrHa if err != nil { return nil, fmt.Errorf("read chain config: %v", err) } - if !chainConfig.IsBedrock(bn) { + if chainConfig.IsOptimismPreBedrock(bn) { if api.historicalRPCService != nil { var result hexutility.Bytes if err := api.historicalRPCService.CallContext(ctx, &result, "eth_call", args, hexutil.EncodeUint64(bn)); err != nil { @@ -157,6 +157,25 @@ func (api *APIImpl) EstimateGas(ctx context.Context, argsOrNil *ethapi2.CallArgs bNrOrHash = *blockNrOrHash } + bn, err := api.blockNumberFromBlockNumberOrHash(dbtx, &bNrOrHash) + if err != nil { + return 0, err + } + chainConfig, err := api.chainConfig(dbtx) + if err != nil { + return 0, fmt.Errorf("read chain config: %v", err) + } + if chainConfig.IsOptimismPreBedrock(bn) { + if api.historicalRPCService != nil { + var result hexutil.Uint64 + if err := api.historicalRPCService.CallContext(ctx, &result, "eth_estimateGas", args, hexutil.EncodeUint64(bn)); err != nil { + return 0, fmt.Errorf("historical backend failed: %w", err) + } + return result, nil + } + return 0, rpc.ErrNoHistoricalFallback + } + // Determine the highest gas limit can be used during the estimation. if args.Gas != nil && uint64(*args.Gas) >= params.TxGas { hi = uint64(*args.Gas) @@ -235,10 +254,6 @@ func (api *APIImpl) EstimateGas(ctx context.Context, argsOrNil *ethapi2.CallArgs } gasCap = hi - chainConfig, err := api.chainConfig(dbtx) - if err != nil { - return 0, err - } engine := api.engine() latestCanBlockNumber, latestCanHash, isLatest, err := rpchelper.GetCanonicalBlockNumber(latestNumOrHash, dbtx, api.filters) // DoCall cannot be executed on non-canonical blocks @@ -345,6 +360,25 @@ func (api *APIImpl) GetProof(ctx context.Context, address libcommon.Address, sto return nil, fmt.Errorf("not supported by Erigon3") } + bn, err := api.blockNumberFromBlockNumberOrHash(tx, &blockNrOrHash) + if err != nil { + return nil, err + } + chainConfig, err := api.chainConfig(tx) + if err != nil { + return nil, fmt.Errorf("read chain config: %v", err) + } + if chainConfig.IsOptimismPreBedrock(bn) { + if api.historicalRPCService != nil { + var result accounts.AccProofResult + if err := api.historicalRPCService.CallContext(ctx, &result, "eth_getProof", address, storageKeys, hexutil.EncodeUint64(bn)); err != nil { + return nil, fmt.Errorf("historical backend failed: %w", err) + } + return &result, nil + } + return nil, rpc.ErrNoHistoricalFallback + } + blockNr, _, _, err := rpchelper.GetBlockNumber(blockNrOrHash, tx, api.filters) if err != nil { return nil, err @@ -454,10 +488,25 @@ func (api *APIImpl) CreateAccessList(ctx context.Context, args ethapi2.CallArgs, } defer tx.Rollback() - chainConfig, err := api.chainConfig(tx) + bn, err := api.blockNumberFromBlockNumberOrHash(tx, blockNrOrHash) if err != nil { return nil, err } + chainConfig, err := api.chainConfig(tx) + if err != nil { + return nil, fmt.Errorf("read chain config: %v", err) + } + if chainConfig.IsOptimismPreBedrock(bn) { + if api.historicalRPCService != nil { + var result accessListResult + if err := api.historicalRPCService.CallContext(ctx, &result, "eth_createAccessList", args, hexutil.EncodeUint64(bn)); err != nil { + return nil, fmt.Errorf("historical backend failed: %w", err) + } + return &result, nil + } + return nil, rpc.ErrNoHistoricalFallback + } + engine := api.engine() blockNumber, hash, latest, err := rpchelper.GetCanonicalBlockNumber(bNrOrHash, tx, api.filters) // DoCall cannot be executed on non-canonical blocks diff --git a/cmd/rpcdaemon/commands/tracing.go b/cmd/rpcdaemon/commands/tracing.go index 2c3365abc73..bcfc403c55b 100644 --- a/cmd/rpcdaemon/commands/tracing.go +++ b/cmd/rpcdaemon/commands/tracing.go @@ -2,6 +2,7 @@ package commands import ( "context" + "encoding/json" "fmt" "math/big" "time" @@ -200,6 +201,21 @@ func (api *PrivateDebugAPIImpl) TraceTransaction(ctx context.Context, hash commo return nil } + if chainConfig.IsOptimismPreBedrock(blockNum) { + if api.historicalRPCService != nil { + treeResult := &GethTrace{} + if err := api.historicalRPCService.CallContext(ctx, treeResult, "debug_traceTransaction", hash, config); err != nil { + return fmt.Errorf("historical backend failed: %w", err) + } + result, err := json.Marshal(treeResult) + if err != nil { + return err + } + stream.WriteRaw(string(result)) + } + return rpc.ErrNoHistoricalFallback + } + // check pruning to ensure we have history at this block level err = api.BaseAPI.checkPruneHistory(tx, blockNum) if err != nil { From eb28493372585914e13b191964901e813f79ea74 Mon Sep 17 00:00:00 2001 From: cby3149 Date: Fri, 7 Jul 2023 13:25:06 -0700 Subject: [PATCH 3/8] Add tests --- cmd/rpcdaemon/commands/eth_accounts_test.go | 307 ++++++++++++++++++++ cmd/rpcdaemon/commands/eth_call_test.go | 128 ++++++++ cmd/rpcdaemon/commands/tracing.go | 1 + cmd/rpcdaemon/rpcdaemontest/test_util.go | 52 ++++ 4 files changed, 488 insertions(+) create mode 100644 cmd/rpcdaemon/commands/eth_accounts_test.go diff --git a/cmd/rpcdaemon/commands/eth_accounts_test.go b/cmd/rpcdaemon/commands/eth_accounts_test.go new file mode 100644 index 00000000000..9d1d68816d1 --- /dev/null +++ b/cmd/rpcdaemon/commands/eth_accounts_test.go @@ -0,0 +1,307 @@ +package commands + +import ( + "context" + "fmt" + "net/http" + "net/http/httptest" + "testing" + "time" + + libcommon "github.com/ledgerwatch/erigon-lib/common" + "github.com/ledgerwatch/erigon-lib/kv/kvcache" + "github.com/ledgerwatch/erigon/cmd/rpcdaemon/rpcdaemontest" + "github.com/ledgerwatch/erigon/rpc" + "github.com/ledgerwatch/erigon/rpc/rpccfg" + "github.com/ledgerwatch/log/v3" + "github.com/stretchr/testify/require" +) + +type MockServer struct { + Server *httptest.Server + Payload string +} + +func (m *MockServer) Start() { + m.Server = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(http.StatusOK) + w.Write([]byte(m.Payload)) + })) +} + +func (m *MockServer) Stop() { + m.Server.Close() +} + +func (m *MockServer) UpdatePayload(payload string) { + m.Payload = payload +} + +func (m *MockServer) GetRPC() (*rpc.Client, error) { + if m.Server == nil { + return nil, fmt.Errorf("server is not started") + } + ctx, cancel := context.WithTimeout(context.Background(), time.Second*5) + client, err := rpc.DialContext(ctx, m.Server.URL, log.New()) + cancel() + if err != nil { + return nil, err + } + return client, nil +} + +func TestGetBalanceHistoricalRPC(t *testing.T) { + m, _, _ := rpcdaemontest.CreateOptimismTestSentry(t) + agg := m.HistoryV3Components() + br, _ := m.NewBlocksIO() + stateCache := kvcache.New(kvcache.DefaultCoherentConfig) + api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) + addr := libcommon.HexToAddress("0x71562b71999873db5b286df957af199ec94617f7") + + table := []struct { + caseName string + payload string + appendAPI bool + isError bool + expected string + }{ + { + caseName: "miss api", + payload: "", + appendAPI: false, + isError: true, + expected: "no historical RPC is available for this historical (pre-bedrock) execution request", + }, + { + caseName: "success", + payload: "{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":\"0x1\"}", + appendAPI: true, + isError: false, + expected: "0x1", + }, + { + caseName: "failuer", + payload: "{\"jsonrpc\":\"2.0\",\"id\":1,\"error\":{\"code\":-32000,\"message\":\"error\"}}", + appendAPI: true, + isError: true, + expected: "historical backend failed: error", + }, + } + + for _, tt := range table { + t.Run(tt.caseName, func(t *testing.T) { + if tt.appendAPI { + s := MockServer{} + s.Start() + defer s.Stop() + historicalRPCService, err := s.GetRPC() + if err != nil { + t.Errorf("failed to start mock server: %v", err) + } + api.historicalRPCService = historicalRPCService + s.UpdatePayload(tt.payload) + } + + bal, err := api.GetBalance(m.Ctx, addr, rpc.BlockNumberOrHashWithNumber(0)) + if tt.isError { + require.Error(t, err, tt.caseName) + require.Equal(t, tt.expected, fmt.Sprintf("%v", err), tt.caseName) + } else { + require.NoError(t, err, tt.caseName) + require.Equal(t, tt.expected, fmt.Sprintf("%v", bal), tt.caseName) + } + }) + } +} + +func TestGetTransactionCountHistoricalRPC(t *testing.T) { + m, _, _ := rpcdaemontest.CreateOptimismTestSentry(t) + agg := m.HistoryV3Components() + br, _ := m.NewBlocksIO() + stateCache := kvcache.New(kvcache.DefaultCoherentConfig) + api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) + addr := libcommon.HexToAddress("0x71562b71999873db5b286df957af199ec94617f7") + + table := []struct { + caseName string + payload string + appendAPI bool + isError bool + expected string + }{ + { + caseName: "miss api", + payload: "", + appendAPI: false, + isError: true, + expected: "no historical RPC is available for this historical (pre-bedrock) execution request", + }, + { + caseName: "success", + payload: "{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":\"0x1\"}", + appendAPI: true, + isError: false, + expected: "0x1", + }, + { + caseName: "failuer", + payload: "{\"jsonrpc\":\"2.0\",\"id\":1,\"error\":{\"code\":-32000,\"message\":\"error\"}}", + appendAPI: true, + isError: true, + expected: "historical backend failed: error", + }, + } + + for _, tt := range table { + t.Run(tt.caseName, func(t *testing.T) { + if tt.appendAPI { + s := MockServer{} + s.Start() + defer s.Stop() + historicalRPCService, err := s.GetRPC() + if err != nil { + t.Errorf("failed to start mock server: %v", err) + } + api.historicalRPCService = historicalRPCService + s.UpdatePayload(tt.payload) + } + + val, err := api.GetTransactionCount(m.Ctx, addr, rpc.BlockNumberOrHashWithNumber(0)) + if tt.isError { + require.Error(t, err, tt.caseName) + require.Equal(t, tt.expected, fmt.Sprintf("%v", err), tt.caseName) + } else { + require.NoError(t, err, tt.caseName) + require.Equal(t, tt.expected, fmt.Sprintf("%v", val), tt.caseName) + } + }) + } +} + +func TestGetCodeHistoricalRPC(t *testing.T) { + m, _, _ := rpcdaemontest.CreateOptimismTestSentry(t) + agg := m.HistoryV3Components() + br, _ := m.NewBlocksIO() + stateCache := kvcache.New(kvcache.DefaultCoherentConfig) + api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) + addr := libcommon.HexToAddress("0x71562b71999873db5b286df957af199ec94617f7") + + table := []struct { + caseName string + payload string + appendAPI bool + isError bool + expected string + }{ + { + caseName: "miss api", + payload: "", + appendAPI: false, + isError: true, + expected: "no historical RPC is available for this historical (pre-bedrock) execution request", + }, + { + caseName: "success", + payload: "{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":\"0x4200000000000000000000000000000000000010\"}", + appendAPI: true, + isError: false, + expected: "0x4200000000000000000000000000000000000010", + }, + { + caseName: "failuer", + payload: "{\"jsonrpc\":\"2.0\",\"id\":1,\"error\":{\"code\":-32000,\"message\":\"error\"}}", + appendAPI: true, + isError: true, + expected: "historical backend failed: error", + }, + } + + for _, tt := range table { + t.Run(tt.caseName, func(t *testing.T) { + if tt.appendAPI { + s := MockServer{} + s.Start() + defer s.Stop() + historicalRPCService, err := s.GetRPC() + if err != nil { + t.Errorf("failed to start mock server: %v", err) + } + api.historicalRPCService = historicalRPCService + s.UpdatePayload(tt.payload) + } + + val, err := api.GetCode(m.Ctx, addr, rpc.BlockNumberOrHashWithNumber(0)) + if tt.isError { + require.Error(t, err, tt.caseName) + require.Equal(t, tt.expected, fmt.Sprintf("%v", err), tt.caseName) + } else { + require.NoError(t, err, tt.caseName) + require.Equal(t, tt.expected, fmt.Sprintf("%v", val), tt.caseName) + } + }) + } +} + +func TestGetStorageAtHistoricalRPC(t *testing.T) { + m, _, _ := rpcdaemontest.CreateOptimismTestSentry(t) + agg := m.HistoryV3Components() + br, _ := m.NewBlocksIO() + stateCache := kvcache.New(kvcache.DefaultCoherentConfig) + api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) + addr := libcommon.HexToAddress("0x71562b71999873db5b286df957af199ec94617f7") + + table := []struct { + caseName string + payload string + appendAPI bool + isError bool + expected string + }{ + { + caseName: "miss api", + payload: "", + appendAPI: false, + isError: true, + expected: "no historical RPC is available for this historical (pre-bedrock) execution request", + }, + { + caseName: "success", + payload: "{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":\"0x4200000000000000000000000000000000000010\"}", + appendAPI: true, + isError: false, + expected: "0x0000000000000000000000004200000000000000000000000000000000000010", + }, + { + caseName: "failuer", + payload: "{\"jsonrpc\":\"2.0\",\"id\":1,\"error\":{\"code\":-32000,\"message\":\"error\"}}", + appendAPI: true, + isError: true, + expected: "historical backend failed: error", + }, + } + + for _, tt := range table { + t.Run(tt.caseName, func(t *testing.T) { + if tt.appendAPI { + s := MockServer{} + s.Start() + defer s.Stop() + historicalRPCService, err := s.GetRPC() + if err != nil { + t.Errorf("failed to start mock server: %v", err) + } + api.historicalRPCService = historicalRPCService + s.UpdatePayload(tt.payload) + } + + val, err := api.GetStorageAt(m.Ctx, addr, "1", rpc.BlockNumberOrHashWithNumber(0)) + if tt.isError { + require.Error(t, err, tt.caseName) + require.Equal(t, tt.expected, fmt.Sprintf("%v", err), tt.caseName) + } else { + require.NoError(t, err, tt.caseName) + require.Equal(t, tt.expected, fmt.Sprintf("%v", val), tt.caseName) + } + }) + } +} diff --git a/cmd/rpcdaemon/commands/eth_call_test.go b/cmd/rpcdaemon/commands/eth_call_test.go index c4a97ee1c0c..7e186fdce52 100644 --- a/cmd/rpcdaemon/commands/eth_call_test.go +++ b/cmd/rpcdaemon/commands/eth_call_test.go @@ -24,11 +24,13 @@ import ( "github.com/ledgerwatch/erigon/core/rawdb" "github.com/ledgerwatch/erigon/core/state" "github.com/ledgerwatch/erigon/core/types" + "github.com/ledgerwatch/erigon/core/types/accounts" "github.com/ledgerwatch/erigon/crypto" "github.com/ledgerwatch/erigon/params" "github.com/ledgerwatch/erigon/rpc" "github.com/ledgerwatch/erigon/rpc/rpccfg" "github.com/ledgerwatch/erigon/turbo/adapter/ethapi" + ethapi2 "github.com/ledgerwatch/erigon/turbo/adapter/ethapi" "github.com/ledgerwatch/erigon/turbo/rpchelper" "github.com/ledgerwatch/erigon/turbo/stages" "github.com/ledgerwatch/erigon/turbo/trie" @@ -54,6 +56,69 @@ func TestEstimateGas(t *testing.T) { } } +func TestEstimateGasHistoricalRPC(t *testing.T) { + m, _, _ := rpcdaemontest.CreateOptimismTestSentry(t) + agg := m.HistoryV3Components() + br, _ := m.NewBlocksIO() + stateCache := kvcache.New(kvcache.DefaultCoherentConfig) + api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) + + table := []struct { + caseName string + payload string + appendAPI bool + isError bool + expected string + }{ + { + caseName: "miss api", + payload: "", + appendAPI: false, + isError: true, + expected: "no historical RPC is available for this historical (pre-bedrock) execution request", + }, + { + caseName: "success", + payload: "{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":\"0x1\"}", + appendAPI: true, + isError: false, + expected: "0x1", + }, + { + caseName: "failuer", + payload: "{\"jsonrpc\":\"2.0\",\"id\":1,\"error\":{\"code\":-32000,\"message\":\"error\"}}", + appendAPI: true, + isError: true, + expected: "historical backend failed: error", + }, + } + + for _, tt := range table { + t.Run(tt.caseName, func(t *testing.T) { + if tt.appendAPI { + s := MockServer{} + s.Start() + defer s.Stop() + historicalRPCService, err := s.GetRPC() + if err != nil { + t.Errorf("failed to start mock server: %v", err) + } + api.historicalRPCService = historicalRPCService + s.UpdatePayload(tt.payload) + } + bn := rpc.BlockNumberOrHashWithNumber(0) + val, err := api.EstimateGas(m.Ctx, ðapi2.CallArgs{}, &bn) + if tt.isError { + require.Error(t, err, tt.caseName) + require.Equal(t, tt.expected, fmt.Sprintf("%v", err), tt.caseName) + } else { + require.NoError(t, err, tt.caseName) + require.Equal(t, tt.expected, fmt.Sprintf("%v", val), tt.caseName) + } + }) + } +} + func TestEthCallNonCanonical(t *testing.T) { m, _, _ := rpcdaemontest.CreateTestSentry(t) agg := m.HistoryV3Components() @@ -228,6 +293,69 @@ func TestGetProof(t *testing.T) { } } +func TestGetProofHistoricalRPC(t *testing.T) { + m, _, _ := rpcdaemontest.CreateOptimismTestSentry(t) + agg := m.HistoryV3Components() + br, _ := m.NewBlocksIO() + stateCache := kvcache.New(kvcache.DefaultCoherentConfig) + api := NewEthAPI(NewBaseApi(nil, stateCache, br, agg, false, rpccfg.DefaultEvmCallTimeout, m.Engine, m.Dirs, nil, nil), m.DB, nil, nil, nil, 5000000, 100_000, log.New()) + + table := []struct { + caseName string + payload string + appendAPI bool + isError bool + expected string + }{ + { + caseName: "miss api", + payload: "", + appendAPI: false, + isError: true, + expected: "no historical RPC is available for this historical (pre-bedrock) execution request", + }, + { + caseName: "success", + payload: "{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":{}}", + appendAPI: true, + isError: false, + expected: fmt.Sprintf("%v", &accounts.AccProofResult{}), + }, + { + caseName: "failuer", + payload: "{\"jsonrpc\":\"2.0\",\"id\":1,\"error\":{\"code\":-32000,\"message\":\"error\"}}", + appendAPI: true, + isError: true, + expected: "historical backend failed: error", + }, + } + + for _, tt := range table { + t.Run(tt.caseName, func(t *testing.T) { + if tt.appendAPI { + s := MockServer{} + s.Start() + defer s.Stop() + historicalRPCService, err := s.GetRPC() + if err != nil { + t.Errorf("failed to start mock server: %v", err) + } + api.historicalRPCService = historicalRPCService + s.UpdatePayload(tt.payload) + } + bn := rpc.BlockNumberOrHashWithNumber(0) + val, err := api.GetProof(m.Ctx, libcommon.HexToAddress("0xdeaddeaddeaddeaddeaddeaddeaddeaddeaddead0"), []libcommon.Hash{libcommon.HexToHash("0xdeaddeaddeaddeaddeaddeaddeaddeaddeaddeaddeaddeaddeaddeaddeaddead")}, bn) + if tt.isError { + require.Error(t, err, tt.caseName) + require.Equal(t, tt.expected, fmt.Sprintf("%v", err), tt.caseName) + } else { + require.NoError(t, err, tt.caseName) + require.Equal(t, tt.expected, fmt.Sprintf("%v", val), tt.caseName) + } + }) + } +} + func TestGetBlockByTimestampLatestTime(t *testing.T) { ctx := context.Background() m, _, _ := rpcdaemontest.CreateTestSentry(t) diff --git a/cmd/rpcdaemon/commands/tracing.go b/cmd/rpcdaemon/commands/tracing.go index bcfc403c55b..503a82a8b3b 100644 --- a/cmd/rpcdaemon/commands/tracing.go +++ b/cmd/rpcdaemon/commands/tracing.go @@ -212,6 +212,7 @@ func (api *PrivateDebugAPIImpl) TraceTransaction(ctx context.Context, hash commo return err } stream.WriteRaw(string(result)) + return nil } return rpc.ErrNoHistoricalFallback } diff --git a/cmd/rpcdaemon/rpcdaemontest/test_util.go b/cmd/rpcdaemon/rpcdaemontest/test_util.go index 0ccd61d185d..c018b73f3e9 100644 --- a/cmd/rpcdaemon/rpcdaemontest/test_util.go +++ b/cmd/rpcdaemon/rpcdaemontest/test_util.go @@ -111,6 +111,58 @@ func CreateTestSentry(t *testing.T) (*stages.MockSentry, *core.ChainPack, []*cor return m, chain, []*core.ChainPack{orphanedChain} } +func CreateOptimismTestSentry(t *testing.T) (*stages.MockSentry, *core.ChainPack, []*core.ChainPack) { + addresses := makeTestAddresses() + var ( + key = addresses.key + address = addresses.address + address1 = addresses.address1 + address2 = addresses.address2 + ) + + var ( + gspec = &types.Genesis{ + Config: params.TestChainConfig, + Alloc: types.GenesisAlloc{ + address: {Balance: big.NewInt(9000000000000000000)}, + address1: {Balance: big.NewInt(200000000000000000)}, + address2: {Balance: big.NewInt(300000000000000000)}, + }, + GasLimit: 10000000, + } + ) + gspec.Config.Optimism = &chain.OptimismConfig{ + EIP1559Elasticity: 8, + EIP1559Denominator: 1, + } + gspec.Config.BedrockBlock = big.NewInt(10000) + m := stages.MockWithGenesis(t, gspec, key, false) + + contractBackend := backends.NewTestSimulatedBackendWithConfig(t, gspec.Alloc, gspec.Config, gspec.GasLimit) + defer contractBackend.Close() + + // Generate empty chain to have some orphaned blocks for tests + orphanedChain, err := core.GenerateChain(m.ChainConfig, m.Genesis, m.Engine, m.DB, 5, func(i int, block *core.BlockGen) { + }, true) + if err != nil { + t.Fatal(err) + } + + chain, err := getChainInstance(&addresses, m.ChainConfig, m.Genesis, m.Engine, m.DB, contractBackend) + if err != nil { + t.Fatal(err) + } + + if err = m.InsertChain(orphanedChain); err != nil { + t.Fatal(err) + } + if err = m.InsertChain(chain); err != nil { + t.Fatal(err) + } + + return m, chain, []*core.ChainPack{orphanedChain} +} + var chainInstance *core.ChainPack func getChainInstance( From 7553f629ccc38ae5042c8364a67e3f36dd8cd1a4 Mon Sep 17 00:00:00 2001 From: cby3149 Date: Fri, 7 Jul 2023 13:48:55 -0700 Subject: [PATCH 4/8] Fix unit tests --- cmd/rpcdaemon/commands/eth_accounts_test.go | 8 ++++---- cmd/rpcdaemon/commands/eth_call_test.go | 4 ++-- cmd/rpcdaemon/rpcdaemontest/test_util.go | 7 +------ params/config.go | 20 ++++++++++++++++++++ 4 files changed, 27 insertions(+), 12 deletions(-) diff --git a/cmd/rpcdaemon/commands/eth_accounts_test.go b/cmd/rpcdaemon/commands/eth_accounts_test.go index 9d1d68816d1..83cb7cb7350 100644 --- a/cmd/rpcdaemon/commands/eth_accounts_test.go +++ b/cmd/rpcdaemon/commands/eth_accounts_test.go @@ -66,7 +66,7 @@ func TestGetBalanceHistoricalRPC(t *testing.T) { expected string }{ { - caseName: "miss api", + caseName: "missing api", payload: "", appendAPI: false, isError: true, @@ -130,7 +130,7 @@ func TestGetTransactionCountHistoricalRPC(t *testing.T) { expected string }{ { - caseName: "miss api", + caseName: "missing api", payload: "", appendAPI: false, isError: true, @@ -194,7 +194,7 @@ func TestGetCodeHistoricalRPC(t *testing.T) { expected string }{ { - caseName: "miss api", + caseName: "missing api", payload: "", appendAPI: false, isError: true, @@ -258,7 +258,7 @@ func TestGetStorageAtHistoricalRPC(t *testing.T) { expected string }{ { - caseName: "miss api", + caseName: "missing api", payload: "", appendAPI: false, isError: true, diff --git a/cmd/rpcdaemon/commands/eth_call_test.go b/cmd/rpcdaemon/commands/eth_call_test.go index 7e186fdce52..69ff8c47656 100644 --- a/cmd/rpcdaemon/commands/eth_call_test.go +++ b/cmd/rpcdaemon/commands/eth_call_test.go @@ -71,7 +71,7 @@ func TestEstimateGasHistoricalRPC(t *testing.T) { expected string }{ { - caseName: "miss api", + caseName: "missing api", payload: "", appendAPI: false, isError: true, @@ -308,7 +308,7 @@ func TestGetProofHistoricalRPC(t *testing.T) { expected string }{ { - caseName: "miss api", + caseName: "missing api", payload: "", appendAPI: false, isError: true, diff --git a/cmd/rpcdaemon/rpcdaemontest/test_util.go b/cmd/rpcdaemon/rpcdaemontest/test_util.go index c018b73f3e9..f961e95e095 100644 --- a/cmd/rpcdaemon/rpcdaemontest/test_util.go +++ b/cmd/rpcdaemon/rpcdaemontest/test_util.go @@ -122,7 +122,7 @@ func CreateOptimismTestSentry(t *testing.T) (*stages.MockSentry, *core.ChainPack var ( gspec = &types.Genesis{ - Config: params.TestChainConfig, + Config: params.TestOptimismChainConfig, Alloc: types.GenesisAlloc{ address: {Balance: big.NewInt(9000000000000000000)}, address1: {Balance: big.NewInt(200000000000000000)}, @@ -131,11 +131,6 @@ func CreateOptimismTestSentry(t *testing.T) (*stages.MockSentry, *core.ChainPack GasLimit: 10000000, } ) - gspec.Config.Optimism = &chain.OptimismConfig{ - EIP1559Elasticity: 8, - EIP1559Denominator: 1, - } - gspec.Config.BedrockBlock = big.NewInt(10000) m := stages.MockWithGenesis(t, gspec, key, false) contractBackend := backends.NewTestSimulatedBackendWithConfig(t, gspec.Alloc, gspec.Config, gspec.GasLimit) diff --git a/params/config.go b/params/config.go index 34bfdc9fcbe..6a9992e6cfa 100644 --- a/params/config.go +++ b/params/config.go @@ -165,6 +165,26 @@ var ( Aura: &chain.AuRaConfig{}, } + TestOptimismChainConfig = &chain.Config{ + ChainID: big.NewInt(1337), + Consensus: chain.EtHashConsensus, + HomesteadBlock: big.NewInt(0), + TangerineWhistleBlock: big.NewInt(0), + SpuriousDragonBlock: big.NewInt(0), + ByzantiumBlock: big.NewInt(0), + ConstantinopleBlock: big.NewInt(0), + PetersburgBlock: big.NewInt(0), + IstanbulBlock: big.NewInt(0), + MuirGlacierBlock: big.NewInt(0), + BerlinBlock: big.NewInt(0), + Ethash: new(chain.EthashConfig), + Optimism: &chain.OptimismConfig{ + EIP1559Elasticity: 8, + EIP1559Denominator: 1, + }, + BedrockBlock: big.NewInt(1000000000000000000), + } + TestRules = TestChainConfig.Rules(0, 0) ) From 88e8f22c2839ef8d4890fb5caa1dde24b7196290 Mon Sep 17 00:00:00 2001 From: cby3149 Date: Fri, 7 Jul 2023 16:55:23 -0700 Subject: [PATCH 5/8] Fix lint --- core/types/deposit_tx.go | 1 + 1 file changed, 1 insertion(+) diff --git a/core/types/deposit_tx.go b/core/types/deposit_tx.go index 41cc2d6b13e..0ff2960b904 100644 --- a/core/types/deposit_tx.go +++ b/core/types/deposit_tx.go @@ -227,6 +227,7 @@ func (tx *DepositTransaction) FakeSign(address libcommon.Address) (Transaction, cpy := tx.copy() return cpy, nil } + // Hash computes the hash (but not for signatures!) func (tx *DepositTransaction) Hash() libcommon.Hash { if hash := tx.hash.Load(); hash != nil { From 150e5e3911f6e2ed6a6d08f3a5337f7e601931c3 Mon Sep 17 00:00:00 2001 From: cby3149 Date: Tue, 18 Jul 2023 14:42:22 -0700 Subject: [PATCH 6/8] Merge branch 'boba-develop' into add-seq-historical-rpcs --- .github/workflows/ci.yml | 25 +- .github/workflows/test-integration.yml | 3 + .gitignore | 2 + DEV_CHAIN.md | 18 +- Dockerfile | 2 +- Dockerfile.debian | 1 + Makefile | 28 +- README.md | 52 +- RELEASE_INSTRUCTIONS.md | 6 +- TESTING.md | 14 +- accounts/abi/bind/backends/simulated.go | 69 +- accounts/abi/bind/backends/simulated_test.go | 18 +- accounts/abi/bind/util_test.go | 4 +- cl/beacon/handler/genesis.go | 42 + cl/beacon/handler/handler.go | 85 ++ cl/beacon/router.go | 92 +- cl/beacon/types/primitives.go | 12 + cl/clparams/config.go | 13 +- cl/clparams/initial_state/initial_state.go | 1 + cl/cltypes/beacon_block.go | 38 +- cl/cltypes/beacon_block_test.go | 6 +- ...ob_side_car.go => beacon_kzgcommitment.go} | 0 cl/cltypes/beacon_kzgcommitment_test.go | 75 ++ cl/cltypes/eth1_block.go | 59 +- cl/cltypes/eth1_header.go | 14 +- cl/cltypes/eth1_header_test.go | 6 +- cl/cltypes/fork_test.go | 102 ++ cl/cltypes/solid/bitlist.go | 2 +- cl/cltypes/solid/bitlist_test.go | 110 ++ cl/cltypes/solid/extra_data_test.go | 40 + cl/cltypes/solid/hash_list.go | 4 +- cl/cltypes/solid/hashutil.go | 2 +- cl/cltypes/solid/hashutil_test.go | 34 + cl/cltypes/solid/uint64slice_byte.go | 6 +- cl/cltypes/solid/validator.go | 5 + cl/cltypes/solid/validator_set.go | 2 +- cl/fork/fork.go | 14 +- cl/fork/fork_test.go | 127 +- cl/freezer/.gitignore | 1 + cl/freezer/freezer.go | 16 + cl/freezer/freezer_test.go | 100 ++ cl/freezer/fs_freezer.go | 65 + cl/freezer/mem_freezer.go | 72 ++ cl/freezer/store.go | 53 + cl/freezer/utils.go | 36 + cl/merkle_tree/hasher.go | 2 +- cl/merkle_tree/list.go | 4 +- cl/merkle_tree/merkle_root_test.go | 2 +- cl/merkle_tree/utils.go | 4 +- cl/phase1/cache/attestation_indicies_cache.go | 22 +- cl/phase1/cache/cache_test.go | 6 +- cl/phase1/cache/init.go | 4 +- cl/phase1/core/rawdb/accessors_test.go | 15 + cl/phase1/core/rawdb/config_test.go | 19 + cl/phase1/core/state/accessors.go | 6 +- cl/phase1/core/state/cache_accessors.go | 4 +- cl/phase1/core/state/raw/misc_test.go | 4 +- cl/phase1/core/state/raw/setters.go | 3 +- cl/phase1/core/state/shuffling/shuffling.go | 1 + .../core/state/state_encoding/encoding.go | 11 - .../core/transition/block_processing_test.go | 26 - cl/phase1/core/transition/block_transition.go | 211 ---- cl/phase1/core/transition/operations.go | 281 ----- .../core/transition/process_attestations.go | 260 ---- .../process_bls_to_execution_change.go | 64 - cl/phase1/core/transition/process_epoch.go | 103 -- .../core/transition/process_slashings.go | 56 - cl/phase1/core/transition/process_slots.go | 183 --- .../core/transition/process_sync_aggregate.go | 93 -- cl/phase1/core/transition/processing.go | 120 -- .../block_processing/deneb_block.ssz_snappy | Bin 16454 -> 0 bytes .../execution_client/execution_client.go | 89 +- .../execution_client/execution_client_rpc.go | 162 +++ .../execution_client/execution_engine.go | 155 --- cl/phase1/execution_client/interface.go | 16 + .../rpc_helper/jwt_roundtripper.go | 32 + .../execution_client/rpc_helper/methods.go | 8 + cl/phase1/forkchoice/fork_choice_test.go | 2 +- cl/phase1/forkchoice/fork_graph/fork_graph.go | 68 +- .../forkchoice/fork_graph/fork_graph_test.go | 23 +- cl/phase1/forkchoice/forkchoice.go | 6 +- cl/phase1/forkchoice/on_attestation.go | 2 +- cl/phase1/forkchoice/on_attester_slashing.go | 2 +- cl/phase1/forkchoice/on_block.go | 22 +- cl/phase1/forkchoice/utils.go | 9 +- cl/phase1/network/gossip_manager.go | 12 +- cl/phase1/stages/stage_fork_choice.go | 19 +- cl/phase1/stages/stages.go | 2 +- cl/phase1/stages/stages_beacon_state.go | 2 +- .../consensus_tests/epoch_processing.go | 31 +- cl/spectest/consensus_tests/finality.go | 4 +- cl/spectest/consensus_tests/fork_choice.go | 2 +- cl/spectest/consensus_tests/operations.go | 19 +- cl/spectest/consensus_tests/sanity.go | 7 +- cl/spectest/consensus_tests/transition.go | 4 +- cl/spectest/tests_test.go | 11 +- cl/ssz/ssz_test.go | 4 +- cl/ssz/testdata/serialized.ssz_snappy | Bin 2739693 -> 204448 bytes cl/transition/compat.go | 19 + .../impl/eth2/block_processing_test.go | 28 + cl/transition/impl/eth2/impl.go | 11 + cl/transition/impl/eth2/operations.go | 895 +++++++++++++ .../finalization_and_justification.go | 20 +- .../process_effective_balance_update.go | 2 +- .../impl/eth2/statechange/process_epoch.go | 49 + .../eth2/statechange}/process_epoch_test.go | 28 +- .../statechange/process_historical_roots.go | 59 + .../process_historical_roots_update.go | 44 + .../statechange}/process_inactivity_scores.go | 16 +- .../statechange}/process_registry_updates.go | 12 +- .../process_rewards_and_penalties.go | 56 +- .../eth2/statechange/process_slashings.go | 93 ++ .../process_sync_committee_update.go | 8 +- .../process_sync_committee_update_test.go | 25 +- .../impl/eth2/statechange}/resets.go | 2 +- .../block_processing/capella_block.ssz_snappy | Bin 0 -> 14512 bytes .../capella_state.ssz_snappy} | Bin 204233 -> 204448 bytes .../effective_balances_expected.ssz_snappy | Bin .../effective_balances_test_state.ssz_snappy | Bin .../eth1_data_reset_expected_test.ssz_snappy | Bin .../eth1_data_reset_state_test.ssz_snappy | Bin .../historical_roots_expected_test.ssz_snappy | Bin .../historical_roots_state_test.ssz_snappy | Bin ...inactivity_scores_expected_test.ssz_snappy | Bin .../inactivity_scores_state_test.ssz_snappy | Bin ...tion_and_finality_expected_test.ssz_snappy | Bin ...ication_and_finality_state_test.ssz_snappy | Bin ...tion_flag_updates_expected_test.ssz_snappy | Bin ...ipation_flag_updates_state_test.ssz_snappy | Bin ...andao_mixes_reset_expected_test.ssz_snappy | Bin .../randao_mixes_reset_state_test.ssz_snappy | Bin .../registry_updates_test_expected.ssz_snappy | Bin .../registry_updates_test_state.ssz_snappy | Bin .../rewards_penalty_test_expected.ssz_snappy | Bin .../rewards_penalty_test_state.ssz_snappy | Bin .../slashings_expected_test.ssz_snappy | Bin .../slashings_reset_expected_test.ssz_snappy | Bin .../slashings_reset_state_test.ssz_snappy | Bin .../slashings_state_test.ssz_snappy | Bin .../impl/eth2/utils.go} | 55 +- cl/transition/impl/eth2/validation.go | 54 + cl/transition/impl/funcmap/impl.go | 94 ++ cl/transition/machine/block.go | 141 +++ cl/transition/machine/helpers.go | 11 + cl/transition/machine/machine.go | 48 + cl/transition/machine/transition.go | 32 + cl/utils/crypto_test.go | 55 + cl/utils/math_test.go | 147 +++ cmd/abigen/main.go | 2 - cmd/caplin-phase1/caplin1/run.go | 15 +- cmd/caplin-phase1/main.go | 42 +- cmd/caplin-regression/.gitignore | 1 + cmd/caplin-regression/Makefile | 2 + cmd/caplin-regression/README.md | 3 + cmd/caplin-regression/main.go | 69 + cmd/caplin-regression/regression/reader.go | 54 + cmd/caplin-regression/regression/tester.go | 109 ++ cmd/devnet/README.md | 128 +- cmd/devnet/args/args.go | 154 +++ cmd/devnet/args/node.go | 147 +++ cmd/devnet/args/node_test.go | 187 +++ cmd/devnet/commands/account.go | 28 +- cmd/devnet/commands/all.go | 43 +- cmd/devnet/commands/block.go | 96 +- cmd/devnet/commands/ping.go | 22 + cmd/devnet/commands/request.go | 14 - cmd/devnet/devnet/context.go | 153 +++ cmd/devnet/devnet/network.go | 265 ++++ cmd/devnet/devnet/node.go | 132 ++ cmd/devnet/devnetutils/utils.go | 275 ++-- cmd/devnet/devnetutils/utils_test.go | 80 +- cmd/devnet/main.go | 267 +++- cmd/devnet/models/errors.go | 12 - cmd/devnet/models/model.go | 279 ----- cmd/devnet/models/model_test.go | 32 - cmd/devnet/node/node.go | 158 --- cmd/devnet/requests/account.go | 34 +- cmd/devnet/requests/admin.go | 22 +- cmd/devnet/requests/block.go | 109 +- cmd/devnet/requests/errors.go | 8 + cmd/devnet/requests/event.go | 120 +- cmd/devnet/requests/mock_request.go | 16 - cmd/devnet/requests/request_generator.go | 235 ++-- cmd/devnet/requests/request_generator_test.go | 77 +- cmd/devnet/requests/tx.go | 26 +- cmd/devnet/scenarios/context.go | 7 + cmd/devnet/scenarios/errors.go | 24 + cmd/devnet/scenarios/results.go | 54 + cmd/devnet/scenarios/run.go | 120 ++ cmd/devnet/scenarios/scenario.go | 150 +++ cmd/devnet/scenarios/stack.go | 141 +++ cmd/devnet/scenarios/suite.go | 378 ++++++ cmd/devnet/services/account.go | 7 +- cmd/devnet/services/block.go | 133 +- cmd/devnet/services/event.go | 94 +- cmd/devnet/services/tx.go | 20 +- cmd/downloader/main.go | 14 +- cmd/downloader/readme.md | 4 +- cmd/erigon-el-mock/main.go | 28 +- cmd/erigon-el-mock/server.go | 13 +- cmd/erigon-el/backend/backend.go | 1110 ----------------- cmd/erigon-el/backend/node.go | 123 -- cmd/erigon-el/eth1/execution.go | 392 ------ cmd/erigon-el/main.go | 125 -- cmd/erigon-el/stages/stages.go | 96 -- cmd/erigon/main.go | 4 + cmd/evm/internal/t8ntool/execution.go | 6 +- cmd/evm/internal/t8ntool/transition.go | 27 +- cmd/hack/hack.go | 26 +- cmd/hack/tool/fromdb/tool.go | 5 +- cmd/integration/Readme.md | 16 +- cmd/integration/commands/flags.go | 7 +- cmd/integration/commands/refetence_db.go | 35 +- cmd/integration/commands/reset_state.go | 24 +- cmd/integration/commands/root.go | 15 +- cmd/integration/commands/stages.go | 243 ++-- cmd/integration/commands/state_domains.go | 21 +- cmd/integration/commands/state_stages.go | 25 +- cmd/observer/observer/command.go | 9 +- cmd/pics/state.go | 12 +- cmd/prometheus/Readme.md | 2 +- cmd/prometheus/dashboards/erigon.json | 283 +++-- cmd/rpcdaemon/README.md | 13 +- cmd/rpcdaemon/cli/config.go | 108 +- cmd/rpcdaemon/cli/httpcfg/http_cfg.go | 3 +- cmd/rpcdaemon/graphql/graph/generated.go | 872 ++++++------- .../graphql/graph/model/models_gen.go | 80 +- cmd/rpcdaemon/graphql/graph/resolver.go | 4 +- .../graphql/graph/schema.resolvers.go | 2 +- cmd/rpcdaemon/graphql/graphql.go | 7 +- cmd/rpcdaemon/main.go | 13 +- cmd/rpcdaemon/postman/RPC_Testing.json | 2 +- cmd/rpcdaemon/rpcdaemontest/test_util.go | 28 +- cmd/rpcdaemon/rpcservices/engine_backend.go | 38 + cmd/rpcdaemon/rpcservices/eth_backend.go | 138 +- cmd/rpctest/rpctest/account_range_verify.go | 6 +- cmd/sentinel/cli/cliSettings.go | 89 +- cmd/sentinel/cli/flags/defaultFlags.go | 11 + cmd/sentinel/cli/flags/flags.go | 59 +- cmd/sentinel/sentinel/handlers/handlers.go | 2 +- cmd/sentinel/sentinel/service/service.go | 29 - cmd/sentinel/sentinel/service/start.go | 3 +- cmd/sentry/main.go | 8 +- cmd/sentry/sentry/sentry_grpc_server_test.go | 14 +- cmd/sentry/sentry/sentry_multi_client.go | 8 +- cmd/state/commands/check_change_sets.go | 25 +- cmd/state/commands/erigon4.go | 34 +- cmd/state/commands/global_flags_vars.go | 2 +- cmd/state/commands/opcode_tracer.go | 49 +- cmd/state/commands/state_root.go | 22 +- cmd/state/commands/verify_txlookup.go | 8 +- cmd/state/exec22/txtask.go | 25 +- cmd/state/exec3/state.go | 84 +- cmd/state/exec3/state_recon.go | 6 +- cmd/state/stats/index_stats.go | 2 +- cmd/state/verify/verify_txlookup.go | 9 +- cmd/txpool/main.go | 8 +- cmd/utils/flags.go | 13 +- common/paths/paths.go | 2 - consensus/aura/aura.go | 548 +------- consensus/aura/aura_test.go | 64 +- consensus/aura/contract_abi.go | 136 ++ consensus/aura/contracts/embed.go | 3 + consensus/aura/empty_step.go | 135 ++ consensus/aura/epoch.go | 47 + consensus/aura/gaslimit_override.go | 76 ++ consensus/aura/rolling_finality.go | 172 +++ consensus/aura/types.go | 69 + consensus/aura/unassemble.go | 34 + consensus/bor/api.go | 5 +- consensus/bor/bor.go | 267 ++-- consensus/bor/contract/client.go | 15 +- consensus/bor/heimdall/client.go | 26 +- consensus/bor/heimdall/span/spanner.go | 7 +- consensus/bor/snapshot.go | 14 +- consensus/bor/snapshot_test.go | 13 +- consensus/bor/valset/validator_set.go | 42 +- consensus/chain_reader.go | 4 + consensus/clique/clique.go | 4 +- consensus/clique/clique_test.go | 15 +- consensus/clique/snapshot.go | 2 +- consensus/clique/snapshot_test.go | 9 +- consensus/clique/verifier.go | 3 + consensus/consensus.go | 8 +- consensus/db/db.go | 21 - consensus/ethash/consensus.go | 8 +- consensus/merge/merge.go | 42 +- consensus/merge/merge_test.go | 4 + consensus/misc/eip4844.go | 48 +- consensus/misc/eip4844_test.go | 46 +- consensus/misc/pos.go | 22 + core/allocs/rinkeby.json | 773 ------------ core/block_validator_test.go | 18 +- core/blockchain.go | 211 +--- core/chain_makers.go | 202 ++- core/evm.go | 12 +- core/forkid/forkid_test.go | 60 +- core/genesis_test.go | 6 +- core/genesis_write.go | 66 +- core/rawdb/accessors_chain.go | 610 ++------- core/rawdb/accessors_chain_test.go | 139 ++- core/rawdb/accessors_indexes.go | 96 -- core/rawdb/accessors_indexes_test.go | 68 +- core/rawdb/blockio/block_writer.go | 82 +- core/rawdb/rawdbhelpers/rawdbhelpers.go | 4 +- core/rawdb/rawdbreset/reset_stages.go | 51 +- core/rlp_test.go | 30 +- core/state/access_list.go | 26 +- core/state/access_list_test.go | 26 +- core/state/cached_reader.go | 12 +- core/state/cached_reader2.go | 12 +- core/state/cached_writer.go | 12 +- core/state/change_set_writer.go | 4 +- core/state/contracts/poly.sol | 1 + core/state/database.go | 32 +- core/state/database_test.go | 84 +- core/state/db_state_writer.go | 4 +- core/state/dump.go | 12 +- core/state/history_reader_inc.go | 12 +- core/state/history_reader_v3.go | 43 +- core/state/history_test.go | 10 +- core/state/history_walk.go | 4 +- core/state/historyv2read/history.go | 29 +- core/state/intra_block_state.go | 1 + core/state/plain_readonly.go | 48 +- core/state/plain_state_writer.go | 1 + core/state/rw_v3.go | 143 ++- core/state/state_test.go | 24 +- core/state/temporal/kv_temporal.go | 180 ++- core/state_processor.go | 20 +- core/state_transition.go | 47 +- core/systemcontracts/upgrade.go | 4 +- core/types/access_list_tx.go | 17 +- core/types/accounts/account.go | 29 +- core/types/blob_tx.go | 353 ++++++ core/types/blob_tx_wrapper.go | 515 ++++---- core/types/block.go | 173 ++- core/types/block_test.go | 10 +- core/types/dynamic_fee_tx.go | 40 +- core/types/gen_genesis.go | 14 +- core/types/genesis.go | 6 +- core/types/legacy_tx.go | 7 +- core/types/receipt.go | 6 +- core/types/receipt_test.go | 2 +- core/types/signed_blob_tx.go | 601 --------- core/types/transaction.go | 26 +- core/types/transaction_marshalling.go | 101 +- core/types/transaction_signing.go | 82 +- core/types/transaction_test.go | 300 ++++- core/vm/contracts.go | 5 +- core/vm/contracts_test.go | 2 + core/vm/evmtypes/evmtypes.go | 84 +- core/vm/gas_table.go | 5 +- core/vm/gas_table_test.go | 17 +- .../testdata/precompiles/pointEvaluation.json | 9 + crypto/crypto_test.go | 29 + crypto/ecies/ecies.go | 4 +- crypto/ecies/ecies_test.go | 10 + crypto/kzg/kzg.go | 9 +- diagnostics/CHANGELOG.md | 6 + diagnostics/version.go | 2 +- docker-compose.yml | 6 +- docs/evm_semantics.md | 6 +- docs/examples/single-process.md | 1 + docs/merry-go-round-sync.md | 8 +- docs/programmers_guide/db_walkthrough.MD | 2 +- docs/readthedocs/source/rpc/index.rst | 2 +- eth/backend.go | 150 ++- eth/ethconfig/config.go | 15 +- eth/ethconfig/erigon3_test_disable.go | 1 - eth/ethconfig/erigon3_test_enable.go | 1 - eth/ethconfig/erigon4_test_enable.go | 1 - eth/ethconfig/gen_config.go | 4 +- eth/ethconsensusconfig/config.go | 60 +- eth/gasprice/feehistory_test.go | 4 +- eth/gasprice/gasprice_test.go | 11 +- eth/protocols/eth/handler.go | 2 +- eth/protocols/eth/handler_test.go | 8 +- eth/protocols/eth/handlers.go | 15 +- eth/protocols/eth/protocol.go | 16 +- eth/stagedsync/README.md | 8 +- eth/stagedsync/chain_reader.go | 4 + eth/stagedsync/default_stages.go | 4 +- eth/stagedsync/exec3.go | 46 +- eth/stagedsync/stage_bodies.go | 16 +- eth/stagedsync/stage_bodies_test.go | 80 +- eth/stagedsync/stage_call_traces.go | 2 +- eth/stagedsync/stage_call_traces_test.go | 43 +- eth/stagedsync/stage_cumulative_index.go | 11 +- eth/stagedsync/stage_execute.go | 22 +- eth/stagedsync/stage_execute_test.go | 12 +- eth/stagedsync/stage_finish.go | 17 +- eth/stagedsync/stage_hashstate.go | 11 +- eth/stagedsync/stage_hashstate_test.go | 22 + eth/stagedsync/stage_headers.go | 117 +- eth/stagedsync/stage_interhashes.go | 13 +- eth/stagedsync/stage_interhashes_test.go | 41 +- eth/stagedsync/stage_mining_create_block.go | 36 +- eth/stagedsync/stage_mining_exec.go | 45 +- eth/stagedsync/stage_mining_finish.go | 30 +- eth/stagedsync/stage_senders.go | 98 +- eth/stagedsync/stage_senders_test.go | 52 +- eth/stagedsync/stage_snapshots.go | 312 +---- eth/stagedsync/stage_txlookup.go | 39 +- .../internal/tracetest/calltrace_test.go | 4 +- .../internal/tracetest/prestate_test.go | 2 +- ethdb/Readme.md | 8 +- ethdb/kv_util.go | 3 +- ethdb/privateapi/all.go | 7 +- ethdb/privateapi/ethbackend.go | 796 +----------- go.mod | 121 +- go.sum | 288 ++--- .../statefulset-erigon-patch.yaml | 2 +- metrics/exp/exp.go | 8 +- migrations/migrations.go | 23 +- migrations/txs_begin_end_test.go | 2 +- migrations/txs_v3.go | 91 ++ migrations/txs_v3_test.go | 189 +++ node/endpoints.go | 3 +- node/node.go | 27 +- node/node_test.go | 6 +- node/nodecfg/config.go | 2 +- node/rpcstack.go | 6 +- node/rpcstack_test.go | 17 +- p2p/discover/v5_udp_integration_test.go | 41 + p2p/discover/v5_udp_test.go | 41 - params/bootnodes.go | 17 +- params/chainspecs/bor-devnet.json | 6 +- params/chainspecs/bor-mainnet.json | 4 +- params/chainspecs/gnosis.json | 4 +- params/chainspecs/mumbai.json | 4 +- params/chainspecs/rinkeby.json | 18 - params/config.go | 10 - params/networkname/network_name.go | 2 - params/protocol_params.go | 16 +- params/version.go | 2 +- rlp/encode.go | 12 +- rpc/client.go | 2 +- rpc/handler.go | 2 +- rpc/server.go | 2 +- rpc/service.go | 18 +- spectest/case.go | 3 + spectest/suite.go | 4 +- spectest/util.go | 5 +- tests/automated-testing/docker-compose.yml | 4 +- tests/automated-testing/run.sh | 8 +- tests/block_test_util.go | 48 +- tests/state_test.go | 8 +- tests/state_test_util.go | 46 +- tests/statedb_chain_test.go | 13 +- .../statedb_insert_chain_transaction_test.go | 96 +- tools.go | 1 - turbo/adapter/ethapi/api.go | 25 +- turbo/app/backup_cmd.go | 14 +- turbo/app/import_cmd.go | 10 +- turbo/app/init_cmd.go | 2 +- turbo/app/snapshots_cmd.go | 65 +- turbo/app/support_cmd.go | 20 +- turbo/backup/backup.go | 16 +- turbo/builder/latest_block_built.go | 29 + turbo/builder/latest_block_built_test.go | 15 + turbo/cli/default_flags.go | 2 +- turbo/debug/flags.go | 39 +- turbo/debug/signal.go | 6 +- turbo/debug/signal_windows.go | 6 +- turbo/engineapi/engine_helpers/constants.go | 10 + .../{ => engine_helpers}/fork_validator.go | 22 +- .../{ => engine_helpers}/request_list.go | 6 +- turbo/engineapi/engine_server.go | 757 +++++++++++ .../engineapi/engine_server_test.go | 45 +- .../commands => turbo/jsonrpc}/admin_api.go | 2 +- .../commands => turbo/jsonrpc}/bor_api.go | 3 +- .../commands => turbo/jsonrpc}/bor_helper.go | 16 +- .../jsonrpc}/bor_snapshot.go | 94 +- .../jsonrpc}/call_traces_test.go | 45 +- .../jsonrpc}/contracts/build/Poly.abi | 0 .../jsonrpc}/contracts/build/Poly.bin | 0 .../jsonrpc}/contracts/build/Token.abi | 0 .../jsonrpc}/contracts/build/Token.bin | 0 .../jsonrpc}/contracts/gen.go | 0 .../jsonrpc}/contracts/gen_poly.go | 0 .../jsonrpc}/contracts/gen_token.go | 0 .../jsonrpc}/contracts/poly.sol | 0 .../jsonrpc}/contracts/token.sol | 0 .../jsonrpc}/corner_cases_support_test.go | 10 +- .../commands => turbo/jsonrpc}/daemon.go | 10 +- .../jsonrpc}/db_api_deprecated.go | 2 +- .../commands => turbo/jsonrpc}/debug_api.go | 9 +- .../jsonrpc}/debug_api_test.go | 80 +- .../commands => turbo/jsonrpc}/engine_api.go | 131 +- .../jsonrpc}/engine_api_test.go | 6 +- .../commands => turbo/jsonrpc}/erigon_api.go | 2 +- .../jsonrpc}/erigon_block.go | 59 +- .../jsonrpc}/erigon_cache_check.go | 2 +- .../erigon_cumulative_chain_traffic.go | 2 +- .../jsonrpc}/erigon_nodeInfo.go | 2 +- .../jsonrpc}/erigon_receipts.go | 16 +- .../jsonrpc}/erigon_receipts_test.go | 28 +- .../jsonrpc}/erigon_system.go | 2 +- .../jsonrpc}/error_messages.go | 2 +- .../jsonrpc}/eth_accounts.go | 2 +- .../jsonrpc}/eth_accounts_test.go | 24 +- .../commands => turbo/jsonrpc}/eth_api.go | 29 +- .../jsonrpc}/eth_api_test.go | 71 +- .../commands => turbo/jsonrpc}/eth_block.go | 4 +- .../jsonrpc}/eth_block_test.go | 70 +- .../commands => turbo/jsonrpc}/eth_call.go | 2 +- .../jsonrpc}/eth_callMany.go | 4 +- .../jsonrpc}/eth_callMany_test.go | 4 +- .../jsonrpc}/eth_call_test.go | 79 +- .../jsonrpc}/eth_deprecated.go | 2 +- .../commands => turbo/jsonrpc}/eth_filters.go | 22 +- .../jsonrpc}/eth_filters_test.go | 5 +- .../commands => turbo/jsonrpc}/eth_mining.go | 2 +- .../jsonrpc}/eth_mining_test.go | 5 +- .../jsonrpc}/eth_receipts.go | 56 +- .../jsonrpc}/eth_subscribe_test.go | 16 +- .../commands => turbo/jsonrpc}/eth_system.go | 2 +- .../jsonrpc}/eth_system_test.go | 13 +- .../commands => turbo/jsonrpc}/eth_txs.go | 2 +- .../commands => turbo/jsonrpc}/eth_uncles.go | 2 +- .../jsonrpc}/gen_traces_test.go | 14 +- .../jsonrpc}/get_chain_config_test.go | 7 +- .../commands => turbo/jsonrpc}/graphql_api.go | 13 +- .../commands => turbo/jsonrpc}/net_api.go | 2 +- .../jsonrpc}/otterscan_api.go | 28 +- .../jsonrpc}/otterscan_block_details.go | 2 +- .../jsonrpc}/otterscan_contract_creator.go | 30 +- .../otterscan_contract_creator_test.go | 9 +- .../jsonrpc}/otterscan_default_tracer.go | 2 +- .../jsonrpc}/otterscan_generic_tracer.go | 7 +- .../jsonrpc}/otterscan_has_code.go | 2 +- .../jsonrpc}/otterscan_search_backward.go | 2 +- .../otterscan_search_backward_multi_test.go | 2 +- .../otterscan_search_backward_test.go | 7 +- .../jsonrpc}/otterscan_search_forward.go | 2 +- .../otterscan_search_forward_multi_test.go | 2 +- .../jsonrpc}/otterscan_search_forward_test.go | 2 +- .../jsonrpc}/otterscan_search_multi.go | 2 +- .../jsonrpc}/otterscan_search_test.go | 2 +- .../jsonrpc}/otterscan_search_trace.go | 9 +- .../otterscan_trace_contract_creator.go | 2 +- .../jsonrpc}/otterscan_trace_operations.go | 2 +- .../jsonrpc}/otterscan_trace_touch.go | 2 +- .../jsonrpc}/otterscan_trace_transaction.go | 2 +- ...terscan_transaction_by_sender_and_nonce.go | 16 +- ...an_transaction_by_sender_and_nonce_test.go | 5 +- .../jsonrpc}/otterscan_transaction_error.go | 2 +- .../jsonrpc}/otterscan_types.go | 2 +- .../commands => turbo/jsonrpc}/parity_api.go | 43 +- .../jsonrpc}/parity_api_test.go | 15 +- .../jsonrpc}/send_transaction.go | 34 +- .../jsonrpc}/send_transaction_test.go | 24 +- .../jsonrpc}/storage_range.go | 5 +- .../commands => turbo/jsonrpc}/trace_adhoc.go | 8 +- .../jsonrpc}/trace_adhoc_test.go | 31 +- .../commands => turbo/jsonrpc}/trace_api.go | 2 +- .../jsonrpc}/trace_filtering.go | 33 +- .../commands => turbo/jsonrpc}/trace_types.go | 2 +- .../commands => turbo/jsonrpc}/tracing.go | 17 +- .../commands => turbo/jsonrpc}/txpool_api.go | 2 +- .../jsonrpc}/txpool_api_test.go | 9 +- .../jsonrpc}/validator_set.go | 2 +- .../commands => turbo/jsonrpc}/web3_api.go | 2 +- turbo/logging/flags.go | 6 + turbo/logging/logging.go | 15 + turbo/node/node.go | 16 +- turbo/rpchelper/helper.go | 15 + turbo/rpchelper/interface.go | 16 +- turbo/rpchelper/subscription.go | 51 +- turbo/services/interfaces.go | 59 +- turbo/snapshotsync/dump_test.go | 105 -- .../{ => freezeblocks}/block_reader.go | 250 ++-- .../{ => freezeblocks}/block_snapshots.go | 427 ++++--- .../block_snapshots_test.go | 7 +- turbo/snapshotsync/freezeblocks/dump_test.go | 188 +++ turbo/snapshotsync/snap/flags.go | 4 +- turbo/snapshotsync/snapshotsync.go | 233 ++++ turbo/stages/blockchain_test.go | 361 +++--- turbo/stages/bodydownload/body_test.go | 3 +- turbo/stages/chain_makers_test.go | 20 +- turbo/stages/genesis_test.go | 15 +- .../stages/headerdownload/header_algo_test.go | 11 +- turbo/stages/headerdownload/header_algos.go | 33 +- .../headerdownload/header_data_struct.go | 36 +- turbo/stages/mock_sentry.go | 135 +- turbo/stages/sentry_mock_test.go | 250 ++-- turbo/stages/stageloop.go | 180 +-- turbo/transactions/call.go | 18 +- turbo/transactions/tracing.go | 32 +- 590 files changed, 16249 insertions(+), 14433 deletions(-) create mode 100644 cl/beacon/handler/genesis.go create mode 100644 cl/beacon/handler/handler.go create mode 100644 cl/beacon/types/primitives.go rename cl/cltypes/{beacon_blob_side_car.go => beacon_kzgcommitment.go} (100%) create mode 100644 cl/cltypes/beacon_kzgcommitment_test.go create mode 100644 cl/cltypes/fork_test.go create mode 100644 cl/cltypes/solid/bitlist_test.go create mode 100644 cl/cltypes/solid/extra_data_test.go create mode 100644 cl/cltypes/solid/hashutil_test.go create mode 100644 cl/freezer/.gitignore create mode 100644 cl/freezer/freezer.go create mode 100644 cl/freezer/freezer_test.go create mode 100644 cl/freezer/fs_freezer.go create mode 100644 cl/freezer/mem_freezer.go create mode 100644 cl/freezer/store.go create mode 100644 cl/freezer/utils.go create mode 100644 cl/phase1/core/rawdb/config_test.go delete mode 100644 cl/phase1/core/state/state_encoding/encoding.go delete mode 100644 cl/phase1/core/transition/block_processing_test.go delete mode 100644 cl/phase1/core/transition/block_transition.go delete mode 100644 cl/phase1/core/transition/operations.go delete mode 100644 cl/phase1/core/transition/process_attestations.go delete mode 100644 cl/phase1/core/transition/process_bls_to_execution_change.go delete mode 100644 cl/phase1/core/transition/process_epoch.go delete mode 100644 cl/phase1/core/transition/process_slashings.go delete mode 100644 cl/phase1/core/transition/process_slots.go delete mode 100644 cl/phase1/core/transition/process_sync_aggregate.go delete mode 100644 cl/phase1/core/transition/processing.go delete mode 100644 cl/phase1/core/transition/test_data/block_processing/deneb_block.ssz_snappy create mode 100644 cl/phase1/execution_client/execution_client_rpc.go delete mode 100644 cl/phase1/execution_client/execution_engine.go create mode 100644 cl/phase1/execution_client/interface.go create mode 100644 cl/phase1/execution_client/rpc_helper/jwt_roundtripper.go create mode 100644 cl/phase1/execution_client/rpc_helper/methods.go create mode 100644 cl/transition/compat.go create mode 100644 cl/transition/impl/eth2/block_processing_test.go create mode 100644 cl/transition/impl/eth2/impl.go create mode 100644 cl/transition/impl/eth2/operations.go rename cl/{phase1/core/transition => transition/impl/eth2/statechange}/finalization_and_justification.go (86%) rename cl/{phase1/core/transition => transition/impl/eth2/statechange}/process_effective_balance_update.go (98%) create mode 100644 cl/transition/impl/eth2/statechange/process_epoch.go rename cl/{phase1/core/transition => transition/impl/eth2/statechange}/process_epoch_test.go (90%) create mode 100644 cl/transition/impl/eth2/statechange/process_historical_roots.go create mode 100644 cl/transition/impl/eth2/statechange/process_historical_roots_update.go rename cl/{phase1/core/transition => transition/impl/eth2/statechange}/process_inactivity_scores.go (53%) rename cl/{phase1/core/transition => transition/impl/eth2/statechange}/process_registry_updates.go (87%) rename cl/{phase1/core/transition => transition/impl/eth2/statechange}/process_rewards_and_penalties.go (74%) create mode 100644 cl/transition/impl/eth2/statechange/process_slashings.go rename cl/{phase1/core/transition => transition/impl/eth2/statechange}/process_sync_committee_update.go (63%) rename cl/{phase1/core/transition => transition/impl/eth2/statechange}/process_sync_committee_update_test.go (61%) rename cl/{phase1/core/transition => transition/impl/eth2/statechange}/resets.go (97%) create mode 100644 cl/transition/impl/eth2/statechange/test_data/block_processing/capella_block.ssz_snappy rename cl/{phase1/core/transition/test_data/block_processing/deneb_state.ssz_snappy => transition/impl/eth2/statechange/test_data/block_processing/capella_state.ssz_snappy} (77%) rename cl/{phase1/core/transition => transition/impl/eth2/statechange}/test_data/epoch_processing/effective_balances_expected.ssz_snappy (100%) rename cl/{phase1/core/transition => transition/impl/eth2/statechange}/test_data/epoch_processing/effective_balances_test_state.ssz_snappy (100%) rename cl/{phase1/core/transition => transition/impl/eth2/statechange}/test_data/epoch_processing/eth1_data_reset_expected_test.ssz_snappy (100%) rename cl/{phase1/core/transition => transition/impl/eth2/statechange}/test_data/epoch_processing/eth1_data_reset_state_test.ssz_snappy (100%) rename cl/{phase1/core/transition => transition/impl/eth2/statechange}/test_data/epoch_processing/historical_roots_expected_test.ssz_snappy (100%) rename cl/{phase1/core/transition => transition/impl/eth2/statechange}/test_data/epoch_processing/historical_roots_state_test.ssz_snappy (100%) rename cl/{phase1/core/transition => transition/impl/eth2/statechange}/test_data/epoch_processing/inactivity_scores_expected_test.ssz_snappy (100%) rename cl/{phase1/core/transition => transition/impl/eth2/statechange}/test_data/epoch_processing/inactivity_scores_state_test.ssz_snappy (100%) rename cl/{phase1/core/transition => transition/impl/eth2/statechange}/test_data/epoch_processing/justification_and_finality_expected_test.ssz_snappy (100%) rename cl/{phase1/core/transition => transition/impl/eth2/statechange}/test_data/epoch_processing/justification_and_finality_state_test.ssz_snappy (100%) rename cl/{phase1/core/transition => transition/impl/eth2/statechange}/test_data/epoch_processing/participation_flag_updates_expected_test.ssz_snappy (100%) rename cl/{phase1/core/transition => transition/impl/eth2/statechange}/test_data/epoch_processing/participation_flag_updates_state_test.ssz_snappy (100%) rename cl/{phase1/core/transition => transition/impl/eth2/statechange}/test_data/epoch_processing/randao_mixes_reset_expected_test.ssz_snappy (100%) rename cl/{phase1/core/transition => transition/impl/eth2/statechange}/test_data/epoch_processing/randao_mixes_reset_state_test.ssz_snappy (100%) rename cl/{phase1/core/transition => transition/impl/eth2/statechange}/test_data/epoch_processing/registry_updates_test_expected.ssz_snappy (100%) rename cl/{phase1/core/transition => transition/impl/eth2/statechange}/test_data/epoch_processing/registry_updates_test_state.ssz_snappy (100%) rename cl/{phase1/core/transition => transition/impl/eth2/statechange}/test_data/epoch_processing/rewards_penalty_test_expected.ssz_snappy (100%) rename cl/{phase1/core/transition => transition/impl/eth2/statechange}/test_data/epoch_processing/rewards_penalty_test_state.ssz_snappy (100%) rename cl/{phase1/core/transition => transition/impl/eth2/statechange}/test_data/epoch_processing/slashings_expected_test.ssz_snappy (100%) rename cl/{phase1/core/transition => transition/impl/eth2/statechange}/test_data/epoch_processing/slashings_reset_expected_test.ssz_snappy (100%) rename cl/{phase1/core/transition => transition/impl/eth2/statechange}/test_data/epoch_processing/slashings_reset_state_test.ssz_snappy (100%) rename cl/{phase1/core/transition => transition/impl/eth2/statechange}/test_data/epoch_processing/slashings_state_test.ssz_snappy (100%) rename cl/{phase1/core/transition/process_blob_kzg_commitments.go => transition/impl/eth2/utils.go} (63%) create mode 100644 cl/transition/impl/eth2/validation.go create mode 100644 cl/transition/impl/funcmap/impl.go create mode 100644 cl/transition/machine/block.go create mode 100644 cl/transition/machine/helpers.go create mode 100644 cl/transition/machine/machine.go create mode 100644 cl/transition/machine/transition.go create mode 100644 cl/utils/crypto_test.go create mode 100644 cl/utils/math_test.go create mode 100644 cmd/caplin-regression/.gitignore create mode 100644 cmd/caplin-regression/Makefile create mode 100644 cmd/caplin-regression/README.md create mode 100644 cmd/caplin-regression/main.go create mode 100644 cmd/caplin-regression/regression/reader.go create mode 100644 cmd/caplin-regression/regression/tester.go create mode 100644 cmd/devnet/args/args.go create mode 100644 cmd/devnet/args/node.go create mode 100644 cmd/devnet/args/node_test.go create mode 100644 cmd/devnet/commands/ping.go delete mode 100644 cmd/devnet/commands/request.go create mode 100644 cmd/devnet/devnet/context.go create mode 100644 cmd/devnet/devnet/network.go create mode 100644 cmd/devnet/devnet/node.go delete mode 100644 cmd/devnet/models/errors.go delete mode 100644 cmd/devnet/models/model.go delete mode 100644 cmd/devnet/models/model_test.go delete mode 100644 cmd/devnet/node/node.go create mode 100644 cmd/devnet/requests/errors.go delete mode 100644 cmd/devnet/requests/mock_request.go create mode 100644 cmd/devnet/scenarios/context.go create mode 100644 cmd/devnet/scenarios/errors.go create mode 100644 cmd/devnet/scenarios/results.go create mode 100644 cmd/devnet/scenarios/run.go create mode 100644 cmd/devnet/scenarios/scenario.go create mode 100644 cmd/devnet/scenarios/stack.go create mode 100644 cmd/devnet/scenarios/suite.go delete mode 100644 cmd/erigon-el/backend/backend.go delete mode 100644 cmd/erigon-el/backend/node.go delete mode 100644 cmd/erigon-el/eth1/execution.go delete mode 100644 cmd/erigon-el/main.go delete mode 100644 cmd/erigon-el/stages/stages.go create mode 100644 cmd/rpcdaemon/rpcservices/engine_backend.go create mode 100644 consensus/aura/contract_abi.go create mode 100644 consensus/aura/empty_step.go create mode 100644 consensus/aura/epoch.go create mode 100644 consensus/aura/gaslimit_override.go create mode 100644 consensus/aura/rolling_finality.go create mode 100644 consensus/aura/types.go create mode 100644 consensus/aura/unassemble.go delete mode 100644 consensus/db/db.go create mode 100644 consensus/misc/pos.go delete mode 100644 core/allocs/rinkeby.json create mode 100644 core/types/blob_tx.go delete mode 100644 core/types/signed_blob_tx.go create mode 100644 core/vm/testdata/precompiles/pointEvaluation.json create mode 100644 migrations/txs_v3.go create mode 100644 migrations/txs_v3_test.go delete mode 100644 params/chainspecs/rinkeby.json create mode 100644 turbo/builder/latest_block_built.go create mode 100644 turbo/builder/latest_block_built_test.go create mode 100644 turbo/engineapi/engine_helpers/constants.go rename turbo/engineapi/{ => engine_helpers}/fork_validator.go (95%) rename turbo/engineapi/{ => engine_helpers}/request_list.go (97%) create mode 100644 turbo/engineapi/engine_server.go rename ethdb/privateapi/engine_test.go => turbo/engineapi/engine_server_test.go (83%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/admin_api.go (98%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/bor_api.go (91%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/bor_helper.go (94%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/bor_snapshot.go (84%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/call_traces_test.go (83%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/contracts/build/Poly.abi (100%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/contracts/build/Poly.bin (100%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/contracts/build/Token.abi (100%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/contracts/build/Token.bin (100%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/contracts/gen.go (100%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/contracts/gen_poly.go (100%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/contracts/gen_token.go (100%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/contracts/poly.sol (100%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/contracts/token.sol (100%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/corner_cases_support_test.go (81%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/daemon.go (92%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/db_api_deprecated.go (99%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/debug_api.go (97%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/debug_api_test.go (85%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/engine_api.go (86%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/engine_api_test.go (81%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/erigon_api.go (99%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/erigon_block.go (84%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/erigon_cache_check.go (95%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/erigon_cumulative_chain_traffic.go (98%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/erigon_nodeInfo.go (94%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/erigon_receipts.go (97%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/erigon_receipts_test.go (89%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/erigon_system.go (99%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/error_messages.go (95%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/eth_accounts.go (99%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/eth_accounts_test.go (85%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/eth_api.go (97%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/eth_api_test.go (72%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/eth_block.go (99%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/eth_block_test.go (72%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/eth_call.go (99%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/eth_callMany.go (99%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/eth_callMany_test.go (98%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/eth_call_test.go (87%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/eth_deprecated.go (98%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/eth_filters.go (92%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/eth_filters_test.go (92%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/eth_mining.go (99%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/eth_mining_test.go (93%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/eth_receipts.go (93%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/eth_subscribe_test.go (78%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/eth_system.go (99%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/eth_system_test.go (83%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/eth_txs.go (99%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/eth_uncles.go (99%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/gen_traces_test.go (94%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/get_chain_config_test.go (83%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/graphql_api.go (92%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/net_api.go (99%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/otterscan_api.go (95%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/otterscan_block_details.go (99%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/otterscan_contract_creator.go (90%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/otterscan_contract_creator_test.go (79%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/otterscan_default_tracer.go (98%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/otterscan_generic_tracer.go (94%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/otterscan_has_code.go (98%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/otterscan_search_backward.go (99%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/otterscan_search_backward_multi_test.go (99%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/otterscan_search_backward_test.go (96%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/otterscan_search_forward.go (99%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/otterscan_search_forward_multi_test.go (99%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/otterscan_search_forward_test.go (99%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/otterscan_search_multi.go (98%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/otterscan_search_test.go (97%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/otterscan_search_trace.go (93%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/otterscan_trace_contract_creator.go (98%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/otterscan_trace_operations.go (98%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/otterscan_trace_touch.go (98%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/otterscan_trace_transaction.go (99%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/otterscan_transaction_by_sender_and_nonce.go (93%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/otterscan_transaction_by_sender_and_nonce_test.go (92%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/otterscan_transaction_error.go (96%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/otterscan_types.go (99%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/parity_api.go (70%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/parity_api_test.go (89%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/send_transaction.go (77%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/send_transaction_test.go (86%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/storage_range.go (94%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/trace_adhoc.go (99%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/trace_adhoc_test.go (74%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/trace_api.go (99%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/trace_filtering.go (96%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/trace_types.go (99%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/tracing.go (97%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/txpool_api.go (99%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/txpool_api_test.go (91%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/validator_set.go (99%) rename {cmd/rpcdaemon/commands => turbo/jsonrpc}/web3_api.go (98%) delete mode 100644 turbo/snapshotsync/dump_test.go rename turbo/snapshotsync/{ => freezeblocks}/block_reader.go (74%) rename turbo/snapshotsync/{ => freezeblocks}/block_snapshots.go (85%) rename turbo/snapshotsync/{ => freezeblocks}/block_snapshots_test.go (98%) create mode 100644 turbo/snapshotsync/freezeblocks/dump_test.go create mode 100644 turbo/snapshotsync/snapshotsync.go diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5c3d4962121..3588cc27e46 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,16 +5,13 @@ on: - devel - alpha - stable + - boba-develop pull_request: branches: - devel - alpha - stable - types: - - opened - - reopened - - synchronize - - ready_for_review + - boba-develop concurrency: group: ${{ github.ref }} @@ -105,13 +102,13 @@ jobs: # check with root permissions, should be cached from previous build - name: sudo make docker run: sudo DOCKER_TAG=thorax/erigon:ci-$GITHUB_SHA DOCKER_UID=$(id -u) DOCKER_GID=$(id -g) make docker - - automated-tests: - runs-on: - ubuntu-20.04 - if: ${{ github.event_name == 'push' || !github.event.pull_request.draft }} - steps: - - uses: actions/checkout@v3 - - name: run automated testing - run: BUILD_ERIGON=1 ./tests/automated-testing/run.sh +# automated-tests: +# runs-on: +# ubuntu-20.04 +# if: ${{ github.event_name == 'push' || !github.event.pull_request.draft }} +# steps: +# - uses: actions/checkout@v3 +# +# - name: run automated testing +# run: BUILD_ERIGON=1 ./tests/automated-testing/run.sh diff --git a/.github/workflows/test-integration.yml b/.github/workflows/test-integration.yml index 05c3d3a7fdf..fd50e5c37a3 100644 --- a/.github/workflows/test-integration.yml +++ b/.github/workflows/test-integration.yml @@ -6,6 +6,9 @@ on: - alpha - stable - boba-develop + pull_request: + branches: + - boba-develop schedule: - cron: '20 16 * * *' # daily at 16:20 UTC workflow_dispatch: diff --git a/.gitignore b/.gitignore index e14d0b87a71..5df094e3162 100644 --- a/.gitignore +++ b/.gitignore @@ -84,3 +84,5 @@ dist __debug_bin *.log + +caplin-recordings \ No newline at end of file diff --git a/DEV_CHAIN.md b/DEV_CHAIN.md index f5484d2b144..b77ece8e456 100644 --- a/DEV_CHAIN.md +++ b/DEV_CHAIN.md @@ -11,7 +11,7 @@ make erigon ``` -## 2. Build RPC deamon +## 2. Build RPC daemon On the same terminal folder you can build the RPC daemon. ```bash @@ -24,6 +24,10 @@ On the terminal you can type the following command to start node1. ```bash ./erigon --datadir=dev --chain=dev --private.api.addr=localhost:9090 --mine +``` +Or, you could start the rpcdaemon internally together +```bash +./erigon --datadir=dev --chain=dev --private.api.addr=localhost:9090 --mine --http.api=eth,erigon,web3,net,debug,trace,txpool,parity,admin --http.corsdomain="*" ``` Argument notes: @@ -32,6 +36,7 @@ On the terminal you can type the following command to start node1. * private.api.addr=localhost:9090 : Tells where Eigon is going to listen for connections. * mine : Add this if you want the node to mine. * dev.period : Add this to specify the timing interval among blocks. Number of seconds MUST be > 0 (if you want empty blocks) otherwise the default value 0 does not allow mining of empty blocks. + * http.api: List of services to start on http (rpc) access The result will be something like this: @@ -43,7 +48,7 @@ Now save the enode information generated in the logs, we will use this in a minu enode://d30d079163d7b69fcb261c0538c0c3faba4fb4429652970e60fa25deb02a789b4811e98b468726ba0be63b9dc925a019f433177eb6b45c23bb78892f786d8f7a@127.0.0.1:53171 ``` -## 4. Start RPC deamon +## 4. Start RPC daemon Open terminal 2 and navigate to erigon/build/bin folder. Here type the following command @@ -62,13 +67,20 @@ To tell Node 2 where Node 1 is we will use the Enode info of Node 1 we saved bef Open terminal 3 and navigate to erigon/build/bin folder. Paste in the following command the Enode info and run it, be careful to remove the last part ?discport=0. +The node info of the first peer can also be obtained with an admin RPC call +```bash + curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc": "2.0", "method": "admin_nodeInfo", "params": [], "id":83}' localhost:8545 + ``` + ```bash ./erigon --datadir=dev2 --chain=dev --private.api.addr=localhost:9091 \ --staticpeers="enode://d30d079163d7b69fcb261c0538c0c3faba4fb4429652970e60fa25deb02a789b4811e98b468726ba0be63b9dc925a019f433177eb6b45c23bb78892f786d8f7a@127.0.0.1:53171" \ --nodiscover ``` + +You might face a conflict with ports if you run it on the same machine. To specify different ports use, for instance ``--torrent.port 42079``, you might consider specifying all the other flags too: ``--port --http.port --authrpc.port `` -To check if the nodes are connected, you can go to the log of both the nodes and look for the line +To check if the nodes are connected, you can go to the log of both nodes and look for the line ``` [p2p] GoodPeers eth66=1 ``` diff --git a/Dockerfile b/Dockerfile index 1b7998ee5be..8c5ffc9fe96 100644 --- a/Dockerfile +++ b/Dockerfile @@ -75,7 +75,7 @@ COPY --from=builder /app/build/bin/state /usr/local/bin/state COPY --from=builder /app/build/bin/txpool /usr/local/bin/txpool COPY --from=builder /app/build/bin/verkle /usr/local/bin/verkle COPY --from=builder /app/build/bin/caplin-phase1 /usr/local/bin/caplin-phase1 - +COPY --from=builder /app/build/bin/caplin-regression /usr/local/bin/caplin-regression EXPOSE 8545 \ diff --git a/Dockerfile.debian b/Dockerfile.debian index 7cf40a1e903..5d7d4e54968 100644 --- a/Dockerfile.debian +++ b/Dockerfile.debian @@ -75,6 +75,7 @@ COPY --from=builder /app/build/bin/state /usr/local/bin/state COPY --from=builder /app/build/bin/txpool /usr/local/bin/txpool COPY --from=builder /app/build/bin/verkle /usr/local/bin/verkle COPY --from=builder /app/build/bin/caplin-phase1 /usr/local/bin/caplin-phase1 +COPY --from=builder /app/build/bin/caplin-regression /usr/local/bin/caplin-regression EXPOSE 8545 \ 8551 \ diff --git a/Makefile b/Makefile index 55560a1cc17..2ad443d7691 100644 --- a/Makefile +++ b/Makefile @@ -25,18 +25,17 @@ CGO_CFLAGS += -DMDBX_FORCE_ASSERTIONS=0 # Enable MDBX's asserts by default in 'd CGO_CFLAGS += -O CGO_CFLAGS += -D__BLST_PORTABLE__ CGO_CFLAGS += -Wno-error=strict-prototypes # for Clang15, remove it when can https://github.com/ledgerwatch/erigon/issues/6113#issuecomment-1359526277 -CGO_CFLAGS := CGO_CFLAGS="$(CGO_CFLAGS)" -DBG_CGO_CFLAGS += -DMDBX_DEBUG=1 -BUILD_TAGS = nosqlite,noboltdb # about netgo see: https://github.com/golang/go/issues/30310#issuecomment-471669125 and https://github.com/golang/go/issues/57757 +# about netgo see: https://github.com/golang/go/issues/30310#issuecomment-471669125 and https://github.com/golang/go/issues/57757 +BUILD_TAGS = nosqlite,noboltdb PACKAGE = github.com/ledgerwatch/erigon GO_FLAGS += -trimpath -tags $(BUILD_TAGS) -buildvcs=false GO_FLAGS += -ldflags "-X ${PACKAGE}/params.GitCommit=${GIT_COMMIT} -X ${PACKAGE}/params.GitBranch=${GIT_BRANCH} -X ${PACKAGE}/params.GitTag=${GIT_TAG}" -GOBUILD = $(CGO_CFLAGS) $(GO) build $(GO_FLAGS) -GO_DBG_BUILD = $(GO) build $(GO_FLAGS) -tags $(BUILD_TAGS),debug -gcflags=all="-N -l" # see delve docs -GOTEST = $(CGO_CFLAGS) GODEBUG=cgocheck=0 $(GO) test $(GO_FLAGS) ./... -p 2 +GOBUILD = CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) build $(GO_FLAGS) +GO_DBG_BUILD = CGO_CFLAGS="$(CGO_CFLAGS) -DMDBX_DEBUG=1" $(GO) build -tags $(BUILD_TAGS),debug -gcflags=all="-N -l" # see delve docs +GOTEST = CGO_CFLAGS="$(CGO_CFLAGS)" GODEBUG=cgocheck=0 $(GO) test $(GO_FLAGS) ./... -p 2 default: all @@ -86,7 +85,7 @@ setup_xdg_data_home: ## docker-compose: validate build args, setup xdg data home, and run docker-compose up docker-compose: validate_docker_build_args setup_xdg_data_home - docker-compose up + docker compose up ## dbg debug build allows see C stack traces, run it with GOTRACEBACK=crash. You don't need debug build for C pit for profiling. To profile C code use SETCGOTRCKEBACK=1 dbg: @@ -120,8 +119,9 @@ COMMANDS += txpool COMMANDS += verkle COMMANDS += evm COMMANDS += sentinel -COMMANDS += erigon-el COMMANDS += caplin-phase1 +COMMANDS += caplin-regression + # build each command using %.cmd rule $(COMMANDS): %: %.cmd @@ -145,14 +145,14 @@ test: $(GOTEST) --timeout 100s test3: - $(GOTEST) --timeout 100s -tags $(BUILD_TAGS),erigon3 + $(GOTEST) --timeout 100s -tags $(BUILD_TAGS),e3 ## test-integration: run integration tests with a 30m timeout test-integration: $(GOTEST) --timeout 30m -tags $(BUILD_TAGS),integration test3-integration: - $(GOTEST) --timeout 30m -tags $(BUILD_TAGS),integration,erigon3 + $(GOTEST) --timeout 30m -tags $(BUILD_TAGS),integration,e3 ## lint: run golangci-lint with .golangci.yml config file lint: @@ -166,7 +166,7 @@ lintci: ## lintci-deps: (re)installs golangci-lint to build/bin/golangci-lint lintci-deps: rm -f ./build/bin/golangci-lint - curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b ./build/bin v1.52.2 + curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b ./build/bin v1.53.3 ## clean: cleans the go cache, build dir, libmdbx db dir clean: @@ -182,12 +182,12 @@ format: ## devtools: installs dev tools (and checks for npm installation etc.) devtools: # Notice! If you adding new binary - add it also to cmd/hack/binary-deps/main.go file - $(GOBUILD) -o $(GOBIN)/go-bindata github.com/kevinburke/go-bindata/go-bindata $(GOBUILD) -o $(GOBIN)/gencodec github.com/fjl/gencodec $(GOBUILD) -o $(GOBIN)/abigen ./cmd/abigen $(GOBUILD) -o $(GOBIN)/codecgen github.com/ugorji/go/codec/codecgen PATH=$(GOBIN):$(PATH) go generate ./common # PATH=$(GOBIN):$(PATH) go generate ./core/types + PATH=$(GOBIN):$(PATH) cd ./cmd/rpcdaemon/graphql && go run github.com/99designs/gqlgen . PATH=$(GOBIN):$(PATH) go generate ./consensus/aura/... #PATH=$(GOBIN):$(PATH) go generate ./eth/ethconfig/... @type "npm" 2> /dev/null || echo 'Please install node.js and npm' @@ -201,7 +201,7 @@ bindings: ## prometheus: run prometheus and grafana with docker-compose prometheus: - docker-compose up prometheus grafana + docker compose up prometheus grafana ## escape: run escape path={path} to check for memory leaks e.g. run escape path=cmd/erigon escape: @@ -217,7 +217,7 @@ git-submodules: @git submodule update --quiet --init --recursive --force || true PACKAGE_NAME := github.com/ledgerwatch/erigon -GOLANG_CROSS_VERSION ?= v1.20.4 +GOLANG_CROSS_VERSION ?= v1.20.5 .PHONY: release-dry-run release-dry-run: git-submodules diff --git a/README.md b/README.md index efd226a9730..334b4474091 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Erigon -Erigon is an implementation of Ethereum (execution client with light client for consensus layer), on the efficiency +Erigon is an implementation of Ethereum (execution layer with embeddable consensus layer), on the efficiency frontier. [Archive Node](https://ethereum.org/en/developers/docs/nodes-and-clients/archive-nodes/#what-is-an-archive-node) by default. @@ -111,7 +111,7 @@ Running `make help` will list and describe the convenience commands available in ### Datadir structure - chaindata: recent blocks, state, recent state history. low-latency disk recommended. -- snapshots: old blocks, old state history. can symlink/mount it to cheaper disk. mostly immutable. +- snapshots: old blocks, old state history. can symlink/mount it to cheaper disk. mostly immutable. must have ~100gb free space (for merge recent files to bigger one). - temp: can grow to ~100gb, but usually empty. can symlink/mount it to cheaper disk. - txpool: pending transactions. safe to remove. - nodes: p2p peers. safe to remove. @@ -125,6 +125,7 @@ _Flags:_ - `log.json` - `log.console.json` (alias for `log.json`) - `log.dir.path` +- `log.dir.prefix` - `log.dir.verbosity` - `log.dir.json` @@ -140,7 +141,7 @@ int value specifying the highest output log level: LvlTrace = 5 ``` -To set an output dir for logs to be collected on disk, please set `--log.dir.path`. The flag `--log.dir.verbosity` is +To set an output dir for logs to be collected on disk, please set `--log.dir.path` If you want to change the filename prodiced from `erigon` you should also set the `--log.dir.prefix` flag to an alternate name. The flag `--log.dir.verbosity` is also available to control the verbosity of this logging, with the same int value as above, or the string value e.g. ' debug' or 'info'. Default verbosity is 'debug' (4), for disk logging. @@ -287,7 +288,7 @@ http.api : ["eth","debug","net"] Erigon can be used as an Execution Layer (EL) for Consensus Layer clients (CL). Default configuration is OK. If your CL client is on a different device, add `--authrpc.addr 0.0.0.0` ([Engine API] listens on localhost by default) -as well as `--authrpc.vhosts `. +as well as `--authrpc.vhosts ` where `` is your source host or `any`. [Engine API]: https://github.com/ethereum/execution-apis/blob/main/src/engine/specification.md @@ -314,8 +315,8 @@ Example of multiple chains on the same machine: ./build/bin/erigon --datadir="" --chain=mainnet --port=30303 --http.port=8545 --authrpc.port=8551 --torrent.port=42069 --private.api.addr=127.0.0.1:9090 --http --ws --http.api=eth,debug,net,trace,web3,erigon -# rinkeby -./build/bin/erigon --datadir="" --chain=rinkeby --port=30304 --http.port=8546 --authrpc.port=8552 --torrent.port=42068 --private.api.addr=127.0.0.1:9091 --http --ws --http.api=eth,debug,net,trace,web3,erigon +# sepolia +./build/bin/erigon --datadir="" --chain=sepolia --port=30304 --http.port=8546 --authrpc.port=8552 --torrent.port=42068 --private.api.addr=127.0.0.1:9091 --http --ws --http.api=eth,debug,net,trace,web3,erigon ``` Quote your path if it has spaces. @@ -498,7 +499,7 @@ Windows support for docker-compose is not ready yet. Please help us with .ps1 po ### Grafana dashboard -`docker-compose up prometheus grafana`, [detailed docs](./cmd/prometheus/Readme.md). +`docker compose up prometheus grafana`, [detailed docs](./cmd/prometheus/Readme.md). ### @@ -639,48 +640,13 @@ Getting in touch ### Erigon Discord Server -The main discussions are happening on our Discord server. To get an invite, send an email to `tg [at] torquem.ch` with +The main discussions are happening on our Discord server. To get an invite, send an email to `bloxster [at] proton.me` with your name, occupation, a brief explanation of why you want to join the Discord, and how you heard about Erigon. ### Reporting security issues/concerns Send an email to `security [at] torquem.ch`. -### Team - -Core contributors (in alphabetical order of first names): - -* Alex Sharov ([AskAlexSharov](https://twitter.com/AskAlexSharov)) - -* Alexey Akhunov ([@realLedgerwatch](https://twitter.com/realLedgerwatch)) - -* Andrea Lanfranchi([@AndreaLanfranchi](https://github.com/AndreaLanfranchi)) - -* Andrew Ashikhmin ([yperbasis](https://github.com/yperbasis)) - -* Artem Vorotnikov ([vorot93](https://github.com/vorot93)) - -* Boris Petrov ([b00ris](https://github.com/b00ris)) - -* Eugene Danilenko ([JekaMas](https://github.com/JekaMas)) - -* Igor Mandrigin ([@mandrigin](https://twitter.com/mandrigin)) - -* Giulio Rebuffo ([Giulio2002](https://github.com/Giulio2002)) - -* Thomas Jay Rush ([@tjayrush](https://twitter.com/tjayrush)) - -Thanks to: - -* All contributors of Erigon - -* All contributors of Go-Ethereum - -* Our special respect and gratitude is to the core team of [Go-Ethereum](https://github.com/ethereum/go-ethereum). Keep - up the great job! - -Happy testing! 🥤 - Known issues ============ diff --git a/RELEASE_INSTRUCTIONS.md b/RELEASE_INSTRUCTIONS.md index 8a68e125b05..f4f064b12ad 100644 --- a/RELEASE_INSTRUCTIONS.md +++ b/RELEASE_INSTRUCTIONS.md @@ -15,7 +15,7 @@ If there are any transactions where code bitmap was useful, warning messages lik ```` WARN [08-01|14:54:27.778] Code Bitmap used for detecting invalid jump tx=0x86e55d1818b5355424975de9633a57c40789ca08552297b726333a9433949c92 block number=6426298 ```` -In such cases (unless there are too many instances), all block numbers need to be excluded in the `SkipAnalysis` function, and comment to it. The constant `MainnetNotCheckedFrom` needs to be update to the first block number we have not checked. The value can be taken from the output of the `checkChangeSets` +In such cases (unless there are too many instances), all block numbers need to be excluded in the `SkipAnalysis` function, and comment to it. The constant `MainnetNotCheckedFrom` needs to be updated to the first block number we have not checked. The value can be taken from the output of the `checkChangeSets` utility before it exits, like this: ```` INFO [08-01|15:36:04.282] Checked blocks=10573804 next time specify --block=10573804 duration=36m54.789025062s @@ -23,11 +23,11 @@ INFO [08-01|15:36:04.282] Checked blocks=105738 ## Update DB Schema version if required -In the file `common/dbutils/bucket.go` there is variable `DBSchemaVersion` that needs to be update if there are any changes in the database schema, leading to data migrations. +In the file `common/dbutils/bucket.go` there is variable `DBSchemaVersion` that needs to be updated if there are any changes in the database schema, leading to data migrations. In most cases, it is enough to bump minor version. ## Update remote KV version if required -In the file `ethdb/remote/remotedbserver/server.go` there is variable `KvServiceAPIVersion` that needs to be update if there are any changes in the remote KV interface, or +In the file `ethdb/remote/remotedbserver/server.go` there is variable `KvServiceAPIVersion` that needs to be updated if there are any changes in the remote KV interface, or database schema, leading to data migrations. In most cases, it is enough to bump minor version. It is best to change both DB schema version and remove KV version together. diff --git a/TESTING.md b/TESTING.md index 76b8a4539cc..e57163f5473 100644 --- a/TESTING.md +++ b/TESTING.md @@ -53,7 +53,7 @@ INFO [03-24|13:41:20.391] Commit cycle in=2.16378229 Here we see that the sync cycle went through all the stages for a single block `12101885`. -After that, it is useful to wait more until an Unwind is encoutered and check that Erigon handled it without errors. +After that, it is useful to wait more until an Unwind is encountered and check that Erigon handled it without errors. Usually, errors occur at the stage `[7/14 IntermediateHashes]` and manifest in the wrong trie root. Here is an example of processing an unwind without errors (look for the word "Unwind" in the log): @@ -148,7 +148,7 @@ ERROR[08-01|14:30:38.299] Demoting invalidated transaction hash="859191 ERROR[08-01|14:30:38.299] Demoting invalidated transaction hash="25ee67…e73153" ``` -this is also likely to disappered after the introduction of new downloader/sentry design +this is also likely to disappear after the introduction of new downloader/sentry design ### Assessing relative performance of sync @@ -172,7 +172,7 @@ INFO [03-24|13:41:20.391] Commit cycle in=2.16378229 The line above shows how long was commit cycle. We saw in the past that after some changes the commit time dramatically increases, and these -regressions need to be investigaged. We expect "commit cycle" on Linux with NVMe drive to usually take less than a +regressions need to be investigated. We expect "commit cycle" on Linux with NVMe drive to usually take less than a second. For other operating systems and devices the typical time may vary, but it should significantly increase from one release to another. Perhaps we need to log some extra information in the log to make it easier for the tester to filter out the log @@ -274,11 +274,11 @@ requests for certain RPC methods, using hits provided by options `--blockFrom` a useful ones are: 1. `bench8` tests `eth_getLogs` RPC method (compatibility with go-ethereum and OpenEthereum) -2. `bench11` tests `trace_call` RPC method (compatiblity with OpenEthereum tracing) +2. `bench11` tests `trace_call` RPC method (compatibility with OpenEthereum tracing) 3. `bench12` tests `debug_traceCall` RPC method (compatibility with go-ethereum tracing) -4. `bench13` tests `trace_callMany` RPC method (compability with OpenEthereum tracing) +4. `bench13` tests `trace_callMany` RPC method (compatibility with OpenEthereum tracing) -Options `--erigonUrl` and `--gethUrl` specify HTTP endpoints that needs to be tested against each other. Despite its +Options `--erigonUrl` and `--gethUrl` specify HTTP endpoints that need to be tested against each other. Despite its name, `--gethUrl` option does not have to point to go-ethereum node, it can point to anything that it supposed to be "correct" for the purpose of the test ( go-ethereum node, OpenEthereum node, @@ -286,7 +286,7 @@ or Erigon RPC daemon & Erigon node built from the previous release code). Option `--needCompare` triggers the comparison of JSON RPC responses. If omitted, requests to `--gethUrl` are not done. When comparison is turned on, -the utility stops at the first occurrence of mistmatch. +the utility stops at the first occurrence of mismatch. ## RPC test recording and replay diff --git a/accounts/abi/bind/backends/simulated.go b/accounts/abi/bind/backends/simulated.go index 90480ce2f50..62b5e8aa988 100644 --- a/accounts/abi/bind/backends/simulated.go +++ b/accounts/abi/bind/backends/simulated.go @@ -26,15 +26,14 @@ import ( "time" "github.com/holiman/uint256" + "github.com/ledgerwatch/log/v3" + "github.com/ledgerwatch/erigon-lib/chain" libcommon "github.com/ledgerwatch/erigon-lib/common" "github.com/ledgerwatch/erigon-lib/common/hexutility" "github.com/ledgerwatch/erigon-lib/kv" state2 "github.com/ledgerwatch/erigon-lib/state" types2 "github.com/ledgerwatch/erigon-lib/types" - "github.com/ledgerwatch/erigon/eth/ethconfig" - "github.com/ledgerwatch/erigon/turbo/services" - "github.com/ledgerwatch/log/v3" ethereum "github.com/ledgerwatch/erigon" "github.com/ledgerwatch/erigon/accounts/abi" @@ -43,6 +42,7 @@ import ( "github.com/ledgerwatch/erigon/common/u256" "github.com/ledgerwatch/erigon/consensus" "github.com/ledgerwatch/erigon/consensus/ethash" + "github.com/ledgerwatch/erigon/consensus/misc" "github.com/ledgerwatch/erigon/core" "github.com/ledgerwatch/erigon/core/rawdb" "github.com/ledgerwatch/erigon/core/state" @@ -50,6 +50,7 @@ import ( "github.com/ledgerwatch/erigon/core/vm" "github.com/ledgerwatch/erigon/event" "github.com/ledgerwatch/erigon/params" + "github.com/ledgerwatch/erigon/turbo/services" "github.com/ledgerwatch/erigon/turbo/stages" ) @@ -77,7 +78,7 @@ type SimulatedBackend struct { pendingHeader *types.Header gasPool *core.GasPool pendingBlock *types.Block // Currently pending block that will be imported on request - pendingReader *state.PlainStateReader + pendingReader state.StateReader pendingReaderTx kv.Tx pendingState *state.IntraBlockState // Currently pending state that will be the active on request @@ -92,14 +93,13 @@ func NewSimulatedBackendWithConfig(alloc types.GenesisAlloc, config *chain.Confi genesis := types.Genesis{Config: config, GasLimit: gasLimit, Alloc: alloc} engine := ethash.NewFaker() m := stages.MockWithGenesisEngine(nil, &genesis, engine, false) - br, _ := m.NewBlocksIO() backend := &SimulatedBackend{ m: m, prependBlock: m.Genesis, getHeader: func(hash libcommon.Hash, number uint64) (h *types.Header) { var err error if err = m.DB.View(context.Background(), func(tx kv.Tx) error { - h, err = br.Header(context.Background(), tx, hash, number) + h, err = m.BlockReader.Header(context.Background(), tx, hash, number) return nil }); err != nil { panic(err) @@ -123,14 +123,11 @@ func NewTestSimulatedBackendWithConfig(t *testing.T, alloc types.GenesisAlloc, c t.Cleanup(b.Close) return b } -func (b *SimulatedBackend) DB() kv.RwDB { return b.m.DB } -func (b *SimulatedBackend) Agg() *state2.AggregatorV3 { return b.m.HistoryV3Components() } -func (b *SimulatedBackend) HistoryV3() bool { return b.m.HistoryV3 } -func (b *SimulatedBackend) Engine() consensus.Engine { return b.m.Engine } -func (b *SimulatedBackend) BlockReader() services.FullBlockReader { - br, _ := b.m.NewBlocksIO() - return br -} +func (b *SimulatedBackend) DB() kv.RwDB { return b.m.DB } +func (b *SimulatedBackend) Agg() *state2.AggregatorV3 { return b.m.HistoryV3Components() } +func (b *SimulatedBackend) HistoryV3() bool { return b.m.HistoryV3 } +func (b *SimulatedBackend) Engine() consensus.Engine { return b.m.Engine } +func (b *SimulatedBackend) BlockReader() services.FullBlockReader { return b.m.BlockReader } // Close terminates the underlying blockchain's update loop. func (b *SimulatedBackend) Close() { @@ -149,7 +146,7 @@ func (b *SimulatedBackend) Commit() { Headers: []*types.Header{b.pendingHeader}, Blocks: []*types.Block{b.pendingBlock}, TopBlock: b.pendingBlock, - }); err != nil { + }, nil); err != nil { panic(err) } //nolint:prealloc @@ -171,11 +168,11 @@ func (b *SimulatedBackend) Rollback() { } func (b *SimulatedBackend) emptyPendingBlock() { - chain, _ := core.GenerateChain(b.m.ChainConfig, b.prependBlock, b.m.Engine, b.m.DB, 1, func(int, *core.BlockGen) {}, false /* intermediateHashes */) - b.pendingBlock = chain.Blocks[0] - b.pendingReceipts = chain.Receipts[0] - b.pendingHeader = chain.Headers[0] - b.gasPool = new(core.GasPool).AddGas(b.pendingHeader.GasLimit).AddDataGas(params.MaxDataGasPerBlock) + blockChain, _ := core.GenerateChain(b.m.ChainConfig, b.prependBlock, b.m.Engine, b.m.DB, 1, func(int, *core.BlockGen) {}) + b.pendingBlock = blockChain.Blocks[0] + b.pendingReceipts = blockChain.Receipts[0] + b.pendingHeader = blockChain.Headers[0] + b.gasPool = new(core.GasPool).AddGas(b.pendingHeader.GasLimit).AddDataGas(chain.MaxDataGasPerBlock) if b.pendingReaderTx != nil { b.pendingReaderTx.Rollback() } @@ -184,12 +181,7 @@ func (b *SimulatedBackend) emptyPendingBlock() { panic(err) } b.pendingReaderTx = tx - if ethconfig.EnableHistoryV4InTest { - panic("implement me") - //b.pendingReader = state.NewReaderV4(b.pendingReaderTx.(kv.TemporalTx)) - } else { - b.pendingReader = state.NewPlainStateReader(b.pendingReaderTx) - } + b.pendingReader = b.m.NewStateReader(b.pendingReaderTx) b.pendingState = state.New(b.pendingReader) } @@ -347,15 +339,10 @@ func (b *SimulatedBackend) BlockByHash(ctx context.Context, hash libcommon.Hash) } defer tx.Rollback() - number := rawdb.ReadHeaderNumber(tx, hash) - if number == nil { - return nil, nil - } - block, _, err := b.BlockReader().BlockWithSenders(ctx, tx, hash, *number) + block, err := b.BlockReader().BlockByHash(ctx, tx, hash) if err != nil { return nil, err } - if block != nil { return block, nil } @@ -562,7 +549,7 @@ func (b *SimulatedBackend) CallContract(ctx context.Context, call ethereum.CallM } var res *core.ExecutionResult if err := b.m.DB.View(context.Background(), func(tx kv.Tx) (err error) { - s := state.New(state.NewPlainStateReader(tx)) + s := state.New(b.m.NewStateReader(tx)) res, err = b.callContract(ctx, call, b.pendingBlock, s) if err != nil { return err @@ -732,10 +719,8 @@ func (b *SimulatedBackend) callContract(_ context.Context, call ethereum.CallMsg txContext := core.NewEVMTxContext(msg) header := block.Header() - excessDataGas := header.ParentExcessDataGas(b.getHeader) l1CostFunc := types.NewL1CostFunc(b.m.ChainConfig, statedb) - evmContext := core.NewEVMBlockContext(header, core.GetHashFn(header, b.getHeader), b.m.Engine, nil, excessDataGas, l1CostFunc) - + evmContext := core.NewEVMBlockContext(header, core.GetHashFn(header, b.getHeader), b.m.Engine, nil, l1CostFunc) // Create a new environment which holds all relevant information // about the transaction and calling mechanisms. vmEnv := vm.NewEVM(evmContext, txContext, statedb, b.m.ChainConfig, vm.Config{}) @@ -751,7 +736,7 @@ func (b *SimulatedBackend) SendTransaction(ctx context.Context, tx types.Transac defer b.mu.Unlock() // Check transaction validity. - signer := types.MakeSigner(b.m.ChainConfig, b.pendingBlock.NumberU64()) + signer := types.MakeSigner(b.m.ChainConfig, b.pendingBlock.NumberU64(), b.pendingBlock.Time()) sender, senderErr := tx.Sender(*signer) if senderErr != nil { return fmt.Errorf("invalid transaction: %w", senderErr) @@ -768,8 +753,8 @@ func (b *SimulatedBackend) SendTransaction(ctx context.Context, tx types.Transac &b.pendingHeader.Coinbase, b.gasPool, b.pendingState, state.NewNoopWriter(), b.pendingHeader, tx, - &b.pendingHeader.GasUsed, vm.Config{}, - b.pendingHeader.ParentExcessDataGas(b.getHeader)); err != nil { + &b.pendingHeader.GasUsed, b.pendingHeader.DataGasUsed, + vm.Config{}); err != nil { return err } //fmt.Printf("==== Start producing block %d\n", (b.prependBlock.NumberU64() + 1)) @@ -778,7 +763,7 @@ func (b *SimulatedBackend) SendTransaction(ctx context.Context, tx types.Transac block.AddTxWithChain(b.getHeader, b.m.Engine, tx) } block.AddTxWithChain(b.getHeader, b.m.Engine, tx) - }, false /* intermediateHashes */) + }) if err != nil { return err } @@ -823,7 +808,7 @@ func (b *SimulatedBackend) AdjustTime(adjustment time.Duration) error { block.AddTxWithChain(b.getHeader, b.m.Engine, tx) } block.OffsetTime(int64(adjustment.Seconds())) - }, false /* intermediateHashes */) + }) if err != nil { return err } @@ -858,6 +843,6 @@ func (m callMsg) RollupDataGas() uint64 { return 0 /* FIXME */ } -func (m callMsg) DataGas() uint64 { return params.DataGasPerBlob * uint64(len(m.CallMsg.DataHashes)) } +func (m callMsg) DataGas() uint64 { return misc.GetDataGasUsed(len(m.CallMsg.DataHashes)) } func (m callMsg) MaxFeePerDataGas() *uint256.Int { return m.CallMsg.MaxFeePerDataGas } func (m callMsg) DataHashes() []libcommon.Hash { return m.CallMsg.DataHashes } diff --git a/accounts/abi/bind/backends/simulated_test.go b/accounts/abi/bind/backends/simulated_test.go index 046fa9e4264..0d33ca281b9 100644 --- a/accounts/abi/bind/backends/simulated_test.go +++ b/accounts/abi/bind/backends/simulated_test.go @@ -63,7 +63,7 @@ func TestSimulatedBackend(t *testing.T) { // generate a transaction and confirm you can retrieve it code := `6060604052600a8060106000396000f360606040526008565b00` var gas uint64 = 3000000 - signer := types.MakeSigner(params.TestChainConfig, 1) + signer := types.MakeSigner(params.TestChainConfig, 1, 0) var tx types.Transaction = types.NewContractCreation(0, u256.Num0, gas, u256.Num1, common.FromHex(code)) tx, _ = types.SignTx(tx, *signer, key) @@ -175,7 +175,7 @@ func TestNewSimulatedBackend_AdjustTimeFail(t *testing.T) { // Create tx and send amount, _ := uint256.FromBig(big.NewInt(1000)) gasPrice, _ := uint256.FromBig(big.NewInt(1)) - signer := types.MakeSigner(params.TestChainConfig, 1) + signer := types.MakeSigner(params.TestChainConfig, 1, 0) var tx types.Transaction = types.NewTransaction(0, testAddr, amount, params.TxGas, gasPrice, nil) signedTx, err := types.SignTx(tx, *signer, testKey) if err != nil { @@ -298,7 +298,7 @@ func TestSimulatedBackend_NonceAt(t *testing.T) { } // create a signed transaction to send - signer := types.MakeSigner(params.TestChainConfig, 1) + signer := types.MakeSigner(params.TestChainConfig, 1, 0) var tx types.Transaction = types.NewTransaction(nonce, testAddr, uint256.NewInt(1000), params.TxGas, uint256.NewInt(1), nil) signedTx, err := types.SignTx(tx, *signer, testKey) if err != nil { @@ -339,7 +339,7 @@ func TestSimulatedBackend_SendTransaction(t *testing.T) { bgCtx := context.Background() // create a signed transaction to send - signer := types.MakeSigner(params.TestChainConfig, 1) + signer := types.MakeSigner(params.TestChainConfig, 1, 0) var tx types.Transaction = types.NewTransaction(uint64(0), testAddr, uint256.NewInt(1000), params.TxGas, uint256.NewInt(1), nil) signedTx, err := types.SignTx(tx, *signer, testKey) if err != nil { @@ -373,7 +373,7 @@ func TestSimulatedBackend_TransactionByHash(t *testing.T) { bgCtx := context.Background() // create a signed transaction to send - signer := types.MakeSigner(params.TestChainConfig, 1) + signer := types.MakeSigner(params.TestChainConfig, 1, 0) var tx types.Transaction = types.NewTransaction(uint64(0), testAddr, uint256.NewInt(1000), params.TxGas, uint256.NewInt(1), nil) signedTx, err := types.SignTx(tx, *signer, testKey) if err != nil { @@ -681,7 +681,7 @@ func TestSimulatedBackend_TransactionCount(t *testing.T) { } // create a signed transaction to send - signer := types.MakeSigner(params.TestChainConfig, 1) + signer := types.MakeSigner(params.TestChainConfig, 1, 0) var tx types.Transaction = types.NewTransaction(uint64(0), testAddr, uint256.NewInt(1000), params.TxGas, uint256.NewInt(1), nil) signedTx, err := types.SignTx(tx, *signer, testKey) if err != nil { @@ -736,7 +736,7 @@ func TestSimulatedBackend_TransactionInBlock(t *testing.T) { } // create a signed transaction to send - signer := types.MakeSigner(params.TestChainConfig, 1) + signer := types.MakeSigner(params.TestChainConfig, 1, 0) var tx types.Transaction = types.NewTransaction(uint64(0), testAddr, uint256.NewInt(1000), params.TxGas, uint256.NewInt(1), nil) signedTx, err := types.SignTx(tx, *signer, testKey) if err != nil { @@ -791,7 +791,7 @@ func TestSimulatedBackend_PendingNonceAt(t *testing.T) { } // create a signed transaction to send - signer := types.MakeSigner(params.TestChainConfig, 1) + signer := types.MakeSigner(params.TestChainConfig, 1, 0) var tx types.Transaction = types.NewTransaction(uint64(0), testAddr, uint256.NewInt(1000), params.TxGas, uint256.NewInt(1), nil) signedTx, err := types.SignTx(tx, *signer, testKey) if err != nil { @@ -843,7 +843,7 @@ func TestSimulatedBackend_TransactionReceipt(t *testing.T) { bgCtx := context.Background() // create a signed transaction to send - signer := types.MakeSigner(params.TestChainConfig, 1) + signer := types.MakeSigner(params.TestChainConfig, 1, 0) var tx types.Transaction = types.NewTransaction(uint64(0), testAddr, uint256.NewInt(1000), params.TxGas, uint256.NewInt(1), nil) signedTx, err := types.SignTx(tx, *signer, testKey) if err != nil { diff --git a/accounts/abi/bind/util_test.go b/accounts/abi/bind/util_test.go index 91a858d0ef5..3c2632e4d15 100644 --- a/accounts/abi/bind/util_test.go +++ b/accounts/abi/bind/util_test.go @@ -77,7 +77,7 @@ func TestWaitDeployed(t *testing.T) { // Create the transaction. // Create the transaction. var tx types.Transaction = types.NewContractCreation(0, u256.Num0, test.gas, u256.Num1, common.FromHex(test.code)) - signer := types.MakeSigner(params.TestChainConfig, 1) + signer := types.MakeSigner(params.TestChainConfig, 1, 0) tx, _ = types.SignTx(tx, *signer, testKey) // Wait for it to get mined in the background. @@ -127,7 +127,7 @@ func TestWaitDeployedCornerCases(t *testing.T) { // Create a transaction to an account. code := "6060604052600a8060106000396000f360606040526008565b00" - signer := types.MakeSigner(params.TestChainConfig, 1) + signer := types.MakeSigner(params.TestChainConfig, 1, 0) var tx types.Transaction = types.NewTransaction(0, libcommon.HexToAddress("0x01"), u256.Num0, 3000000, u256.Num1, common.FromHex(code)) tx, _ = types.SignTx(tx, *signer, testKey) ctx, cancel := context.WithCancel(context.Background()) diff --git a/cl/beacon/handler/genesis.go b/cl/beacon/handler/genesis.go new file mode 100644 index 00000000000..0e4bf61deb2 --- /dev/null +++ b/cl/beacon/handler/genesis.go @@ -0,0 +1,42 @@ +package handler + +import ( + "encoding/json" + "io" + "net/http" + + "github.com/ledgerwatch/erigon-lib/common" + "github.com/ledgerwatch/erigon/cl/beacon/types" + "github.com/ledgerwatch/erigon/cl/fork" + "github.com/ledgerwatch/log/v3" +) + +type genesisReponse struct { + GenesisTime uint64 `json:"genesis_time,omitempty"` + GenesisValidatorRoot common.Hash `json:"genesis_validator_root,omitempty"` + GenesisForkVersion types.Bytes4 `json:"genesis_fork_version,omitempty"` +} + +func (a *ApiHandler) getGenesis(w http.ResponseWriter, _ *http.Request) { + if a.genesisCfg == nil { + w.WriteHeader(http.StatusNotFound) + io.WriteString(w, "Genesis Config is missing") + return + } + + digest, err := fork.ComputeForkDigest(a.beaconChainCfg, a.genesisCfg) + if err != nil { + w.WriteHeader(http.StatusInternalServerError) + io.WriteString(w, "Failed to compute fork digest") + log.Error("[Beacon API] genesis handler failed", err) + return + } + + w.Header().Set("Content-Type", "Application/json") + w.WriteHeader(http.StatusAccepted) + json.NewEncoder(w).Encode(genesisReponse{ + GenesisTime: a.genesisCfg.GenesisTime, + GenesisValidatorRoot: a.genesisCfg.GenesisValidatorRoot, + GenesisForkVersion: types.Bytes4(digest), + }) +} diff --git a/cl/beacon/handler/handler.go b/cl/beacon/handler/handler.go new file mode 100644 index 00000000000..4a4012b557a --- /dev/null +++ b/cl/beacon/handler/handler.go @@ -0,0 +1,85 @@ +package handler + +import ( + "net/http" + "sync" + + "github.com/go-chi/chi/v5" + "github.com/ledgerwatch/erigon/cl/clparams" +) + +type ApiHandler struct { + o sync.Once + mux chi.Router + genesisCfg *clparams.GenesisConfig + beaconChainCfg *clparams.BeaconChainConfig +} + +func NewApiHandler(genesisConfig *clparams.GenesisConfig, beaconChainConfig *clparams.BeaconChainConfig) *ApiHandler { + return &ApiHandler{o: sync.Once{}, genesisCfg: genesisConfig, beaconChainCfg: beaconChainConfig} +} + +func (a *ApiHandler) init() { + r := chi.NewRouter() + a.mux = r + // This is the set of apis for validation + otterscan + // otterscn specific ones are commented as such + r.Route("/eth", func(r chi.Router) { + r.Route("/v1", func(r chi.Router) { + r.Get("/events", nil) + r.Route("/beacon", func(r chi.Router) { + r.Get("/headers/{tag}", nil) // otterscan + r.Get("/blocks/{slot}/root", nil) //otterscan + r.Get("/genesis", a.getGenesis) + r.Post("/binded_blocks", nil) + r.Post("/blocks", nil) + r.Route("/pool", func(r chi.Router) { + r.Post("/attestations", nil) + r.Post("/sync_committees", nil) + }) + r.Get("/node/syncing", nil) + r.Get("/config/spec", nil) + r.Route("/states", func(r chi.Router) { + r.Get("/head/validators/{index}", nil) // otterscan + r.Get("/head/committees", nil) // otterscan + r.Route("/{state_id}", func(r chi.Router) { + r.Get("/validators", nil) + r.Get("/fork", nil) + r.Get("/validators/{id}", nil) + }) + }) + }) + r.Route("/validator", func(r chi.Router) { + r.Route("/duties", func(r chi.Router) { + r.Post("/attester/{epoch}", nil) + r.Get("/proposer/{epoch}", nil) + r.Post("/sync/{epoch}", nil) + }) + r.Get("/blinded_blocks/{slot}", nil) + r.Get("/attestation_data", nil) + r.Get("/aggregate_attestation", nil) + r.Post("/aggregate_and_proofs", nil) + r.Post("/beacon_committee_subscriptions", nil) + r.Post("/sync_committee_subscriptions", nil) + r.Get("/sync_committee_contribution", nil) + r.Post("/contribution_and_proofs", nil) + r.Post("/prepare_beacon_proposer", nil) + }) + }) + r.Route("/v2", func(r chi.Router) { + r.Route("/beacon", func(r chi.Router) { + r.Post("/blocks/{slot}", nil) //otterscan + }) + r.Route("/validator", func(r chi.Router) { + r.Post("/blocks/{slot}", nil) + }) + }) + }) +} + +func (a *ApiHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { + a.o.Do(func() { + a.init() + }) + a.mux.ServeHTTP(w, r) +} diff --git a/cl/beacon/router.go b/cl/beacon/router.go index aa4a265375d..5d87b248643 100644 --- a/cl/beacon/router.go +++ b/cl/beacon/router.go @@ -1,77 +1,37 @@ package beacon import ( + "net" "net/http" - "sync" + "time" - "github.com/go-chi/chi/v5" + "github.com/ledgerwatch/erigon/cl/beacon/handler" + "github.com/ledgerwatch/log/v3" ) -type ApiHandler struct { - o sync.Once - mux chi.Router -} +// TODO(enriavil1): Make this configurable via flags +type RouterConfiguration struct { + Protocol string + Address string -func (a *ApiHandler) init() { - r := chi.NewRouter() - a.mux = r - // This is the set of apis for validation + otterscan - // otterscn specific ones are commented as such - r.Route("/eth", func(r chi.Router) { - r.Route("/v1", func(r chi.Router) { - r.Get("/events", nil) - r.Route("/beacon", func(r chi.Router) { - r.Get("/headers/{tag}", nil) // otterscan - r.Get("/blocks/{slot}/root", nil) //otterscan - r.Get("/genesis", nil) - r.Post("/binded_blocks", nil) - r.Post("/blocks", nil) - r.Route("/pool", func(r chi.Router) { - r.Post("/attestations", nil) - r.Post("/sync_committees", nil) - }) - r.Get("/node/syncing", nil) - r.Get("/config/spec", nil) - r.Route("/states", func(r chi.Router) { - r.Get("/head/validators/{index}", nil) // otterscan - r.Get("/head/committees", nil) // otterscan - r.Route("/{state_id}", func(r chi.Router) { - r.Get("/fork", nil) - r.Get("/validators/{id}", nil) - }) - }) - }) - r.Route("/validator", func(r chi.Router) { - r.Route("/duties", func(r chi.Router) { - r.Post("/attester/{epoch}", nil) - r.Get("/proposer/{epoch}", nil) - r.Post("/sync/{epoch}", nil) - }) - r.Get("blinded_blocks/{slot}", nil) - r.Get("attestation_data", nil) - r.Get("aggregate_attestation", nil) - r.Post("aggregate_and_proofs", nil) - r.Post("beacon_committee_subscriptions", nil) - r.Post("sync_committee_subscriptions", nil) - r.Get("sync_committee_contribution", nil) - r.Post("contribution_and_proofs", nil) - r.Post("prepare_beacon_proposer", nil) - }) - }) - r.Route("/v2", func(r chi.Router) { - r.Route("/beacon", func(r chi.Router) { - r.Post("/blocks/{slot}", nil) //otterscan - }) - r.Route("/validator", func(r chi.Router) { - r.Post("/blocks/{slot}", nil) - }) - }) - }) + ReadTimeTimeout time.Duration + IdleTimeout time.Duration + WriteTimeout time.Duration } -func (a *ApiHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { - a.o.Do(func() { - a.init() - }) - a.mux.ServeHTTP(w, r) +func ListenAndServe(api *handler.ApiHandler, routerCfg *RouterConfiguration) { + listener, err := net.Listen(routerCfg.Protocol, routerCfg.Address) + server := &http.Server{ + Handler: api, + ReadTimeout: routerCfg.ReadTimeTimeout, + IdleTimeout: routerCfg.IdleTimeout, + WriteTimeout: routerCfg.IdleTimeout, + } + if err != nil { + log.Warn("[Beacon API] Failed to start listening", "addr", routerCfg.Address, "err", err) + } + + if err := server.Serve(listener); err != nil { + log.Warn("[Beacon API] failed to start serving", "addr", routerCfg.Address, "err", err) + } } diff --git a/cl/beacon/types/primitives.go b/cl/beacon/types/primitives.go new file mode 100644 index 00000000000..2e4681d0885 --- /dev/null +++ b/cl/beacon/types/primitives.go @@ -0,0 +1,12 @@ +package types + +import ( + "encoding/hex" + "encoding/json" +) + +type Bytes4 [4]byte + +func (b Bytes4) MarshalJSON() ([]byte, error) { + return json.Marshal("0x" + hex.EncodeToString(b[:])) +} diff --git a/cl/clparams/config.go b/cl/clparams/config.go index 1f8125f5541..b82d65f6bc8 100644 --- a/cl/clparams/config.go +++ b/cl/clparams/config.go @@ -262,8 +262,8 @@ var CheckpointSyncEndpoints = map[NetworkType][]string{ "https://prater-checkpoint-sync.stakely.io/eth/v2/debug/beacon/states/finalized", }, SepoliaNetwork: { - "https://checkpoint-sync.sepolia.ethpandaops.io/eth/v2/debug/beacon/states/finalized", "https://sepolia.beaconstate.info/eth/v2/debug/beacon/states/finalized", + "https://checkpoint-sync.sepolia.ethpandaops.io/eth/v2/debug/beacon/states/finalized", }, GnosisNetwork: { "https://checkpoint.gnosis.gateway.fm/eth/v2/debug/beacon/states/finalized", @@ -813,7 +813,8 @@ func gnosisConfig() BeaconChainConfig { cfg.BaseRewardFactor = 25 cfg.SlotsPerEpoch = 16 cfg.EpochsPerSyncCommitteePeriod = 512 - cfg.CapellaForkEpoch = math.MaxUint64 + cfg.CapellaForkEpoch = 648704 + cfg.CapellaForkVersion = 0x03000064 cfg.DenebForkEpoch = math.MaxUint64 cfg.InitializeForkSchedule() return cfg @@ -960,10 +961,10 @@ func GetCheckpointSyncEndpoint(net NetworkType) string { // 100 is Gnosis Mainnet // 10200 is Chiado Testnet func EmbeddedSupported(id uint64) bool { - return id == 1 // || - //id == 5 || - //id == 11155111 || - //id == 100 || + return id == 1 || + id == 5 || + id == 11155111 || + id == 100 // || //id == 10200 } diff --git a/cl/clparams/initial_state/initial_state.go b/cl/clparams/initial_state/initial_state.go index d17853754f7..4cbf8d88602 100644 --- a/cl/clparams/initial_state/initial_state.go +++ b/cl/clparams/initial_state/initial_state.go @@ -3,6 +3,7 @@ package initial_state import ( _ "embed" "fmt" + "github.com/ledgerwatch/erigon/cl/phase1/core/state" "github.com/ledgerwatch/erigon/cl/clparams" diff --git a/cl/cltypes/beacon_block.go b/cl/cltypes/beacon_block.go index b63cee16e7c..344cfec5c40 100644 --- a/cl/cltypes/beacon_block.go +++ b/cl/cltypes/beacon_block.go @@ -13,33 +13,15 @@ import ( ) const ( - MaxAttesterSlashings = 2 - MaxProposerSlashings = 16 - MaxAttestations = 128 - MaxDeposits = 16 - MaxVoluntaryExits = 16 - MaxExecutionChanges = 16 - MaxBlobsPerBlock = 4 + MaxAttesterSlashings = 2 + MaxProposerSlashings = 16 + MaxAttestations = 128 + MaxDeposits = 16 + MaxVoluntaryExits = 16 + MaxExecutionChanges = 16 + MaxBlobsCommittmentsPerBlock = 4096 ) -func getBeaconBlockMinimumSize(v clparams.StateVersion) (size uint32) { - switch v { - case clparams.DenebVersion: - size = 392 - case clparams.CapellaVersion: - size = 388 - case clparams.BellatrixVersion: - size = 384 - case clparams.AltairVersion: - size = 380 - case clparams.Phase0Version: - size = 220 - default: - panic("unimplemented version") - } - return -} - type SignedBeaconBlock struct { Signature [96]byte Block *BeaconBlock @@ -100,7 +82,6 @@ func (b *BeaconBody) EncodeSSZ(dst []byte) ([]byte, error) { } func (b *BeaconBody) EncodingSizeSSZ() (size int) { - size = int(getBeaconBlockMinimumSize(b.Version)) if b.Eth1Data == nil { b.Eth1Data = &Eth1Data{} @@ -133,7 +114,7 @@ func (b *BeaconBody) EncodingSizeSSZ() (size int) { b.ExecutionChanges = solid.NewStaticListSSZ[*SignedBLSToExecutionChange](MaxExecutionChanges, 172) } if b.BlobKzgCommitments == nil { - b.BlobKzgCommitments = solid.NewStaticListSSZ[*KZGCommitment](MaxBlobsPerBlock, 48) + b.BlobKzgCommitments = solid.NewStaticListSSZ[*KZGCommitment](MaxBlobsCommittmentsPerBlock, 48) } size += b.ProposerSlashings.EncodingSizeSSZ() @@ -161,7 +142,8 @@ func (b *BeaconBody) DecodeSSZ(buf []byte, version int) error { return fmt.Errorf("[BeaconBody] err: %s", ssz.ErrLowBufferSize) } - return ssz2.UnmarshalSSZ(buf, version, b.getSchema()...) + err := ssz2.UnmarshalSSZ(buf, version, b.getSchema()...) + return err } func (b *BeaconBody) HashSSZ() ([32]byte, error) { diff --git a/cl/cltypes/beacon_block_test.go b/cl/cltypes/beacon_block_test.go index ad50417baf7..a07cd560e31 100644 --- a/cl/cltypes/beacon_block_test.go +++ b/cl/cltypes/beacon_block_test.go @@ -24,7 +24,7 @@ func TestBeaconBody(t *testing.T) { voluntaryExits := solid.NewStaticListSSZ[*SignedVoluntaryExit](MaxVoluntaryExits, 112) syncAggregate := &SyncAggregate{} executionChanges := solid.NewStaticListSSZ[*SignedBLSToExecutionChange](MaxExecutionChanges, 172) - blobKzgCommitments := solid.NewStaticListSSZ[*KZGCommitment](MaxBlobsPerBlock, 48) + blobKzgCommitments := solid.NewStaticListSSZ[*KZGCommitment](MaxBlobsCommittmentsPerBlock, 48) version := clparams.DenebVersion block := types.NewBlock(&types.Header{ BaseFee: big.NewInt(1), @@ -57,10 +57,10 @@ func TestBeaconBody(t *testing.T) { // Test HashSSZ root, err := body.HashSSZ() assert.NoError(t, err) - assert.Equal(t, libcommon.HexToHash("17892e0144f88a0aa3e19f8b5f55129aed3fce23f1f32a08518ccd47b6ecbcf9"), libcommon.Hash(root)) + assert.Equal(t, libcommon.HexToHash("918d1ee08d700e422fcce6319cd7509b951d3ebfb1a05291aab9466b7e9826fc"), libcommon.Hash(root)) _, err = body.ExecutionPayload.RlpHeader() - assert.Error(t, err) + assert.NoError(t, err) p, err := body.ExecutionPayload.PayloadHeader() assert.NoError(t, err) diff --git a/cl/cltypes/beacon_blob_side_car.go b/cl/cltypes/beacon_kzgcommitment.go similarity index 100% rename from cl/cltypes/beacon_blob_side_car.go rename to cl/cltypes/beacon_kzgcommitment.go diff --git a/cl/cltypes/beacon_kzgcommitment_test.go b/cl/cltypes/beacon_kzgcommitment_test.go new file mode 100644 index 00000000000..58f6da68461 --- /dev/null +++ b/cl/cltypes/beacon_kzgcommitment_test.go @@ -0,0 +1,75 @@ +package cltypes_test + +import ( + "testing" + + "github.com/ledgerwatch/erigon/cl/cltypes" + "github.com/ledgerwatch/erigon/cl/merkle_tree" + "github.com/stretchr/testify/require" +) + +func TestKZGCommitmentCopy(t *testing.T) { + require := require.New(t) + + commitment := cltypes.KZGCommitment{} + commitment[0] = 1 + commitmentCopy := commitment.Copy() + + // Modify the original commitment + commitment[0] = 2 + + require.EqualValues(commitmentCopy[0], 1, "KZGCommitment Copy did not create a separate copy") +} + +func TestKZGCommitmentEncodeSSZ(t *testing.T) { + require := require.New(t) + + commitment := cltypes.KZGCommitment{} + commitment[0] = 1 + + encoded, err := commitment.EncodeSSZ([]byte{}) + require.NoError(err, "Error encoding KZGCommitment") + + expected := append([]byte{}, commitment[:]...) + require.Equal(encoded, expected, "KZGCommitment EncodeSSZ did not produce the expected result") +} + +func TestKZGCommitmentDecodeSSZ(t *testing.T) { + require := require.New(t) + + commitment := cltypes.KZGCommitment{} + encoded := append([]byte{}, commitment[:]...) + encoded[0] = 1 + + err := commitment.DecodeSSZ(encoded, 0) + require.NoError(err, "Error decoding KZGCommitment") + + expected := cltypes.KZGCommitment{} + expected[0] = 1 + require.Equal(commitment, expected, "KZGCommitment DecodeSSZ did not produce the expected result") +} + +func TestKZGCommitmentEncodingSizeSSZ(t *testing.T) { + require := require.New(t) + + commitment := cltypes.KZGCommitment{} + encodingSize := commitment.EncodingSizeSSZ() + + require.Equal(encodingSize, 48, "KZGCommitment EncodingSizeSSZ did not return the expected size") +} + +func TestKZGCommitmentHashSSZ(t *testing.T) { + require := require.New(t) + + commitment := cltypes.KZGCommitment{} + commitment[0] = 1 + + hash, err := commitment.HashSSZ() + require.NoError(err, "Error hashing KZGCommitment") + + // Calculate the expected hash using the same method as the HashSSZ function + expected, err := merkle_tree.BytesRoot(commitment[:]) + require.NoError(err, "Error calculating expected hash") + + require.Equal(hash, expected, "KZGCommitment HashSSZ did not produce the expected result") +} diff --git a/cl/cltypes/eth1_block.go b/cl/cltypes/eth1_block.go index 888665791ea..ebeabb23218 100644 --- a/cl/cltypes/eth1_block.go +++ b/cl/cltypes/eth1_block.go @@ -32,7 +32,8 @@ type Eth1Block struct { BlockHash libcommon.Hash Transactions *solid.TransactionsSSZ Withdrawals *solid.ListSSZ[*types.Withdrawal] - ExcessDataGas [32]byte + DataGasUsed uint64 + ExcessDataGas uint64 // internals version clparams.StateVersion } @@ -51,14 +52,6 @@ func NewEth1BlockFromHeaderAndBody(header *types.Header, body *types.RawBody) *E var baseFee32 [32]byte copy(baseFee32[:], baseFeeBytes) - var excessDataGas32 [32]byte - if header.ExcessDataGas != nil { - excessDataGasBytes := header.ExcessDataGas.Bytes() - for i, j := 0, len(excessDataGasBytes)-1; i < j; i, j = i+1, j-1 { - excessDataGasBytes[i], excessDataGasBytes[j] = excessDataGasBytes[j], excessDataGasBytes[i] - } - copy(excessDataGas32[:], excessDataGasBytes) - } extra := solid.NewExtraData() extra.SetBytes(header.Extra) block := &Eth1Block{ @@ -77,10 +70,11 @@ func NewEth1BlockFromHeaderAndBody(header *types.Header, body *types.RawBody) *E BlockHash: header.Hash(), Transactions: solid.NewTransactionsSSZFromTransactions(body.Transactions), Withdrawals: solid.NewStaticListSSZFromList(body.Withdrawals, 16, 44), - ExcessDataGas: excessDataGas32, } - if header.ExcessDataGas != nil { + if header.DataGasUsed != nil && header.ExcessDataGas != nil { + block.DataGasUsed = *header.DataGasUsed + block.ExcessDataGas = *header.ExcessDataGas block.version = clparams.DenebVersion } else if header.WithdrawalsHash != nil { block.version = clparams.CapellaVersion @@ -108,6 +102,12 @@ func (b *Eth1Block) PayloadHeader() (*Eth1Header, error) { } } + var dataGasUsed, excessDataGas uint64 + if b.version >= clparams.DenebVersion { + dataGasUsed = b.DataGasUsed + excessDataGas = b.ExcessDataGas + } + return &Eth1Header{ ParentHash: b.ParentHash, FeeRecipient: b.FeeRecipient, @@ -124,7 +124,8 @@ func (b *Eth1Block) PayloadHeader() (*Eth1Header, error) { BlockHash: b.BlockHash, TransactionsRoot: transactionsRoot, WithdrawalsRoot: withdrawalsRoot, - ExcessDataGas: b.ExcessDataGas, + DataGasUsed: dataGasUsed, + ExcessDataGas: excessDataGas, version: b.version, }, nil } @@ -148,7 +149,7 @@ func (b *Eth1Block) EncodingSizeSSZ() (size int) { } if b.version >= clparams.DenebVersion { - size += 32 // ExcessDataGas + size += 8 * 2 // DataGasUsed + ExcessDataGas } return @@ -180,7 +181,7 @@ func (b *Eth1Block) getSchema() []interface{} { s = append(s, b.Withdrawals) } if b.version >= clparams.DenebVersion { - s = append(s, b.ExcessDataGas[:]) + s = append(s, &b.DataGasUsed, &b.ExcessDataGas) } return s } @@ -193,29 +194,19 @@ func (b *Eth1Block) RlpHeader() (*types.Header, error) { reversedBaseFeePerGas[i], reversedBaseFeePerGas[j] = reversedBaseFeePerGas[j], reversedBaseFeePerGas[i] } baseFee := new(big.Int).SetBytes(reversedBaseFeePerGas) - // If the block version is Capella or later, calculate the withdrawals hash. var withdrawalsHash *libcommon.Hash if b.version >= clparams.CapellaVersion { withdrawalsHash = new(libcommon.Hash) // extract all withdrawals from itearable list withdrawals := make([]*types.Withdrawal, b.Withdrawals.Len()) - b.Withdrawals.Range(func(_ int, w *types.Withdrawal, _ int) bool { - withdrawals = append(withdrawals, w) + b.Withdrawals.Range(func(idx int, w *types.Withdrawal, _ int) bool { + withdrawals[idx] = w return true }) *withdrawalsHash = types.DeriveSha(types.Withdrawals(withdrawals)) } - var excessDataGas *big.Int - if b.version >= clparams.DenebVersion { - reversedExcessDataGas := libcommon.Copy(b.ExcessDataGas[:]) - for i, j := 0, len(reversedExcessDataGas)-1; i < j; i, j = i+1, j-1 { - reversedExcessDataGas[i], reversedExcessDataGas[j] = reversedExcessDataGas[j], reversedExcessDataGas[i] - } - excessDataGas = new(big.Int).SetBytes(reversedExcessDataGas) - } - header := &types.Header{ ParentHash: b.ParentHash, UncleHash: types.EmptyUncleHash, @@ -234,7 +225,13 @@ func (b *Eth1Block) RlpHeader() (*types.Header, error) { Nonce: merge.ProofOfStakeNonce, BaseFee: baseFee, WithdrawalsHash: withdrawalsHash, - ExcessDataGas: excessDataGas, + } + + if b.version >= clparams.DenebVersion { + dataGasUsed := b.DataGasUsed + header.DataGasUsed = &dataGasUsed + excessDataGas := b.ExcessDataGas + header.ExcessDataGas = &excessDataGas } // If the header hash does not match the block hash, return an error. @@ -245,11 +242,15 @@ func (b *Eth1Block) RlpHeader() (*types.Header, error) { return header, nil } +func (b *Eth1Block) Version() clparams.StateVersion { + return b.version +} + // Body returns the equivalent raw body (only eth1 body section). func (b *Eth1Block) Body() *types.RawBody { withdrawals := make([]*types.Withdrawal, b.Withdrawals.Len()) - b.Withdrawals.Range(func(_ int, w *types.Withdrawal, _ int) bool { - withdrawals = append(withdrawals, w) + b.Withdrawals.Range(func(idx int, w *types.Withdrawal, _ int) bool { + withdrawals[idx] = w return true }) return &types.RawBody{ diff --git a/cl/cltypes/eth1_header.go b/cl/cltypes/eth1_header.go index d8d822ddc44..3d92298ca77 100644 --- a/cl/cltypes/eth1_header.go +++ b/cl/cltypes/eth1_header.go @@ -30,7 +30,8 @@ type Eth1Header struct { BlockHash libcommon.Hash TransactionsRoot libcommon.Hash WithdrawalsRoot libcommon.Hash - ExcessDataGas [32]byte + DataGasUsed uint64 + ExcessDataGas uint64 // internals version clparams.StateVersion } @@ -59,7 +60,8 @@ func (e *Eth1Header) Capella() { // Capella converts the header to capella version. func (e *Eth1Header) Deneb() { e.version = clparams.DenebVersion - e.ExcessDataGas = [32]byte{} + e.DataGasUsed = 0 + e.ExcessDataGas = 0 } func (e *Eth1Header) IsZero() bool { @@ -68,7 +70,9 @@ func (e *Eth1Header) IsZero() bool { } return e.ParentHash == libcommon.Hash{} && e.FeeRecipient == libcommon.Address{} && e.StateRoot == libcommon.Hash{} && e.ReceiptsRoot == libcommon.Hash{} && e.LogsBloom == types.Bloom{} && e.PrevRandao == libcommon.Hash{} && e.BlockNumber == 0 && - e.GasLimit == 0 && e.GasUsed == 0 && e.Time == 0 && e.Extra.EncodingSizeSSZ() == 0 && e.BaseFeePerGas == [32]byte{} && e.BlockHash == libcommon.Hash{} && e.TransactionsRoot == libcommon.Hash{} + e.GasLimit == 0 && e.GasUsed == 0 && e.Time == 0 && e.Extra.EncodingSizeSSZ() == 0 && e.BaseFeePerGas == [32]byte{} && + e.BlockHash == libcommon.Hash{} && e.TransactionsRoot == libcommon.Hash{} && e.WithdrawalsRoot == libcommon.Hash{} && + e.DataGasUsed == 0 && e.ExcessDataGas == 0 } // EncodeSSZ encodes the header in SSZ format. @@ -94,7 +98,7 @@ func (h *Eth1Header) EncodingSizeSSZ() int { } if h.version >= clparams.DenebVersion { - size += 32 + size += 8 * 2 // DataGasUsed + ExcessDataGas } if h.Extra == nil { h.Extra = solid.NewExtraData() @@ -117,7 +121,7 @@ func (h *Eth1Header) getSchema() []interface{} { s = append(s, h.WithdrawalsRoot[:]) } if h.version >= clparams.DenebVersion { - s = append(s, h.ExcessDataGas[:]) + s = append(s, &h.DataGasUsed, &h.ExcessDataGas) } return s } diff --git a/cl/cltypes/eth1_header_test.go b/cl/cltypes/eth1_header_test.go index b0b1c7b8722..fbc724bc005 100644 --- a/cl/cltypes/eth1_header_test.go +++ b/cl/cltypes/eth1_header_test.go @@ -34,7 +34,8 @@ func TestEth1Header(t *testing.T) { blockHash := libcommon.Hash{} transactionsRoot := libcommon.Hash{} withdrawalsRoot := libcommon.Hash{} - excessDataGas := [32]byte{} + dataGasUsed := uint64(50) + excessDataGas := uint64(60) // Test Eth1Header header = &Eth1Header{ @@ -53,6 +54,7 @@ func TestEth1Header(t *testing.T) { BlockHash: blockHash, TransactionsRoot: transactionsRoot, WithdrawalsRoot: withdrawalsRoot, + DataGasUsed: dataGasUsed, ExcessDataGas: excessDataGas, version: version, } @@ -73,5 +75,5 @@ func TestEth1Header(t *testing.T) { // Test HashSSZ root, err := header.HashSSZ() assert.NoError(t, err) - assert.Equal(t, libcommon.HexToHash("40cfd5eae75760f80eddcee9e60a2c783e090d4474b099bf2bdeffb5496a1ccb"), libcommon.Hash(root)) + assert.Equal(t, libcommon.HexToHash("0x9170a25a0980f07bcb9af2a52ff915262763e0e6a2df26aa205b967bd462a6d3"), libcommon.Hash(root)) } diff --git a/cl/cltypes/fork_test.go b/cl/cltypes/fork_test.go new file mode 100644 index 00000000000..cbde62babf2 --- /dev/null +++ b/cl/cltypes/fork_test.go @@ -0,0 +1,102 @@ +package cltypes_test + +import ( + "testing" + + "github.com/ledgerwatch/erigon/cl/cltypes" + "github.com/ledgerwatch/erigon/cl/merkle_tree" + ssz2 "github.com/ledgerwatch/erigon/cl/ssz" + "github.com/stretchr/testify/require" +) + +func TestForkStatic(t *testing.T) { + require := require.New(t) + + fork := cltypes.Fork{} + isStatic := fork.Static() + + require.True(isStatic, "Fork Static method did not return true") +} + +func TestForkCopy(t *testing.T) { + require := require.New(t) + + fork := cltypes.Fork{ + PreviousVersion: [4]byte{1, 2, 3, 4}, + CurrentVersion: [4]byte{5, 6, 7, 8}, + Epoch: 123, + } + + copy := fork.Copy() + + require.Equal(fork.PreviousVersion, copy.PreviousVersion, "Fork Copy did not create a separate copy") + require.Equal(fork.CurrentVersion, copy.CurrentVersion, "Fork Copy did not create a separate copy") + require.Equal(fork.Epoch, copy.Epoch, "Fork Copy did not create a separate copy") +} + +func TestForkEncodeSSZ(t *testing.T) { + require := require.New(t) + + fork := cltypes.Fork{ + PreviousVersion: [4]byte{1, 2, 3, 4}, + CurrentVersion: [4]byte{5, 6, 7, 8}, + Epoch: 123, + } + + encoded, err := fork.EncodeSSZ([]byte{}) + require.NoError(err, "Error encoding Fork") + + expected, err := ssz2.MarshalSSZ([]byte{}, fork.PreviousVersion[:], fork.CurrentVersion[:], fork.Epoch) + require.NoError(err, "Error calculating expected encoded value") + + require.Equal(encoded, expected, "Fork EncodeSSZ did not produce the expected result") +} + +func TestForkDecodeSSZ(t *testing.T) { + require := require.New(t) + + fork := &cltypes.Fork{ + PreviousVersion: [4]byte{1, 2, 3, 4}, + CurrentVersion: [4]byte{5, 6, 7, 8}, + Epoch: 123, + } + encoded, err := fork.EncodeSSZ([]byte{}) + require.NoError(err, "Error preparing encoded value") + + err = fork.DecodeSSZ(encoded, 0) + require.NoError(err, "Error decoding Fork") + + expected := &cltypes.Fork{ + PreviousVersion: [4]byte{1, 2, 3, 4}, + CurrentVersion: [4]byte{5, 6, 7, 8}, + Epoch: 123, + } + require.Equal(fork, expected, "Fork DecodeSSZ did not produce the expected result") +} + +func TestForkEncodingSizeSSZ(t *testing.T) { + require := require.New(t) + + fork := cltypes.Fork{} + encodingSize := fork.EncodingSizeSSZ() + + require.Equal(encodingSize, 16, "Fork EncodingSizeSSZ did not return the expected size") +} + +func TestForkHashSSZ(t *testing.T) { + require := require.New(t) + + fork := cltypes.Fork{ + PreviousVersion: [4]byte{1, 2, 3, 4}, + CurrentVersion: [4]byte{5, 6, 7, 8}, + Epoch: 123, + } + + hash, err := fork.HashSSZ() + require.NoError(err, "Error hashing Fork") + + expected, err := merkle_tree.HashTreeRoot(fork.PreviousVersion[:], fork.CurrentVersion[:], fork.Epoch) + require.NoError(err, "Error calculating expected hash") + + require.Equal(hash, expected, "Fork HashSSZ did not produce the expected result") +} diff --git a/cl/cltypes/solid/bitlist.go b/cl/cltypes/solid/bitlist.go index de2964e9247..f93a47ef786 100644 --- a/cl/cltypes/solid/bitlist.go +++ b/cl/cltypes/solid/bitlist.go @@ -104,7 +104,7 @@ func (u *BitList) Cap() int { } func (u *BitList) HashSSZ() ([32]byte, error) { - depth := getDepth((uint64(u.c) + 31) / 32) + depth := GetDepth((uint64(u.c) + 31) / 32) baseRoot := [32]byte{} if u.l == 0 { copy(baseRoot[:], merkle_tree.ZeroHashes[depth][:]) diff --git a/cl/cltypes/solid/bitlist_test.go b/cl/cltypes/solid/bitlist_test.go new file mode 100644 index 00000000000..01f685209ff --- /dev/null +++ b/cl/cltypes/solid/bitlist_test.go @@ -0,0 +1,110 @@ +package solid_test + +import ( + "testing" + + "github.com/ledgerwatch/erigon/cl/cltypes/solid" + "github.com/stretchr/testify/require" +) + +func TestBitListStatic(t *testing.T) { + require := require.New(t) + + bitList := solid.BitList{} + isStatic := bitList.Static() + + require.False(isStatic, "BitList Static method did not return false") +} + +func TestBitListClear(t *testing.T) { + require := require.New(t) + + bitList := solid.NewBitList(10, 20) + bitList.Clear() + + require.Zero(bitList.Length(), "BitList Clear did not reset the length to zero") +} + +func TestBitListCopyTo(t *testing.T) { + require := require.New(t) + + source := solid.NewBitList(5, 10) + target := solid.NewBitList(0, 0) + + source.CopyTo(target) + + expectedHash, err := source.HashSSZ() + require.NoError(err) + + actualHash, err := target.HashSSZ() + require.NoError(err) + + require.Equal(expectedHash, actualHash, "BitList CopyTo did not copy the bits correctly") + require.Equal(source.Length(), target.Length(), "BitList CopyTo did not set the target length correctly") +} + +func TestBitListPop(t *testing.T) { + require := require.New(t) + + bitList := solid.NewBitList(5, 10) + + popped := bitList.Pop() + + require.Equal(byte(0), popped, "BitList Pop did not return the expected value") + require.Equal(4, bitList.Length(), "BitList Pop did not decrement the length") +} + +func TestBitListAppend(t *testing.T) { + require := require.New(t) + + bitList := solid.NewBitList(5, 10) + + bitList.Append(1) + bitList.Append(0) + + require.Equal(7, bitList.Length(), "BitList Append did not increment the length correctly") + require.Equal(byte(1), bitList.Get(5), "BitList Append did not append the bits correctly") + require.Equal(byte(0), bitList.Get(6), "BitList Append did not append the bits correctly") +} + +func TestBitListGet(t *testing.T) { + require := require.New(t) + + bitList := solid.NewBitList(5, 10) + + bit := bitList.Get(2) + + require.Zero(bit, "BitList Get did not return the expected value") +} + +func TestBitListSet(t *testing.T) { + require := require.New(t) + + bitList := solid.NewBitList(5, 10) + + bitList.Set(2, 1) + + require.Equal(byte(1), bitList.Get(2), "BitList Set did not set the bit correctly") +} + +func TestBitListLength(t *testing.T) { + require := require.New(t) + + bitList := solid.NewBitList(5, 10) + + length := bitList.Length() + + require.Equal(5, length, "BitList Length did not return the expected value") +} + +func TestBitListCap(t *testing.T) { + require := require.New(t) + + bitList := solid.NewBitList(5, 10) + + capacity := bitList.Cap() + + require.Equal(10, capacity, "BitList Cap did not return the expected value") +} + +// Add more tests as needed for other functions in the BitList struct. diff --git a/cl/cltypes/solid/extra_data_test.go b/cl/cltypes/solid/extra_data_test.go new file mode 100644 index 00000000000..74f124154ab --- /dev/null +++ b/cl/cltypes/solid/extra_data_test.go @@ -0,0 +1,40 @@ +package solid_test + +import ( + "testing" + + "github.com/ledgerwatch/erigon/cl/cltypes/solid" + "github.com/stretchr/testify/require" +) + +func TestExtraData(t *testing.T) { + // Create a new ExtraData instance + extraData := solid.NewExtraData() + + // Set the bytes + bytes := []byte{0x01, 0x02, 0x03} + extraData.SetBytes(bytes) + + // Encode and decode the ExtraData + encoded, err := extraData.EncodeSSZ(nil) + require.NoError(t, err) + + decoded := solid.NewExtraData() + err = decoded.DecodeSSZ(encoded, 0) + require.NoError(t, err) + + // Verify the bytes + require.Equal(t, bytes, decoded.Bytes()) + + // Verify the encoding size + require.Equal(t, len(bytes), extraData.EncodingSizeSSZ()) + + // Calculate the expected hash + expectedHash, err := extraData.HashSSZ() + require.NoError(t, err) + + // Verify the hash + actualHash, err := decoded.HashSSZ() + require.NoError(t, err) + require.Equal(t, expectedHash, actualHash) +} diff --git a/cl/cltypes/solid/hash_list.go b/cl/cltypes/solid/hash_list.go index 8a14033039b..bc67267847a 100644 --- a/cl/cltypes/solid/hash_list.go +++ b/cl/cltypes/solid/hash_list.go @@ -97,7 +97,7 @@ func (h *hashList) Set(index int, newValue libcommon.Hash) { } func (h *hashList) hashVectorSSZ() ([32]byte, error) { - depth := getDepth(uint64(h.c)) + depth := GetDepth(uint64(h.c)) offset := length.Hash * h.l elements := common.Copy(h.u[:offset]) for i := uint8(0); i < depth; i++ { @@ -117,7 +117,7 @@ func (h *hashList) hashVectorSSZ() ([32]byte, error) { } func (h *hashList) HashSSZ() ([32]byte, error) { - depth := getDepth(uint64(h.c)) + depth := GetDepth(uint64(h.c)) baseRoot := [32]byte{} var err error if h.l == 0 { diff --git a/cl/cltypes/solid/hashutil.go b/cl/cltypes/solid/hashutil.go index 5818aa639bb..7816549a40a 100644 --- a/cl/cltypes/solid/hashutil.go +++ b/cl/cltypes/solid/hashutil.go @@ -12,7 +12,7 @@ func (arr *hashBuf) makeBuf(size int) { arr.buf = arr.buf[:size] } -func getDepth(v uint64) uint8 { +func GetDepth(v uint64) uint8 { // If there are 0 or 1 nodes, the depth is 0. if v <= 1 { return 0 diff --git a/cl/cltypes/solid/hashutil_test.go b/cl/cltypes/solid/hashutil_test.go new file mode 100644 index 00000000000..a41a86b0e3c --- /dev/null +++ b/cl/cltypes/solid/hashutil_test.go @@ -0,0 +1,34 @@ +package solid_test + +import ( + "testing" + + "github.com/ledgerwatch/erigon/cl/cltypes/solid" + "github.com/stretchr/testify/require" +) + +func TestGetDepth(t *testing.T) { + // Test cases with expected depths + testCases := map[uint64]uint8{ + 0: 0, + 1: 0, + 2: 1, + 3: 1, + 4: 2, + 5: 2, + 6: 2, + 7: 2, + 8: 3, + 9: 3, + 10: 3, + 16: 4, + 17: 4, + 32: 5, + 33: 5, + } + + for v, expectedDepth := range testCases { + actualDepth := solid.GetDepth(v) + require.Equal(t, expectedDepth, actualDepth) + } +} diff --git a/cl/cltypes/solid/uint64slice_byte.go b/cl/cltypes/solid/uint64slice_byte.go index 1ec1e958d9c..5b5e85d5d90 100644 --- a/cl/cltypes/solid/uint64slice_byte.go +++ b/cl/cltypes/solid/uint64slice_byte.go @@ -58,7 +58,7 @@ func (arr *byteBasedUint64Slice) CopyTo(target *byteBasedUint64Slice) { // depth returns the depth of the Merkle tree representing the slice. func (arr *byteBasedUint64Slice) depth() int { - return int(getDepth(uint64(arr.c) / 4)) + return int(GetDepth(uint64(arr.c) / 4)) } // Range iterates over the slice and applies a provided function to each element. @@ -120,7 +120,7 @@ func (arr *byteBasedUint64Slice) Cap() int { // HashListSSZ computes the SSZ hash of the slice as a list. It returns the hash and any error encountered. func (arr *byteBasedUint64Slice) HashListSSZ() ([32]byte, error) { - depth := getDepth((uint64(arr.c)*8 + 31) / 32) + depth := GetDepth((uint64(arr.c)*8 + 31) / 32) baseRoot := [32]byte{} var err error if arr.l == 0 { @@ -137,7 +137,7 @@ func (arr *byteBasedUint64Slice) HashListSSZ() ([32]byte, error) { // HashVectorSSZ computes the SSZ hash of the slice as a vector. It returns the hash and any error encountered. func (arr *byteBasedUint64Slice) HashVectorSSZ() ([32]byte, error) { - depth := getDepth((uint64(arr.c)*8 + 31) / 32) + depth := GetDepth((uint64(arr.c)*8 + 31) / 32) offset := 32*((arr.l-1)/4) + 32 elements := arr.u[:offset] for i := uint8(0); i < depth; i++ { diff --git a/cl/cltypes/solid/validator.go b/cl/cltypes/solid/validator.go index a74a26a92ed..025b74d6b1c 100644 --- a/cl/cltypes/solid/validator.go +++ b/cl/cltypes/solid/validator.go @@ -95,6 +95,11 @@ func (v Validator) PublicKey() (o [48]byte) { copy(o[:], v[:48]) return } + +func (v Validator) PublicKeyBytes() (o []byte) { + return v[:48] +} + func (v Validator) WithdrawalCredentials() (o common.Hash) { copy(o[:], v[48:80]) return diff --git a/cl/cltypes/solid/validator_set.go b/cl/cltypes/solid/validator_set.go index 0299e0350b3..31b51809cd0 100644 --- a/cl/cltypes/solid/validator_set.go +++ b/cl/cltypes/solid/validator_set.go @@ -144,7 +144,7 @@ func (v *ValidatorSet) HashSSZ() ([32]byte, error) { v.makeBuf(v.l * length.Hash) validatorLeaves := v.buf hashBuffer := make([]byte, 8*32) - depth := getDepth(uint64(v.c)) + depth := GetDepth(uint64(v.c)) lengthRoot := merkle_tree.Uint64Root(uint64(v.l)) if v.l == 0 { diff --git a/cl/fork/fork.go b/cl/fork/fork.go index 94d6db9901d..7b2d4effd56 100644 --- a/cl/fork/fork.go +++ b/cl/fork/fork.go @@ -29,6 +29,9 @@ import ( "github.com/ledgerwatch/erigon/cl/utils" ) +var NO_GENESIS_TIME_ERR error = errors.New("genesis time is not set") +var NO_VALIDATOR_ROOT_HASH error = errors.New("genesis validators root is not set") + func ForkDigestVersion(digest [4]byte, b *clparams.BeaconChainConfig, genesisValidatorRoot libcommon.Hash) (clparams.StateVersion, error) { var ( phase0ForkDigest, altairForkDigest, bellatrixForkDigest, capellaForkDigest, denebForkDigest [4]byte @@ -93,10 +96,10 @@ func ComputeForkDigest( genesisConfig *clparams.GenesisConfig, ) ([4]byte, error) { if genesisConfig.GenesisTime == 0 { - return [4]byte{}, errors.New("genesis time is not set") + return [4]byte{}, NO_GENESIS_TIME_ERR } if genesisConfig.GenesisValidatorRoot == (libcommon.Hash{}) { - return [4]byte{}, errors.New("genesis validators root is not set") + return [4]byte{}, NO_VALIDATOR_ROOT_HASH } currentEpoch := utils.GetCurrentEpoch(genesisConfig.GenesisTime, beaconConfig.SecondsPerSlot, beaconConfig.SlotsPerEpoch) @@ -117,16 +120,17 @@ func ComputeNextForkDigest( genesisConfig *clparams.GenesisConfig, ) ([4]byte, error) { if genesisConfig.GenesisTime == 0 { - return [4]byte{}, errors.New("genesis time is not set") + return [4]byte{}, NO_GENESIS_TIME_ERR } if genesisConfig.GenesisValidatorRoot == (libcommon.Hash{}) { - return [4]byte{}, errors.New("genesis validators root is not set") + return [4]byte{}, NO_VALIDATOR_ROOT_HASH } currentEpoch := utils.GetCurrentEpoch(genesisConfig.GenesisTime, beaconConfig.SecondsPerSlot, beaconConfig.SlotsPerEpoch) // Retrieve next fork version. nextForkIndex := 0 forkList := forkList(beaconConfig.ForkVersionSchedule) + fmt.Println(forkList, beaconConfig.ForkVersionSchedule) for _, fork := range forkList { if currentEpoch >= fork.epoch { nextForkIndex++ @@ -139,7 +143,7 @@ func ComputeNextForkDigest( return [4]byte{}, nil } nextForkIndex++ - + fmt.Println(forkList[nextForkIndex].version) return ComputeForkDigestForVersion(forkList[nextForkIndex].version, genesisConfig.GenesisValidatorRoot) } diff --git a/cl/fork/fork_test.go b/cl/fork/fork_test.go index 9aaaf4e1de3..ad4b91716ce 100644 --- a/cl/fork/fork_test.go +++ b/cl/fork/fork_test.go @@ -16,11 +16,14 @@ package fork import ( "testing" + "github.com/ledgerwatch/erigon-lib/common" "github.com/ledgerwatch/erigon/cl/clparams" + "github.com/ledgerwatch/erigon/cl/utils" "github.com/stretchr/testify/require" ) -func TestMainnetFork(t *testing.T) { +// Testing Fork digest +func TestMainnetForkDigest(t *testing.T) { beaconCfg := clparams.BeaconConfigs[clparams.MainnetNetwork] genesisCfg := clparams.GenesisConfigs[clparams.MainnetNetwork] digest, err := ComputeForkDigest(&beaconCfg, &genesisCfg) @@ -29,3 +32,125 @@ func TestMainnetFork(t *testing.T) { require.NoError(t, err) require.Equal(t, [4]byte{0xbb, 0xa4, 0xda, 0x96}, digest) } + +func TestMainnetForkDigestWithNoGenesisTime(t *testing.T) { + beaconCfg := clparams.BeaconConfigs[clparams.MainnetNetwork] + genesisCfg := clparams.GenesisConfigs[clparams.MainnetNetwork] + genesisCfg.GenesisTime = 0 + _, err := ComputeForkDigest(&beaconCfg, &genesisCfg) + require.ErrorIs(t, err, NO_GENESIS_TIME_ERR) +} + +func TestMainnerForkDigestWithNoValidatorRootHash(t *testing.T) { + beaconCfg := clparams.BeaconConfigs[clparams.MainnetNetwork] + genesisCfg := clparams.GenesisConfigs[clparams.MainnetNetwork] + genesisCfg.GenesisValidatorRoot = common.Hash{} + _, err := ComputeForkDigest(&beaconCfg, &genesisCfg) + require.ErrorIs(t, err, NO_VALIDATOR_ROOT_HASH) +} + +func TestGoerliForkDigest(t *testing.T) { + beaconCfg := clparams.BeaconConfigs[clparams.GoerliNetwork] + genesisCfg := clparams.GenesisConfigs[clparams.GoerliNetwork] + digest, err := ComputeForkDigest(&beaconCfg, &genesisCfg) + require.NoError(t, err) + _, err = ComputeForkId(&beaconCfg, &genesisCfg) + require.NoError(t, err) + require.Equal(t, [4]uint8{0x62, 0x89, 0x41, 0xef}, digest) +} + +func TestSepoliaForkDigest(t *testing.T) { + beaconCfg := clparams.BeaconConfigs[clparams.SepoliaNetwork] + genesisCfg := clparams.GenesisConfigs[clparams.SepoliaNetwork] + digest, err := ComputeForkDigest(&beaconCfg, &genesisCfg) + require.NoError(t, err) + _, err = ComputeForkId(&beaconCfg, &genesisCfg) + require.NoError(t, err) + require.Equal(t, [4]uint8{0x47, 0xeb, 0x72, 0xb3}, digest) +} + +func TestGnosisForkDigest(t *testing.T) { + beaconCfg := clparams.BeaconConfigs[clparams.GnosisNetwork] + genesisCfg := clparams.GenesisConfigs[clparams.GnosisNetwork] + digest, err := ComputeForkDigest(&beaconCfg, &genesisCfg) + require.NoError(t, err) + _, err = ComputeForkId(&beaconCfg, &genesisCfg) + require.NoError(t, err) + require.Equal(t, [4]uint8{0x82, 0x4b, 0xe4, 0x31}, digest) +} + +// ForkDigestVersion +func TestMainnetForkDigestPhase0Version(t *testing.T) { + beaconCfg := clparams.BeaconConfigs[clparams.MainnetNetwork] + genesisCfg := clparams.GenesisConfigs[clparams.MainnetNetwork] + digest, err := ComputeForkDigestForVersion(utils.Uint32ToBytes4(beaconCfg.GenesisForkVersion), genesisCfg.GenesisValidatorRoot) + require.NoError(t, err) + version, err := ForkDigestVersion(digest, &beaconCfg, genesisCfg.GenesisValidatorRoot) + require.NoError(t, err) + require.Equal(t, clparams.Phase0Version, version) +} + +func TestMainnetForkDigestAltairVersion(t *testing.T) { + beaconCfg := clparams.BeaconConfigs[clparams.MainnetNetwork] + genesisCfg := clparams.GenesisConfigs[clparams.MainnetNetwork] + digest, err := ComputeForkDigestForVersion(utils.Uint32ToBytes4(beaconCfg.AltairForkVersion), genesisCfg.GenesisValidatorRoot) + require.NoError(t, err) + version, err := ForkDigestVersion(digest, &beaconCfg, genesisCfg.GenesisValidatorRoot) + require.NoError(t, err) + require.Equal(t, clparams.AltairVersion, version) +} + +func TestMainnetForkDigestBellatrixVersion(t *testing.T) { + beaconCfg := clparams.BeaconConfigs[clparams.MainnetNetwork] + genesisCfg := clparams.GenesisConfigs[clparams.MainnetNetwork] + digest, err := ComputeForkDigestForVersion(utils.Uint32ToBytes4(beaconCfg.BellatrixForkVersion), genesisCfg.GenesisValidatorRoot) + require.NoError(t, err) + version, err := ForkDigestVersion(digest, &beaconCfg, genesisCfg.GenesisValidatorRoot) + require.NoError(t, err) + require.Equal(t, clparams.BellatrixVersion, version) +} + +func TestMainnetForkDigestCapellaVersion(t *testing.T) { + beaconCfg := clparams.BeaconConfigs[clparams.MainnetNetwork] + genesisCfg := clparams.GenesisConfigs[clparams.MainnetNetwork] + digest, err := ComputeForkDigestForVersion(utils.Uint32ToBytes4(beaconCfg.CapellaForkVersion), genesisCfg.GenesisValidatorRoot) + require.NoError(t, err) + version, err := ForkDigestVersion(digest, &beaconCfg, genesisCfg.GenesisValidatorRoot) + require.NoError(t, err) + require.Equal(t, clparams.CapellaVersion, version) +} + +func TestMainnetForkDigestDenebVersion(t *testing.T) { + beaconCfg := clparams.BeaconConfigs[clparams.MainnetNetwork] + genesisCfg := clparams.GenesisConfigs[clparams.MainnetNetwork] + digest, err := ComputeForkDigestForVersion(utils.Uint32ToBytes4(beaconCfg.DenebForkVersion), genesisCfg.GenesisValidatorRoot) + require.NoError(t, err) + version, err := ForkDigestVersion(digest, &beaconCfg, genesisCfg.GenesisValidatorRoot) + require.NoError(t, err) + require.Equal(t, clparams.DenebVersion, version) +} + +// ComputeForkNextDigest +func TestMainnetComputeForkNextDigest(t *testing.T) { + beaconCfg := clparams.BeaconConfigs[clparams.MainnetNetwork] + genesisCfg := clparams.GenesisConfigs[clparams.MainnetNetwork] + beaconCfg.ForkVersionSchedule = make(map[[4]byte]uint64) + beaconCfg.ForkVersionSchedule[utils.Uint32ToBytes4(uint32(clparams.Phase0Version))] = 0 + beaconCfg.ForkVersionSchedule[utils.Uint32ToBytes4(uint32(clparams.BellatrixVersion))] = 210010230210301201 + digest, err := ComputeNextForkDigest(&beaconCfg, &genesisCfg) + require.NoError(t, err) + require.Equal(t, [4]uint8{0xe, 0x6, 0x3, 0x18}, digest) +} + +func TestMainnetComputeDomain(t *testing.T) { + domainType := [4]uint8{0x1, 0x0, 0x0, 0x0} + currentVersion := [4]uint8{0x3, 0x0, 0x0, 0x0} + genesesis := [32]uint8{0x4b, 0x36, 0x3d, 0xb9, 0x4e, 0x28, 0x61, 0x20, 0xd7, 0x6e, 0xb9, 0x5, 0x34, 0xf, 0xdd, 0x4e, 0x54, 0xbf, 0xe9, 0xf0, 0x6b, 0xf3, 0x3f, 0xf6, + 0xcf, 0x5a, 0xd2, 0x7f, 0x51, 0x1b, 0xfe, 0x95} + + expectedResult := []byte{0x1, 0x0, 0x0, 0x0, 0xbb, 0xa4, 0xda, 0x96, 0x35, 0x4c, 0x9f, 0x25, 0x47, 0x6c, 0xf1, 0xbc, 0x69, 0xbf, 0x58, 0x3a, 0x7f, 0x9e, 0xa, 0xf0, 0x49, 0x30, 0x5b, 0x62, 0xde, 0x67, 0x66, 0x40} + + result, err := ComputeDomain(domainType[:], currentVersion, genesesis) + require.NoError(t, err) + require.Equal(t, expectedResult, result) +} diff --git a/cl/freezer/.gitignore b/cl/freezer/.gitignore new file mode 100644 index 00000000000..007b73ee656 --- /dev/null +++ b/cl/freezer/.gitignore @@ -0,0 +1 @@ +test_output diff --git a/cl/freezer/freezer.go b/cl/freezer/freezer.go new file mode 100644 index 00000000000..a6793f93688 --- /dev/null +++ b/cl/freezer/freezer.go @@ -0,0 +1,16 @@ +package freezer + +import "io" + +type Freezer interface { + Getter + Putter +} + +type Getter interface { + Get(namespace, object, id string, extra ...string) (data io.ReadCloser, sidecar []byte, err error) +} + +type Putter interface { + Put(data io.Reader, sidecar []byte, namespace, object, id string, extra ...string) error +} diff --git a/cl/freezer/freezer_test.go b/cl/freezer/freezer_test.go new file mode 100644 index 00000000000..e5ca0637d5c --- /dev/null +++ b/cl/freezer/freezer_test.go @@ -0,0 +1,100 @@ +package freezer_test + +import ( + "os" + "path" + "strconv" + "sync/atomic" + "testing" + + "github.com/ledgerwatch/erigon/cl/freezer" + "github.com/stretchr/testify/assert" +) + +func runBlobStoreTest(t *testing.T, b *freezer.BlobStore) { + var err error + // put bad item into obj + err = b.Put(nil, "../../../test", "a", "b") + assert.ErrorIs(t, err, os.ErrInvalid) + // get bad item + _, err = b.Get("../../../test", "a", "b") + assert.ErrorIs(t, err, os.ErrInvalid) + // put item into obj + orig := []byte{1, 2, 3, 4} + err = b.Put(orig, "test", "a", "b") + assert.NoError(t, err) + + // get item from obj + ans, err := b.Get("test", "a", "b") + assert.NoError(t, err) + assert.EqualValues(t, orig, ans) + + ans, err = b.Get("test", "b", "a") + assert.ErrorIs(t, err, os.ErrNotExist) + assert.Nil(t, ans) +} + +func runSidecarBlobStoreTest(t *testing.T, b *freezer.SidecarBlobStore) { + var err error + // put bad item into obj + err = b.Put(nil, nil, "../../../test", "a", "b") + assert.ErrorIs(t, err, os.ErrInvalid) + // get bad item + _, _, err = b.Get("../../../test", "a", "b") + assert.ErrorIs(t, err, os.ErrInvalid) + + // put item into obj + orig := []byte{1, 2, 3, 4} + orig2 := []byte{5, 6, 7, 8} + err = b.Put(orig, orig2, "test", "a", "b") + assert.NoError(t, err) + + // get item from obj + ans, sidecar, err := b.Get("test", "a", "b") + assert.NoError(t, err) + assert.EqualValues(t, orig, ans) + assert.EqualValues(t, orig2, sidecar) + + ans, sidecar, err = b.Get("test", "b", "a") + assert.ErrorIs(t, err, os.ErrNotExist) + assert.Nil(t, ans) + assert.Nil(t, sidecar) + + // put item without sidecar + err = b.Put(orig2, nil, "test", "a", "c") + assert.NoError(t, err) + + // get item from obj + ans, sidecar, err = b.Get("test", "a", "c") + assert.NoError(t, err) + assert.EqualValues(t, orig2, ans) + assert.Nil(t, sidecar) +} + +func testFreezer(t *testing.T, fn func() (freezer.Freezer, func())) { + t.Run("BlobStore", func(t *testing.T) { + f, cn := fn() + defer cn() + runBlobStoreTest(t, freezer.NewBlobStore(f)) + }) + t.Run("SidecarBlobStore", func(t *testing.T) { + f, cn := fn() + defer cn() + runSidecarBlobStoreTest(t, freezer.NewSidecarBlobStore(f)) + }) +} + +func TestMemoryStore(t *testing.T) { + testFreezer(t, func() (freezer.Freezer, func()) { + return &freezer.InMemory{}, func() {} + }) +} + +func TestRootPathStore(t *testing.T) { + cnt := atomic.Uint64{} + c := func() (freezer.Freezer, func()) { + base := path.Join("test_output", strconv.Itoa(int(cnt.Load()))) + return &freezer.RootPathOsFs{base}, func() { os.RemoveAll(base) } + } + testFreezer(t, c) +} diff --git a/cl/freezer/fs_freezer.go b/cl/freezer/fs_freezer.go new file mode 100644 index 00000000000..017dee8ff8f --- /dev/null +++ b/cl/freezer/fs_freezer.go @@ -0,0 +1,65 @@ +package freezer + +import ( + "io" + "os" + "path" + "path/filepath" + "strings" +) + +const RootPathDataFile = "data.bin" +const RootPathSidecarFile = "sidecar.bin" + +type RootPathOsFs struct { + Root string +} + +func (f *RootPathOsFs) resolveFileName(namespace string, object string, id string, extra ...string) (string, error) { + root := filepath.Clean(f.Root) + j := filepath.Join(root, namespace, object, id) + if !strings.HasPrefix(j, root) { + return "", os.ErrInvalid + } + return j, nil +} + +func (f *RootPathOsFs) Get(namespace string, object string, id string, extra ...string) (data io.ReadCloser, sidecar []byte, err error) { + infoPath, err := f.resolveFileName(namespace, object, id) + if err != nil { + return nil, nil, err + } + fp, err := os.Open(path.Join(infoPath, RootPathDataFile)) + if err != nil { + return nil, nil, err + } + blob, err := os.ReadFile(path.Join(infoPath, RootPathSidecarFile)) + if err == nil { + sidecar = blob + } + return fp, sidecar, nil +} + +func (f *RootPathOsFs) Put(data io.Reader, sidecar []byte, namespace string, object string, id string, extra ...string) error { + infoPath, err := f.resolveFileName(namespace, object, id) + if err != nil { + return err + } + _ = os.MkdirAll(infoPath, 0o755) + fp, err := os.OpenFile(path.Join(infoPath, RootPathDataFile), os.O_TRUNC|os.O_CREATE|os.O_RDWR, 0o755) + if err != nil { + return err + } + defer fp.Close() + _, err = io.Copy(fp, data) + if err != nil { + return err + } + if sidecar != nil { + err = os.WriteFile(path.Join(infoPath, RootPathSidecarFile), sidecar, 0o600) + if err == nil { + return err + } + } + return nil +} diff --git a/cl/freezer/mem_freezer.go b/cl/freezer/mem_freezer.go new file mode 100644 index 00000000000..60521dd79a3 --- /dev/null +++ b/cl/freezer/mem_freezer.go @@ -0,0 +1,72 @@ +package freezer + +import ( + "bytes" + "io" + "io/fs" + "os" + "path" + "path/filepath" + "strings" + "sync" +) + +type InMemory struct { + blob sync.Map + + mu sync.RWMutex +} + +func (f *InMemory) save(name string, b io.Reader) { + buf := new(bytes.Buffer) + buf.ReadFrom(b) + f.blob.Store(name, buf) +} + +func (f *InMemory) get(name string) (*bytes.Buffer, error) { + val, ok := f.blob.Load(name) + if !ok { + return nil, fs.ErrNotExist + } + cast, ok := val.(*bytes.Buffer) + if !ok { + panic("incorrect item in sync map... this should never happen") + } + return cast, nil +} + +func (f *InMemory) resolveFileName(namespace string, object string, id string, extra ...string) (string, error) { + j := filepath.Join("inmem", namespace, object, id) + if !strings.HasPrefix(j, "inmem") { + return "", os.ErrInvalid + } + return j, nil +} + +func (f *InMemory) Get(namespace string, object string, id string, extra ...string) (data io.ReadCloser, sidecar []byte, err error) { + infoPath, err := f.resolveFileName(namespace, object, id) + if err != nil { + return nil, nil, err + } + fp, err := f.get(path.Join(infoPath, RootPathDataFile)) + if err != nil { + return nil, nil, err + } + blob, err := f.get(path.Join(infoPath, RootPathSidecarFile)) + if err == nil { + sidecar = blob.Bytes() + } + return io.NopCloser(fp), sidecar, nil +} + +func (f *InMemory) Put(data io.Reader, sidecar []byte, namespace string, object string, id string, extra ...string) error { + infoPath, err := f.resolveFileName(namespace, object, id) + if err != nil { + return err + } + f.save(path.Join(infoPath, RootPathDataFile), data) + if sidecar != nil { + f.save(path.Join(infoPath, RootPathSidecarFile), bytes.NewBuffer(sidecar)) + } + return nil +} diff --git a/cl/freezer/store.go b/cl/freezer/store.go new file mode 100644 index 00000000000..078142995d1 --- /dev/null +++ b/cl/freezer/store.go @@ -0,0 +1,53 @@ +package freezer + +import ( + "bytes" + "io" +) + +type BlobStore struct { + f Freezer +} + +func NewBlobStore(f Freezer) *BlobStore { + return &BlobStore{f: f} +} + +func (b *BlobStore) Get(namespace, object, id string) ([]byte, error) { + o, _, err := b.f.Get(namespace, object, id) + if err != nil { + return nil, err + } + defer o.Close() + return io.ReadAll(o) +} + +func (b *BlobStore) Put(dat []byte, namespace, object, id string) error { + return b.f.Put(bytes.NewBuffer(dat), nil, namespace, object, id) +} + +type SidecarBlobStore struct { + f Freezer +} + +func NewSidecarBlobStore(f Freezer) *SidecarBlobStore { + return &SidecarBlobStore{f: f} +} + +func (b *SidecarBlobStore) Get(namespace, object, id string) (blob []byte, sidecar []byte, err error) { + a, bb, err := b.f.Get(namespace, object, id) + if err != nil { + return nil, nil, err + } + defer a.Close() + sidecar = bb + blob, err = io.ReadAll(a) + if err != nil { + return + } + return +} + +func (b *SidecarBlobStore) Put(dat []byte, sidecar []byte, namespace, object, id string) error { + return b.f.Put(bytes.NewBuffer(dat), sidecar, namespace, object, id) +} diff --git a/cl/freezer/utils.go b/cl/freezer/utils.go new file mode 100644 index 00000000000..55be7d14a20 --- /dev/null +++ b/cl/freezer/utils.go @@ -0,0 +1,36 @@ +package freezer + +import ( + "bytes" + "fmt" + + "github.com/ledgerwatch/erigon-lib/types/ssz" + "github.com/ledgerwatch/erigon/cl/utils" +) + +type marshalerHashable interface { + ssz.Marshaler + ssz.HashableSSZ +} + +func PutObjectSSZIntoFreezer(objectName, freezerNamespace string, numericalId uint64, object marshalerHashable, record Freezer) error { + if record == nil { + return nil + } + var buffer bytes.Buffer + encoded, err := object.EncodeSSZ(nil) + if err != nil { + return err + } + if _, err = buffer.Write(utils.CompressSnappy(encoded)); err != nil { + return err + } + id := fmt.Sprintf("%d", numericalId) + // put the hash of the object as the sidecar. + h, err := object.HashSSZ() + if err != nil { + return err + } + + return record.Put(&buffer, h[:], freezerNamespace, objectName, id) +} diff --git a/cl/merkle_tree/hasher.go b/cl/merkle_tree/hasher.go index 9da8f1513a8..dafb4fbab2f 100644 --- a/cl/merkle_tree/hasher.go +++ b/cl/merkle_tree/hasher.go @@ -33,7 +33,7 @@ func (m *merkleHasher) merkleizeTrieLeavesFlat(leaves []byte, out []byte, limit m.mu.Lock() defer m.mu.Unlock() layer := m.getBufferFromFlat(leaves) - for i := uint8(0); i < getDepth(limit); i++ { + for i := uint8(0); i < GetDepth(limit); i++ { layerLen := len(layer) if layerLen%2 != 0 { layer = append(layer, ZeroHashes[i]) diff --git a/cl/merkle_tree/list.go b/cl/merkle_tree/list.go index 2361de539cc..791b6a2ab59 100644 --- a/cl/merkle_tree/list.go +++ b/cl/merkle_tree/list.go @@ -15,7 +15,7 @@ import ( // MerkleizeVector uses our optimized routine to hash a list of 32-byte // elements. func MerkleizeVector(elements [][32]byte, length uint64) ([32]byte, error) { - depth := getDepth(length) + depth := GetDepth(length) // Return zerohash at depth if len(elements) == 0 { return ZeroHashes[depth], nil @@ -40,7 +40,7 @@ func MerkleizeVector(elements [][32]byte, length uint64) ([32]byte, error) { func MerkleizeVectorFlat(in []byte, limit uint64) ([32]byte, error) { elements := make([]byte, len(in)) copy(elements, in) - for i := uint8(0); i < getDepth(limit); i++ { + for i := uint8(0); i < GetDepth(limit); i++ { // Sequential layerLen := len(elements) if layerLen%64 == 32 { diff --git a/cl/merkle_tree/merkle_root_test.go b/cl/merkle_tree/merkle_root_test.go index 6093675eb31..c56ea8895bc 100644 --- a/cl/merkle_tree/merkle_root_test.go +++ b/cl/merkle_tree/merkle_root_test.go @@ -20,7 +20,7 @@ func TestHashTreeRoot(t *testing.T) { require.NoError(t, utils.DecodeSSZSnappy(bs, beaconState, int(clparams.DenebVersion))) root, err := bs.HashSSZ() require.NoError(t, err) - require.Equal(t, common.Hash(root), common.HexToHash("0x7d085d9f2cce04eefb4c0aafad744fd2ce4ff962b2c3589fda53aab084171406")) + require.Equal(t, common.Hash(root), common.HexToHash("0x9f684cf34c4ac8eb9056051f93498c552b59de6b0977c453ee099be68e58d90c")) } func TestHashTreeRootTxs(t *testing.T) { diff --git a/cl/merkle_tree/utils.go b/cl/merkle_tree/utils.go index e41eaf7fe54..352729fceac 100644 --- a/cl/merkle_tree/utils.go +++ b/cl/merkle_tree/utils.go @@ -17,11 +17,11 @@ func NextPowerOfTwo(n uint64) uint64 { return n } -// getDepth returns the depth of a merkle tree with a given number of nodes. +// GetDepth returns the depth of a merkle tree with a given number of nodes. // The depth is defined as the number of levels in the tree, with the root // node at level 0 and each child node at a level one greater than its parent. // If the number of nodes is less than or equal to 1, the depth is 0. -func getDepth(v uint64) uint8 { +func GetDepth(v uint64) uint8 { // If there are 0 or 1 nodes, the depth is 0. if v <= 1 { return 0 diff --git a/cl/phase1/cache/attestation_indicies_cache.go b/cl/phase1/cache/attestation_indicies_cache.go index 564fc7a8931..36c3b83e366 100644 --- a/cl/phase1/cache/attestation_indicies_cache.go +++ b/cl/phase1/cache/attestation_indicies_cache.go @@ -1,18 +1,30 @@ package cache import ( + "github.com/ledgerwatch/erigon-lib/common" "github.com/ledgerwatch/erigon/cl/cltypes/solid" "github.com/ledgerwatch/erigon/cl/phase1/core/state/lru" + "github.com/ledgerwatch/erigon/cl/utils" ) -var attestationIndiciesCache *lru.Cache[*solid.AttestationData, []uint64] +var attestationIndiciesCache *lru.Cache[common.Hash, []uint64] const attestationIndiciesCacheSize = 256 -func LoadAttestatingIndicies(attestation *solid.AttestationData) ([]uint64, bool) { - return attestationIndiciesCache.Get(attestation) +func LoadAttestatingIndicies(attestation *solid.AttestationData, aggregationBits []byte) ([]uint64, bool) { + bitsHash := utils.Keccak256(aggregationBits) + hash, err := attestation.HashSSZ() + if err != nil { + return nil, false + } + return attestationIndiciesCache.Get(utils.Keccak256(hash[:], bitsHash[:])) } -func StoreAttestation(attestation *solid.AttestationData, indicies []uint64) { - attestationIndiciesCache.Add(attestation, indicies) +func StoreAttestation(attestation *solid.AttestationData, aggregationBits []byte, indicies []uint64) { + bitsHash := utils.Keccak256(aggregationBits) + hash, err := attestation.HashSSZ() + if err != nil { + return + } + attestationIndiciesCache.Add(utils.Keccak256(hash[:], bitsHash[:]), indicies) } diff --git a/cl/phase1/cache/cache_test.go b/cl/phase1/cache/cache_test.go index 7f0010d7cf9..bedade366bb 100644 --- a/cl/phase1/cache/cache_test.go +++ b/cl/phase1/cache/cache_test.go @@ -10,9 +10,9 @@ import ( func TestAttestationsCache(t *testing.T) { input := []uint64{1} - a := &solid.AttestationData{} - cache.StoreAttestation(a, []uint64{1}) - output, valid := cache.LoadAttestatingIndicies(a) + a := solid.NewAttestationData() + cache.StoreAttestation(&a, []byte{2}, []uint64{1}) + output, valid := cache.LoadAttestatingIndicies(&a, []byte{2}) require.True(t, valid) require.Equal(t, input, output) } diff --git a/cl/phase1/cache/init.go b/cl/phase1/cache/init.go index f1675de1ab7..1f349b2b402 100644 --- a/cl/phase1/cache/init.go +++ b/cl/phase1/cache/init.go @@ -1,13 +1,13 @@ package cache import ( - "github.com/ledgerwatch/erigon/cl/cltypes/solid" + "github.com/ledgerwatch/erigon-lib/common" "github.com/ledgerwatch/erigon/cl/phase1/core/state/lru" ) func init() { var err error - if attestationIndiciesCache, err = lru.New[*solid.AttestationData, []uint64]("attestationIndiciesCacheSize", attestationIndiciesCacheSize); err != nil { + if attestationIndiciesCache, err = lru.New[common.Hash, []uint64]("attestationIndiciesCacheSize", attestationIndiciesCacheSize); err != nil { panic(err) } } diff --git a/cl/phase1/core/rawdb/accessors_test.go b/cl/phase1/core/rawdb/accessors_test.go index 8cb4784743b..3478e0f7bf5 100644 --- a/cl/phase1/core/rawdb/accessors_test.go +++ b/cl/phase1/core/rawdb/accessors_test.go @@ -6,6 +6,7 @@ import ( "github.com/ledgerwatch/erigon/cl/clparams" "github.com/ledgerwatch/erigon/cl/phase1/core/rawdb" + libcommon "github.com/ledgerwatch/erigon-lib/common" "github.com/ledgerwatch/erigon-lib/kv/memdb" "github.com/ledgerwatch/erigon/cl/cltypes" "github.com/stretchr/testify/require" @@ -29,3 +30,17 @@ func TestBeaconBlock(t *testing.T) { require.Equal(t, root, newRoot) } + +func TestFinalizedBlockRoot(t *testing.T) { + _, tx := memdb.NewTestTx(t) + signedBeaconBlock := new(cltypes.SignedBeaconBlock) + require.NoError(t, signedBeaconBlock.DecodeSSZ(rawdb.SSZTestBeaconBlock, int(clparams.BellatrixVersion))) + + root, err := signedBeaconBlock.Block.HashSSZ() + require.NoError(t, err) + + require.NoError(t, rawdb.WriteFinalizedBlockRoot(tx, signedBeaconBlock.Block.Slot, root)) + newRoot, err := rawdb.ReadFinalizedBlockRoot(tx, signedBeaconBlock.Block.Slot) + require.NoError(t, err) + require.Equal(t, libcommon.BytesToHash(root[:]), newRoot) +} diff --git a/cl/phase1/core/rawdb/config_test.go b/cl/phase1/core/rawdb/config_test.go new file mode 100644 index 00000000000..53b733d2e10 --- /dev/null +++ b/cl/phase1/core/rawdb/config_test.go @@ -0,0 +1,19 @@ +package rawdb_test + +import ( + "testing" + + "github.com/ledgerwatch/erigon-lib/kv/memdb" + "github.com/ledgerwatch/erigon/cl/phase1/core/rawdb" + "github.com/stretchr/testify/require" +) + +func TestBeaconDataConfig(t *testing.T) { + _, tx := memdb.NewTestTx(t) + cfg := new(rawdb.BeaconDataConfig) + require.NoError(t, rawdb.WriteBeaconDataConfig(tx, cfg)) + + newCfg, err := rawdb.ReadBeaconDataConfig(tx) + require.NoError(t, err) + require.Equal(t, cfg, newCfg) +} diff --git a/cl/phase1/core/state/accessors.go b/cl/phase1/core/state/accessors.go index 7fbe51a6263..db7296ae13d 100644 --- a/cl/phase1/core/state/accessors.go +++ b/cl/phase1/core/state/accessors.go @@ -111,14 +111,14 @@ func IsValidIndexedAttestation(b *raw.BeaconState, att *cltypes.IndexedAttestati return false, fmt.Errorf("isValidIndexedAttestation: attesting indices are not sorted or are null") } - pks := [][]byte{} + pks := make([][]byte, 0, inds.Length()) if err := solid.RangeErr[uint64](inds, func(_ int, v uint64, _ int) error { val, err := b.ValidatorForValidatorIndex(int(v)) if err != nil { return err } - pk := val.PublicKey() - pks = append(pks, pk[:]) + pk := val.PublicKeyBytes() + pks = append(pks, pk) return nil }); err != nil { return false, err diff --git a/cl/phase1/core/state/cache_accessors.go b/cl/phase1/core/state/cache_accessors.go index 552c6f2a166..06da54a180f 100644 --- a/cl/phase1/core/state/cache_accessors.go +++ b/cl/phase1/core/state/cache_accessors.go @@ -244,7 +244,7 @@ func (b *BeaconState) ComputeNextSyncCommittee() (*solid.SyncCommittee, error) { // GetAttestingIndicies retrieves attesting indicies for a specific attestation. however some tests will not expect the aggregation bits check. // thus, it is a flag now. func (b *BeaconState) GetAttestingIndicies(attestation solid.AttestationData, aggregationBits []byte, checkBitsLength bool) ([]uint64, error) { - if cached, ok := cache.LoadAttestatingIndicies(&attestation); ok { + if cached, ok := cache.LoadAttestatingIndicies(&attestation, aggregationBits); ok { return cached, nil } committee, err := b.GetBeaconCommitee(attestation.Slot(), attestation.ValidatorIndex()) @@ -267,7 +267,7 @@ func (b *BeaconState) GetAttestingIndicies(attestation solid.AttestationData, ag attestingIndices = append(attestingIndices, member) } } - cache.StoreAttestation(&attestation, attestingIndices) + cache.StoreAttestation(&attestation, aggregationBits, attestingIndices) return attestingIndices, nil } diff --git a/cl/phase1/core/state/raw/misc_test.go b/cl/phase1/core/state/raw/misc_test.go index a97016580bb..8ad541891df 100644 --- a/cl/phase1/core/state/raw/misc_test.go +++ b/cl/phase1/core/state/raw/misc_test.go @@ -20,12 +20,12 @@ func TestGetters(t *testing.T) { root, err := state.BlockRoot() require.NoError(t, err) - require.Equal(t, common.Hash(root), common.HexToHash("0xa33e9a962fe153b2ed0174d30d5c657b9eaca2fba666df40e31ce8cf1a988961")) + require.Equal(t, common.Hash(root), common.HexToHash("0x9f1620db18ee06b9cbdf1b7fa9658701063d2bd05d54b09780f6c0a074b4ce5f")) copied, err := state.Copy() require.NoError(t, err) root, err = copied.BlockRoot() require.NoError(t, err) - require.Equal(t, common.Hash(root), common.HexToHash("0xa33e9a962fe153b2ed0174d30d5c657b9eaca2fba666df40e31ce8cf1a988961")) + require.Equal(t, common.Hash(root), common.HexToHash("0x9f1620db18ee06b9cbdf1b7fa9658701063d2bd05d54b09780f6c0a074b4ce5f")) } diff --git a/cl/phase1/core/state/raw/setters.go b/cl/phase1/core/state/raw/setters.go index 566fb3ba050..8753b816948 100644 --- a/cl/phase1/core/state/raw/setters.go +++ b/cl/phase1/core/state/raw/setters.go @@ -5,7 +5,6 @@ import ( "github.com/ledgerwatch/erigon/cl/clparams" "github.com/ledgerwatch/erigon/cl/cltypes" "github.com/ledgerwatch/erigon/cl/cltypes/solid" - "github.com/ledgerwatch/erigon/cl/phase1/core/state/state_encoding" ) func (b *BeaconState) SetVersion(version clparams.StateVersion) { @@ -215,7 +214,7 @@ func (b *BeaconState) SetValidatorAtIndex(index int, validator solid.Validator) func (b *BeaconState) ResetEpochParticipation() { b.previousEpochParticipation = b.currentEpochParticipation - b.currentEpochParticipation = solid.NewBitList(b.validators.Length(), state_encoding.ValidatorRegistryLimit) + b.currentEpochParticipation = solid.NewBitList(b.validators.Length(), int(b.beaconConfig.ValidatorRegistryLimit)) b.markLeaf(CurrentEpochParticipationLeafIndex) b.markLeaf(PreviousEpochParticipationLeafIndex) } diff --git a/cl/phase1/core/state/shuffling/shuffling.go b/cl/phase1/core/state/shuffling/shuffling.go index 2c102431183..4bec3242a4b 100644 --- a/cl/phase1/core/state/shuffling/shuffling.go +++ b/cl/phase1/core/state/shuffling/shuffling.go @@ -3,6 +3,7 @@ package shuffling import ( "encoding/binary" "fmt" + "github.com/ledgerwatch/erigon/cl/phase1/core/state/raw" "github.com/ledgerwatch/erigon/cl/utils" diff --git a/cl/phase1/core/state/state_encoding/encoding.go b/cl/phase1/core/state/state_encoding/encoding.go deleted file mode 100644 index 162a06c34f0..00000000000 --- a/cl/phase1/core/state/state_encoding/encoding.go +++ /dev/null @@ -1,11 +0,0 @@ -package state_encoding - -const ( - BlockRootsLength = 8192 - StateRootsLength = 8192 - HistoricalRootsLength = 16777216 - Eth1DataVotesRootsLimit = 2048 - ValidatorRegistryLimit = 1099511627776 - RandaoMixesLength = 65536 - SlashingsLength = 8192 -) diff --git a/cl/phase1/core/transition/block_processing_test.go b/cl/phase1/core/transition/block_processing_test.go deleted file mode 100644 index 8c58816f8d2..00000000000 --- a/cl/phase1/core/transition/block_processing_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package transition - -import ( - _ "embed" - "testing" - - "github.com/ledgerwatch/erigon/cl/clparams" - "github.com/ledgerwatch/erigon/cl/cltypes" - "github.com/ledgerwatch/erigon/cl/phase1/core/state" - "github.com/ledgerwatch/erigon/cl/utils" - "github.com/stretchr/testify/require" -) - -//go:embed test_data/block_processing/deneb_state.ssz_snappy -var denebState []byte - -//go:embed test_data/block_processing/deneb_block.ssz_snappy -var denebBlock []byte - -func TestBlockProcessingDeneb(t *testing.T) { - state := state.New(&clparams.MainnetBeaconConfig) - require.NoError(t, utils.DecodeSSZSnappy(state, denebState, int(clparams.DenebVersion))) - block := &cltypes.SignedBeaconBlock{} - require.NoError(t, utils.DecodeSSZSnappy(block, denebBlock, int(clparams.DenebVersion))) - require.NoError(t, TransitionState(state, block, true)) // All checks already made in transition state -} diff --git a/cl/phase1/core/transition/block_transition.go b/cl/phase1/core/transition/block_transition.go deleted file mode 100644 index 400f27128b6..00000000000 --- a/cl/phase1/core/transition/block_transition.go +++ /dev/null @@ -1,211 +0,0 @@ -package transition - -import ( - "errors" - "fmt" - - "github.com/ledgerwatch/erigon/cl/cltypes/solid" - state2 "github.com/ledgerwatch/erigon/cl/phase1/core/state" - - libcommon "github.com/ledgerwatch/erigon-lib/common" - "github.com/ledgerwatch/erigon/cl/clparams" - "github.com/ledgerwatch/erigon/cl/cltypes" - "github.com/ledgerwatch/erigon/metrics/methelp" -) - -// processBlock takes a block and transitions the state to the next slot, using the provided execution payload if enabled. -func processBlock(state *state2.BeaconState, signedBlock *cltypes.SignedBeaconBlock, fullValidation bool) error { - block := signedBlock.Block - version := state.Version() - // Check the state version is correct. - if signedBlock.Version() != version { - return fmt.Errorf("processBlock: wrong state version for block at slot %d", block.Slot) - } - - h := methelp.NewHistTimer("beacon_process_block") - - c := h.Tag("process_step", "block_header") - // Process the block header. - if err := ProcessBlockHeader(state, block, fullValidation); err != nil { - return fmt.Errorf("processBlock: failed to process block header: %v", err) - } - c.PutSince() - - // Process execution payload if enabled. - if version >= clparams.BellatrixVersion && executionEnabled(state, block.Body.ExecutionPayload) { - if state.Version() >= clparams.CapellaVersion { - // Process withdrawals in the execution payload. - c = h.Tag("process_step", "withdrawals") - if err := ProcessWithdrawals(state, block.Body.ExecutionPayload.Withdrawals, fullValidation); err != nil { - return fmt.Errorf("processBlock: failed to process withdrawals: %v", err) - } - c.PutSince() - } - - // Process the execution payload. - c = h.Tag("process_step", "execution_payload") - if err := ProcessExecutionPayload(state, block.Body.ExecutionPayload); err != nil { - return fmt.Errorf("processBlock: failed to process execution payload: %v", err) - } - c.PutSince() - } - - // Process RANDAO reveal. - c = h.Tag("process_step", "randao_reveal") - if err := ProcessRandao(state, block.Body.RandaoReveal, block.ProposerIndex, fullValidation); err != nil { - return fmt.Errorf("processBlock: failed to process RANDAO reveal: %v", err) - } - c.PutSince() - - // Process Eth1 data. - c = h.Tag("process_step", "eth1_data") - if err := ProcessEth1Data(state, block.Body.Eth1Data); err != nil { - return fmt.Errorf("processBlock: failed to process Eth1 data: %v", err) - } - c.PutSince() - - // Process block body operations. - c = h.Tag("process_step", "operations") - if err := processOperations(state, block.Body, fullValidation); err != nil { - return fmt.Errorf("processBlock: failed to process block body operations: %v", err) - } - c.PutSince() - - // Process sync aggregate in case of Altair version. - if version >= clparams.AltairVersion { - c = h.Tag("process_step", "sync_aggregate") - if err := ProcessSyncAggregate(state, block.Body.SyncAggregate, fullValidation); err != nil { - return fmt.Errorf("processBlock: failed to process sync aggregate: %v", err) - } - c.PutSince() - } - - if version >= clparams.DenebVersion && fullValidation { - c = h.Tag("process_step", "blob_kzg_commitments") - verified, err := VerifyKzgCommitmentsAgainstTransactions(block.Body.ExecutionPayload.Transactions, block.Body.BlobKzgCommitments) - if err != nil { - return fmt.Errorf("processBlock: failed to process blob kzg commitments: %w", err) - } - if !verified { - return fmt.Errorf("processBlock: failed to process blob kzg commitments: commitments are not equal") - } - c.PutSince() - } - - h.PutSince() - return nil -} - -func processOperations(state *state2.BeaconState, blockBody *cltypes.BeaconBody, fullValidation bool) error { - if blockBody.Deposits.Len() != int(maximumDeposits(state)) { - return errors.New("outstanding deposits do not match maximum deposits") - } - h := methelp.NewHistTimer("beacon_process_block_operations") - - // Process each proposer slashing - var err error - c := h.Tag("operation", "proposer_slashings") - if err := solid.RangeErr[*cltypes.ProposerSlashing](blockBody.ProposerSlashings, func(index int, slashing *cltypes.ProposerSlashing, length int) error { - if err = ProcessProposerSlashing(state, slashing); err != nil { - return fmt.Errorf("ProcessProposerSlashing: %s", err) - } - return nil - }); err != nil { - return err - } - c.PutSince() - - c = h.Tag("operation", "attester_slashings") - if err := solid.RangeErr[*cltypes.AttesterSlashing](blockBody.AttesterSlashings, func(index int, slashing *cltypes.AttesterSlashing, length int) error { - if err = ProcessAttesterSlashing(state, slashing); err != nil { - return fmt.Errorf("ProcessAttesterSlashing: %s", err) - } - return nil - }); err != nil { - return err - } - - c.PutSince() - - // Process each attestations - c = h.Tag("operation", "attestations", "validation", "false") - if fullValidation { - c = h.Tag("operation", "attestations", "validation", "true") - } - if err := ProcessAttestations(state, blockBody.Attestations, fullValidation); err != nil { - return fmt.Errorf("ProcessAttestation: %s", err) - } - c.PutSince() - - // Process each deposit - c = h.Tag("operation", "deposit") - if err := solid.RangeErr[*cltypes.Deposit](blockBody.Deposits, func(index int, deposit *cltypes.Deposit, length int) error { - if err = ProcessDeposit(state, deposit, fullValidation); err != nil { - return fmt.Errorf("ProcessDeposit: %s", err) - } - return nil - }); err != nil { - return err - } - c.PutSince() - - // Process each voluntary exit. - c = h.Tag("operation", "voluntary_exit") - if err := solid.RangeErr[*cltypes.SignedVoluntaryExit](blockBody.VoluntaryExits, func(index int, exit *cltypes.SignedVoluntaryExit, length int) error { - if err = ProcessVoluntaryExit(state, exit, fullValidation); err != nil { - return fmt.Errorf("ProcessVoluntaryExit: %s", err) - } - return nil - }); err != nil { - return err - } - c.PutSince() - if state.Version() < clparams.CapellaVersion { - return nil - } - // Process each execution change. this will only have entries after the capella fork. - c = h.Tag("operation", "execution_change") - if err := solid.RangeErr[*cltypes.SignedBLSToExecutionChange](blockBody.ExecutionChanges, func(index int, addressChange *cltypes.SignedBLSToExecutionChange, length int) error { - if err := ProcessBlsToExecutionChange(state, addressChange, fullValidation); err != nil { - return fmt.Errorf("ProcessBlsToExecutionChange: %s", err) - } - return nil - }); err != nil { - return err - } - c.PutSince() - return nil -} - -func maximumDeposits(state *state2.BeaconState) (maxDeposits uint64) { - maxDeposits = state.Eth1Data().DepositCount - state.Eth1DepositIndex() - if maxDeposits > state.BeaconConfig().MaxDeposits { - maxDeposits = state.BeaconConfig().MaxDeposits - } - return -} - -// ProcessExecutionPayload sets the latest payload header accordinly. -func ProcessExecutionPayload(s *state2.BeaconState, payload *cltypes.Eth1Block) error { - if state2.IsMergeTransitionComplete(s.BeaconState) { - if payload.ParentHash != s.LatestExecutionPayloadHeader().BlockHash { - return fmt.Errorf("ProcessExecutionPayload: invalid eth1 chain. mismatching parent") - } - } - if payload.PrevRandao != s.GetRandaoMixes(state2.Epoch(s.BeaconState)) { - return fmt.Errorf("ProcessExecutionPayload: randao mix mismatches with mix digest") - } - if payload.Time != state2.ComputeTimestampAtSlot(s.BeaconState, s.Slot()) { - return fmt.Errorf("ProcessExecutionPayload: invalid Eth1 timestamp") - } - payloadHeader, err := payload.PayloadHeader() - if err != nil { - return err - } - s.SetLatestExecutionPayloadHeader(payloadHeader) - return nil -} - -func executionEnabled(s *state2.BeaconState, payload *cltypes.Eth1Block) bool { - return (!state2.IsMergeTransitionComplete(s.BeaconState) && payload.BlockHash != libcommon.Hash{}) || state2.IsMergeTransitionComplete(s.BeaconState) -} diff --git a/cl/phase1/core/transition/operations.go b/cl/phase1/core/transition/operations.go deleted file mode 100644 index c79d0546670..00000000000 --- a/cl/phase1/core/transition/operations.go +++ /dev/null @@ -1,281 +0,0 @@ -package transition - -import ( - "errors" - "fmt" - - "github.com/ledgerwatch/erigon-lib/common" - "github.com/ledgerwatch/erigon/cl/cltypes/solid" - state2 "github.com/ledgerwatch/erigon/cl/phase1/core/state" - - "github.com/Giulio2002/bls" - "github.com/ledgerwatch/log/v3" - - "github.com/ledgerwatch/erigon/cl/clparams" - "github.com/ledgerwatch/erigon/cl/cltypes" - "github.com/ledgerwatch/erigon/cl/fork" - "github.com/ledgerwatch/erigon/cl/utils" - "github.com/ledgerwatch/erigon/core/types" -) - -func ProcessProposerSlashing(s *state2.BeaconState, propSlashing *cltypes.ProposerSlashing) error { - h1 := propSlashing.Header1.Header - h2 := propSlashing.Header2.Header - - if h1.Slot != h2.Slot { - return fmt.Errorf("non-matching slots on proposer slashing: %d != %d", h1.Slot, h2.Slot) - } - - if h1.ProposerIndex != h2.ProposerIndex { - return fmt.Errorf("non-matching proposer indices proposer slashing: %d != %d", h1.ProposerIndex, h2.ProposerIndex) - } - - h1Root, err := h1.HashSSZ() - if err != nil { - return fmt.Errorf("unable to hash header1: %v", err) - } - h2Root, err := h2.HashSSZ() - if err != nil { - return fmt.Errorf("unable to hash header2: %v", err) - } - if h1Root == h2Root { - return fmt.Errorf("propose slashing headers are the same: %v == %v", h1Root, h2Root) - } - - proposer, err := s.ValidatorForValidatorIndex(int(h1.ProposerIndex)) - if err != nil { - return err - } - if !proposer.IsSlashable(state2.Epoch(s.BeaconState)) { - return fmt.Errorf("proposer is not slashable: %v", proposer) - } - - for _, signedHeader := range []*cltypes.SignedBeaconBlockHeader{propSlashing.Header1, propSlashing.Header2} { - domain, err := s.GetDomain(s.BeaconConfig().DomainBeaconProposer, state2.GetEpochAtSlot(s.BeaconConfig(), signedHeader.Header.Slot)) - if err != nil { - return fmt.Errorf("unable to get domain: %v", err) - } - signingRoot, err := fork.ComputeSigningRoot(signedHeader.Header, domain) - if err != nil { - return fmt.Errorf("unable to compute signing root: %v", err) - } - pk := proposer.PublicKey() - valid, err := bls.Verify(signedHeader.Signature[:], signingRoot[:], pk[:]) - if err != nil { - return fmt.Errorf("unable to verify signature: %v", err) - } - if !valid { - return fmt.Errorf("invalid signature: signature %v, root %v, pubkey %v", signedHeader.Signature[:], signingRoot[:], pk) - } - } - - // Set whistleblower index to 0 so current proposer gets reward. - s.SlashValidator(h1.ProposerIndex, nil) - return nil -} - -func ProcessAttesterSlashing(s *state2.BeaconState, attSlashing *cltypes.AttesterSlashing) error { - att1 := attSlashing.Attestation_1 - att2 := attSlashing.Attestation_2 - - if !cltypes.IsSlashableAttestationData(att1.Data, att2.Data) { - return fmt.Errorf("attestation data not slashable: %+v; %+v", att1.Data, att2.Data) - } - - valid, err := state2.IsValidIndexedAttestation(s.BeaconState, att1) - if err != nil { - return fmt.Errorf("error calculating indexed attestation 1 validity: %v", err) - } - if !valid { - return fmt.Errorf("invalid indexed attestation 1") - } - - valid, err = state2.IsValidIndexedAttestation(s.BeaconState, att2) - if err != nil { - return fmt.Errorf("error calculating indexed attestation 2 validity: %v", err) - } - if !valid { - return fmt.Errorf("invalid indexed attestation 2") - } - - slashedAny := false - currentEpoch := state2.GetEpochAtSlot(s.BeaconConfig(), s.Slot()) - for _, ind := range solid.IntersectionOfSortedSets(att1.AttestingIndices, att2.AttestingIndices) { - validator, err := s.ValidatorForValidatorIndex(int(ind)) - if err != nil { - return err - } - if validator.IsSlashable(currentEpoch) { - err := s.SlashValidator(ind, nil) - if err != nil { - return fmt.Errorf("unable to slash validator: %d", ind) - } - slashedAny = true - } - } - - if !slashedAny { - return fmt.Errorf("no validators slashed") - } - return nil -} - -func ProcessDeposit(s *state2.BeaconState, deposit *cltypes.Deposit, fullValidation bool) error { - if deposit == nil { - return nil - } - depositLeaf, err := deposit.Data.HashSSZ() - if err != nil { - return err - } - depositIndex := s.Eth1DepositIndex() - eth1Data := s.Eth1Data() - rawProof := []common.Hash{} - deposit.Proof.Range(func(_ int, l common.Hash, _ int) bool { - rawProof = append(rawProof, l) - return true - }) - // Validate merkle proof for deposit leaf. - if fullValidation && !utils.IsValidMerkleBranch( - depositLeaf, - rawProof, - s.BeaconConfig().DepositContractTreeDepth+1, - depositIndex, - eth1Data.Root, - ) { - return fmt.Errorf("processDepositForAltair: Could not validate deposit root") - } - - // Increment index - s.SetEth1DepositIndex(depositIndex + 1) - publicKey := deposit.Data.PubKey - amount := deposit.Data.Amount - // Check if pub key is in validator set - validatorIndex, has := s.ValidatorIndexByPubkey(publicKey) - if !has { - // Agnostic domain. - domain, err := fork.ComputeDomain(s.BeaconConfig().DomainDeposit[:], utils.Uint32ToBytes4(s.BeaconConfig().GenesisForkVersion), [32]byte{}) - if err != nil { - return err - } - depositMessageRoot, err := deposit.Data.MessageHash() - if err != nil { - return err - } - signedRoot := utils.Keccak256(depositMessageRoot[:], domain) - // Perform BLS verification and if successful noice. - valid, err := bls.Verify(deposit.Data.Signature[:], signedRoot[:], publicKey[:]) - // Literally you can input it trash. - if !valid || err != nil { - log.Debug("Validator BLS verification failed", "valid", valid, "err", err) - return nil - } - // Append validator - s.AddValidator(state2.ValidatorFromDeposit(s.BeaconConfig(), deposit), amount) - // Altair forward - if s.Version() >= clparams.AltairVersion { - s.AddCurrentEpochParticipationFlags(cltypes.ParticipationFlags(0)) - s.AddPreviousEpochParticipationFlags(cltypes.ParticipationFlags(0)) - s.AddInactivityScore(0) - } - return nil - } - // Increase the balance if exists already - return state2.IncreaseBalance(s.BeaconState, validatorIndex, amount) -} - -// ProcessVoluntaryExit takes a voluntary exit and applies state transition. -func ProcessVoluntaryExit(s *state2.BeaconState, signedVoluntaryExit *cltypes.SignedVoluntaryExit, fullValidation bool) error { - // Sanity checks so that we know it is good. - voluntaryExit := signedVoluntaryExit.VolunaryExit - currentEpoch := state2.Epoch(s.BeaconState) - validator, err := s.ValidatorForValidatorIndex(int(voluntaryExit.ValidatorIndex)) - if err != nil { - return err - } - if !validator.Active(currentEpoch) { - return errors.New("ProcessVoluntaryExit: validator is not active") - } - if validator.ExitEpoch() != s.BeaconConfig().FarFutureEpoch { - return errors.New("ProcessVoluntaryExit: another exit for the same validator is already getting processed") - } - if currentEpoch < voluntaryExit.Epoch { - return errors.New("ProcessVoluntaryExit: exit is happening in the future") - } - if currentEpoch < validator.ActivationEpoch()+s.BeaconConfig().ShardCommitteePeriod { - return errors.New("ProcessVoluntaryExit: exit is happening too fast") - } - - // We can skip it in some instances if we want to optimistically sync up. - if fullValidation { - domain, err := s.GetDomain(s.BeaconConfig().DomainVoluntaryExit, voluntaryExit.Epoch) - if err != nil { - return err - } - signingRoot, err := fork.ComputeSigningRoot(voluntaryExit, domain) - if err != nil { - return err - } - pk := validator.PublicKey() - valid, err := bls.Verify(signedVoluntaryExit.Signature[:], signingRoot[:], pk[:]) - if err != nil { - return err - } - if !valid { - return errors.New("ProcessVoluntaryExit: BLS verification failed") - } - } - // Do the exit (same process in slashing). - return s.InitiateValidatorExit(voluntaryExit.ValidatorIndex) -} - -// ProcessWithdrawals processes withdrawals by decreasing the balance of each validator -// and updating the next withdrawal index and validator index. -func ProcessWithdrawals(s *state2.BeaconState, withdrawals *solid.ListSSZ[*types.Withdrawal], fullValidation bool) error { - // Get the list of withdrawals, the expected withdrawals (if performing full validation), - // and the beacon configuration. - beaconConfig := s.BeaconConfig() - numValidators := uint64(s.ValidatorLength()) - - // Check if full validation is required and verify expected withdrawals. - if fullValidation { - expectedWithdrawals := state2.ExpectedWithdrawals(s.BeaconState) - if len(expectedWithdrawals) != withdrawals.Len() { - return fmt.Errorf("ProcessWithdrawals: expected %d withdrawals, but got %d", len(expectedWithdrawals), withdrawals.Len()) - } - if err := solid.RangeErr[*types.Withdrawal](withdrawals, func(i int, w *types.Withdrawal, _ int) error { - if !expectedWithdrawals[i].Equal(w) { - return fmt.Errorf("ProcessWithdrawals: withdrawal %d does not match expected withdrawal", i) - } - return nil - }); err != nil { - return err - } - } - - if err := solid.RangeErr[*types.Withdrawal](withdrawals, func(_ int, w *types.Withdrawal, _ int) error { - if err := state2.DecreaseBalance(s.BeaconState, w.Validator, w.Amount); err != nil { - return err - } - return nil - }); err != nil { - return err - } - - // Update next withdrawal index based on number of withdrawals. - if withdrawals.Len() > 0 { - lastWithdrawalIndex := withdrawals.Get(withdrawals.Len() - 1).Index - s.SetNextWithdrawalIndex(lastWithdrawalIndex + 1) - } - - // Update next withdrawal validator index based on number of withdrawals. - if withdrawals.Len() == int(beaconConfig.MaxWithdrawalsPerPayload) { - lastWithdrawalValidatorIndex := withdrawals.Get(withdrawals.Len()-1).Validator + 1 - s.SetNextWithdrawalValidatorIndex(lastWithdrawalValidatorIndex % numValidators) - } else { - nextIndex := s.NextWithdrawalValidatorIndex() + beaconConfig.MaxValidatorsPerWithdrawalsSweep - s.SetNextWithdrawalValidatorIndex(nextIndex % numValidators) - } - - return nil -} diff --git a/cl/phase1/core/transition/process_attestations.go b/cl/phase1/core/transition/process_attestations.go deleted file mode 100644 index 55491897c69..00000000000 --- a/cl/phase1/core/transition/process_attestations.go +++ /dev/null @@ -1,260 +0,0 @@ -package transition - -import ( - "errors" - "fmt" - - "github.com/ledgerwatch/erigon/cl/cltypes/solid" - state2 "github.com/ledgerwatch/erigon/cl/phase1/core/state" - - "github.com/ledgerwatch/erigon/cl/clparams" - "github.com/ledgerwatch/erigon/cl/utils" - "github.com/ledgerwatch/erigon/metrics/methelp" - "golang.org/x/exp/slices" -) - -func ProcessAttestations(s *state2.BeaconState, attestations *solid.ListSSZ[*solid.Attestation], fullValidation bool) error { - attestingIndiciesSet := make([][]uint64, attestations.Len()) - h := methelp.NewHistTimer("beacon_process_attestations") - baseRewardPerIncrement := s.BaseRewardPerIncrement() - - c := h.Tag("attestation_step", "process") - var err error - if err := solid.RangeErr[*solid.Attestation](attestations, func(i int, a *solid.Attestation, _ int) error { - if attestingIndiciesSet[i], err = processAttestation(s, a, baseRewardPerIncrement); err != nil { - return err - } - return nil - }); err != nil { - return err - } - if err != nil { - return err - } - var valid bool - c.PutSince() - if fullValidation { - c = h.Tag("attestation_step", "validate") - valid, err = verifyAttestations(s, attestations, attestingIndiciesSet) - if err != nil { - return err - } - if !valid { - return errors.New("ProcessAttestation: wrong bls data") - } - c.PutSince() - } - - return nil -} - -func processAttestationPostAltair(s *state2.BeaconState, attestation *solid.Attestation, baseRewardPerIncrement uint64) ([]uint64, error) { - data := attestation.AttestantionData() - currentEpoch := state2.Epoch(s.BeaconState) - stateSlot := s.Slot() - beaconConfig := s.BeaconConfig() - - h := methelp.NewHistTimer("beacon_process_attestation_post_altair") - - c := h.Tag("step", "get_participation_flag") - participationFlagsIndicies, err := s.GetAttestationParticipationFlagIndicies(attestation.AttestantionData(), stateSlot-data.Slot()) - if err != nil { - return nil, err - } - c.PutSince() - - c = h.Tag("step", "get_attesting_indices") - - attestingIndicies, err := s.GetAttestingIndicies(attestation.AttestantionData(), attestation.AggregationBits(), true) - if err != nil { - return nil, err - } - - c.PutSince() - - var proposerRewardNumerator uint64 - - isCurrentEpoch := data.Target().Epoch() == currentEpoch - - c = h.Tag("step", "update_attestation") - for _, attesterIndex := range attestingIndicies { - val, err := s.ValidatorEffectiveBalance(int(attesterIndex)) - if err != nil { - return nil, err - } - - baseReward := (val / beaconConfig.EffectiveBalanceIncrement) * baseRewardPerIncrement - for flagIndex, weight := range beaconConfig.ParticipationWeights() { - flagParticipation := s.EpochParticipationForValidatorIndex(isCurrentEpoch, int(attesterIndex)) - if !slices.Contains(participationFlagsIndicies, uint8(flagIndex)) || flagParticipation.HasFlag(flagIndex) { - continue - } - s.SetEpochParticipationForValidatorIndex(isCurrentEpoch, int(attesterIndex), flagParticipation.Add(flagIndex)) - proposerRewardNumerator += baseReward * weight - } - } - c.PutSince() - // Reward proposer - c = h.Tag("step", "get_proposer_index") - proposer, err := s.GetBeaconProposerIndex() - if err != nil { - return nil, err - } - c.PutSince() - proposerRewardDenominator := (beaconConfig.WeightDenominator - beaconConfig.ProposerWeight) * beaconConfig.WeightDenominator / beaconConfig.ProposerWeight - reward := proposerRewardNumerator / proposerRewardDenominator - return attestingIndicies, state2.IncreaseBalance(s.BeaconState, proposer, reward) -} - -// processAttestationsPhase0 implements the rules for phase0 processing. -func processAttestationPhase0(s *state2.BeaconState, attestation *solid.Attestation) ([]uint64, error) { - data := attestation.AttestantionData() - committee, err := s.GetBeaconCommitee(data.Slot(), data.ValidatorIndex()) - if err != nil { - return nil, err - } - - if len(committee) != utils.GetBitlistLength(attestation.AggregationBits()) { - return nil, fmt.Errorf("processAttestationPhase0: mismatching aggregation bits size") - } - // Cached so it is performant. - proposerIndex, err := s.GetBeaconProposerIndex() - if err != nil { - return nil, err - } - // Create the attestation to add to pending attestations - pendingAttestation := solid.NewPendingAttestionFromParameters( - attestation.AggregationBits(), - data, - s.Slot()-data.Slot(), - proposerIndex, - ) - - isCurrentAttestation := data.Target().Epoch() == state2.Epoch(s.BeaconState) - // Depending of what slot we are on we put in either the current justified or previous justified. - if isCurrentAttestation { - if !data.Source().Equal(s.CurrentJustifiedCheckpoint()) { - return nil, fmt.Errorf("processAttestationPhase0: mismatching sources") - } - s.AddCurrentEpochAtteastation(pendingAttestation) - } else { - if !data.Source().Equal(s.PreviousJustifiedCheckpoint()) { - return nil, fmt.Errorf("processAttestationPhase0: mismatching sources") - } - s.AddPreviousEpochAttestation(pendingAttestation) - } - // Not required by specs but needed if we want performant epoch transition. - indicies, err := s.GetAttestingIndicies(attestation.AttestantionData(), attestation.AggregationBits(), true) - if err != nil { - return nil, err - } - epochRoot, err := state2.GetBlockRoot(s.BeaconState, attestation.AttestantionData().Target().Epoch()) - if err != nil { - return nil, err - } - slotRoot, err := s.GetBlockRootAtSlot(attestation.AttestantionData().Slot()) - if err != nil { - return nil, err - } - // Basically we flag all validators we are currently attesting. will be important for rewards/finalization processing. - for _, index := range indicies { - minCurrentInclusionDelayAttestation, err := s.ValidatorMinCurrentInclusionDelayAttestation(int(index)) - if err != nil { - return nil, err - } - - minPreviousInclusionDelayAttestation, err := s.ValidatorMinPreviousInclusionDelayAttestation(int(index)) - if err != nil { - return nil, err - } - // NOTE: does not affect state root. - // We need to set it to currents or previouses depending on which attestation we process. - if isCurrentAttestation { - if minCurrentInclusionDelayAttestation == nil || - minCurrentInclusionDelayAttestation.InclusionDelay() > pendingAttestation.InclusionDelay() { - if err := s.SetValidatorMinCurrentInclusionDelayAttestation(int(index), pendingAttestation); err != nil { - return nil, err - } - } - if err := s.SetValidatorIsCurrentMatchingSourceAttester(int(index), true); err != nil { - return nil, err - } - if attestation.AttestantionData().Target().BlockRoot() == epochRoot { - if err := s.SetValidatorIsCurrentMatchingTargetAttester(int(index), true); err != nil { - return nil, err - } - } else { - continue - } - if attestation.AttestantionData().BeaconBlockRoot() == slotRoot { - if err := s.SetValidatorIsCurrentMatchingHeadAttester(int(index), true); err != nil { - return nil, err - } - } - } else { - if minPreviousInclusionDelayAttestation == nil || - minPreviousInclusionDelayAttestation.InclusionDelay() > pendingAttestation.InclusionDelay() { - if err := s.SetValidatorMinPreviousInclusionDelayAttestation(int(index), pendingAttestation); err != nil { - return nil, err - } - } - if err := s.SetValidatorIsPreviousMatchingSourceAttester(int(index), true); err != nil { - return nil, err - } - if attestation.AttestantionData().Target().BlockRoot() != epochRoot { - continue - } - if err := s.SetValidatorIsPreviousMatchingTargetAttester(int(index), true); err != nil { - return nil, err - } - if attestation.AttestantionData().BeaconBlockRoot() == slotRoot { - if err := s.SetValidatorIsPreviousMatchingHeadAttester(int(index), true); err != nil { - return nil, err - } - } - } - } - return indicies, nil -} - -// ProcessAttestation takes an attestation and process it. -func processAttestation(s *state2.BeaconState, attestation *solid.Attestation, baseRewardPerIncrement uint64) ([]uint64, error) { - data := attestation.AttestantionData() - currentEpoch := state2.Epoch(s.BeaconState) - previousEpoch := state2.PreviousEpoch(s.BeaconState) - stateSlot := s.Slot() - beaconConfig := s.BeaconConfig() - // Prelimary checks. - if (data.Target().Epoch() != currentEpoch && data.Target().Epoch() != previousEpoch) || data.Target().Epoch() != state2.GetEpochAtSlot(s.BeaconConfig(), data.Slot()) { - return nil, errors.New("ProcessAttestation: attestation with invalid epoch") - } - if data.Slot()+beaconConfig.MinAttestationInclusionDelay > stateSlot || stateSlot > data.Slot()+beaconConfig.SlotsPerEpoch { - return nil, errors.New("ProcessAttestation: attestation slot not in range") - } - if data.ValidatorIndex() >= s.CommitteeCount(data.Target().Epoch()) { - return nil, errors.New("ProcessAttestation: attester index out of range") - } - // check if we need to use rules for phase0 or post-altair. - if s.Version() == clparams.Phase0Version { - return processAttestationPhase0(s, attestation) - } - return processAttestationPostAltair(s, attestation, baseRewardPerIncrement) -} - -func verifyAttestations(s *state2.BeaconState, attestations *solid.ListSSZ[*solid.Attestation], attestingIndicies [][]uint64) (bool, error) { - var err error - valid := true - attestations.Range(func(idx int, a *solid.Attestation, _ int) bool { - indexedAttestation := state2.GetIndexedAttestation(a, attestingIndicies[idx]) - valid, err = state2.IsValidIndexedAttestation(s.BeaconState, indexedAttestation) - if err != nil { - return false - } - if !valid { - return false - } - return true - }) - - return valid, err -} diff --git a/cl/phase1/core/transition/process_bls_to_execution_change.go b/cl/phase1/core/transition/process_bls_to_execution_change.go deleted file mode 100644 index 8c86a38b064..00000000000 --- a/cl/phase1/core/transition/process_bls_to_execution_change.go +++ /dev/null @@ -1,64 +0,0 @@ -package transition - -import ( - "bytes" - "fmt" - "github.com/ledgerwatch/erigon/cl/phase1/core/state" - - "github.com/Giulio2002/bls" - "github.com/ledgerwatch/erigon/cl/cltypes" - "github.com/ledgerwatch/erigon/cl/fork" - "github.com/ledgerwatch/erigon/cl/utils" -) - -// ProcessBlsToExecutionChange processes a BLSToExecutionChange message by updating a validator's withdrawal credentials. -func ProcessBlsToExecutionChange(state *state.BeaconState, signedChange *cltypes.SignedBLSToExecutionChange, fullValidation bool) error { - change := signedChange.Message - - beaconConfig := state.BeaconConfig() - validator, err := state.ValidatorForValidatorIndex(int(change.ValidatorIndex)) - if err != nil { - return err - } - - // Perform full validation if requested. - wc := validator.WithdrawalCredentials() - if fullValidation { - // Check the validator's withdrawal credentials prefix. - if wc[0] != beaconConfig.BLSWithdrawalPrefixByte { - return fmt.Errorf("invalid withdrawal credentials prefix") - } - - // Check the validator's withdrawal credentials against the provided message. - hashedFrom := utils.Keccak256(change.From[:]) - if !bytes.Equal(hashedFrom[1:], wc[1:]) { - return fmt.Errorf("invalid withdrawal credentials") - } - - // Compute the signing domain and verify the message signature. - domain, err := fork.ComputeDomain(beaconConfig.DomainBLSToExecutionChange[:], utils.Uint32ToBytes4(beaconConfig.GenesisForkVersion), state.GenesisValidatorsRoot()) - if err != nil { - return err - } - signedRoot, err := fork.ComputeSigningRoot(change, domain) - if err != nil { - return err - } - valid, err := bls.Verify(signedChange.Signature[:], signedRoot[:], change.From[:]) - if err != nil { - return err - } - if !valid { - return fmt.Errorf("invalid signature") - } - } - credentials := wc - // Reset the validator's withdrawal credentials. - credentials[0] = beaconConfig.ETH1AddressWithdrawalPrefixByte - copy(credentials[1:], make([]byte, 11)) - copy(credentials[12:], change.To[:]) - - // Update the state with the modified validator. - state.SetWithdrawalCredentialForValidatorAtIndex(int(change.ValidatorIndex), credentials) - return nil -} diff --git a/cl/phase1/core/transition/process_epoch.go b/cl/phase1/core/transition/process_epoch.go deleted file mode 100644 index ce0cae47f69..00000000000 --- a/cl/phase1/core/transition/process_epoch.go +++ /dev/null @@ -1,103 +0,0 @@ -package transition - -import ( - "github.com/ledgerwatch/erigon/cl/clparams" - "github.com/ledgerwatch/erigon/cl/cltypes/solid" - "github.com/ledgerwatch/erigon/cl/phase1/core/state" -) - -// ProcessEpoch process epoch transition. -func ProcessEpoch(state *state.BeaconState) error { - if err := ProcessJustificationBitsAndFinality(state); err != nil { - return err - } - if state.Version() >= clparams.AltairVersion { - if err := ProcessInactivityScores(state); err != nil { - return err - } - } - if err := ProcessRewardsAndPenalties(state); err != nil { - return err - } - if err := ProcessRegistryUpdates(state); err != nil { - return err - } - if err := ProcessSlashings(state); err != nil { - return err - } - ProcessEth1DataReset(state) - if err := ProcessEffectiveBalanceUpdates(state); err != nil { - return err - } - ProcessSlashingsReset(state) - ProcessRandaoMixesReset(state) - if err := ProcessHistoricalRootsUpdate(state); err != nil { - return err - } - if state.Version() == clparams.Phase0Version { - if err := ProcessParticipationRecordUpdates(state); err != nil { - return err - } - } - - if state.Version() >= clparams.AltairVersion { - ProcessParticipationFlagUpdates(state) - if err := ProcessSyncCommitteeUpdate(state); err != nil { - return err - } - } - return nil -} - -func ProcessParticipationRecordUpdates(state *state.BeaconState) error { - state.SetPreviousEpochAttestations(state.CurrentEpochAttestations()) - state.ResetCurrentEpochAttestations() - var err error - // Also mark all current attesters as previous - state.ForEachValidator(func(_ solid.Validator, idx, total int) bool { - - var oldCurrentMatchingSourceAttester, oldCurrentMatchingTargetAttester, oldCurrentMatchingHeadAttester bool - var oldMinCurrentInclusionDelayAttestation *solid.PendingAttestation - - if oldCurrentMatchingSourceAttester, err = state.ValidatorIsCurrentMatchingSourceAttester(idx); err != nil { - return false - } - if oldCurrentMatchingTargetAttester, err = state.ValidatorIsCurrentMatchingTargetAttester(idx); err != nil { - return false - } - if oldCurrentMatchingHeadAttester, err = state.ValidatorIsCurrentMatchingHeadAttester(idx); err != nil { - return false - } - if oldMinCurrentInclusionDelayAttestation, err = state.ValidatorMinCurrentInclusionDelayAttestation(idx); err != nil { - return false - } - // Previous sources/target/head - if err = state.SetValidatorIsPreviousMatchingSourceAttester(idx, oldCurrentMatchingSourceAttester); err != nil { - return false - } - if err = state.SetValidatorIsPreviousMatchingTargetAttester(idx, oldCurrentMatchingTargetAttester); err != nil { - return false - } - if err = state.SetValidatorIsPreviousMatchingHeadAttester(idx, oldCurrentMatchingHeadAttester); err != nil { - return false - } - if err = state.SetValidatorMinPreviousInclusionDelayAttestation(idx, oldMinCurrentInclusionDelayAttestation); err != nil { - return false - } - // Current sources/target/head - if err = state.SetValidatorIsCurrentMatchingSourceAttester(idx, false); err != nil { - return false - } - if err = state.SetValidatorIsCurrentMatchingTargetAttester(idx, false); err != nil { - return false - } - if err = state.SetValidatorIsCurrentMatchingHeadAttester(idx, false); err != nil { - return false - } - if err = state.SetValidatorMinCurrentInclusionDelayAttestation(idx, nil); err != nil { - return false - } - return true - }) - return err -} diff --git a/cl/phase1/core/transition/process_slashings.go b/cl/phase1/core/transition/process_slashings.go deleted file mode 100644 index ec2f5788dd8..00000000000 --- a/cl/phase1/core/transition/process_slashings.go +++ /dev/null @@ -1,56 +0,0 @@ -package transition - -import ( - "github.com/ledgerwatch/erigon/cl/clparams" - "github.com/ledgerwatch/erigon/cl/cltypes/solid" - state2 "github.com/ledgerwatch/erigon/cl/phase1/core/state" -) - -func processSlashings(s *state2.BeaconState, slashingMultiplier uint64) error { - // Get the current epoch - epoch := state2.Epoch(s.BeaconState) - // Get the total active balance - totalBalance := s.GetTotalActiveBalance() - // Calculate the total slashing amount - // by summing all slashings and multiplying by the provided multiplier - slashing := state2.GetTotalSlashingAmount(s.BeaconState) * slashingMultiplier - // Adjust the total slashing amount to be no greater than the total active balance - if totalBalance < slashing { - slashing = totalBalance - } - beaconConfig := s.BeaconConfig() - // Apply penalties to validators who have been slashed and reached the withdrawable epoch - var err error - s.ForEachValidator(func(validator solid.Validator, i, total int) bool { - if !validator.Slashed() || epoch+beaconConfig.EpochsPerSlashingsVector/2 != validator.WithdrawableEpoch() { - return true - } - // Get the effective balance increment - increment := beaconConfig.EffectiveBalanceIncrement - // Calculate the penalty numerator by multiplying the validator's effective balance by the total slashing amount - penaltyNumerator := validator.EffectiveBalance() / increment * slashing - // Calculate the penalty by dividing the penalty numerator by the total balance and multiplying by the increment - penalty := penaltyNumerator / totalBalance * increment - // Decrease the validator's balance by the calculated penalty - if err = state2.DecreaseBalance(s.BeaconState, uint64(i), penalty); err != nil { - return false - } - return true - }) - if err != nil { - return err - } - return nil -} - -func ProcessSlashings(state *state2.BeaconState) error { - // Depending on the version of the state, use different multipliers - switch state.Version() { - case clparams.Phase0Version: - return processSlashings(state, state.BeaconConfig().ProportionalSlashingMultiplier) - case clparams.AltairVersion: - return processSlashings(state, state.BeaconConfig().ProportionalSlashingMultiplierAltair) - default: - return processSlashings(state, state.BeaconConfig().ProportionalSlashingMultiplierBellatrix) - } -} diff --git a/cl/phase1/core/transition/process_slots.go b/cl/phase1/core/transition/process_slots.go deleted file mode 100644 index 8632bc68fd5..00000000000 --- a/cl/phase1/core/transition/process_slots.go +++ /dev/null @@ -1,183 +0,0 @@ -package transition - -import ( - "fmt" - "time" - - state2 "github.com/ledgerwatch/erigon/cl/phase1/core/state" - - "github.com/Giulio2002/bls" - libcommon "github.com/ledgerwatch/erigon-lib/common" - "github.com/ledgerwatch/erigon/cl/clparams" - "github.com/ledgerwatch/erigon/cl/cltypes" - "github.com/ledgerwatch/erigon/cl/fork" - "github.com/ledgerwatch/erigon/cl/utils" - "github.com/ledgerwatch/log/v3" -) - -func TransitionState(s *state2.BeaconState, block *cltypes.SignedBeaconBlock, fullValidation bool) error { - currentBlock := block.Block - if err := ProcessSlots(s, currentBlock.Slot); err != nil { - return err - } - - if fullValidation { - valid, err := verifyBlockSignature(s, block) - if err != nil { - return fmt.Errorf("error validating block signature: %v", err) - } - if !valid { - return fmt.Errorf("block not valid") - } - } - // Transition block - if err := processBlock(s, block, fullValidation); err != nil { - return err - } - if fullValidation { - expectedStateRoot, err := s.HashSSZ() - if err != nil { - return fmt.Errorf("unable to generate state root: %v", err) - } - if expectedStateRoot != currentBlock.StateRoot { - return fmt.Errorf("expected state root differs from received state root") - } - } - - s.SetPreviousStateRoot(currentBlock.StateRoot) - return nil -} - -// transitionSlot is called each time there is a new slot to process -func transitionSlot(s *state2.BeaconState) error { - slot := s.Slot() - previousStateRoot := s.PreviousStateRoot() - var err error - if previousStateRoot == (libcommon.Hash{}) { - previousStateRoot, err = s.HashSSZ() - if err != nil { - return err - } - } - - beaconConfig := s.BeaconConfig() - - s.SetStateRootAt(int(slot%beaconConfig.SlotsPerHistoricalRoot), previousStateRoot) - - latestBlockHeader := s.LatestBlockHeader() - if latestBlockHeader.Root == [32]byte{} { - latestBlockHeader.Root = previousStateRoot - s.SetLatestBlockHeader(&latestBlockHeader) - } - blockHeader := s.LatestBlockHeader() - - previousBlockRoot, err := (&blockHeader).HashSSZ() - if err != nil { - return err - } - s.SetBlockRootAt(int(slot%beaconConfig.SlotsPerHistoricalRoot), previousBlockRoot) - return nil -} - -func ProcessSlots(s *state2.BeaconState, slot uint64) error { - beaconConfig := s.BeaconConfig() - sSlot := s.Slot() - if slot <= sSlot { - return fmt.Errorf("new slot: %d not greater than s slot: %d", slot, sSlot) - } - // Process each slot. - for i := sSlot; i < slot; i++ { - err := transitionSlot(s) - if err != nil { - return fmt.Errorf("unable to process slot transition: %v", err) - } - // TODO(Someone): Add epoch transition. - if (sSlot+1)%beaconConfig.SlotsPerEpoch == 0 { - start := time.Now() - if err := ProcessEpoch(s); err != nil { - return err - } - log.Debug("Processed new epoch successfully", "epoch", state2.Epoch(s.BeaconState), "process_epoch_elpsed", time.Since(start)) - } - // TODO: add logic to process epoch updates. - sSlot += 1 - s.SetSlot(sSlot) - if sSlot%beaconConfig.SlotsPerEpoch != 0 { - continue - } - if state2.Epoch(s.BeaconState) == beaconConfig.AltairForkEpoch { - if err := s.UpgradeToAltair(); err != nil { - return err - } - } - if state2.Epoch(s.BeaconState) == beaconConfig.BellatrixForkEpoch { - if err := s.UpgradeToBellatrix(); err != nil { - return err - } - } - if state2.Epoch(s.BeaconState) == beaconConfig.CapellaForkEpoch { - if err := s.UpgradeToCapella(); err != nil { - return err - } - } - if state2.Epoch(s.BeaconState) == beaconConfig.DenebForkEpoch { - if err := s.UpgradeToDeneb(); err != nil { - return err - } - } - } - return nil -} - -func verifyBlockSignature(s *state2.BeaconState, block *cltypes.SignedBeaconBlock) (bool, error) { - proposer, err := s.ValidatorForValidatorIndex(int(block.Block.ProposerIndex)) - if err != nil { - return false, err - } - domain, err := s.GetDomain(s.BeaconConfig().DomainBeaconProposer, state2.Epoch(s.BeaconState)) - if err != nil { - return false, err - } - sigRoot, err := fork.ComputeSigningRoot(block.Block, domain) - if err != nil { - return false, err - } - pk := proposer.PublicKey() - return bls.Verify(block.Signature[:], sigRoot[:], pk[:]) -} - -// ProcessHistoricalRootsUpdate updates the historical root data structure by computing a new historical root batch when it is time to do so. -func ProcessHistoricalRootsUpdate(s *state2.BeaconState) error { - nextEpoch := state2.Epoch(s.BeaconState) + 1 - beaconConfig := s.BeaconConfig() - blockRoots := s.BlockRoots() - stateRoots := s.StateRoots() - - // Check if it's time to compute the historical root batch. - if nextEpoch%(beaconConfig.SlotsPerHistoricalRoot/beaconConfig.SlotsPerEpoch) != 0 { - return nil - } - - // Compute historical root batch. - blockRootsLeaf, err := blockRoots.HashSSZ() - if err != nil { - return err - } - stateRootsLeaf, err := stateRoots.HashSSZ() - if err != nil { - return err - } - - // Add the historical summary or root to the s. - if s.Version() >= clparams.CapellaVersion { - s.AddHistoricalSummary(&cltypes.HistoricalSummary{ - BlockSummaryRoot: blockRootsLeaf, - StateSummaryRoot: stateRootsLeaf, - }) - } else { - historicalRoot := utils.Keccak256(blockRootsLeaf[:], stateRootsLeaf[:]) - s.AddHistoricalRoot(historicalRoot) - } - - return nil -} diff --git a/cl/phase1/core/transition/process_sync_aggregate.go b/cl/phase1/core/transition/process_sync_aggregate.go deleted file mode 100644 index bfafc00ab63..00000000000 --- a/cl/phase1/core/transition/process_sync_aggregate.go +++ /dev/null @@ -1,93 +0,0 @@ -package transition - -import ( - "errors" - - state2 "github.com/ledgerwatch/erigon/cl/phase1/core/state" - - "github.com/Giulio2002/bls" - "github.com/ledgerwatch/erigon/cl/cltypes" - "github.com/ledgerwatch/erigon/cl/fork" - "github.com/ledgerwatch/erigon/cl/utils" -) - -// processSyncAggregate applies all the logic in the spec function `process_sync_aggregate` except -// verifying the BLS signatures. It returns the modified beacons state and the list of validators' -// public keys that voted, for future signature verification. -func processSyncAggregate(s *state2.BeaconState, sync *cltypes.SyncAggregate) ([][]byte, error) { - currentSyncCommittee := s.CurrentSyncCommittee() - - if currentSyncCommittee == nil { - return nil, errors.New("nil current sync committee in s") - } - committeeKeys := currentSyncCommittee.GetCommittee() - if len(sync.SyncCommiteeBits)*8 > len(committeeKeys) { - return nil, errors.New("bits length exceeds committee length") - } - var votedKeys [][]byte - - proposerReward, participantReward, err := s.SyncRewards() - if err != nil { - return nil, err - } - - proposerIndex, err := s.GetBeaconProposerIndex() - if err != nil { - return nil, err - } - - syncAggregateBits := sync.SyncCommiteeBits - earnedProposerReward := uint64(0) - currPubKeyIndex := 0 - for i := range syncAggregateBits { - for bit := 1; bit <= 128; bit *= 2 { - vIdx, exists := s.ValidatorIndexByPubkey(committeeKeys[currPubKeyIndex]) - // Impossible scenario. - if !exists { - return nil, errors.New("validator public key does not exist in state") - } - if syncAggregateBits[i]&byte(bit) > 0 { - votedKeys = append(votedKeys, committeeKeys[currPubKeyIndex][:]) - if err := state2.IncreaseBalance(s.BeaconState, vIdx, participantReward); err != nil { - return nil, err - } - earnedProposerReward += proposerReward - } else { - if err := state2.DecreaseBalance(s.BeaconState, vIdx, participantReward); err != nil { - return nil, err - } - } - currPubKeyIndex++ - } - } - - return votedKeys, state2.IncreaseBalance(s.BeaconState, proposerIndex, earnedProposerReward) -} - -func ProcessSyncAggregate(s *state2.BeaconState, sync *cltypes.SyncAggregate, fullValidation bool) error { - votedKeys, err := processSyncAggregate(s, sync) - if err != nil { - return err - } - if fullValidation { - previousSlot := s.PreviousSlot() - - domain, err := fork.Domain(s.Fork(), state2.GetEpochAtSlot(s.BeaconConfig(), previousSlot), s.BeaconConfig().DomainSyncCommittee, s.GenesisValidatorsRoot()) - if err != nil { - return nil - } - blockRoot, err := s.GetBlockRootAtSlot(previousSlot) - if err != nil { - return err - } - msg := utils.Keccak256(blockRoot[:], domain) - isValid, err := bls.VerifyAggregate(sync.SyncCommiteeSignature[:], msg[:], votedKeys) - if err != nil { - return err - } - if !isValid { - return errors.New("ProcessSyncAggregate: cannot validate sync committee signature") - } - } - return nil -} diff --git a/cl/phase1/core/transition/processing.go b/cl/phase1/core/transition/processing.go deleted file mode 100644 index 669f9cc03f9..00000000000 --- a/cl/phase1/core/transition/processing.go +++ /dev/null @@ -1,120 +0,0 @@ -package transition - -import ( - "encoding/binary" - "fmt" - - state2 "github.com/ledgerwatch/erigon/cl/phase1/core/state" - - libcommon "github.com/ledgerwatch/erigon-lib/common" - - "github.com/Giulio2002/bls" - "github.com/ledgerwatch/erigon/cl/cltypes" - "github.com/ledgerwatch/erigon/cl/utils" -) - -func computeSigningRootEpoch(epoch uint64, domain []byte) (libcommon.Hash, error) { - b := make([]byte, 32) - binary.LittleEndian.PutUint64(b, epoch) - return utils.Keccak256(b, domain), nil -} - -func ProcessBlockHeader(state *state2.BeaconState, block *cltypes.BeaconBlock, fullValidation bool) error { - if fullValidation { - if block.Slot != state.Slot() { - return fmt.Errorf("state slot: %d, not equal to block slot: %d", state.Slot(), block.Slot) - } - if block.Slot <= state.LatestBlockHeader().Slot { - return fmt.Errorf("slock slot: %d, not greater than latest block slot: %d", block.Slot, state.LatestBlockHeader().Slot) - } - propInd, err := state.GetBeaconProposerIndex() - if err != nil { - return fmt.Errorf("error in GetBeaconProposerIndex: %v", err) - } - if block.ProposerIndex != propInd { - return fmt.Errorf("block proposer index: %d, does not match beacon proposer index: %d", block.ProposerIndex, propInd) - } - blockHeader := state.LatestBlockHeader() - latestRoot, err := (&blockHeader).HashSSZ() - if err != nil { - return fmt.Errorf("unable to hash tree root of latest block header: %v", err) - } - if block.ParentRoot != latestRoot { - return fmt.Errorf("block parent root: %x, does not match latest block root: %x", block.ParentRoot, latestRoot) - } - } - - bodyRoot, err := block.Body.HashSSZ() - if err != nil { - return fmt.Errorf("unable to hash tree root of block body: %v", err) - } - state.SetLatestBlockHeader(&cltypes.BeaconBlockHeader{ - Slot: block.Slot, - ProposerIndex: block.ProposerIndex, - ParentRoot: block.ParentRoot, - BodyRoot: bodyRoot, - }) - - proposer, err := state.ValidatorForValidatorIndex(int(block.ProposerIndex)) - if err != nil { - return err - } - if proposer.Slashed() { - return fmt.Errorf("proposer: %d is slashed", block.ProposerIndex) - } - return nil -} - -func ProcessRandao(s *state2.BeaconState, randao [96]byte, proposerIndex uint64, fullValidation bool) error { - epoch := state2.Epoch(s.BeaconState) - proposer, err := s.ValidatorForValidatorIndex(int(proposerIndex)) - if err != nil { - return err - } - if fullValidation { - domain, err := s.GetDomain(s.BeaconConfig().DomainRandao, epoch) - if err != nil { - return fmt.Errorf("ProcessRandao: unable to get domain: %v", err) - } - signingRoot, err := computeSigningRootEpoch(epoch, domain) - if err != nil { - return fmt.Errorf("ProcessRandao: unable to compute signing root: %v", err) - } - pk := proposer.PublicKey() - valid, err := bls.Verify(randao[:], signingRoot[:], pk[:]) - if err != nil { - return fmt.Errorf("ProcessRandao: unable to verify public key: %x, with signing root: %x, and signature: %x, %v", pk[:], signingRoot[:], randao[:], err) - } - if !valid { - return fmt.Errorf("ProcessRandao: invalid signature: public key: %x, signing root: %x, signature: %x", pk[:], signingRoot[:], randao[:]) - } - } - - randaoMixes := s.GetRandaoMixes(epoch) - randaoHash := utils.Keccak256(randao[:]) - mix := [32]byte{} - for i := range mix { - mix[i] = randaoMixes[i] ^ randaoHash[i] - } - s.SetRandaoMixAt(int(epoch%s.BeaconConfig().EpochsPerHistoricalVector), mix) - return nil -} - -func ProcessEth1Data(state *state2.BeaconState, eth1Data *cltypes.Eth1Data) error { - state.AddEth1DataVote(eth1Data) - newVotes := state.Eth1DataVotes() - - // Count how many times body.Eth1Data appears in the votes. - numVotes := 0 - newVotes.Range(func(index int, value *cltypes.Eth1Data, length int) bool { - if eth1Data.Equal(value) { - numVotes += 1 - } - return true - }) - - if uint64(numVotes*2) > state.BeaconConfig().EpochsPerEth1VotingPeriod*state.BeaconConfig().SlotsPerEpoch { - state.SetEth1Data(eth1Data) - } - return nil -} diff --git a/cl/phase1/core/transition/test_data/block_processing/deneb_block.ssz_snappy b/cl/phase1/core/transition/test_data/block_processing/deneb_block.ssz_snappy deleted file mode 100644 index 0f8754dcbe8483a7aaf685c213b76f3263a57c39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16454 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 clparams.DenebVersion { + request.DataGasUsed = new(hexutil.Uint64) + request.ExcessDataGas = new(hexutil.Uint64) + *request.DataGasUsed = hexutil.Uint64(payload.DataGasUsed) + *request.ExcessDataGas = hexutil.Uint64(payload.ExcessDataGas) + } + + payloadStatus := make(map[string]interface{}) // As it is done in the rpcdaemon + log.Debug("[ExecutionClientRpc] Calling EL", "method", engineMethod) + err = cc.client.CallContext(cc.ctx, &payloadStatus, engineMethod, request) + if err != nil { + return + } + + if err != nil { + err = fmt.Errorf("execution Client RPC failed to retrieve the NewPayload status response, err: %w", err) + return + } + var status string + var ok bool + if status, ok = payloadStatus["status"].(string); !ok { + err = fmt.Errorf("invalid response received from NewPayload") + return + + } + invalid = status == InvalidStatus || status == InvalidBlockHashStatus + + return +} + +func (cc *ExecutionClientRpc) ForkChoiceUpdate(finalized libcommon.Hash, head libcommon.Hash) error { + forkChoiceRequest := jsonrpc.ForkChoiceState{ + HeadHash: head, + SafeBlockHash: head, + FinalizedBlockHash: finalized, + } + forkChoiceResp := &engine.EngineForkChoiceUpdatedResponse{} + log.Debug("[ExecutionClientRpc] Calling EL", "method", rpc_helper.ForkChoiceUpdatedV1) + + err := cc.client.CallContext(cc.ctx, forkChoiceResp, rpc_helper.ForkChoiceUpdatedV1, forkChoiceRequest) + if err != nil { + return fmt.Errorf("execution Client RPC failed to retrieve ForkChoiceUpdate response, err: %w", err) + } + // Ignore timeouts + if err != nil && err.Error() == errContextExceeded { + return nil + } + + return err +} diff --git a/cl/phase1/execution_client/execution_engine.go b/cl/phase1/execution_client/execution_engine.go deleted file mode 100644 index 4a773e2168b..00000000000 --- a/cl/phase1/execution_client/execution_engine.go +++ /dev/null @@ -1,155 +0,0 @@ -package execution_client - -import ( - "context" - "fmt" - "time" - - "github.com/holiman/uint256" - libcommon "github.com/ledgerwatch/erigon-lib/common" - "github.com/ledgerwatch/erigon-lib/gointerfaces" - "github.com/ledgerwatch/erigon-lib/gointerfaces/remote" - "github.com/ledgerwatch/erigon-lib/gointerfaces/types" - types2 "github.com/ledgerwatch/erigon/core/types" - - "github.com/ledgerwatch/erigon/cl/cltypes" - "github.com/ledgerwatch/erigon/ethdb/privateapi" -) - -var errContextExceeded = "rpc error: code = DeadlineExceeded desc = context deadline exceeded" - -// ExecutionEngine is used only for syncing up very close to chain tip and to stay in sync. -// It pretty much mimics engine API. -type ExecutionEngine interface { - NewPayload(payload *cltypes.Eth1Block) error - ForkChoiceUpdate(finalized libcommon.Hash, head libcommon.Hash) error -} - -// ExecutionEnginePhase1 is just the normal engine api. -type ExecutionEnginePhase1 struct { - // Either execution server or client - executionServer remote.ETHBACKENDServer - executionClient remote.ETHBACKENDClient - - ctx context.Context -} - -// NewExecutionEnginePhase1FromServer use ethbackend server -func NewExecutionEnginePhase1FromServer(ctx context.Context, executionServer remote.ETHBACKENDServer) *ExecutionEnginePhase1 { - return &ExecutionEnginePhase1{ - executionServer: executionServer, - ctx: ctx, - } -} - -// NewExecutionEnginePhase1FromServer use ethbackend client -func NewExecutionEnginePhase1FromClient(ctx context.Context, executionClient remote.ETHBACKENDClient) *ExecutionEnginePhase1 { - return &ExecutionEnginePhase1{ - executionClient: executionClient, - ctx: ctx, - } -} - -func (e *ExecutionEnginePhase1) NewPayload(payload *cltypes.Eth1Block) error { - grpcMessage, err := convertPayloadToGrpc(payload) - if err != nil { - return err - } - ctx, cancel := context.WithTimeout(e.ctx, 3*time.Second) - defer cancel() - - var status *remote.EnginePayloadStatus - if e.executionServer != nil { - status, err = e.executionServer.EngineNewPayload(ctx, grpcMessage) - } else if e.executionClient != nil { - status, err = e.executionClient.EngineNewPayload(ctx, grpcMessage) - } - // Ignore timeouts - if err != nil { - if err.Error() == errContextExceeded { - return nil - } - return err - } - if status.Status == remote.EngineStatus_INVALID { - return fmt.Errorf("invalid block") - } - if status.Status == remote.EngineStatus_INVALID_BLOCK_HASH { - return fmt.Errorf("invalid block hash") - } - return err -} - -func (e *ExecutionEnginePhase1) ForkChoiceUpdate(finalized libcommon.Hash, head libcommon.Hash) error { - grpcMessage := &remote.EngineForkChoiceUpdatedRequest{ - ForkchoiceState: &remote.EngineForkChoiceState{ - HeadBlockHash: gointerfaces.ConvertHashToH256(head), - SafeBlockHash: gointerfaces.ConvertHashToH256(head), - FinalizedBlockHash: gointerfaces.ConvertHashToH256(finalized), - }, - } - var err error - ctx, cancel := context.WithTimeout(e.ctx, 3*time.Second) - defer cancel() - if e.executionClient != nil { - _, err = e.executionClient.EngineForkChoiceUpdated(ctx, grpcMessage) - } else if e.executionServer != nil { - _, err = e.executionServer.EngineForkChoiceUpdated(ctx, grpcMessage) - } - // Ignore timeouts - if err != nil && err.Error() == errContextExceeded { - return nil - } - - return err -} - -// ExecutionEnginePhase2 is "real merge" (TODO). -type ExecutionEnginePhase2 struct { -} - -func convertPayloadToGrpc(e *cltypes.Eth1Block) (*types.ExecutionPayload, error) { - var baseFee *uint256.Int - header, err := e.RlpHeader() - if err != nil { - return nil, err - } - - if header.BaseFee != nil { - var overflow bool - baseFee, overflow = uint256.FromBig(header.BaseFee) - if overflow { - panic("NewPayload BaseFeePerGas overflow") - } - } - withdrawals := make([]*types2.Withdrawal, e.Withdrawals.Len()) - e.Withdrawals.Range(func(_ int, w *types2.Withdrawal, _ int) bool { - withdrawals = append(withdrawals, w) - return true - }) - - res := &types.ExecutionPayload{ - Version: 1, - ParentHash: gointerfaces.ConvertHashToH256(header.ParentHash), - Coinbase: gointerfaces.ConvertAddressToH160(header.Coinbase), - StateRoot: gointerfaces.ConvertHashToH256(header.Root), - ReceiptRoot: gointerfaces.ConvertHashToH256(header.ReceiptHash), - LogsBloom: gointerfaces.ConvertBytesToH2048(header.Bloom[:]), - PrevRandao: gointerfaces.ConvertHashToH256(header.MixDigest), - BlockNumber: header.Number.Uint64(), - GasLimit: header.GasLimit, - GasUsed: header.GasUsed, - Timestamp: header.Time, - ExtraData: header.Extra, - BaseFeePerGas: gointerfaces.ConvertUint256IntToH256(baseFee), - BlockHash: gointerfaces.ConvertHashToH256(e.BlockHash), - Transactions: e.Transactions.UnderlyngReference(), - Withdrawals: privateapi.ConvertWithdrawalsToRpc(withdrawals), - } - if e.Withdrawals != nil { - res.Version = 2 - res.Withdrawals = privateapi.ConvertWithdrawalsToRpc(withdrawals) - } - - return res, nil -} diff --git a/cl/phase1/execution_client/interface.go b/cl/phase1/execution_client/interface.go new file mode 100644 index 00000000000..6853ab45597 --- /dev/null +++ b/cl/phase1/execution_client/interface.go @@ -0,0 +1,16 @@ +package execution_client + +import ( + libcommon "github.com/ledgerwatch/erigon-lib/common" + + "github.com/ledgerwatch/erigon/cl/cltypes" +) + +var errContextExceeded = "rpc error: code = DeadlineExceeded desc = context deadline exceeded" + +// ExecutionEngine is used only for syncing up very close to chain tip and to stay in sync. +// It pretty much mimics engine API. +type ExecutionEngine interface { + NewPayload(payload *cltypes.Eth1Block) (bool, error) + ForkChoiceUpdate(finalized libcommon.Hash, head libcommon.Hash) error +} diff --git a/cl/phase1/execution_client/rpc_helper/jwt_roundtripper.go b/cl/phase1/execution_client/rpc_helper/jwt_roundtripper.go new file mode 100644 index 00000000000..c7b5b0e55f9 --- /dev/null +++ b/cl/phase1/execution_client/rpc_helper/jwt_roundtripper.go @@ -0,0 +1,32 @@ +package rpc_helper + +import ( + "fmt" + "net/http" + "time" + + "github.com/golang-jwt/jwt/v4" +) + +type JWTRoundTripper struct { + underlyingTransport http.RoundTripper + jwtSecret []byte +} + +func NewJWTRoundTripper(jwtSecret []byte) *JWTRoundTripper { + return &JWTRoundTripper{underlyingTransport: http.DefaultTransport, jwtSecret: jwtSecret} +} + +func (t *JWTRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { + token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{ + "iat": time.Now().Unix(), + }) + + tokenString, err := token.SignedString(t.jwtSecret) + if err != nil { + return nil, fmt.Errorf("JwtRoundTripper failed to produce a JWT token, err: %w", err) + } + + req.Header.Set("Authorization", "Bearer "+tokenString) + return t.underlyingTransport.RoundTrip(req) +} diff --git a/cl/phase1/execution_client/rpc_helper/methods.go b/cl/phase1/execution_client/rpc_helper/methods.go new file mode 100644 index 00000000000..e41b3f16353 --- /dev/null +++ b/cl/phase1/execution_client/rpc_helper/methods.go @@ -0,0 +1,8 @@ +package rpc_helper + +const EngineNewPayloadV1 = "engine_newPayloadV1" +const EngineNewPayloadV2 = "engine_newPayloadV2" +const EngineNewPayloadV3 = "engine_newPayloadV3" + +const ForkChoiceUpdatedV1 = "engine_forkchoiceUpdatedV1" +const ForkChoiceUpdatedV2 = "engine_forkchoiceUpdatedV2" diff --git a/cl/phase1/forkchoice/fork_choice_test.go b/cl/phase1/forkchoice/fork_choice_test.go index 0e8afc70112..76f2153faac 100644 --- a/cl/phase1/forkchoice/fork_choice_test.go +++ b/cl/phase1/forkchoice/fork_choice_test.go @@ -46,7 +46,7 @@ func TestForkChoiceBasic(t *testing.T) { // Initialize forkchoice store anchorState := state.New(&clparams.MainnetBeaconConfig) require.NoError(t, utils.DecodeSSZSnappy(anchorState, anchorStateEncoded, int(clparams.AltairVersion))) - store, err := forkchoice.NewForkChoiceStore(anchorState, nil, false) + store, err := forkchoice.NewForkChoiceStore(anchorState, nil, nil, false) require.NoError(t, err) // first steps store.OnTick(0) diff --git a/cl/phase1/forkchoice/fork_graph/fork_graph.go b/cl/phase1/forkchoice/fork_graph/fork_graph.go index fc2d0e6c5fa..d7d75e81fa9 100644 --- a/cl/phase1/forkchoice/fork_graph/fork_graph.go +++ b/cl/phase1/forkchoice/fork_graph/fork_graph.go @@ -6,7 +6,7 @@ import ( "github.com/ledgerwatch/erigon/cl/cltypes" "github.com/ledgerwatch/erigon/cl/cltypes/solid" "github.com/ledgerwatch/erigon/cl/phase1/core/state" - "github.com/ledgerwatch/erigon/cl/phase1/core/transition" + "github.com/ledgerwatch/erigon/cl/transition" "github.com/ledgerwatch/log/v3" "golang.org/x/exp/slices" ) @@ -57,6 +57,8 @@ type ForkGraph struct { // configurations beaconCfg *clparams.BeaconChainConfig genesisTime uint64 + // highest block seen + highestSeen uint64 } func (f *ForkGraph) AnchorSlot() uint64 { @@ -132,7 +134,7 @@ func (f *ForkGraph) AddChainSegment(signedBlock *cltypes.SignedBeaconBlock, full return nil, InvalidBlock, nil } - newState, err := f.GetState(block.ParentRoot, false) + newState, didLongRecconnection, err := f.GetState(block.ParentRoot, false) if err != nil { return nil, InvalidBlock, err } @@ -140,16 +142,23 @@ func (f *ForkGraph) AddChainSegment(signedBlock *cltypes.SignedBeaconBlock, full log.Debug("AddChainSegment: missing segment", "block", libcommon.Hash(blockRoot)) return nil, MissingSegment, nil } - // We may just use the current beacon state - prevCurrentStateSlot := f.currentState.Slot() + // if we did so by long recconection, i am afraid we need to discard the current state. + if didLongRecconnection { + log.Debug("AddChainSegment: Resetting state reference as it was orphaned") + f.currentReferenceState.CopyInto(f.nextReferenceState) + } // Execute the state - if err := transition.TransitionState(newState, signedBlock, fullValidation); err != nil { + if invalidBlockErr := transition.TransitionState(newState, signedBlock, fullValidation); invalidBlockErr != nil { // Add block to list of invalid blocks - log.Debug("Invalid beacon block", "reason", err) + log.Debug("Invalid beacon block", "reason", invalidBlockErr) f.badBlocks[blockRoot] = struct{}{} - f.currentState = nil - return nil, InvalidBlock, err + f.nextReferenceState.CopyInto(f.currentState) + f.currentStateBlockRoot, err = f.nextReferenceState.BlockRoot() + if err != nil { + log.Error("[Caplin] Could not recover from invalid block") + } + return nil, InvalidBlock, invalidBlockErr } f.blocks[blockRoot] = signedBlock @@ -169,10 +178,11 @@ func (f *ForkGraph) AddChainSegment(signedBlock *cltypes.SignedBeaconBlock, full // Lastly add checkpoints to caches as well. f.currentJustifiedCheckpoints[blockRoot] = newState.CurrentJustifiedCheckpoint().Copy() f.finalizedCheckpoints[blockRoot] = newState.FinalizedCheckpoint().Copy() - if newState.Slot() > prevCurrentStateSlot { + if newState.Slot() > f.highestSeen { + f.highestSeen = newState.Slot() f.currentState = newState f.currentStateBlockRoot = blockRoot - if newState.Slot()%snapshotStateEverySlot == 0 && f.enabledPruning { + if newState.Slot()%snapshotStateEverySlot == 0 && f.nextReferenceState.Slot() > f.beaconCfg.SlotsPerEpoch && f.enabledPruning { if err := f.removeOldData(); err != nil { return nil, LogisticError, err } @@ -199,13 +209,7 @@ func (f *ForkGraph) getBlock(blockRoot libcommon.Hash) (*cltypes.SignedBeaconBlo return obj, has } -func (f *ForkGraph) GetState(blockRoot libcommon.Hash, alwaysCopy bool) (*state.BeaconState, error) { - if f.currentStateBlockRoot == blockRoot { - if alwaysCopy { - return f.currentState.Copy() - } - return f.currentState, nil - } +func (f *ForkGraph) GetState(blockRoot libcommon.Hash, alwaysCopy bool) (*state.BeaconState, bool, error) { // collect all blocks beetwen greatest extending node path and block. blocksInTheWay := []*cltypes.SignedBeaconBlock{} // Use the parent root as a reverse iterator. @@ -213,11 +217,11 @@ func (f *ForkGraph) GetState(blockRoot libcommon.Hash, alwaysCopy bool) (*state. // use the current reference state root as reconnectio reconnectionRootLong, err := f.currentReferenceState.BlockRoot() if err != nil { - return nil, err + return nil, false, err } reconnectionRootShort, err := f.nextReferenceState.BlockRoot() if err != nil { - return nil, err + return nil, false, err } // try and find the point of recconection for currentIteratorRoot != reconnectionRootLong && currentIteratorRoot != reconnectionRootShort { @@ -225,32 +229,41 @@ func (f *ForkGraph) GetState(blockRoot libcommon.Hash, alwaysCopy bool) (*state. if !isSegmentPresent { log.Debug("Could not retrieve state: Missing header", "missing", currentIteratorRoot, "longRecconection", libcommon.Hash(reconnectionRootLong), "shortRecconection", libcommon.Hash(reconnectionRootShort)) - return nil, nil + return nil, false, nil } blocksInTheWay = append(blocksInTheWay, block) currentIteratorRoot = block.Block.ParentRoot } + var copyReferencedState *state.BeaconState + didLongRecconnection := currentIteratorRoot == reconnectionRootLong && reconnectionRootLong != reconnectionRootShort + if f.currentStateBlockRoot == blockRoot { + if alwaysCopy { + s, err := f.currentState.Copy() + return s, didLongRecconnection, err + } + return f.currentState, didLongRecconnection, nil + } // Take a copy to the reference state. if currentIteratorRoot == reconnectionRootLong { copyReferencedState, err = f.currentReferenceState.Copy() if err != nil { - return nil, err + return nil, true, err } } else { copyReferencedState, err = f.nextReferenceState.Copy() if err != nil { - return nil, err + return nil, false, err } } // Traverse the blocks from top to bottom. for i := len(blocksInTheWay) - 1; i >= 0; i-- { if err := transition.TransitionState(copyReferencedState, blocksInTheWay[i], false); err != nil { - return nil, err + return nil, didLongRecconnection, err } } - return copyReferencedState, nil + return copyReferencedState, didLongRecconnection, nil } // updateChildren adds a new child to the parent node hash. @@ -278,10 +291,11 @@ func (f *ForkGraph) GetFinalizedCheckpoint(blockRoot libcommon.Hash) (solid.Chec return obj, has } +func (f *ForkGraph) MarkHeaderAsInvalid(blockRoot libcommon.Hash) { + f.badBlocks[blockRoot] = struct{}{} +} + func (f *ForkGraph) removeOldData() (err error) { - if f.nextReferenceState.Slot() < f.beaconCfg.SlotsPerEpoch { - return nil - } pruneSlot := f.nextReferenceState.Slot() - f.beaconCfg.SlotsPerEpoch oldRoots := make([]libcommon.Hash, 0, len(f.blocks)) for hash, signedBlock := range f.blocks { diff --git a/cl/phase1/forkchoice/fork_graph/fork_graph_test.go b/cl/phase1/forkchoice/fork_graph/fork_graph_test.go index f75fc44702e..38754bb3b7e 100644 --- a/cl/phase1/forkchoice/fork_graph/fork_graph_test.go +++ b/cl/phase1/forkchoice/fork_graph/fork_graph_test.go @@ -1,11 +1,10 @@ -package fork_graph_test +package fork_graph import ( _ "embed" "testing" "github.com/ledgerwatch/erigon/cl/phase1/core/state" - "github.com/ledgerwatch/erigon/cl/phase1/forkchoice/fork_graph" "github.com/ledgerwatch/erigon/cl/clparams" "github.com/ledgerwatch/erigon/cl/cltypes" @@ -29,22 +28,22 @@ func TestForkGraph(t *testing.T) { require.NoError(t, utils.DecodeSSZSnappy(blockB, block2, int(clparams.Phase0Version))) require.NoError(t, utils.DecodeSSZSnappy(blockC, block2, int(clparams.Phase0Version))) require.NoError(t, utils.DecodeSSZSnappy(anchorState, anchor, int(clparams.Phase0Version))) - graph := fork_graph.New(anchorState, false) + graph := New(anchorState, false) _, status, err := graph.AddChainSegment(blockA, true) require.NoError(t, err) + require.Equal(t, status, Success) + // Now make blockC a bad block + blockC.Block.ProposerIndex = 81214459 // some invalid thing + _, status, err = graph.AddChainSegment(blockC, true) + require.Error(t, err) + require.Equal(t, status, InvalidBlock) // Save current state hash - require.NoError(t, err) - require.Equal(t, status, fork_graph.Success) _, status, err = graph.AddChainSegment(blockB, true) require.NoError(t, err) - require.Equal(t, status, fork_graph.Success) + require.Equal(t, status, Success) // Try again with same should yield success _, status, err = graph.AddChainSegment(blockB, true) require.NoError(t, err) - require.Equal(t, status, fork_graph.PreValidated) - // Now make blockC a bad block - blockC.Block.ProposerIndex = 81214459 // some invalid thing - _, status, err = graph.AddChainSegment(blockC, true) - require.Error(t, err) - require.Equal(t, status, fork_graph.InvalidBlock) + require.Equal(t, status, PreValidated) + graph.removeOldData() } diff --git a/cl/phase1/forkchoice/forkchoice.go b/cl/phase1/forkchoice/forkchoice.go index beb28c30dc5..ecf75c52b2e 100644 --- a/cl/phase1/forkchoice/forkchoice.go +++ b/cl/phase1/forkchoice/forkchoice.go @@ -4,6 +4,7 @@ import ( "sync" "github.com/ledgerwatch/erigon/cl/cltypes/solid" + "github.com/ledgerwatch/erigon/cl/freezer" state2 "github.com/ledgerwatch/erigon/cl/phase1/core/state" "github.com/ledgerwatch/erigon/cl/phase1/execution_client" "github.com/ledgerwatch/erigon/cl/phase1/forkchoice/fork_graph" @@ -38,6 +39,8 @@ type ForkChoiceStore struct { mu sync.Mutex // EL engine execution_client.ExecutionEngine + // freezer + recorder freezer.Freezer } type LatestMessage struct { @@ -46,7 +49,7 @@ type LatestMessage struct { } // NewForkChoiceStore initialize a new store from the given anchor state, either genesis or checkpoint sync state. -func NewForkChoiceStore(anchorState *state2.BeaconState, engine execution_client.ExecutionEngine, enabledPruning bool) (*ForkChoiceStore, error) { +func NewForkChoiceStore(anchorState *state2.BeaconState, engine execution_client.ExecutionEngine, recorder freezer.Freezer, enabledPruning bool) (*ForkChoiceStore, error) { anchorRoot, err := anchorState.BlockRoot() if err != nil { return nil, err @@ -76,6 +79,7 @@ func NewForkChoiceStore(anchorState *state2.BeaconState, engine execution_client checkpointStates: checkpointStates, eth2Roots: eth2Roots, engine: engine, + recorder: recorder, }, nil } diff --git a/cl/phase1/forkchoice/on_attestation.go b/cl/phase1/forkchoice/on_attestation.go index b58e004c4a3..c5fc7ac3583 100644 --- a/cl/phase1/forkchoice/on_attestation.go +++ b/cl/phase1/forkchoice/on_attestation.go @@ -19,7 +19,7 @@ func (f *ForkChoiceStore) OnAttestation(attestation *solid.Attestation, fromBloc return err } target := data.Target() - if cachedIndicies, ok := cache.LoadAttestatingIndicies(&data); ok { + if cachedIndicies, ok := cache.LoadAttestatingIndicies(&data, attestation.AggregationBits()); ok { f.processAttestingIndicies(attestation, cachedIndicies) return nil } diff --git a/cl/phase1/forkchoice/on_attester_slashing.go b/cl/phase1/forkchoice/on_attester_slashing.go index bbb08ca5ba3..dc79717fa8c 100644 --- a/cl/phase1/forkchoice/on_attester_slashing.go +++ b/cl/phase1/forkchoice/on_attester_slashing.go @@ -19,7 +19,7 @@ func (f *ForkChoiceStore) OnAttesterSlashing(attesterSlashing *cltypes.AttesterS return fmt.Errorf("attestation data is not slashable") } // Retrieve justified state - s, err := f.forkGraph.GetState(f.justifiedCheckpoint.BlockRoot(), false) + s, _, err := f.forkGraph.GetState(f.justifiedCheckpoint.BlockRoot(), false) if err != nil { return err } diff --git a/cl/phase1/forkchoice/on_block.go b/cl/phase1/forkchoice/on_block.go index 71a5ffa85c5..dd32148824e 100644 --- a/cl/phase1/forkchoice/on_block.go +++ b/cl/phase1/forkchoice/on_block.go @@ -3,11 +3,12 @@ package forkchoice import ( "fmt" - "github.com/ledgerwatch/erigon/cl/phase1/core/transition" - "github.com/ledgerwatch/erigon/cl/phase1/forkchoice/fork_graph" + "github.com/ledgerwatch/log/v3" "github.com/ledgerwatch/erigon/cl/cltypes" - "github.com/ledgerwatch/log/v3" + "github.com/ledgerwatch/erigon/cl/freezer" + "github.com/ledgerwatch/erigon/cl/phase1/forkchoice/fork_graph" + "github.com/ledgerwatch/erigon/cl/transition/impl/eth2/statechange" ) func (f *ForkChoiceStore) OnBlock(block *cltypes.SignedBeaconBlock, newPayload, fullValidation bool) error { @@ -35,15 +36,21 @@ func (f *ForkChoiceStore) OnBlock(block *cltypes.SignedBeaconBlock, newPayload, case fork_graph.PreValidated: return nil case fork_graph.Success: + case fork_graph.BelowAnchor: + log.Debug("replay block", "code", status) default: return fmt.Errorf("replay block, code: %+v", status) } + var invalidBlock bool if newPayload && f.engine != nil { - if err := f.engine.NewPayload(block.Block.Body.ExecutionPayload); err != nil { + if invalidBlock, err = f.engine.NewPayload(block.Block.Body.ExecutionPayload); err != nil { log.Warn("newPayload failed", "err", err) return err } } + if invalidBlock { + f.forkGraph.MarkHeaderAsInvalid(blockRoot) + } if block.Block.Body.ExecutionPayload != nil { f.eth2Roots.Add(blockRoot, block.Block.Body.ExecutionPayload.BlockHash) } @@ -56,6 +63,11 @@ func (f *ForkChoiceStore) OnBlock(block *cltypes.SignedBeaconBlock, newPayload, if f.Slot() == block.Block.Slot && isBeforeAttestingInterval { f.proposerBoostRoot = blockRoot } + if lastProcessedState.Slot()%f.forkGraph.Config().SlotsPerEpoch == 0 { + if err := freezer.PutObjectSSZIntoFreezer("beaconState", "caplin_core", lastProcessedState.Slot(), lastProcessedState, f.recorder); err != nil { + return err + } + } // Update checkpoints f.updateCheckpoints(lastProcessedState.CurrentJustifiedCheckpoint().Copy(), lastProcessedState.FinalizedCheckpoint().Copy()) // First thing save previous values of the checkpoints (avoid memory copy of all states and ensure easy revert) @@ -66,7 +78,7 @@ func (f *ForkChoiceStore) OnBlock(block *cltypes.SignedBeaconBlock, newPayload, justificationBits = lastProcessedState.JustificationBits().Copy() ) // Eagerly compute unrealized justification and finality - if err := transition.ProcessJustificationBitsAndFinality(lastProcessedState); err != nil { + if err := statechange.ProcessJustificationBitsAndFinality(lastProcessedState); err != nil { return err } f.updateUnrealizedCheckpoints(lastProcessedState.CurrentJustifiedCheckpoint().Copy(), lastProcessedState.FinalizedCheckpoint().Copy()) diff --git a/cl/phase1/forkchoice/utils.go b/cl/phase1/forkchoice/utils.go index c7486713ee8..ada018f16f7 100644 --- a/cl/phase1/forkchoice/utils.go +++ b/cl/phase1/forkchoice/utils.go @@ -2,12 +2,11 @@ package forkchoice import ( "fmt" + "github.com/ledgerwatch/erigon/cl/transition" + libcommon "github.com/ledgerwatch/erigon-lib/common" "github.com/ledgerwatch/erigon/cl/cltypes/solid" "github.com/ledgerwatch/erigon/cl/phase1/core/state" - "github.com/ledgerwatch/erigon/cl/phase1/core/transition" - - libcommon "github.com/ledgerwatch/erigon-lib/common" "github.com/ledgerwatch/log/v3" ) @@ -74,7 +73,7 @@ func (f *ForkChoiceStore) getCheckpointState(checkpoint solid.Checkpoint) (*chec return state, nil } // If it is not in cache compute it and then put in cache. - baseState, err := f.forkGraph.GetState(checkpoint.BlockRoot(), true) + baseState, _, err := f.forkGraph.GetState(checkpoint.BlockRoot(), true) if err != nil { return nil, err } @@ -85,7 +84,7 @@ func (f *ForkChoiceStore) getCheckpointState(checkpoint solid.Checkpoint) (*chec if baseState.Slot() < f.computeStartSlotAtEpoch(checkpoint.Epoch()) { log.Debug("Long checkpoint detected") // If we require to change it then process the future epoch - if err := transition.ProcessSlots(baseState, f.computeStartSlotAtEpoch(checkpoint.Epoch())); err != nil { + if err := transition.DefaultMachine.ProcessSlots(baseState, f.computeStartSlotAtEpoch(checkpoint.Epoch())); err != nil { return nil, err } } diff --git a/cl/phase1/network/gossip_manager.go b/cl/phase1/network/gossip_manager.go index c51c16670ae..4768bf0e7f9 100644 --- a/cl/phase1/network/gossip_manager.go +++ b/cl/phase1/network/gossip_manager.go @@ -6,6 +6,7 @@ import ( "github.com/VictoriaMetrics/metrics" "github.com/ledgerwatch/erigon/cl/cltypes/solid" + "github.com/ledgerwatch/erigon/cl/freezer" "github.com/ledgerwatch/erigon/cl/phase1/forkchoice" libcommon "github.com/ledgerwatch/erigon-lib/common" @@ -23,6 +24,7 @@ import ( type GossipManager struct { ctx context.Context + recorder freezer.Freezer forkChoice *forkchoice.ForkChoiceStore sentinel sentinel.SentinelClient // configs @@ -30,13 +32,15 @@ type GossipManager struct { genesisConfig *clparams.GenesisConfig } -func NewGossipReceiver(ctx context.Context, s sentinel.SentinelClient, forkChoice *forkchoice.ForkChoiceStore, beaconConfig *clparams.BeaconChainConfig, genesisConfig *clparams.GenesisConfig) *GossipManager { +func NewGossipReceiver(ctx context.Context, s sentinel.SentinelClient, forkChoice *forkchoice.ForkChoiceStore, + beaconConfig *clparams.BeaconChainConfig, genesisConfig *clparams.GenesisConfig, recorder freezer.Freezer) *GossipManager { return &GossipManager{ sentinel: s, forkChoice: forkChoice, ctx: ctx, beaconConfig: beaconConfig, genesisConfig: genesisConfig, + recorder: recorder, } } @@ -66,7 +70,7 @@ func (g *GossipManager) onRecv(data *sentinel.GossipData, l log.Ctx) error { if block.Block.Slot+maxGossipSlotThreshold < currentSlotByTime { return nil } - if block.Block.Slot+maxGossipSlotThreshold == currentSlotByTime { + if block.Block.Slot == currentSlotByTime { if _, err := g.sentinel.PublishGossip(g.ctx, data); err != nil { log.Debug("failed publish gossip", "err", err) } @@ -87,6 +91,10 @@ func (g *GossipManager) onRecv(data *sentinel.GossipData, l log.Ctx) error { "numGC", m.NumGC, ) + if err := freezer.PutObjectSSZIntoFreezer("signedBeaconBlock", "caplin_core", block.Block.Slot, block, g.recorder); err != nil { + return err + } + peers := metrics.GetOrCreateGauge("caplin_peer_count", func() float64 { return float64(count.Amount) }) diff --git a/cl/phase1/stages/stage_fork_choice.go b/cl/phase1/stages/stage_fork_choice.go index 1dba40da64d..66ff058945c 100644 --- a/cl/phase1/stages/stage_fork_choice.go +++ b/cl/phase1/stages/stage_fork_choice.go @@ -5,6 +5,7 @@ import ( "runtime" "time" + "github.com/ledgerwatch/erigon/cl/freezer" "github.com/ledgerwatch/erigon/cl/phase1/core/state" "github.com/ledgerwatch/erigon/cl/phase1/execution_client" "github.com/ledgerwatch/erigon/cl/phase1/forkchoice" @@ -30,13 +31,22 @@ type StageForkChoiceCfg struct { state *state.BeaconState gossipManager *network2.GossipManager forkChoice *forkchoice.ForkChoiceStore + caplinFreezer freezer.Freezer } const minPeersForDownload = 2 const minPeersForSyncStart = 4 +var ( + freezerNameSpacePrefix = "" + blockObjectName = "singedBeaconBlock" + stateObjectName = "beaconState" + gossipAction = "gossip" +) + func StageForkChoice(db kv.RwDB, downloader *network2.ForwardBeaconDownloader, genesisCfg *clparams.GenesisConfig, - beaconCfg *clparams.BeaconChainConfig, state *state.BeaconState, executionClient *execution_client.ExecutionClient, gossipManager *network2.GossipManager, forkChoice *forkchoice.ForkChoiceStore) StageForkChoiceCfg { + beaconCfg *clparams.BeaconChainConfig, state *state.BeaconState, executionClient *execution_client.ExecutionClient, gossipManager *network2.GossipManager, + forkChoice *forkchoice.ForkChoiceStore, caplinFreezer freezer.Freezer) StageForkChoiceCfg { return StageForkChoiceCfg{ db: db, downloader: downloader, @@ -46,6 +56,7 @@ func StageForkChoice(db kv.RwDB, downloader *network2.ForwardBeaconDownloader, g executionClient: executionClient, gossipManager: gossipManager, forkChoice: forkChoice, + caplinFreezer: caplinFreezer, } } @@ -94,9 +105,13 @@ func startDownloadService(s *stagedsync.StageState, cfg StageForkChoiceCfg) { cfg.downloader.SetHighestProcessedSlot(cfg.state.Slot()) cfg.downloader.SetProcessFunction(func(highestSlotProcessed uint64, _ libcommon.Hash, newBlocks []*cltypes.SignedBeaconBlock) (uint64, libcommon.Hash, error) { for _, block := range newBlocks { + if err := freezer.PutObjectSSZIntoFreezer("signedBeaconBlock", "caplin_core", block.Block.Slot, block, cfg.caplinFreezer); err != nil { + return highestSlotProcessed, libcommon.Hash{}, err + } + sendForckchoice := utils.GetCurrentSlot(cfg.genesisCfg.GenesisTime, cfg.beaconCfg.SecondsPerSlot) == block.Block.Slot - if err := cfg.forkChoice.OnBlock(block, false, true); err != nil { + if err := cfg.forkChoice.OnBlock(block, sendForckchoice, true); err != nil { log.Warn("Could not download block", "reason", err, "slot", block.Block.Slot) return highestSlotProcessed, libcommon.Hash{}, err } diff --git a/cl/phase1/stages/stages.go b/cl/phase1/stages/stages.go index 95136f3f36b..4004fb9d30c 100644 --- a/cl/phase1/stages/stages.go +++ b/cl/phase1/stages/stages.go @@ -81,7 +81,7 @@ func NewConsensusStagedSync(ctx context.Context, ctx, StageHistoryReconstruction(db, backwardDownloader, genesisCfg, beaconCfg, beaconDBCfg, state, tmpdir, executionClient), StageBeaconState(db, beaconCfg, state, executionClient), - StageForkChoice(db, forwardDownloader, genesisCfg, beaconCfg, state, executionClient, gossipManager, forkChoice), + StageForkChoice(db, forwardDownloader, genesisCfg, beaconCfg, state, executionClient, gossipManager, forkChoice, nil), ), ConsensusUnwindOrder, ConsensusPruneOrder, diff --git a/cl/phase1/stages/stages_beacon_state.go b/cl/phase1/stages/stages_beacon_state.go index cee0fa059ca..eeb043d7281 100644 --- a/cl/phase1/stages/stages_beacon_state.go +++ b/cl/phase1/stages/stages_beacon_state.go @@ -2,10 +2,10 @@ package stages import ( "context" + "github.com/ledgerwatch/erigon/cl/transition" "github.com/ledgerwatch/erigon/cl/phase1/core/rawdb" state2 "github.com/ledgerwatch/erigon/cl/phase1/core/state" - "github.com/ledgerwatch/erigon/cl/phase1/core/transition" "github.com/ledgerwatch/erigon/cl/phase1/execution_client" libcommon "github.com/ledgerwatch/erigon-lib/common" diff --git a/cl/spectest/consensus_tests/epoch_processing.go b/cl/spectest/consensus_tests/epoch_processing.go index ebebadd653e..eb3b0e4c527 100644 --- a/cl/spectest/consensus_tests/epoch_processing.go +++ b/cl/spectest/consensus_tests/epoch_processing.go @@ -1,12 +1,12 @@ package consensus_tests import ( - "github.com/ledgerwatch/erigon/cl/phase1/core/state" - transition2 "github.com/ledgerwatch/erigon/cl/phase1/core/transition" + "github.com/ledgerwatch/erigon/cl/transition/impl/eth2/statechange" "io/fs" "os" "testing" + "github.com/ledgerwatch/erigon/cl/phase1/core/state" "github.com/ledgerwatch/erigon/spectest" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -51,58 +51,57 @@ func (b *EpochProcessing) Run(t *testing.T, root fs.FS, c spectest.TestCase) (er } var effectiveBalancesUpdateTest = NewEpochProcessing(func(s *state.BeaconState) error { - return transition2.ProcessEffectiveBalanceUpdates(s) + return statechange.ProcessEffectiveBalanceUpdates(s) }) var eth1DataResetTest = NewEpochProcessing(func(s *state.BeaconState) error { - transition2.ProcessEth1DataReset(s) + statechange.ProcessEth1DataReset(s) return nil }) var historicalRootsUpdateTest = NewEpochProcessing(func(s *state.BeaconState) error { - transition2.ProcessHistoricalRootsUpdate(s) - return nil + return statechange.ProcessHistoricalRootsUpdate(s) }) var inactivityUpdateTest = NewEpochProcessing(func(s *state.BeaconState) error { - return transition2.ProcessInactivityScores(s) + return statechange.ProcessInactivityScores(s) }) var justificationFinalizationTest = NewEpochProcessing(func(s *state.BeaconState) error { - return transition2.ProcessJustificationBitsAndFinality(s) + return statechange.ProcessJustificationBitsAndFinality(s) }) var participationFlagUpdatesTest = NewEpochProcessing(func(s *state.BeaconState) error { - transition2.ProcessParticipationFlagUpdates(s) + statechange.ProcessParticipationFlagUpdates(s) return nil }) var participationRecordUpdatesTest = NewEpochProcessing(func(s *state.BeaconState) error { - return transition2.ProcessParticipationRecordUpdates(s) + return statechange.ProcessParticipationRecordUpdates(s) }) var randaoMixesTest = NewEpochProcessing(func(s *state.BeaconState) error { - transition2.ProcessRandaoMixesReset(s) + statechange.ProcessRandaoMixesReset(s) return nil }) var registryUpdatesTest = NewEpochProcessing(func(s *state.BeaconState) error { - return transition2.ProcessRegistryUpdates(s) + return statechange.ProcessRegistryUpdates(s) }) var rewardsAndPenaltiesTest = NewEpochProcessing(func(s *state.BeaconState) error { - return transition2.ProcessRewardsAndPenalties(s) + return statechange.ProcessRewardsAndPenalties(s) }) var slashingsTest = NewEpochProcessing(func(s *state.BeaconState) error { - return transition2.ProcessSlashings(s) + return statechange.ProcessSlashings(s) }) var slashingsResetTest = NewEpochProcessing(func(s *state.BeaconState) error { - transition2.ProcessSlashingsReset(s) + statechange.ProcessSlashingsReset(s) return nil }) var recordsResetTest = NewEpochProcessing(func(s *state.BeaconState) error { - transition2.ProcessParticipationRecordUpdates(s) + statechange.ProcessParticipationRecordUpdates(s) return nil }) diff --git a/cl/spectest/consensus_tests/finality.go b/cl/spectest/consensus_tests/finality.go index eb7ed1b1a95..1c72fcfb059 100644 --- a/cl/spectest/consensus_tests/finality.go +++ b/cl/spectest/consensus_tests/finality.go @@ -2,7 +2,7 @@ package consensus_tests import ( "fmt" - "github.com/ledgerwatch/erigon/cl/phase1/core/transition" + "github.com/ledgerwatch/erigon/cl/transition/machine" "io/fs" "testing" @@ -25,7 +25,7 @@ var FinalityFinality = spectest.HandlerFunc(func(t *testing.T, root fs.FS, c spe } startSlot := testState.Slot() for _, block := range blocks { - if err := transition.TransitionState(testState, block, true); err != nil { + if err := machine.TransitionState(c.Machine, testState, block); err != nil { require.NoError(t, fmt.Errorf("cannot transition state: %w. slot=%d. start_slot=%d", err, block.Block.Slot, startSlot)) } } diff --git a/cl/spectest/consensus_tests/fork_choice.go b/cl/spectest/consensus_tests/fork_choice.go index fd794841e30..6ee5c4e5c00 100644 --- a/cl/spectest/consensus_tests/fork_choice.go +++ b/cl/spectest/consensus_tests/fork_choice.go @@ -150,7 +150,7 @@ func (b *ForkChoice) Run(t *testing.T, root fs.FS, c spectest.TestCase) (err err anchorState, err := spectest.ReadBeaconState(root, c.Version(), "anchor_state.ssz_snappy") require.NoError(t, err) - forkStore, err := forkchoice.NewForkChoiceStore(anchorState, nil, false) + forkStore, err := forkchoice.NewForkChoiceStore(anchorState, nil, nil, false) require.NoError(t, err) var steps []ForkChoiceStep diff --git a/cl/spectest/consensus_tests/operations.go b/cl/spectest/consensus_tests/operations.go index c4c1c755dcc..1aaca37cc04 100644 --- a/cl/spectest/consensus_tests/operations.go +++ b/cl/spectest/consensus_tests/operations.go @@ -7,7 +7,6 @@ import ( "testing" "github.com/ledgerwatch/erigon/cl/cltypes/solid" - transition2 "github.com/ledgerwatch/erigon/cl/phase1/core/transition" "github.com/ledgerwatch/erigon/cl/cltypes" "github.com/ledgerwatch/erigon/spectest" @@ -39,7 +38,7 @@ func operationAttestationHandler(t *testing.T, root fs.FS, c spectest.TestCase) if err := spectest.ReadSszOld(root, att, c.Version(), attestationFileName); err != nil { return err } - if err := transition2.ProcessAttestations(preState, solid.NewDynamicListSSZFromList([]*solid.Attestation{att}, 128), true); err != nil { + if err := c.Machine.ProcessAttestations(preState, solid.NewDynamicListSSZFromList([]*solid.Attestation{att}, 128)); err != nil { if expectedError { return nil } @@ -69,7 +68,7 @@ func operationAttesterSlashingHandler(t *testing.T, root fs.FS, c spectest.TestC if err := spectest.ReadSszOld(root, att, c.Version(), attesterSlashingFileName); err != nil { return err } - if err := transition2.ProcessAttesterSlashing(preState, att); err != nil { + if err := c.Machine.ProcessAttesterSlashing(preState, att); err != nil { if expectedError { return nil } @@ -99,7 +98,7 @@ func operationProposerSlashingHandler(t *testing.T, root fs.FS, c spectest.TestC if err := spectest.ReadSszOld(root, att, c.Version(), proposerSlashingFileName); err != nil { return err } - if err := transition2.ProcessProposerSlashing(preState, att); err != nil { + if err := c.Machine.ProcessProposerSlashing(preState, att); err != nil { if expectedError { return nil } @@ -129,7 +128,7 @@ func operationBlockHeaderHandler(t *testing.T, root fs.FS, c spectest.TestCase) if err := spectest.ReadSszOld(root, block, c.Version(), blockFileName); err != nil { return err } - if err := transition2.ProcessBlockHeader(preState, block, true); err != nil { + if err := c.Machine.ProcessBlockHeader(preState, block); err != nil { if expectedError { return nil } @@ -159,7 +158,7 @@ func operationDepositHandler(t *testing.T, root fs.FS, c spectest.TestCase) erro if err := spectest.ReadSszOld(root, deposit, c.Version(), depositFileName); err != nil { return err } - if err := transition2.ProcessDeposit(preState, deposit, true); err != nil { + if err := c.Machine.ProcessDeposit(preState, deposit); err != nil { if expectedError { return nil } @@ -189,7 +188,7 @@ func operationSyncAggregateHandler(t *testing.T, root fs.FS, c spectest.TestCase if err := spectest.ReadSszOld(root, agg, c.Version(), syncAggregateFileName); err != nil { return err } - if err := transition2.ProcessSyncAggregate(preState, agg, true); err != nil { + if err := c.Machine.ProcessSyncAggregate(preState, agg); err != nil { if expectedError { return nil } @@ -219,7 +218,7 @@ func operationVoluntaryExitHandler(t *testing.T, root fs.FS, c spectest.TestCase if err := spectest.ReadSszOld(root, vo, c.Version(), voluntaryExitFileName); err != nil { return err } - if err := transition2.ProcessVoluntaryExit(preState, vo, true); err != nil { + if err := c.Machine.ProcessVoluntaryExit(preState, vo); err != nil { if expectedError { return nil } @@ -249,7 +248,7 @@ func operationWithdrawalHandler(t *testing.T, root fs.FS, c spectest.TestCase) e if err := spectest.ReadSszOld(root, executionPayload, c.Version(), executionPayloadFileName); err != nil { return err } - if err := transition2.ProcessWithdrawals(preState, executionPayload.Withdrawals, true); err != nil { + if err := c.Machine.ProcessWithdrawals(preState, executionPayload.Withdrawals); err != nil { if expectedError { return nil } @@ -279,7 +278,7 @@ func operationSignedBlsChangeHandler(t *testing.T, root fs.FS, c spectest.TestCa if err := spectest.ReadSszOld(root, change, c.Version(), addressChangeFileName); err != nil { return err } - if err := transition2.ProcessBlsToExecutionChange(preState, change, true); err != nil { + if err := c.Machine.ProcessBlsToExecutionChange(preState, change); err != nil { if expectedError { return nil } diff --git a/cl/spectest/consensus_tests/sanity.go b/cl/spectest/consensus_tests/sanity.go index ddc7182227b..493f3ddcf4e 100644 --- a/cl/spectest/consensus_tests/sanity.go +++ b/cl/spectest/consensus_tests/sanity.go @@ -1,12 +1,11 @@ package consensus_tests import ( + "github.com/ledgerwatch/erigon/cl/transition/machine" "io/fs" "os" "testing" - "github.com/ledgerwatch/erigon/cl/phase1/core/transition" - "github.com/ledgerwatch/erigon/cl/cltypes" "github.com/ledgerwatch/erigon/spectest" "github.com/stretchr/testify/assert" @@ -25,7 +24,7 @@ var SanitySlots = spectest.HandlerFunc(func(t *testing.T, root fs.FS, c spectest expectedState, err := spectest.ReadBeaconState(root, c.Version(), spectest.PostSsz) require.NoError(t, err) - err = transition.ProcessSlots(testState, expectedState.Slot()) + err = c.Machine.ProcessSlots(testState, expectedState.Slot()) require.NoError(t, err) expectedRoot, err := expectedState.HashSSZ() @@ -65,7 +64,7 @@ var SanityBlocks = spectest.HandlerFunc(func(t *testing.T, root fs.FS, c spectes var block *cltypes.SignedBeaconBlock for _, block = range blocks { - err = transition.TransitionState(testState, block, true) + err = machine.TransitionState(c.Machine, testState, block) if err != nil { break } diff --git a/cl/spectest/consensus_tests/transition.go b/cl/spectest/consensus_tests/transition.go index e9c0d036abb..105ab477fb9 100644 --- a/cl/spectest/consensus_tests/transition.go +++ b/cl/spectest/consensus_tests/transition.go @@ -2,7 +2,7 @@ package consensus_tests import ( "fmt" - "github.com/ledgerwatch/erigon/cl/phase1/core/transition" + "github.com/ledgerwatch/erigon/cl/transition/machine" "io/fs" "testing" @@ -59,7 +59,7 @@ func (b *TransitionCore) Run(t *testing.T, root fs.FS, c spectest.TestCase) (err break } blockIndex++ - if err := transition.TransitionState(startState, block, true); err != nil { + if err := machine.TransitionState(c.Machine, startState, block); err != nil { return fmt.Errorf("cannot transition state: %s. slot=%d. start_slot=%d", err, block.Block.Slot, startSlot) } } diff --git a/cl/spectest/tests_test.go b/cl/spectest/tests_test.go index 8147068a3a8..db4fe28c987 100644 --- a/cl/spectest/tests_test.go +++ b/cl/spectest/tests_test.go @@ -1,17 +1,16 @@ -//go:build spectest - -// once all tests are implemented, we can allow this test in the ci build path - package spectest import ( - "github.com/ledgerwatch/erigon/cl/spectest/consensus_tests" "os" "testing" + "github.com/ledgerwatch/erigon/cl/transition" + + "github.com/ledgerwatch/erigon/cl/spectest/consensus_tests" + "github.com/ledgerwatch/erigon/spectest" ) func Test(t *testing.T) { - spectest.RunCases(t, consensus_tests.TestFormats, os.DirFS("./tests")) + spectest.RunCases(t, consensus_tests.TestFormats, transition.ValidatingMachine, os.DirFS("./tests")) } diff --git a/cl/ssz/ssz_test.go b/cl/ssz/ssz_test.go index a68f9259d2d..19f53c699e5 100644 --- a/cl/ssz/ssz_test.go +++ b/cl/ssz/ssz_test.go @@ -16,10 +16,10 @@ var beaconState []byte func TestEncodeDecode(t *testing.T) { bs := state.New(&clparams.MainnetBeaconConfig) - require.NoError(t, utils.DecodeSSZSnappy(bs, beaconState, int(clparams.DenebVersion))) + require.NoError(t, utils.DecodeSSZSnappy(bs, beaconState, int(clparams.CapellaVersion))) root, err := bs.HashSSZ() require.NoError(t, err) - require.Equal(t, common.Hash(root), common.HexToHash("0x7d085d9f2cce04eefb4c0aafad744fd2ce4ff962b2c3589fda53aab084171406")) + require.Equal(t, common.Hash(root), common.HexToHash("0x36eb1bb5b4616f9d5046b2a719a8c4217f3dc40c1b7dff7abcc55c47f142a78b")) d, err := bs.EncodeSSZ(nil) require.NoError(t, err) dec, _ := utils.DecompressSnappy(beaconState) diff --git a/cl/ssz/testdata/serialized.ssz_snappy b/cl/ssz/testdata/serialized.ssz_snappy index 1f97449ede20fc5c4c501eac9c2c26cebf0bdb4d..027ec9bb73fae38a9027b6bad1e262779a981434 100644 GIT binary patch literal 204448 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%0Dvs5N{EOKc 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�f+?Yv~we#Ub9HZYKHfX3zrLGm*|Lxw@;Tj z7|&!$+YI*RSGkqo9lcP5f~A91pPhe#3bM#N%;T9bcP))$k=i^GNIYWD)lv!WFZ}zG zl^lUQ#=sL_MSt}_S-97Aes@Qpi8?KzrYWGzoGU2%tbR}Wh}PSIk6MGHF0=V!-Db?_ zaOx|?eQZ0E_X;dce!`id#BnQ#7B3Qk?3{tFcb%&G zM$Ld45cz)OEVw@6IXms%W^mJ6P1s0_?Od?Ypuw$1ER0sJ8n5V_hSF~#W#sg=j)BGc z%I-zbo^-_-A)4p7(VZ2R4~P;#U7I>+>VH{cjxbUQ+PAL99T5Nd8=XHD+ytq6etfFk|%29P>r7Cvmt4Ay95rF+ZL4Mj<|fo?Uo#Td(h|6M2L#I`?q4P(1yG<~d~ zSo>4>B5)^UoyJ4HUEF+miqZp7gfCjtcTfPyk+!|3mjp)wDrB6m+ zXV=d(`<4tw4-Y0e;g|vwRIK1ooLOE^E;hlFCeM~uH&0pu_c`1@;Opp}1=>LLTzU$% z-2mUADF;PP#k3kC$~4p zJJsS`6g?|v*;|}PRK_8a>XRf9M7EOZ}e075;#h!r2 zlwj^OX0XZGo5cXOF8g*}9E#xTFQzs6ruqN*qIheEtK^JG0rIqZ(R&*2=2g?tFk4DT z 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 z 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�iy47&xgFI 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

-+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 z

lrOFFkFZ7aY8zc|;vCb{)MV=Z!H!Z* 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