From e54c0e469dce97d338957661700d0d78f60f9d96 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Wed, 23 Oct 2024 14:26:11 +0200 Subject: [PATCH 01/58] commit --- cmd/integration/commands/refetence_db.go | 1 + cmd/pics/state.go | 1 + core/rawdb/accessors_indexes.go | 38 ++++++++-- core/rawdb/rawdbreset/reset_stages.go | 3 + erigon-lib/kv/tables.go | 3 +- eth/stagedsync/stage_txlookup.go | 72 +++++++++++++++++++ turbo/services/interfaces.go | 1 + .../snapshotsync/freezeblocks/block_reader.go | 47 +++++++++++- 8 files changed, 158 insertions(+), 8 deletions(-) diff --git a/cmd/integration/commands/refetence_db.go b/cmd/integration/commands/refetence_db.go index 958bf2b8e8b..f2813fb71c1 100644 --- a/cmd/integration/commands/refetence_db.go +++ b/cmd/integration/commands/refetence_db.go @@ -58,6 +58,7 @@ var stateBuckets = []string{ kv.E2AccountsHistory, kv.E2StorageHistory, kv.TxLookup, + kv.TxIDLookUp, } var cmdWarmup = &cobra.Command{ diff --git a/cmd/pics/state.go b/cmd/pics/state.go index 7da9a520212..95de7d5c11a 100644 --- a/cmd/pics/state.go +++ b/cmd/pics/state.go @@ -97,6 +97,7 @@ var bucketLabels = map[string]string{ kv.BlockBody: "Block Bodies", kv.HeaderNumber: "Header Numbers", kv.TxLookup: "Transaction Index", + kv.TxIDLookUp: "Transaction ID and Info By Hash", kv.Code: "Code Of Contracts", kv.SyncStageProgress: "Sync Progress", kv.PlainState: "Plain State", diff --git a/core/rawdb/accessors_indexes.go b/core/rawdb/accessors_indexes.go index cc672a33fe8..cf8ea9a8074 100644 --- a/core/rawdb/accessors_indexes.go +++ b/core/rawdb/accessors_indexes.go @@ -20,6 +20,7 @@ package rawdb import ( + "encoding/binary" "math/big" libcommon "github.com/erigontech/erigon-lib/common" @@ -40,15 +41,15 @@ type TxLookupEntry struct { // ReadTxLookupEntry retrieves the positional metadata associated with a transaction // hash to allow retrieving the transaction or receipt by hash. func ReadTxLookupEntry(db kv.Getter, txnHash libcommon.Hash) (*uint64, error) { - data, err := db.GetOne(kv.TxLookup, txnHash.Bytes()) + dataBlockNum, err := db.GetOne(kv.TxLookup, txnHash.Bytes()) if err != nil { return nil, err } - if len(data) == 0 { + if len(dataBlockNum) == 0 { return nil, nil } - number := new(big.Int).SetBytes(data).Uint64() - return &number, nil + numberBlockNum := new(big.Int).SetBytes(dataBlockNum).Uint64() + return &numberBlockNum, nil } // WriteTxLookupEntries stores a positional metadata for every transaction from @@ -66,3 +67,32 @@ func WriteTxLookupEntries(db kv.Putter, block *types.Block) { func DeleteTxLookupEntry(db kv.Putter, hash libcommon.Hash) error { return db.Delete(kv.TxLookup, hash.Bytes()) } + +// ReadTxIDLookupEntry retrieves the positional metadata associated with a transaction +// hash to allow retrieving the transaction or receipt by hash. +func ReadTxIDLookupEntry(db kv.Getter, txnHash libcommon.Hash) (*uint64, error) { + data, err := db.GetOne(kv.TxIDLookUp, txnHash.Bytes()) + if err != nil { + return nil, err + } + if len(data) == 0 { + return nil, nil + } + number := new(big.Int).SetBytes(data).Uint64() + return &number, nil +} + +// WriteTxIDLookupEntries stores a positional metadata for every transaction from +// a block, enabling hash based transaction and receipt lookups. +func WriteTxIDLookupEntries(db kv.Putter, txn types.Transaction, txNum uint64) { + data := make([]byte, 8) + binary.BigEndian.PutUint64(data, txNum) + if err := db.Put(kv.TxIDLookUp, txn.Hash().Bytes(), data); err != nil { + log.Crit("Failed to store transaction id lookup entry", "err", err) + } +} + +// DeleteTxIDLookupEntry removes all transaction data associated with a hash. +func DeleteTxIDLookupEntry(db kv.Putter, hash libcommon.Hash) error { + return db.Delete(kv.TxIDLookUp, hash.Bytes()) +} diff --git a/core/rawdb/rawdbreset/reset_stages.go b/core/rawdb/rawdbreset/reset_stages.go index 9cd23a3232b..64a33edfd55 100644 --- a/core/rawdb/rawdbreset/reset_stages.go +++ b/core/rawdb/rawdbreset/reset_stages.go @@ -177,6 +177,9 @@ func ResetTxLookup(tx kv.RwTx) error { if err := tx.ClearBucket(kv.TxLookup); err != nil { return err } + if err := tx.ClearBucket(kv.TxIDLookUp); err != nil { + return err + } if err := stages.SaveStageProgress(tx, stages.TxLookup, 0); err != nil { return err } diff --git a/erigon-lib/kv/tables.go b/erigon-lib/kv/tables.go index 4391e16bb00..5f82eabb39f 100644 --- a/erigon-lib/kv/tables.go +++ b/erigon-lib/kv/tables.go @@ -292,7 +292,8 @@ const ( CallFromIndex = "CallFromIndex" CallToIndex = "CallToIndex" - TxLookup = "BlockTransactionLookup" // hash -> transaction/receipt lookup metadata + TxLookup = "BlockTransactionLookup" // hash -> transaction/receipt lookup metadata + TxIDLookUp = "TxIDLookup" ConfigTable = "Config" // config prefix for the db diff --git a/eth/stagedsync/stage_txlookup.go b/eth/stagedsync/stage_txlookup.go index cee87fa799c..22e54da87a7 100644 --- a/eth/stagedsync/stage_txlookup.go +++ b/eth/stagedsync/stage_txlookup.go @@ -20,6 +20,7 @@ import ( "context" "encoding/binary" "fmt" + "github.com/erigontech/erigon-lib/kv/rawdbv3" "math/big" "github.com/erigontech/erigon-lib/log/v3" @@ -113,6 +114,11 @@ func SpawnTxLookup(s *StageState, tx kv.RwTx, toBlock uint64, cfg TxLookupCfg, c return fmt.Errorf("txnLookupTransform: %w", err) } + // etl.Transform uses ExtractEndKey as exclusive bound, therefore endBlock + 1 + if err = txnNumLookupTransform(logPrefix, tx, startBlock, endBlock+1, ctx, cfg, logger); err != nil { + return fmt.Errorf("txnNumLookupTransform: %w", err) + } + if cfg.borConfig != nil { if err = borTxnLookupTransform(logPrefix, tx, startBlock, endBlock+1, ctx.Done(), cfg, logger); err != nil { return fmt.Errorf("borTxnLookupTransform: %w", err) @@ -163,6 +169,42 @@ func txnLookupTransform(logPrefix string, tx kv.RwTx, blockFrom, blockTo uint64, }, logger) } +// txnNumLookupTransform - [startKey, endKey) +func txnNumLookupTransform(logPrefix string, tx kv.RwTx, blockFrom, blockTo uint64, ctx context.Context, cfg TxLookupCfg, logger log.Logger) (err error) { + bigNum := new(big.Int) + return etl.Transform(logPrefix, tx, kv.HeaderCanonical, kv.TxIDLookUp, cfg.tmpdir, func(k, v []byte, next etl.ExtractNextFunc) error { + blocknum, blockHash := binary.BigEndian.Uint64(k), libcommon.CastToHash(v) + body, err := cfg.blockReader.BodyWithTransactions(ctx, tx, blockHash, blocknum) + if err != nil { + return err + } + if body == nil { // tolerate such an error, because likely it's corner-case - and not critical one + log.Warn(fmt.Sprintf("[%s] transform: empty block body %d, hash %x", logPrefix, blocknum, v)) + return nil + } + + txNum, err := rawdbv3.TxNums.Min(tx, blocknum) + if err != nil { + return err + } + for i, txn := range body.Transactions { + txNumBytes := bigNum.SetUint64(txNum + uint64(i)).Bytes() + if err := next(k, txn.Hash().Bytes(), txNumBytes); err != nil { + return err + } + } + + return nil + }, etl.IdentityLoadFunc, etl.TransformArgs{ + Quit: ctx.Done(), + ExtractStartKey: hexutility.EncodeTs(blockFrom), + ExtractEndKey: hexutility.EncodeTs(blockTo), + LogDetailsExtract: func(k, v []byte) (additionalLogArguments []interface{}) { + return []interface{}{"block", binary.BigEndian.Uint64(k)} + }, + }, logger) +} + // txnLookupTransform - [startKey, endKey) func borTxnLookupTransform(logPrefix string, tx kv.RwTx, blockFrom, blockTo uint64, quitCh <-chan struct{}, cfg TxLookupCfg, logger log.Logger) error { bigNum := new(big.Int) @@ -308,6 +350,36 @@ func deleteTxLookupRange(tx kv.RwTx, logPrefix string, blockFrom, blockTo uint64 }, logger) } +// deleteTxNumLookupRange - [blockFrom, blockTo) +func deleteTxNumLookupRange(tx kv.RwTx, logPrefix string, blockFrom, blockTo uint64, ctx context.Context, cfg TxLookupCfg, logger log.Logger) error { + return etl.Transform(logPrefix, tx, kv.HeaderCanonical, kv.TxIDLookUp, cfg.tmpdir, func(k, v []byte, next etl.ExtractNextFunc) error { + blocknum, blockHash := binary.BigEndian.Uint64(k), libcommon.CastToHash(v) + body, err := cfg.blockReader.BodyWithTransactions(ctx, tx, blockHash, blocknum) + if err != nil { + return err + } + if body == nil { + log.Debug("TxLookup pruning, empty block body", "height", blocknum) + return nil + } + + for _, txn := range body.Transactions { + if err := next(k, txn.Hash().Bytes(), nil); err != nil { + return err + } + } + + return nil + }, etl.IdentityLoadFunc, etl.TransformArgs{ + Quit: ctx.Done(), + ExtractStartKey: hexutility.EncodeTs(blockFrom), + ExtractEndKey: hexutility.EncodeTs(blockTo), + LogDetailsExtract: func(k, v []byte) (additionalLogArguments []interface{}) { + return []interface{}{"block", binary.BigEndian.Uint64(k)} + }, + }, logger) +} + // deleteTxLookupRange - [blockFrom, blockTo) func deleteBorTxLookupRange(tx kv.RwTx, logPrefix string, blockFrom, blockTo uint64, ctx context.Context, cfg TxLookupCfg, logger log.Logger) error { return etl.Transform(logPrefix, tx, kv.HeaderCanonical, kv.BorTxLookup, cfg.tmpdir, func(k, v []byte, next etl.ExtractNextFunc) error { diff --git a/turbo/services/interfaces.go b/turbo/services/interfaces.go index dcb7ca661dd..1cf195aa3d5 100644 --- a/turbo/services/interfaces.go +++ b/turbo/services/interfaces.go @@ -95,6 +95,7 @@ type BodyReader interface { type TxnReader interface { TxnLookup(ctx context.Context, tx kv.Getter, txnHash common.Hash) (uint64, bool, error) + //TxnNumLookup(ctx context.Context, tx kv.Getter, txnHash common.Hash) (uint64, bool, error) TxnByIdxInBlock(ctx context.Context, tx kv.Getter, blockNum uint64, i int) (txn types.Transaction, err error) RawTransactions(ctx context.Context, tx kv.Getter, fromBlock, toBlock uint64) (txs [][]byte, err error) FirstTxnNumNotInSnapshots() uint64 diff --git a/turbo/snapshotsync/freezeblocks/block_reader.go b/turbo/snapshotsync/freezeblocks/block_reader.go index fb332ccd477..f4b6986cd13 100644 --- a/turbo/snapshotsync/freezeblocks/block_reader.go +++ b/turbo/snapshotsync/freezeblocks/block_reader.go @@ -1112,6 +1112,28 @@ func (r *BlockReader) txnByHash(txnHash common.Hash, segments []*VisibleSegment, return nil, 0, false, nil } +func (r *BlockReader) txnIDByHash(txnHash common.Hash, segments []*VisibleSegment) (txnId uint64, found bool) { + for i := len(segments) - 1; i >= 0; i-- { + sn := segments[i] + + idxTxnHash := sn.src.Index(coresnaptype.Indexes.TxnHash) + idxTxnHash2BlockNum := sn.src.Index(coresnaptype.Indexes.TxnHash2BlockNum) + + if idxTxnHash == nil || idxTxnHash2BlockNum == nil { + continue + } + + reader := recsplit.NewIndexReader(idxTxnHash) + var ok bool + txnId, ok = reader.Lookup(txnHash[:]) + if ok { + found = true + break + } + } + return txnId, found +} + // TxnByIdxInBlock - doesn't include system-transactions in the begin/end of block // return nil if 0 < i < body.txCount func (r *BlockReader) TxnByIdxInBlock(ctx context.Context, tx kv.Getter, blockNum uint64, txIdxInBlock int) (txn types.Transaction, err error) { @@ -1160,13 +1182,13 @@ func (r *BlockReader) TxnByIdxInBlock(ctx context.Context, tx kv.Getter, blockNu // TxnLookup - find blockNumber and txnID by txnHash func (r *BlockReader) TxnLookup(_ context.Context, tx kv.Getter, txnHash common.Hash) (uint64, bool, error) { - n, err := rawdb.ReadTxLookupEntry(tx, txnHash) + blockNumPointer, err := rawdb.ReadTxLookupEntry(tx, txnHash) if err != nil { return 0, false, err } - if n != nil { - return *n, true, nil + if blockNumPointer != nil { + return *blockNumPointer, true, nil } txns := r.sn.ViewType(coresnaptype.Transactions) @@ -1179,6 +1201,25 @@ func (r *BlockReader) TxnLookup(_ context.Context, tx kv.Getter, txnHash common. return blockNum, ok, nil } +// TxnNumLookup - find txnID by txnHash +func (r *BlockReader) TxnNumLookup(_ context.Context, tx kv.Getter, txnHash common.Hash) (uint64, bool, error) { + n, err := rawdb.ReadTxIDLookupEntry(tx, txnHash) + if err != nil { + return 0, false, err + } + + if n != nil { + return *n, true, nil + } + + txns := r.sn.ViewType(coresnaptype.Transactions) + defer txns.Close() + + txID, ok := r.txnIDByHash(txnHash, txns.VisibleSegments) + + return txID, ok, nil +} + func (r *BlockReader) FirstTxnNumNotInSnapshots() uint64 { sn, ok, close := r.sn.ViewSingleFile(coresnaptype.Transactions, r.sn.BlocksAvailable()) if !ok { From 14d75b3bc2a8f8848926a20fc9812d9ea84c8c42 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Wed, 23 Oct 2024 14:45:08 +0200 Subject: [PATCH 02/58] commit --- turbo/jsonrpc/eth_api.go | 4 ++++ turbo/jsonrpc/eth_receipts.go | 12 ++++++++---- turbo/jsonrpc/otterscan_search_v3.go | 4 ++-- turbo/jsonrpc/receipts/receipts_generator.go | 8 +++++++- turbo/services/interfaces.go | 2 +- 5 files changed, 22 insertions(+), 8 deletions(-) diff --git a/turbo/jsonrpc/eth_api.go b/turbo/jsonrpc/eth_api.go index a0f611c144f..b47f3d276b8 100644 --- a/turbo/jsonrpc/eth_api.go +++ b/turbo/jsonrpc/eth_api.go @@ -195,6 +195,10 @@ func (api *BaseAPI) txnLookup(ctx context.Context, tx kv.Tx, txnHash common.Hash return api._txnReader.TxnLookup(ctx, tx, txnHash) } +func (api *BaseAPI) txnNumLookup(ctx context.Context, tx kv.Tx, txnHash common.Hash) (uint64, bool, error) { + return api._txnReader.TxnNumLookup(ctx, tx, txnHash) +} + func (api *BaseAPI) blockByNumberWithSenders(ctx context.Context, tx kv.Tx, number uint64) (*types.Block, error) { hash, ok, hashErr := api._blockReader.CanonicalHash(ctx, tx, number) if hashErr != nil { diff --git a/turbo/jsonrpc/eth_receipts.go b/turbo/jsonrpc/eth_receipts.go index 3dbb7b5b69a..a618f047aa8 100644 --- a/turbo/jsonrpc/eth_receipts.go +++ b/turbo/jsonrpc/eth_receipts.go @@ -52,8 +52,8 @@ func (api *BaseAPI) getReceipts(ctx context.Context, tx kv.Tx, block *types.Bloc return api.receiptsGenerator.GetReceipts(ctx, chainConfig, tx, block) } -func (api *BaseAPI) getReceipt(ctx context.Context, cc *chain.Config, tx kv.Tx, block *types.Block, index int, optimize bool) (*types.Receipt, error) { - return api.receiptsGenerator.GetReceipt(ctx, cc, tx, block, index, optimize) +func (api *BaseAPI) getReceipt(ctx context.Context, cc *chain.Config, tx kv.TemporalTx, block *types.Block, index int, txNum uint64, optimize bool) (*types.Receipt, error) { + return api.receiptsGenerator.GetReceipt(ctx, cc, tx, block, index, txNum, optimize) } func (api *BaseAPI) getCachedReceipts(ctx context.Context, hash common.Hash) (types.Receipts, bool) { @@ -412,13 +412,17 @@ func (api *APIImpl) GetTransactionReceipt(ctx context.Context, txnHash common.Ha } defer tx.Rollback() - var blockNum uint64 + var blockNum, txNum uint64 var ok bool blockNum, ok, err = api.txnLookup(ctx, tx, txnHash) if err != nil { return nil, err } + txNum, ok, err = api.txnNumLookup(ctx, tx, txnHash) + if err != nil { + return nil, err + } chainConfig, err := api.chainConfig(ctx, tx) if err != nil { @@ -481,7 +485,7 @@ func (api *APIImpl) GetTransactionReceipt(ctx context.Context, txnHash common.Ha return ethutils.MarshalReceipt(borReceipt, bortypes.NewBorTransaction(), chainConfig, block.HeaderNoCopy(), txnHash, false), nil } - receipt, err := api.getReceipt(ctx, chainConfig, tx, block, int(txnIndex), false) + receipt, err := api.getReceipt(ctx, chainConfig, tx.(kv.TemporalTx), block, int(txnIndex), txNum, false) if err != nil { return nil, fmt.Errorf("getReceipt error: %w", err) } diff --git a/turbo/jsonrpc/otterscan_search_v3.go b/turbo/jsonrpc/otterscan_search_v3.go index 1bdc05874cd..8474f8899fd 100644 --- a/turbo/jsonrpc/otterscan_search_v3.go +++ b/turbo/jsonrpc/otterscan_search_v3.go @@ -53,7 +53,7 @@ func (api *OtterscanAPIImpl) buildSearchResults(ctx context.Context, tx kv.Tempo reachedPageSize := false hasMore := false for txNumsIter.HasNext() { - _, blockNum, txIndex, isFinalTxn, blockNumChanged, err := txNumsIter.Next() + txNum, blockNum, txIndex, isFinalTxn, blockNumChanged, err := txNumsIter.Next() if err != nil { return nil, nil, false, err } @@ -96,7 +96,7 @@ func (api *OtterscanAPIImpl) buildSearchResults(ctx context.Context, tx kv.Tempo rpcTx := NewRPCTransaction(txn, block.Hash(), blockNum, uint64(txIndex), block.BaseFee()) txs = append(txs, rpcTx) - receipt, err := api.receiptsGenerator.GetReceipt(ctx, chainConfig, tx, block, txIndex, false) + receipt, err := api.receiptsGenerator.GetReceipt(ctx, chainConfig, tx, block, txIndex, txNum, true) if err != nil { return nil, nil, false, err } diff --git a/turbo/jsonrpc/receipts/receipts_generator.go b/turbo/jsonrpc/receipts/receipts_generator.go index f9d87009aac..6a2dde84ae1 100644 --- a/turbo/jsonrpc/receipts/receipts_generator.go +++ b/turbo/jsonrpc/receipts/receipts_generator.go @@ -2,6 +2,7 @@ package receipts import ( "context" + "github.com/erigontech/erigon/core/rawdb/rawtemporaldb" lru "github.com/hashicorp/golang-lru/v2" @@ -86,7 +87,7 @@ func (g *Generator) PrepareEnv(ctx context.Context, block *types.Block, cfg *cha }, nil } -func (g *Generator) GetReceipt(ctx context.Context, cfg *chain.Config, tx kv.Tx, block *types.Block, index int, optimize bool) (*types.Receipt, error) { +func (g *Generator) GetReceipt(ctx context.Context, cfg *chain.Config, tx kv.TemporalTx, block *types.Block, index int, txNum uint64, optimize bool) (*types.Receipt, error) { var receipt *types.Receipt if optimize { genEnv, err := g.PrepareEnv(ctx, block, cfg, tx, index) @@ -98,6 +99,11 @@ func (g *Generator) GetReceipt(ctx context.Context, cfg *chain.Config, tx kv.Tx, return nil, err } receipt.BlockHash = block.Hash() + cumGasUsed, _, _, err := rawtemporaldb.ReceiptAsOf(tx, txNum) + if err != nil { + return nil, err + } + receipt.CumulativeGasUsed = cumGasUsed } else { genEnv, err := g.PrepareEnv(ctx, block, cfg, tx, 0) if err != nil { diff --git a/turbo/services/interfaces.go b/turbo/services/interfaces.go index 1cf195aa3d5..9a165fe10c6 100644 --- a/turbo/services/interfaces.go +++ b/turbo/services/interfaces.go @@ -95,7 +95,7 @@ type BodyReader interface { type TxnReader interface { TxnLookup(ctx context.Context, tx kv.Getter, txnHash common.Hash) (uint64, bool, error) - //TxnNumLookup(ctx context.Context, tx kv.Getter, txnHash common.Hash) (uint64, bool, error) + TxnNumLookup(ctx context.Context, tx kv.Getter, txnHash common.Hash) (uint64, bool, error) TxnByIdxInBlock(ctx context.Context, tx kv.Getter, blockNum uint64, i int) (txn types.Transaction, err error) RawTransactions(ctx context.Context, tx kv.Getter, fromBlock, toBlock uint64) (txs [][]byte, err error) FirstTxnNumNotInSnapshots() uint64 From 1394dbf62888b4499c0d6442a18ede9b60c9fe7e Mon Sep 17 00:00:00 2001 From: JkLondon Date: Wed, 23 Oct 2024 14:49:01 +0200 Subject: [PATCH 03/58] commit --- eth/stagedsync/stage_txlookup.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/eth/stagedsync/stage_txlookup.go b/eth/stagedsync/stage_txlookup.go index 22e54da87a7..867aa1c591b 100644 --- a/eth/stagedsync/stage_txlookup.go +++ b/eth/stagedsync/stage_txlookup.go @@ -256,6 +256,9 @@ func UnwindTxLookup(u *UnwindState, s *StageState, tx kv.RwTx, cfg TxLookupCfg, if err := deleteTxLookupRange(tx, s.LogPrefix(), blockFrom, blockTo+1, ctx, cfg, logger); err != nil { return fmt.Errorf("unwind TxLookUp: %w", err) } + if err := deleteTxNumLookupRange(tx, s.LogPrefix(), blockFrom, blockTo+1, ctx, cfg, logger); err != nil { + return fmt.Errorf("unwind TxLookUp: %w", err) + } if cfg.borConfig != nil { if err := deleteBorTxLookupRange(tx, s.LogPrefix(), blockFrom, blockTo+1, ctx, cfg, logger); err != nil { return fmt.Errorf("unwind BorTxLookUp: %w", err) @@ -301,6 +304,10 @@ func PruneTxLookup(s *PruneState, tx kv.RwTx, cfg TxLookupCfg, ctx context.Conte return fmt.Errorf("prune TxLookUp: %w", err) } + if err = deleteTxNumLookupRange(tx, logPrefix, blockFrom, blockTo, ctx, cfg, logger); err != nil { + return fmt.Errorf("prune TxLookUp: %w", err) + } + if cfg.borConfig != nil && pruneBor { if err = deleteBorTxLookupRange(tx, logPrefix, blockFrom, blockTo, ctx, cfg, logger); err != nil { return fmt.Errorf("prune BorTxLookUp: %w", err) @@ -350,7 +357,7 @@ func deleteTxLookupRange(tx kv.RwTx, logPrefix string, blockFrom, blockTo uint64 }, logger) } -// deleteTxNumLookupRange - [blockFrom, blockTo) +// deleteTxnNumLookupRange - [blockFrom, blockTo) func deleteTxNumLookupRange(tx kv.RwTx, logPrefix string, blockFrom, blockTo uint64, ctx context.Context, cfg TxLookupCfg, logger log.Logger) error { return etl.Transform(logPrefix, tx, kv.HeaderCanonical, kv.TxIDLookUp, cfg.tmpdir, func(k, v []byte, next etl.ExtractNextFunc) error { blocknum, blockHash := binary.BigEndian.Uint64(k), libcommon.CastToHash(v) From b17bac85b0dde4f52bad489fa2fd0892d67c586e Mon Sep 17 00:00:00 2001 From: JkLondon Date: Thu, 24 Oct 2024 12:01:45 +0200 Subject: [PATCH 04/58] commit --- cmd/rpcdaemon/rpcservices/eth_backend.go | 3 + erigon-lib/go.mod | 2 +- erigon-lib/go.sum | 2 + .../executionproto/execution.pb.go | 571 ++++++++--------- erigon-lib/gointerfaces/remoteproto/bor.pb.go | 319 +--------- .../gointerfaces/remoteproto/bor_grpc.pb.go | 131 ---- .../gointerfaces/remoteproto/ethbackend.pb.go | 490 ++++++++------ .../remoteproto/ethbackend_grpc.pb.go | 42 ++ .../gointerfaces/typesproto/types.pb.go | 600 ++++++------------ .../snapshotsync/freezeblocks/block_reader.go | 11 + 10 files changed, 856 insertions(+), 1315 deletions(-) diff --git a/cmd/rpcdaemon/rpcservices/eth_backend.go b/cmd/rpcdaemon/rpcservices/eth_backend.go index d30932af83a..6cab1c24bb9 100644 --- a/cmd/rpcdaemon/rpcservices/eth_backend.go +++ b/cmd/rpcdaemon/rpcservices/eth_backend.go @@ -266,6 +266,9 @@ func (back *RemoteBackend) SubscribeLogs(ctx context.Context, onNewLogs func(rep func (back *RemoteBackend) TxnLookup(ctx context.Context, tx kv.Getter, txnHash common.Hash) (uint64, bool, error) { return back.blockReader.TxnLookup(ctx, tx, txnHash) } +func (back *RemoteBackend) TxnNumLookup(ctx context.Context, tx kv.Getter, txnHash common.Hash) (uint64, bool, error) { + return back.blockReader.TxnNumLookup(ctx, tx, txnHash) +} func (back *RemoteBackend) HasSenders(ctx context.Context, tx kv.Getter, hash common.Hash, blockNum uint64) (bool, error) { panic("HasSenders is low-level method, don't use it in RPCDaemon") } diff --git a/erigon-lib/go.mod b/erigon-lib/go.mod index 661226bc4d3..591397b5b70 100644 --- a/erigon-lib/go.mod +++ b/erigon-lib/go.mod @@ -4,7 +4,7 @@ go 1.22.0 require ( github.com/erigontech/erigon-snapshot v1.3.1-0.20240814160410-2ce37904b978 - github.com/erigontech/interfaces v0.0.0-20241011102608-29c1d07f457d + github.com/erigontech/interfaces v0.0.0-20241024094313-c5606cf2790f github.com/erigontech/mdbx-go v0.38.4 github.com/erigontech/secp256k1 v1.1.0 github.com/rs/dnscache v0.0.0-20211102005908-e0241e321417 diff --git a/erigon-lib/go.sum b/erigon-lib/go.sum index c2df365aa92..f2d2c6e51c1 100644 --- a/erigon-lib/go.sum +++ b/erigon-lib/go.sum @@ -150,6 +150,8 @@ github.com/erigontech/erigon-snapshot v1.3.1-0.20240814160410-2ce37904b978 h1:7E github.com/erigontech/erigon-snapshot v1.3.1-0.20240814160410-2ce37904b978/go.mod h1:ooHlCl+eEYzebiPu+FP6Q6SpPUeMADn8Jxabv3IKb9M= github.com/erigontech/interfaces v0.0.0-20241011102608-29c1d07f457d h1:T0xEfGinQBrv1aV2WdIQCBoCPOn2CKKH5hi35o/V0m8= github.com/erigontech/interfaces v0.0.0-20241011102608-29c1d07f457d/go.mod h1:N7OUkhkcagp9+7yb4ycHsG2VWCOmuJ1ONBecJshxtLE= +github.com/erigontech/interfaces v0.0.0-20241024094313-c5606cf2790f h1:4L5GC4W/S8oFQ/RoqTUA2HCt3YGEjG5iR6FMlfw+HkU= +github.com/erigontech/interfaces v0.0.0-20241024094313-c5606cf2790f/go.mod h1:N7OUkhkcagp9+7yb4ycHsG2VWCOmuJ1ONBecJshxtLE= github.com/erigontech/mdbx-go v0.38.4 h1:S9T7mTe9KPcFe4dOoOtVdI6gPzht9y7wMnYfUBgrQLo= github.com/erigontech/mdbx-go v0.38.4/go.mod h1:IcOLQDPw3VM/asP6T5JVPPN4FHHgJtY16XfYjzWKVNI= github.com/erigontech/secp256k1 v1.1.0 h1:mO3YJMUSoASE15Ya//SoHiisptUhdXExuMUN1M0X9qY= diff --git a/erigon-lib/gointerfaces/executionproto/execution.pb.go b/erigon-lib/gointerfaces/executionproto/execution.pb.go index 26d30fa3857..cfe85f25a80 100644 --- a/erigon-lib/gointerfaces/executionproto/execution.pb.go +++ b/erigon-lib/gointerfaces/executionproto/execution.pb.go @@ -281,7 +281,7 @@ type Header struct { BlobGasUsed *uint64 `protobuf:"varint,19,opt,name=blob_gas_used,json=blobGasUsed,proto3,oneof" json:"blob_gas_used,omitempty"` // added in Dencun (EIP-4844) ExcessBlobGas *uint64 `protobuf:"varint,20,opt,name=excess_blob_gas,json=excessBlobGas,proto3,oneof" json:"excess_blob_gas,omitempty"` // added in Dencun (EIP-4844) ParentBeaconBlockRoot *typesproto.H256 `protobuf:"bytes,21,opt,name=parent_beacon_block_root,json=parentBeaconBlockRoot,proto3,oneof" json:"parent_beacon_block_root,omitempty"` // added in Dencun (EIP-4788) - RequestsRoot *typesproto.H256 `protobuf:"bytes,22,opt,name=requests_root,json=requestsRoot,proto3,oneof" json:"requests_root,omitempty"` // added in Pectra (EIP-7685) + RequestsHash *typesproto.H256 `protobuf:"bytes,22,opt,name=requests_hash,json=requestsHash,proto3,oneof" json:"requests_hash,omitempty"` // added in Pectra (EIP-7685) // AuRa AuraStep *uint64 `protobuf:"varint,23,opt,name=aura_step,json=auraStep,proto3,oneof" json:"aura_step,omitempty"` AuraSeal []byte `protobuf:"bytes,24,opt,name=aura_seal,json=auraSeal,proto3,oneof" json:"aura_seal,omitempty"` @@ -466,9 +466,9 @@ func (x *Header) GetParentBeaconBlockRoot() *typesproto.H256 { return nil } -func (x *Header) GetRequestsRoot() *typesproto.H256 { +func (x *Header) GetRequestsHash() *typesproto.H256 { if x != nil { - return x.RequestsRoot + return x.RequestsHash } return nil } @@ -499,7 +499,6 @@ type BlockBody struct { Transactions [][]byte `protobuf:"bytes,3,rep,name=transactions,proto3" json:"transactions,omitempty"` Uncles []*Header `protobuf:"bytes,4,rep,name=uncles,proto3" json:"uncles,omitempty"` Withdrawals []*typesproto.Withdrawal `protobuf:"bytes,5,rep,name=withdrawals,proto3" json:"withdrawals,omitempty"` // added in Shapella (EIP-4895) - Requests [][]byte `protobuf:"bytes,6,rep,name=requests,proto3" json:"requests,omitempty"` // added in Pectra (EIP-7685) } func (x *BlockBody) Reset() { @@ -569,13 +568,6 @@ func (x *BlockBody) GetWithdrawals() []*typesproto.Withdrawal { return nil } -func (x *BlockBody) GetRequests() [][]byte { - if x != nil { - return x.Requests - } - return nil -} - type Block struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1292,6 +1284,7 @@ type AssembledBlockData struct { ExecutionPayload *typesproto.ExecutionPayload `protobuf:"bytes,1,opt,name=execution_payload,json=executionPayload,proto3" json:"execution_payload,omitempty"` BlockValue *typesproto.H256 `protobuf:"bytes,2,opt,name=block_value,json=blockValue,proto3" json:"block_value,omitempty"` BlobsBundle *typesproto.BlobsBundleV1 `protobuf:"bytes,3,opt,name=blobs_bundle,json=blobsBundle,proto3" json:"blobs_bundle,omitempty"` + Requests *typesproto.RequestsBundle `protobuf:"bytes,4,opt,name=requests,proto3" json:"requests,omitempty"` } func (x *AssembledBlockData) Reset() { @@ -1347,6 +1340,13 @@ func (x *AssembledBlockData) GetBlobsBundle() *typesproto.BlobsBundleV1 { return nil } +func (x *AssembledBlockData) GetRequests() *typesproto.RequestsBundle { + if x != nil { + return x.Requests + } + return nil +} + type GetAssembledBlockResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1793,9 +1793,9 @@ var file_execution_execution_proto_rawDesc = []byte{ 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x48, 0x04, 0x52, 0x15, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, + 0x73, 0x74, 0x73, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x48, 0x05, 0x52, 0x0c, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x52, 0x6f, 0x6f, 0x74, 0x88, 0x01, 0x01, 0x12, 0x20, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x48, 0x61, 0x73, 0x68, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x61, 0x75, 0x72, 0x61, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x18, 0x17, 0x20, 0x01, 0x28, 0x04, 0x48, 0x06, 0x52, 0x08, 0x61, 0x75, 0x72, 0x61, 0x53, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x61, 0x75, 0x72, 0x61, 0x5f, 0x73, 0x65, 0x61, 0x6c, 0x18, 0x18, 0x20, @@ -1807,9 +1807,9 @@ var file_execution_execution_proto_rawDesc = []byte{ 0x10, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x67, 0x61, 0x73, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x42, 0x10, - 0x0a, 0x0e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x5f, 0x72, 0x6f, 0x6f, 0x74, + 0x0a, 0x0e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x61, 0x75, 0x72, 0x61, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x0c, - 0x0a, 0x0a, 0x5f, 0x61, 0x75, 0x72, 0x61, 0x5f, 0x73, 0x65, 0x61, 0x6c, 0x22, 0xfa, 0x01, 0x0a, + 0x0a, 0x0a, 0x5f, 0x61, 0x75, 0x72, 0x61, 0x5f, 0x73, 0x65, 0x61, 0x6c, 0x22, 0xde, 0x01, 0x0a, 0x09, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x2a, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x09, 0x62, 0x6c, 0x6f, @@ -1823,236 +1823,237 @@ var file_execution_execution_proto_rawDesc = []byte{ 0x52, 0x06, 0x75, 0x6e, 0x63, 0x6c, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, - 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x12, 0x1a, 0x0a, - 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0c, 0x52, - 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x22, 0x5c, 0x0a, 0x05, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x12, 0x29, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x28, 0x0a, - 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, - 0x79, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x4e, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x06, - 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, - 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x38, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x54, 0x44, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x02, 0x74, 0x64, 0x18, 0x01, + 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x22, 0x5c, 0x0a, + 0x05, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x29, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x12, 0x28, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x4e, 0x0a, 0x11, 0x47, + 0x65, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x2e, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x11, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x38, 0x0a, 0x0d, 0x47, + 0x65, 0x74, 0x54, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x02, + 0x74, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x2e, 0x48, 0x32, 0x35, 0x36, 0x48, 0x00, 0x52, 0x02, 0x74, 0x64, 0x88, 0x01, 0x01, 0x42, 0x05, + 0x0a, 0x03, 0x5f, 0x74, 0x64, 0x22, 0x49, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x64, 0x79, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x48, 0x00, 0x52, 0x04, + 0x62, 0x6f, 0x64, 0x79, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x62, 0x6f, 0x64, 0x79, + 0x22, 0x56, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, + 0x68, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x26, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x8c, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, + 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, + 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, + 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x48, 0x01, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x48, 0x61, 0x73, 0x68, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x22, 0x3f, 0x0a, 0x13, 0x49, 0x6e, 0x73, 0x65, 0x72, + 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, + 0x0a, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, + 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x22, 0x86, 0x02, 0x0a, 0x0a, 0x46, 0x6f, 0x72, + 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x33, 0x0a, 0x0f, 0x68, 0x65, 0x61, 0x64, 0x5f, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x0d, 0x68, + 0x65, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x18, 0x0a, 0x07, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x42, 0x0a, 0x14, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, + 0x7a, 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, - 0x36, 0x48, 0x00, 0x52, 0x02, 0x74, 0x64, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x74, - 0x64, 0x22, 0x49, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x64, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x48, 0x00, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, - 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x56, 0x0a, 0x1b, - 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, 0x68, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x48, 0x00, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x22, 0x8c, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x65, 0x67, 0x6d, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0c, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x48, 0x00, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x88, - 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, - 0x32, 0x35, 0x36, 0x48, 0x01, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, - 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, - 0x61, 0x73, 0x68, 0x22, 0x3f, 0x0a, 0x13, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x06, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x06, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x73, 0x22, 0x86, 0x02, 0x0a, 0x0a, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x12, 0x33, 0x0a, 0x0f, 0x68, 0x65, 0x61, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, - 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x0d, 0x68, 0x65, 0x61, 0x64, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, - 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, - 0x75, 0x74, 0x12, 0x42, 0x0a, 0x14, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x48, 0x00, 0x52, - 0x12, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, - 0x61, 0x73, 0x68, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x0f, 0x73, 0x61, 0x66, 0x65, 0x5f, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x48, 0x01, 0x52, 0x0d, - 0x73, 0x61, 0x66, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x88, 0x01, 0x01, - 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x61, - 0x66, 0x65, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x22, 0x45, 0x0a, - 0x0f, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x12, 0x32, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x1a, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x72, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x22, 0x4c, 0x0a, 0x11, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x04, 0x68, 0x61, 0x73, - 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, - 0x48, 0x32, 0x35, 0x36, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x22, 0xf2, 0x02, 0x0a, 0x14, 0x41, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x65, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x0b, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x36, 0x48, 0x00, 0x52, 0x12, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x0f, 0x73, 0x61, + 0x66, 0x65, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, + 0x48, 0x01, 0x52, 0x0d, 0x73, 0x61, 0x66, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, + 0x68, 0x88, 0x01, 0x01, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x7a, + 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x42, 0x12, 0x0a, + 0x10, 0x5f, 0x73, 0x61, 0x66, 0x65, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, + 0x68, 0x22, 0x45, 0x0a, 0x0f, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x12, 0x32, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x4c, 0x0a, 0x11, 0x56, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, + 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x16, + 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0xf2, 0x02, 0x0a, 0x14, 0x41, 0x73, 0x73, 0x65, 0x6d, + 0x62, 0x6c, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x2c, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, + 0x36, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1c, 0x0a, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2c, 0x0a, 0x0b, 0x70, + 0x72, 0x65, 0x76, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x0a, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2c, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x76, 0x5f, - 0x72, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, - 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x76, 0x52, - 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x12, 0x43, 0x0a, 0x17, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, - 0x65, 0x64, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, - 0x31, 0x36, 0x30, 0x52, 0x15, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x46, 0x65, - 0x65, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x33, 0x0a, 0x0b, 0x77, 0x69, - 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, - 0x61, 0x6c, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x12, - 0x49, 0x0a, 0x18, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, - 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x48, 0x00, - 0x52, 0x15, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x88, 0x01, 0x01, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x22, 0x3b, 0x0a, 0x15, 0x41, 0x73, 0x73, 0x65, 0x6d, - 0x62, 0x6c, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, + 0x72, 0x65, 0x76, 0x52, 0x61, 0x6e, 0x64, 0x61, 0x6f, 0x12, 0x43, 0x0a, 0x17, 0x73, 0x75, 0x67, + 0x67, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, + 0x69, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x2e, 0x48, 0x31, 0x36, 0x30, 0x52, 0x15, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, + 0x65, 0x64, 0x46, 0x65, 0x65, 0x52, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x33, + 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x69, 0x74, 0x68, + 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, + 0x61, 0x6c, 0x73, 0x12, 0x49, 0x0a, 0x18, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x65, + 0x61, 0x63, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, + 0x35, 0x36, 0x48, 0x00, 0x52, 0x15, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x65, 0x61, 0x63, + 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6f, 0x6f, 0x74, 0x88, 0x01, 0x01, 0x42, 0x1b, + 0x0a, 0x19, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x65, 0x61, 0x63, 0x6f, 0x6e, + 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x22, 0x3b, 0x0a, 0x15, 0x41, + 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x75, 0x73, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x04, 0x62, 0x75, 0x73, 0x79, 0x22, 0x2a, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x41, + 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x02, 0x69, 0x64, 0x22, 0xf4, 0x01, 0x0a, 0x12, 0x41, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, + 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x44, 0x0a, 0x11, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, + 0x10, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x12, 0x2c, 0x0a, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, + 0x32, 0x35, 0x36, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x37, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x62, 0x73, 0x5f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x42, 0x6c, + 0x6f, 0x62, 0x73, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x56, 0x31, 0x52, 0x0b, 0x62, 0x6c, 0x6f, + 0x62, 0x73, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x31, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x42, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x22, 0x70, 0x0a, 0x19, 0x47, + 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x75, 0x73, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, - 0x62, 0x75, 0x73, 0x79, 0x22, 0x2a, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x6d, - 0x62, 0x6c, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, - 0x22, 0xc1, 0x01, 0x0a, 0x12, 0x41, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x65, 0x64, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x44, 0x0a, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x10, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x2c, 0x0a, - 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, - 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x37, 0x0a, 0x0c, 0x62, - 0x6c, 0x6f, 0x62, 0x73, 0x5f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x42, 0x6c, 0x6f, 0x62, 0x73, 0x42, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x56, 0x31, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x62, 0x73, 0x42, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x22, 0x70, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x6d, - 0x62, 0x6c, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x36, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1d, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x73, 0x73, 0x65, - 0x6d, 0x62, 0x6c, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, - 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x75, 0x73, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x62, 0x75, 0x73, 0x79, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x22, 0x46, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x64, - 0x69, 0x65, 0x73, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x2c, 0x0a, 0x06, 0x62, 0x6f, 0x64, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x52, 0x06, 0x62, 0x6f, 0x64, 0x69, 0x65, 0x73, 0x22, 0x3f, - 0x0a, 0x18, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x64, 0x69, 0x65, 0x73, 0x42, 0x79, 0x48, 0x61, 0x73, - 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x68, 0x61, - 0x73, 0x68, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, - 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x22, - 0x45, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x64, 0x69, 0x65, 0x73, 0x42, 0x79, 0x52, 0x61, - 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x25, 0x0a, 0x0d, 0x52, 0x65, 0x61, 0x64, 0x79, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x22, 0x54, 0x0a, - 0x14, 0x46, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x5f, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x66, 0x72, - 0x6f, 0x7a, 0x65, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, - 0x73, 0x5f, 0x67, 0x61, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x68, 0x61, 0x73, - 0x47, 0x61, 0x70, 0x22, 0x2f, 0x0a, 0x10, 0x48, 0x61, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x61, 0x73, 0x5f, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x68, 0x61, 0x73, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x2a, 0x71, 0x0a, 0x0f, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x42, 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x6f, 0x6f, 0x46, 0x61, 0x72, 0x41, 0x77, 0x61, 0x79, - 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x67, - 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, - 0x64, 0x46, 0x6f, 0x72, 0x6b, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x10, 0x04, 0x12, 0x08, 0x0a, - 0x04, 0x42, 0x75, 0x73, 0x79, 0x10, 0x05, 0x32, 0x86, 0x0a, 0x0a, 0x09, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x0c, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x1e, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x12, 0x4b, 0x0a, 0x0d, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, - 0x69, 0x6e, 0x12, 0x1c, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1c, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x12, 0x47, - 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x12, 0x15, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, - 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x1a, 0x1c, 0x2e, 0x65, 0x78, 0x65, 0x63, + 0x62, 0x75, 0x73, 0x79, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x22, 0x46, 0x0a, + 0x16, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x64, 0x69, 0x65, 0x73, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x62, 0x6f, 0x64, 0x69, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6f, 0x64, 0x79, 0x52, 0x06, 0x62, + 0x6f, 0x64, 0x69, 0x65, 0x73, 0x22, 0x3f, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x64, 0x69, + 0x65, 0x73, 0x42, 0x79, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x23, 0x0a, 0x06, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x06, + 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x22, 0x45, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x64, + 0x69, 0x65, 0x73, 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x25, 0x0a, + 0x0d, 0x52, 0x65, 0x61, 0x64, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, + 0x65, 0x61, 0x64, 0x79, 0x22, 0x54, 0x0a, 0x14, 0x46, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, + 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0c, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x73, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x5f, 0x67, 0x61, 0x70, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x06, 0x68, 0x61, 0x73, 0x47, 0x61, 0x70, 0x22, 0x2f, 0x0a, 0x10, 0x48, 0x61, + 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, + 0x0a, 0x09, 0x68, 0x61, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x08, 0x68, 0x61, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2a, 0x71, 0x0a, 0x0f, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, + 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x42, + 0x61, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x6f, 0x6f, + 0x46, 0x61, 0x72, 0x41, 0x77, 0x61, 0x79, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x4d, 0x69, 0x73, + 0x73, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x03, 0x12, 0x15, 0x0a, + 0x11, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x46, 0x6f, 0x72, 0x6b, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x10, 0x04, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x75, 0x73, 0x79, 0x10, 0x05, 0x32, 0x86, + 0x0a, 0x0a, 0x09, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x0c, + 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x1e, 0x2e, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x4b, 0x0a, 0x0d, 0x56, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x1c, 0x2e, 0x65, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x63, 0x65, 0x69, 0x70, 0x74, 0x12, 0x47, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, + 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x15, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x12, 0x52, 0x0a, 0x0d, 0x41, 0x73, 0x73, 0x65, 0x6d, - 0x62, 0x6c, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1f, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x65, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x65, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x11, 0x47, - 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x12, 0x23, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, - 0x41, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x65, 0x64, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x0d, 0x43, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x05, 0x47, 0x65, 0x74, 0x54, 0x44, 0x12, 0x1c, 0x2e, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x12, 0x1c, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, - 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, - 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x07, - 0x47, 0x65, 0x74, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x1c, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x1a, 0x1c, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x6f, 0x72, + 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x12, 0x52, + 0x0a, 0x0d, 0x41, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, + 0x1f, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x73, 0x73, 0x65, + 0x6d, 0x62, 0x6c, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x20, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x73, 0x73, + 0x65, 0x6d, 0x62, 0x6c, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, + 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x23, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x65, 0x64, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, + 0x6d, 0x62, 0x6c, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x45, 0x0a, 0x0d, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x65, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x05, 0x47, 0x65, 0x74, + 0x54, 0x44, 0x12, 0x1c, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, + 0x65, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x18, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, + 0x54, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x09, 0x47, 0x65, + 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x64, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x45, 0x0a, 0x08, 0x48, 0x61, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1c, 0x2e, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x67, - 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x61, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x42, - 0x6f, 0x64, 0x69, 0x65, 0x73, 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x22, 0x2e, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x64, 0x69, - 0x65, 0x73, 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x21, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, - 0x42, 0x6f, 0x64, 0x69, 0x65, 0x73, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x64, 0x69, 0x65, 0x73, - 0x42, 0x79, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x23, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x64, 0x69, 0x65, 0x73, 0x42, 0x79, - 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x64, - 0x69, 0x65, 0x73, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3e, 0x0a, 0x0f, 0x49, 0x73, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x48, - 0x61, 0x73, 0x68, 0x12, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, - 0x1a, 0x1e, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x73, 0x43, - 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x4a, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, - 0x68, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, - 0x48, 0x32, 0x35, 0x36, 0x1a, 0x26, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, 0x68, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0d, - 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x15, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x39, 0x0a, 0x05, - 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x18, 0x2e, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x79, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x0c, 0x46, 0x72, 0x6f, 0x7a, 0x65, - 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, - 0x1f, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x72, 0x6f, 0x7a, - 0x65, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x42, 0x1c, 0x5a, 0x1a, 0x2e, 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x3b, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x1c, + 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, + 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x64, 0x79, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x08, 0x48, 0x61, 0x73, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1c, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, + 0x61, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x59, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x64, 0x69, 0x65, 0x73, 0x42, 0x79, 0x52, 0x61, + 0x6e, 0x67, 0x65, 0x12, 0x22, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x47, 0x65, 0x74, 0x42, 0x6f, 0x64, 0x69, 0x65, 0x73, 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x64, 0x69, 0x65, 0x73, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x11, 0x47, 0x65, + 0x74, 0x42, 0x6f, 0x64, 0x69, 0x65, 0x73, 0x42, 0x79, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, + 0x23, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x42, + 0x6f, 0x64, 0x69, 0x65, 0x73, 0x42, 0x79, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6f, 0x64, 0x69, 0x65, 0x73, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0f, 0x49, 0x73, 0x43, 0x61, 0x6e, + 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x48, 0x61, 0x73, 0x68, 0x12, 0x0b, 0x2e, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x1a, 0x1e, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x73, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x48, 0x61, 0x73, 0x68, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x0b, + 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x1a, 0x26, 0x2e, 0x65, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x48, 0x61, 0x73, 0x68, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x15, 0x2e, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x12, 0x39, 0x0a, 0x05, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x18, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x52, 0x65, 0x61, 0x64, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, + 0x0a, 0x0c, 0x46, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1f, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x46, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x1c, 0x5a, 0x1a, 0x2e, 0x2f, 0x65, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2103,7 +2104,8 @@ var file_execution_execution_proto_goTypes = []any{ (*typesproto.Withdrawal)(nil), // 30: types.Withdrawal (*typesproto.ExecutionPayload)(nil), // 31: types.ExecutionPayload (*typesproto.BlobsBundleV1)(nil), // 32: types.BlobsBundleV1 - (*emptypb.Empty)(nil), // 33: google.protobuf.Empty + (*typesproto.RequestsBundle)(nil), // 33: types.RequestsBundle + (*emptypb.Empty)(nil), // 34: google.protobuf.Empty } var file_execution_execution_proto_depIdxs = []int32{ 0, // 0: execution.ForkChoiceReceipt.status:type_name -> execution.ExecutionStatus @@ -2123,7 +2125,7 @@ var file_execution_execution_proto_depIdxs = []int32{ 27, // 14: execution.Header.base_fee_per_gas:type_name -> types.H256 27, // 15: execution.Header.withdrawal_hash:type_name -> types.H256 27, // 16: execution.Header.parent_beacon_block_root:type_name -> types.H256 - 27, // 17: execution.Header.requests_root:type_name -> types.H256 + 27, // 17: execution.Header.requests_hash:type_name -> types.H256 27, // 18: execution.BlockBody.block_hash:type_name -> types.H256 4, // 19: execution.BlockBody.uncles:type_name -> execution.Header 30, // 20: execution.BlockBody.withdrawals:type_name -> types.Withdrawal @@ -2147,48 +2149,49 @@ var file_execution_execution_proto_depIdxs = []int32{ 31, // 38: execution.AssembledBlockData.execution_payload:type_name -> types.ExecutionPayload 27, // 39: execution.AssembledBlockData.block_value:type_name -> types.H256 32, // 40: execution.AssembledBlockData.blobs_bundle:type_name -> types.BlobsBundleV1 - 19, // 41: execution.GetAssembledBlockResponse.data:type_name -> execution.AssembledBlockData - 5, // 42: execution.GetBodiesBatchResponse.bodies:type_name -> execution.BlockBody - 27, // 43: execution.GetBodiesByHashesRequest.hashes:type_name -> types.H256 - 12, // 44: execution.Execution.InsertBlocks:input_type -> execution.InsertBlocksRequest - 15, // 45: execution.Execution.ValidateChain:input_type -> execution.ValidationRequest - 13, // 46: execution.Execution.UpdateForkChoice:input_type -> execution.ForkChoice - 16, // 47: execution.Execution.AssembleBlock:input_type -> execution.AssembleBlockRequest - 18, // 48: execution.Execution.GetAssembledBlock:input_type -> execution.GetAssembledBlockRequest - 33, // 49: execution.Execution.CurrentHeader:input_type -> google.protobuf.Empty - 11, // 50: execution.Execution.GetTD:input_type -> execution.GetSegmentRequest - 11, // 51: execution.Execution.GetHeader:input_type -> execution.GetSegmentRequest - 11, // 52: execution.Execution.GetBody:input_type -> execution.GetSegmentRequest - 11, // 53: execution.Execution.HasBlock:input_type -> execution.GetSegmentRequest - 23, // 54: execution.Execution.GetBodiesByRange:input_type -> execution.GetBodiesByRangeRequest - 22, // 55: execution.Execution.GetBodiesByHashes:input_type -> execution.GetBodiesByHashesRequest - 27, // 56: execution.Execution.IsCanonicalHash:input_type -> types.H256 - 27, // 57: execution.Execution.GetHeaderHashNumber:input_type -> types.H256 - 33, // 58: execution.Execution.GetForkChoice:input_type -> google.protobuf.Empty - 33, // 59: execution.Execution.Ready:input_type -> google.protobuf.Empty - 33, // 60: execution.Execution.FrozenBlocks:input_type -> google.protobuf.Empty - 14, // 61: execution.Execution.InsertBlocks:output_type -> execution.InsertionResult - 2, // 62: execution.Execution.ValidateChain:output_type -> execution.ValidationReceipt - 1, // 63: execution.Execution.UpdateForkChoice:output_type -> execution.ForkChoiceReceipt - 17, // 64: execution.Execution.AssembleBlock:output_type -> execution.AssembleBlockResponse - 20, // 65: execution.Execution.GetAssembledBlock:output_type -> execution.GetAssembledBlockResponse - 7, // 66: execution.Execution.CurrentHeader:output_type -> execution.GetHeaderResponse - 8, // 67: execution.Execution.GetTD:output_type -> execution.GetTDResponse - 7, // 68: execution.Execution.GetHeader:output_type -> execution.GetHeaderResponse - 9, // 69: execution.Execution.GetBody:output_type -> execution.GetBodyResponse - 26, // 70: execution.Execution.HasBlock:output_type -> execution.HasBlockResponse - 21, // 71: execution.Execution.GetBodiesByRange:output_type -> execution.GetBodiesBatchResponse - 21, // 72: execution.Execution.GetBodiesByHashes:output_type -> execution.GetBodiesBatchResponse - 3, // 73: execution.Execution.IsCanonicalHash:output_type -> execution.IsCanonicalResponse - 10, // 74: execution.Execution.GetHeaderHashNumber:output_type -> execution.GetHeaderHashNumberResponse - 13, // 75: execution.Execution.GetForkChoice:output_type -> execution.ForkChoice - 24, // 76: execution.Execution.Ready:output_type -> execution.ReadyResponse - 25, // 77: execution.Execution.FrozenBlocks:output_type -> execution.FrozenBlocksResponse - 61, // [61:78] is the sub-list for method output_type - 44, // [44:61] is the sub-list for method input_type - 44, // [44:44] is the sub-list for extension type_name - 44, // [44:44] is the sub-list for extension extendee - 0, // [0:44] is the sub-list for field type_name + 33, // 41: execution.AssembledBlockData.requests:type_name -> types.RequestsBundle + 19, // 42: execution.GetAssembledBlockResponse.data:type_name -> execution.AssembledBlockData + 5, // 43: execution.GetBodiesBatchResponse.bodies:type_name -> execution.BlockBody + 27, // 44: execution.GetBodiesByHashesRequest.hashes:type_name -> types.H256 + 12, // 45: execution.Execution.InsertBlocks:input_type -> execution.InsertBlocksRequest + 15, // 46: execution.Execution.ValidateChain:input_type -> execution.ValidationRequest + 13, // 47: execution.Execution.UpdateForkChoice:input_type -> execution.ForkChoice + 16, // 48: execution.Execution.AssembleBlock:input_type -> execution.AssembleBlockRequest + 18, // 49: execution.Execution.GetAssembledBlock:input_type -> execution.GetAssembledBlockRequest + 34, // 50: execution.Execution.CurrentHeader:input_type -> google.protobuf.Empty + 11, // 51: execution.Execution.GetTD:input_type -> execution.GetSegmentRequest + 11, // 52: execution.Execution.GetHeader:input_type -> execution.GetSegmentRequest + 11, // 53: execution.Execution.GetBody:input_type -> execution.GetSegmentRequest + 11, // 54: execution.Execution.HasBlock:input_type -> execution.GetSegmentRequest + 23, // 55: execution.Execution.GetBodiesByRange:input_type -> execution.GetBodiesByRangeRequest + 22, // 56: execution.Execution.GetBodiesByHashes:input_type -> execution.GetBodiesByHashesRequest + 27, // 57: execution.Execution.IsCanonicalHash:input_type -> types.H256 + 27, // 58: execution.Execution.GetHeaderHashNumber:input_type -> types.H256 + 34, // 59: execution.Execution.GetForkChoice:input_type -> google.protobuf.Empty + 34, // 60: execution.Execution.Ready:input_type -> google.protobuf.Empty + 34, // 61: execution.Execution.FrozenBlocks:input_type -> google.protobuf.Empty + 14, // 62: execution.Execution.InsertBlocks:output_type -> execution.InsertionResult + 2, // 63: execution.Execution.ValidateChain:output_type -> execution.ValidationReceipt + 1, // 64: execution.Execution.UpdateForkChoice:output_type -> execution.ForkChoiceReceipt + 17, // 65: execution.Execution.AssembleBlock:output_type -> execution.AssembleBlockResponse + 20, // 66: execution.Execution.GetAssembledBlock:output_type -> execution.GetAssembledBlockResponse + 7, // 67: execution.Execution.CurrentHeader:output_type -> execution.GetHeaderResponse + 8, // 68: execution.Execution.GetTD:output_type -> execution.GetTDResponse + 7, // 69: execution.Execution.GetHeader:output_type -> execution.GetHeaderResponse + 9, // 70: execution.Execution.GetBody:output_type -> execution.GetBodyResponse + 26, // 71: execution.Execution.HasBlock:output_type -> execution.HasBlockResponse + 21, // 72: execution.Execution.GetBodiesByRange:output_type -> execution.GetBodiesBatchResponse + 21, // 73: execution.Execution.GetBodiesByHashes:output_type -> execution.GetBodiesBatchResponse + 3, // 74: execution.Execution.IsCanonicalHash:output_type -> execution.IsCanonicalResponse + 10, // 75: execution.Execution.GetHeaderHashNumber:output_type -> execution.GetHeaderHashNumberResponse + 13, // 76: execution.Execution.GetForkChoice:output_type -> execution.ForkChoice + 24, // 77: execution.Execution.Ready:output_type -> execution.ReadyResponse + 25, // 78: execution.Execution.FrozenBlocks:output_type -> execution.FrozenBlocksResponse + 62, // [62:79] is the sub-list for method output_type + 45, // [45:62] is the sub-list for method input_type + 45, // [45:45] is the sub-list for extension type_name + 45, // [45:45] is the sub-list for extension extendee + 0, // [0:45] is the sub-list for field type_name } func init() { file_execution_execution_proto_init() } diff --git a/erigon-lib/gointerfaces/remoteproto/bor.pb.go b/erigon-lib/gointerfaces/remoteproto/bor.pb.go index a78af319caf..dc5a29de682 100644 --- a/erigon-lib/gointerfaces/remoteproto/bor.pb.go +++ b/erigon-lib/gointerfaces/remoteproto/bor.pb.go @@ -234,179 +234,6 @@ func (x *BorEventsReply) GetEventRlps() [][]byte { return nil } -type BorProducersRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - BlockNum uint64 `protobuf:"varint,1,opt,name=block_num,json=blockNum,proto3" json:"block_num,omitempty"` -} - -func (x *BorProducersRequest) Reset() { - *x = BorProducersRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_remote_bor_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BorProducersRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BorProducersRequest) ProtoMessage() {} - -func (x *BorProducersRequest) ProtoReflect() protoreflect.Message { - mi := &file_remote_bor_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BorProducersRequest.ProtoReflect.Descriptor instead. -func (*BorProducersRequest) Descriptor() ([]byte, []int) { - return file_remote_bor_proto_rawDescGZIP(), []int{4} -} - -func (x *BorProducersRequest) GetBlockNum() uint64 { - if x != nil { - return x.BlockNum - } - return 0 -} - -type BorProducersResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Proposer *Validator `protobuf:"bytes,1,opt,name=proposer,proto3" json:"proposer,omitempty"` - Validators []*Validator `protobuf:"bytes,2,rep,name=validators,proto3" json:"validators,omitempty"` -} - -func (x *BorProducersResponse) Reset() { - *x = BorProducersResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_remote_bor_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BorProducersResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BorProducersResponse) ProtoMessage() {} - -func (x *BorProducersResponse) ProtoReflect() protoreflect.Message { - mi := &file_remote_bor_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BorProducersResponse.ProtoReflect.Descriptor instead. -func (*BorProducersResponse) Descriptor() ([]byte, []int) { - return file_remote_bor_proto_rawDescGZIP(), []int{5} -} - -func (x *BorProducersResponse) GetProposer() *Validator { - if x != nil { - return x.Proposer - } - return nil -} - -func (x *BorProducersResponse) GetValidators() []*Validator { - if x != nil { - return x.Validators - } - return nil -} - -type Validator struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Address *typesproto.H160 `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` - VotingPower int64 `protobuf:"varint,3,opt,name=voting_power,json=votingPower,proto3" json:"voting_power,omitempty"` - ProposerPriority int64 `protobuf:"varint,4,opt,name=proposer_priority,json=proposerPriority,proto3" json:"proposer_priority,omitempty"` -} - -func (x *Validator) Reset() { - *x = Validator{} - if protoimpl.UnsafeEnabled { - mi := &file_remote_bor_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Validator) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Validator) ProtoMessage() {} - -func (x *Validator) ProtoReflect() protoreflect.Message { - mi := &file_remote_bor_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Validator.ProtoReflect.Descriptor instead. -func (*Validator) Descriptor() ([]byte, []int) { - return file_remote_bor_proto_rawDescGZIP(), []int{6} -} - -func (x *Validator) GetId() uint64 { - if x != nil { - return x.Id - } - return 0 -} - -func (x *Validator) GetAddress() *typesproto.H160 { - if x != nil { - return x.Address - } - return nil -} - -func (x *Validator) GetVotingPower() int64 { - if x != nil { - return x.VotingPower - } - return 0 -} - -func (x *Validator) GetProposerPriority() int64 { - if x != nil { - return x.ProposerPriority - } - return 0 -} - var File_remote_bor_proto protoreflect.FileDescriptor var file_remote_bor_proto_rawDesc = []byte{ @@ -437,51 +264,22 @@ var file_remote_bor_proto_rawDesc = []byte{ 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6c, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x52, 0x6c, 0x70, 0x73, 0x22, 0x32, 0x0a, 0x13, 0x42, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x08, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x22, 0x78, 0x0a, 0x14, 0x42, 0x6f, 0x72, - 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x2d, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x56, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, - 0x12, 0x31, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x56, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x6f, 0x72, 0x73, 0x22, 0x92, 0x01, 0x0a, 0x09, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, - 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x25, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x31, 0x36, 0x30, 0x52, - 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x76, 0x6f, 0x74, 0x69, - 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, - 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x11, 0x70, - 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, - 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x32, 0xce, 0x01, 0x0a, 0x0d, 0x42, 0x72, 0x69, - 0x64, 0x67, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x12, 0x36, 0x0a, 0x07, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x13, 0x2e, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, - 0x6c, 0x79, 0x12, 0x46, 0x0a, 0x0c, 0x42, 0x6f, 0x72, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, - 0x75, 0x70, 0x12, 0x1b, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x54, - 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x19, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x54, 0x78, 0x6e, 0x4c, - 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3d, 0x0a, 0x09, 0x42, 0x6f, - 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, - 0x2e, 0x42, 0x6f, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x32, 0x91, 0x01, 0x0a, 0x0f, 0x48, 0x65, - 0x69, 0x6d, 0x64, 0x61, 0x6c, 0x6c, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x12, 0x36, 0x0a, - 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x1a, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x46, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, - 0x72, 0x73, 0x12, 0x1b, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x50, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x16, 0x5a, - 0x14, 0x2e, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x3b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x52, 0x6c, 0x70, 0x73, 0x32, 0xce, 0x01, 0x0a, 0x0d, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, + 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x12, 0x36, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x13, 0x2e, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, + 0x46, 0x0a, 0x0c, 0x42, 0x6f, 0x72, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x12, + 0x1b, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x54, 0x78, 0x6e, 0x4c, + 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x72, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, + 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3d, 0x0a, 0x09, 0x42, 0x6f, 0x72, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x12, 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6f, + 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, + 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x42, 0x16, 0x5a, 0x14, 0x2e, 0x2f, 0x72, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x3b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -496,41 +294,30 @@ func file_remote_bor_proto_rawDescGZIP() []byte { return file_remote_bor_proto_rawDescData } -var file_remote_bor_proto_msgTypes = make([]protoimpl.MessageInfo, 7) +var file_remote_bor_proto_msgTypes = make([]protoimpl.MessageInfo, 4) var file_remote_bor_proto_goTypes = []any{ (*BorTxnLookupRequest)(nil), // 0: remote.BorTxnLookupRequest (*BorTxnLookupReply)(nil), // 1: remote.BorTxnLookupReply (*BorEventsRequest)(nil), // 2: remote.BorEventsRequest (*BorEventsReply)(nil), // 3: remote.BorEventsReply - (*BorProducersRequest)(nil), // 4: remote.BorProducersRequest - (*BorProducersResponse)(nil), // 5: remote.BorProducersResponse - (*Validator)(nil), // 6: remote.Validator - (*typesproto.H256)(nil), // 7: types.H256 - (*typesproto.H160)(nil), // 8: types.H160 - (*emptypb.Empty)(nil), // 9: google.protobuf.Empty - (*typesproto.VersionReply)(nil), // 10: types.VersionReply + (*typesproto.H256)(nil), // 4: types.H256 + (*emptypb.Empty)(nil), // 5: google.protobuf.Empty + (*typesproto.VersionReply)(nil), // 6: types.VersionReply } var file_remote_bor_proto_depIdxs = []int32{ - 7, // 0: remote.BorTxnLookupRequest.bor_tx_hash:type_name -> types.H256 - 7, // 1: remote.BorEventsRequest.block_hash:type_name -> types.H256 - 6, // 2: remote.BorProducersResponse.proposer:type_name -> remote.Validator - 6, // 3: remote.BorProducersResponse.validators:type_name -> remote.Validator - 8, // 4: remote.Validator.address:type_name -> types.H160 - 9, // 5: remote.BridgeBackend.Version:input_type -> google.protobuf.Empty - 0, // 6: remote.BridgeBackend.BorTxnLookup:input_type -> remote.BorTxnLookupRequest - 2, // 7: remote.BridgeBackend.BorEvents:input_type -> remote.BorEventsRequest - 9, // 8: remote.HeimdallBackend.Version:input_type -> google.protobuf.Empty - 4, // 9: remote.HeimdallBackend.Producers:input_type -> remote.BorProducersRequest - 10, // 10: remote.BridgeBackend.Version:output_type -> types.VersionReply - 1, // 11: remote.BridgeBackend.BorTxnLookup:output_type -> remote.BorTxnLookupReply - 3, // 12: remote.BridgeBackend.BorEvents:output_type -> remote.BorEventsReply - 10, // 13: remote.HeimdallBackend.Version:output_type -> types.VersionReply - 5, // 14: remote.HeimdallBackend.Producers:output_type -> remote.BorProducersResponse - 10, // [10:15] is the sub-list for method output_type - 5, // [5:10] is the sub-list for method input_type - 5, // [5:5] is the sub-list for extension type_name - 5, // [5:5] is the sub-list for extension extendee - 0, // [0:5] is the sub-list for field type_name + 4, // 0: remote.BorTxnLookupRequest.bor_tx_hash:type_name -> types.H256 + 4, // 1: remote.BorEventsRequest.block_hash:type_name -> types.H256 + 5, // 2: remote.BridgeBackend.Version:input_type -> google.protobuf.Empty + 0, // 3: remote.BridgeBackend.BorTxnLookup:input_type -> remote.BorTxnLookupRequest + 2, // 4: remote.BridgeBackend.BorEvents:input_type -> remote.BorEventsRequest + 6, // 5: remote.BridgeBackend.Version:output_type -> types.VersionReply + 1, // 6: remote.BridgeBackend.BorTxnLookup:output_type -> remote.BorTxnLookupReply + 3, // 7: remote.BridgeBackend.BorEvents:output_type -> remote.BorEventsReply + 5, // [5:8] is the sub-list for method output_type + 2, // [2:5] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name } func init() { file_remote_bor_proto_init() } @@ -587,42 +374,6 @@ func file_remote_bor_proto_init() { return nil } } - file_remote_bor_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*BorProducersRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_remote_bor_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*BorProducersResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_remote_bor_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*Validator); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } } type x struct{} out := protoimpl.TypeBuilder{ @@ -630,9 +381,9 @@ func file_remote_bor_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_remote_bor_proto_rawDesc, NumEnums: 0, - NumMessages: 7, + NumMessages: 4, NumExtensions: 0, - NumServices: 2, + NumServices: 1, }, GoTypes: file_remote_bor_proto_goTypes, DependencyIndexes: file_remote_bor_proto_depIdxs, diff --git a/erigon-lib/gointerfaces/remoteproto/bor_grpc.pb.go b/erigon-lib/gointerfaces/remoteproto/bor_grpc.pb.go index 1bedc1c5378..ada89d0e6f3 100644 --- a/erigon-lib/gointerfaces/remoteproto/bor_grpc.pb.go +++ b/erigon-lib/gointerfaces/remoteproto/bor_grpc.pb.go @@ -188,134 +188,3 @@ var BridgeBackend_ServiceDesc = grpc.ServiceDesc{ Streams: []grpc.StreamDesc{}, Metadata: "remote/bor.proto", } - -const ( - HeimdallBackend_Version_FullMethodName = "/remote.HeimdallBackend/Version" - HeimdallBackend_Producers_FullMethodName = "/remote.HeimdallBackend/Producers" -) - -// HeimdallBackendClient is the client API for HeimdallBackend service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -type HeimdallBackendClient interface { - // Version returns the service version number - Version(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*typesproto.VersionReply, error) - Producers(ctx context.Context, in *BorProducersRequest, opts ...grpc.CallOption) (*BorProducersResponse, error) -} - -type heimdallBackendClient struct { - cc grpc.ClientConnInterface -} - -func NewHeimdallBackendClient(cc grpc.ClientConnInterface) HeimdallBackendClient { - return &heimdallBackendClient{cc} -} - -func (c *heimdallBackendClient) Version(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*typesproto.VersionReply, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(typesproto.VersionReply) - err := c.cc.Invoke(ctx, HeimdallBackend_Version_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *heimdallBackendClient) Producers(ctx context.Context, in *BorProducersRequest, opts ...grpc.CallOption) (*BorProducersResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(BorProducersResponse) - err := c.cc.Invoke(ctx, HeimdallBackend_Producers_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -// HeimdallBackendServer is the server API for HeimdallBackend service. -// All implementations must embed UnimplementedHeimdallBackendServer -// for forward compatibility -type HeimdallBackendServer interface { - // Version returns the service version number - Version(context.Context, *emptypb.Empty) (*typesproto.VersionReply, error) - Producers(context.Context, *BorProducersRequest) (*BorProducersResponse, error) - mustEmbedUnimplementedHeimdallBackendServer() -} - -// UnimplementedHeimdallBackendServer must be embedded to have forward compatible implementations. -type UnimplementedHeimdallBackendServer struct { -} - -func (UnimplementedHeimdallBackendServer) Version(context.Context, *emptypb.Empty) (*typesproto.VersionReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method Version not implemented") -} -func (UnimplementedHeimdallBackendServer) Producers(context.Context, *BorProducersRequest) (*BorProducersResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Producers not implemented") -} -func (UnimplementedHeimdallBackendServer) mustEmbedUnimplementedHeimdallBackendServer() {} - -// UnsafeHeimdallBackendServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to HeimdallBackendServer will -// result in compilation errors. -type UnsafeHeimdallBackendServer interface { - mustEmbedUnimplementedHeimdallBackendServer() -} - -func RegisterHeimdallBackendServer(s grpc.ServiceRegistrar, srv HeimdallBackendServer) { - s.RegisterService(&HeimdallBackend_ServiceDesc, srv) -} - -func _HeimdallBackend_Version_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(emptypb.Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HeimdallBackendServer).Version(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HeimdallBackend_Version_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HeimdallBackendServer).Version(ctx, req.(*emptypb.Empty)) - } - return interceptor(ctx, in, info, handler) -} - -func _HeimdallBackend_Producers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(BorProducersRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HeimdallBackendServer).Producers(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HeimdallBackend_Producers_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HeimdallBackendServer).Producers(ctx, req.(*BorProducersRequest)) - } - return interceptor(ctx, in, info, handler) -} - -// HeimdallBackend_ServiceDesc is the grpc.ServiceDesc for HeimdallBackend service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var HeimdallBackend_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "remote.HeimdallBackend", - HandlerType: (*HeimdallBackendServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Version", - Handler: _HeimdallBackend_Version_Handler, - }, - { - MethodName: "Producers", - Handler: _HeimdallBackend_Producers_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "remote/bor.proto", -} diff --git a/erigon-lib/gointerfaces/remoteproto/ethbackend.pb.go b/erigon-lib/gointerfaces/remoteproto/ethbackend.pb.go index 5f1d33cad37..a6a14ade738 100644 --- a/erigon-lib/gointerfaces/remoteproto/ethbackend.pb.go +++ b/erigon-lib/gointerfaces/remoteproto/ethbackend.pb.go @@ -1272,6 +1272,53 @@ func (x *TxnLookupReply) GetBlockNumber() uint64 { return 0 } +type TxnNumLookupReply struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TxNumber uint64 `protobuf:"varint,1,opt,name=tx_number,json=txNumber,proto3" json:"tx_number,omitempty"` +} + +func (x *TxnNumLookupReply) Reset() { + *x = TxnNumLookupReply{} + if protoimpl.UnsafeEnabled { + mi := &file_remote_ethbackend_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TxnNumLookupReply) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TxnNumLookupReply) ProtoMessage() {} + +func (x *TxnNumLookupReply) ProtoReflect() protoreflect.Message { + mi := &file_remote_ethbackend_proto_msgTypes[24] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TxnNumLookupReply.ProtoReflect.Descriptor instead. +func (*TxnNumLookupReply) Descriptor() ([]byte, []int) { + return file_remote_ethbackend_proto_rawDescGZIP(), []int{24} +} + +func (x *TxnNumLookupReply) GetTxNumber() uint64 { + if x != nil { + return x.TxNumber + } + return 0 +} + type NodesInfoRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1283,7 +1330,7 @@ type NodesInfoRequest struct { func (x *NodesInfoRequest) Reset() { *x = NodesInfoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[24] + mi := &file_remote_ethbackend_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1296,7 +1343,7 @@ func (x *NodesInfoRequest) String() string { func (*NodesInfoRequest) ProtoMessage() {} func (x *NodesInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[24] + mi := &file_remote_ethbackend_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1309,7 +1356,7 @@ func (x *NodesInfoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use NodesInfoRequest.ProtoReflect.Descriptor instead. func (*NodesInfoRequest) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{24} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{25} } func (x *NodesInfoRequest) GetLimit() uint32 { @@ -1330,7 +1377,7 @@ type AddPeerRequest struct { func (x *AddPeerRequest) Reset() { *x = AddPeerRequest{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[25] + mi := &file_remote_ethbackend_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1343,7 +1390,7 @@ func (x *AddPeerRequest) String() string { func (*AddPeerRequest) ProtoMessage() {} func (x *AddPeerRequest) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[25] + mi := &file_remote_ethbackend_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1356,7 +1403,7 @@ func (x *AddPeerRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AddPeerRequest.ProtoReflect.Descriptor instead. func (*AddPeerRequest) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{25} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{26} } func (x *AddPeerRequest) GetUrl() string { @@ -1377,7 +1424,7 @@ type NodesInfoReply struct { func (x *NodesInfoReply) Reset() { *x = NodesInfoReply{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[26] + mi := &file_remote_ethbackend_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1390,7 +1437,7 @@ func (x *NodesInfoReply) String() string { func (*NodesInfoReply) ProtoMessage() {} func (x *NodesInfoReply) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[26] + mi := &file_remote_ethbackend_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1403,7 +1450,7 @@ func (x *NodesInfoReply) ProtoReflect() protoreflect.Message { // Deprecated: Use NodesInfoReply.ProtoReflect.Descriptor instead. func (*NodesInfoReply) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{26} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{27} } func (x *NodesInfoReply) GetNodesInfo() []*typesproto.NodeInfoReply { @@ -1424,7 +1471,7 @@ type PeersReply struct { func (x *PeersReply) Reset() { *x = PeersReply{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[27] + mi := &file_remote_ethbackend_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1437,7 +1484,7 @@ func (x *PeersReply) String() string { func (*PeersReply) ProtoMessage() {} func (x *PeersReply) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[27] + mi := &file_remote_ethbackend_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1450,7 +1497,7 @@ func (x *PeersReply) ProtoReflect() protoreflect.Message { // Deprecated: Use PeersReply.ProtoReflect.Descriptor instead. func (*PeersReply) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{27} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{28} } func (x *PeersReply) GetPeers() []*typesproto.PeerInfo { @@ -1471,7 +1518,7 @@ type AddPeerReply struct { func (x *AddPeerReply) Reset() { *x = AddPeerReply{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[28] + mi := &file_remote_ethbackend_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1484,7 +1531,7 @@ func (x *AddPeerReply) String() string { func (*AddPeerReply) ProtoMessage() {} func (x *AddPeerReply) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[28] + mi := &file_remote_ethbackend_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1497,7 +1544,7 @@ func (x *AddPeerReply) ProtoReflect() protoreflect.Message { // Deprecated: Use AddPeerReply.ProtoReflect.Descriptor instead. func (*AddPeerReply) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{28} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{29} } func (x *AddPeerReply) GetSuccess() bool { @@ -1518,7 +1565,7 @@ type PendingBlockReply struct { func (x *PendingBlockReply) Reset() { *x = PendingBlockReply{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[29] + mi := &file_remote_ethbackend_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1531,7 +1578,7 @@ func (x *PendingBlockReply) String() string { func (*PendingBlockReply) ProtoMessage() {} func (x *PendingBlockReply) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[29] + mi := &file_remote_ethbackend_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1544,7 +1591,7 @@ func (x *PendingBlockReply) ProtoReflect() protoreflect.Message { // Deprecated: Use PendingBlockReply.ProtoReflect.Descriptor instead. func (*PendingBlockReply) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{29} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{30} } func (x *PendingBlockReply) GetBlockRlp() []byte { @@ -1565,7 +1612,7 @@ type EngineGetPayloadBodiesByHashV1Request struct { func (x *EngineGetPayloadBodiesByHashV1Request) Reset() { *x = EngineGetPayloadBodiesByHashV1Request{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[30] + mi := &file_remote_ethbackend_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1578,7 +1625,7 @@ func (x *EngineGetPayloadBodiesByHashV1Request) String() string { func (*EngineGetPayloadBodiesByHashV1Request) ProtoMessage() {} func (x *EngineGetPayloadBodiesByHashV1Request) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[30] + mi := &file_remote_ethbackend_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1591,7 +1638,7 @@ func (x *EngineGetPayloadBodiesByHashV1Request) ProtoReflect() protoreflect.Mess // Deprecated: Use EngineGetPayloadBodiesByHashV1Request.ProtoReflect.Descriptor instead. func (*EngineGetPayloadBodiesByHashV1Request) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{30} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{31} } func (x *EngineGetPayloadBodiesByHashV1Request) GetHashes() []*typesproto.H256 { @@ -1613,7 +1660,7 @@ type EngineGetPayloadBodiesByRangeV1Request struct { func (x *EngineGetPayloadBodiesByRangeV1Request) Reset() { *x = EngineGetPayloadBodiesByRangeV1Request{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[31] + mi := &file_remote_ethbackend_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1626,7 +1673,7 @@ func (x *EngineGetPayloadBodiesByRangeV1Request) String() string { func (*EngineGetPayloadBodiesByRangeV1Request) ProtoMessage() {} func (x *EngineGetPayloadBodiesByRangeV1Request) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[31] + mi := &file_remote_ethbackend_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1639,7 +1686,7 @@ func (x *EngineGetPayloadBodiesByRangeV1Request) ProtoReflect() protoreflect.Mes // Deprecated: Use EngineGetPayloadBodiesByRangeV1Request.ProtoReflect.Descriptor instead. func (*EngineGetPayloadBodiesByRangeV1Request) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{31} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{32} } func (x *EngineGetPayloadBodiesByRangeV1Request) GetStart() uint64 { @@ -1766,124 +1813,132 @@ var file_remote_ethbackend_proto_rawDesc = []byte{ 0x73, 0x68, 0x22, 0x33, 0x0a, 0x0e, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x28, 0x0a, 0x10, 0x4e, 0x6f, 0x64, 0x65, 0x73, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x22, 0x22, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x45, 0x0a, 0x0e, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x33, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x73, - 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, - 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x70, 0x6c, - 0x79, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x33, 0x0a, 0x0a, - 0x50, 0x65, 0x65, 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x25, 0x0a, 0x05, 0x70, 0x65, - 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x70, 0x65, 0x65, 0x72, - 0x73, 0x22, 0x28, 0x0a, 0x0c, 0x41, 0x64, 0x64, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, - 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x30, 0x0a, 0x11, 0x50, - 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x79, - 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6c, 0x70, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x08, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6c, 0x70, 0x22, 0x4c, 0x0a, - 0x25, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x42, 0x6f, 0x64, 0x69, 0x65, 0x73, 0x42, 0x79, 0x48, 0x61, 0x73, 0x68, 0x56, 0x31, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, - 0x32, 0x35, 0x36, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x22, 0x54, 0x0a, 0x26, 0x45, - 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, - 0x6f, 0x64, 0x69, 0x65, 0x73, 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x56, 0x31, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x2a, 0x4a, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0a, 0x0a, 0x06, 0x48, 0x45, - 0x41, 0x44, 0x45, 0x52, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, - 0x47, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x45, 0x4e, 0x44, - 0x49, 0x4e, 0x47, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4e, - 0x45, 0x57, 0x5f, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, 0x10, 0x03, 0x32, 0x9a, 0x0a, - 0x0a, 0x0a, 0x45, 0x54, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x12, 0x3d, 0x0a, 0x09, - 0x45, 0x74, 0x68, 0x65, 0x72, 0x62, 0x61, 0x73, 0x65, 0x12, 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, - 0x74, 0x65, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x45, 0x74, 0x68, - 0x65, 0x72, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x40, 0x0a, 0x0a, 0x4e, - 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x2e, 0x72, 0x65, 0x6d, 0x6f, - 0x74, 0x65, 0x2e, 0x4e, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x65, - 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x46, 0x0a, - 0x0c, 0x4e, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x2e, - 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x72, 0x65, 0x6d, - 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x36, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x4f, 0x0a, - 0x0f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x1e, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x49, - 0x0a, 0x0d, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x1c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, - 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3f, 0x0a, 0x09, 0x53, 0x75, 0x62, - 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, - 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x16, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x62, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x30, 0x01, 0x12, 0x4a, 0x0a, 0x0d, 0x53, 0x75, - 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x19, 0x2e, 0x72, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, - 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x70, - 0x6c, 0x79, 0x28, 0x01, 0x30, 0x01, 0x12, 0x31, 0x0a, 0x05, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, - 0x14, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x67, 0x0a, 0x17, 0x43, 0x61, 0x6e, - 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x42, 0x6f, 0x64, 0x79, 0x46, 0x6f, 0x72, 0x53, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x12, 0x26, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x61, - 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x42, 0x6f, 0x64, 0x79, 0x46, 0x6f, 0x72, 0x53, 0x74, - 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x42, - 0x6f, 0x64, 0x79, 0x46, 0x6f, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x70, - 0x6c, 0x79, 0x12, 0x49, 0x0a, 0x0d, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x48, - 0x61, 0x73, 0x68, 0x12, 0x1c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x61, 0x6e, - 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1a, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x61, 0x6e, 0x6f, 0x6e, - 0x69, 0x63, 0x61, 0x6c, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x46, 0x0a, - 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x2e, - 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x72, 0x65, 0x6d, - 0x6f, 0x74, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3d, 0x0a, 0x09, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, - 0x75, 0x70, 0x12, 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x54, 0x78, 0x6e, 0x4c, - 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, - 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3c, 0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x65, 0x6d, - 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x70, - 0x6c, 0x79, 0x12, 0x33, 0x0a, 0x05, 0x50, 0x65, 0x65, 0x72, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x50, 0x65, 0x65, - 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x37, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x50, 0x65, - 0x65, 0x72, 0x12, 0x16, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x50, - 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x72, 0x65, 0x6d, - 0x6f, 0x74, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, - 0x12, 0x41, 0x0a, 0x0c, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x19, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x2e, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x12, 0x46, 0x0a, 0x0c, 0x42, 0x6f, 0x72, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, - 0x6b, 0x75, 0x70, 0x12, 0x1b, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x72, + 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x30, 0x0a, 0x11, 0x54, 0x78, 0x6e, 0x4e, 0x75, + 0x6d, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x1b, 0x0a, 0x09, + 0x74, 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x08, 0x74, 0x78, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x28, 0x0a, 0x10, 0x4e, 0x6f, 0x64, + 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x22, 0x22, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x45, 0x0a, 0x0e, 0x4e, 0x6f, 0x64, 0x65, 0x73, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x33, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, + 0x65, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, + 0x70, 0x6c, 0x79, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x33, + 0x0a, 0x0a, 0x50, 0x65, 0x65, 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x25, 0x0a, 0x05, + 0x70, 0x65, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x70, 0x65, + 0x65, 0x72, 0x73, 0x22, 0x28, 0x0a, 0x0c, 0x41, 0x64, 0x64, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, + 0x70, 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x30, 0x0a, + 0x11, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6c, 0x70, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6c, 0x70, 0x22, + 0x4c, 0x0a, 0x25, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x42, 0x6f, 0x64, 0x69, 0x65, 0x73, 0x42, 0x79, 0x48, 0x61, 0x73, 0x68, 0x56, + 0x31, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x68, 0x61, 0x73, 0x68, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x22, 0x54, 0x0a, + 0x26, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x42, 0x6f, 0x64, 0x69, 0x65, 0x73, 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x56, 0x31, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x2a, 0x4a, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0a, 0x0a, 0x06, + 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x45, 0x4e, 0x44, + 0x49, 0x4e, 0x47, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x45, + 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x02, 0x12, 0x10, 0x0a, + 0x0c, 0x4e, 0x45, 0x57, 0x5f, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, 0x10, 0x03, 0x32, + 0xdf, 0x0a, 0x0a, 0x0a, 0x45, 0x54, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x12, 0x3d, + 0x0a, 0x09, 0x45, 0x74, 0x68, 0x65, 0x72, 0x62, 0x61, 0x73, 0x65, 0x12, 0x18, 0x2e, 0x72, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x45, + 0x74, 0x68, 0x65, 0x72, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x40, 0x0a, + 0x0a, 0x4e, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x2e, 0x72, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, + 0x4e, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, + 0x46, 0x0a, 0x0c, 0x4e, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x1b, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x72, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x36, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x13, 0x2e, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, + 0x4f, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x1e, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x12, 0x49, 0x0a, 0x0d, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x1c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1a, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3f, 0x0a, 0x09, 0x53, + 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, + 0x65, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x30, 0x01, 0x12, 0x4a, 0x0a, 0x0d, + 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x19, 0x2e, + 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, + 0x65, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x28, 0x01, 0x30, 0x01, 0x12, 0x31, 0x0a, 0x05, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x12, 0x14, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x67, 0x0a, 0x17, 0x43, + 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x42, 0x6f, 0x64, 0x79, 0x46, 0x6f, 0x72, 0x53, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x26, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, + 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x42, 0x6f, 0x64, 0x79, 0x46, 0x6f, 0x72, + 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, + 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, + 0x6c, 0x42, 0x6f, 0x64, 0x79, 0x46, 0x6f, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x12, 0x49, 0x0a, 0x0d, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, + 0x6c, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, + 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x61, 0x6e, + 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, + 0x46, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, + 0x1b, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x72, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3d, 0x0a, 0x09, 0x54, 0x78, 0x6e, 0x4c, 0x6f, + 0x6f, 0x6b, 0x75, 0x70, 0x12, 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x54, 0x78, + 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, + 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, + 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x43, 0x0a, 0x0c, 0x54, 0x78, 0x6e, 0x4e, 0x75, 0x6d, + 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x12, 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x19, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x54, 0x78, 0x6e, - 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3d, 0x0a, 0x09, 0x42, - 0x6f, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x42, 0x16, 0x5a, 0x14, 0x2e, 0x2f, - 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x3b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x1a, 0x19, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x54, 0x78, 0x6e, 0x4e, 0x75, 0x6d, + 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3c, 0x0a, 0x08, 0x4e, + 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x73, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x33, 0x0a, 0x05, 0x50, 0x65, 0x65, + 0x72, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x72, 0x65, 0x6d, + 0x6f, 0x74, 0x65, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x37, + 0x0a, 0x07, 0x41, 0x64, 0x64, 0x50, 0x65, 0x65, 0x72, 0x12, 0x16, 0x2e, 0x72, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x14, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x65, + 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x41, 0x0a, 0x0c, 0x50, 0x65, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, + 0x19, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x46, 0x0a, 0x0c, 0x42, 0x6f, + 0x72, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x12, 0x1b, 0x2e, 0x72, 0x65, 0x6d, + 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x2e, 0x42, 0x6f, 0x72, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x12, 0x3d, 0x0a, 0x09, 0x42, 0x6f, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, + 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x70, 0x6c, + 0x79, 0x42, 0x16, 0x5a, 0x14, 0x2e, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x3b, 0x72, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( @@ -1899,7 +1954,7 @@ func file_remote_ethbackend_proto_rawDescGZIP() []byte { } var file_remote_ethbackend_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_remote_ethbackend_proto_msgTypes = make([]protoimpl.MessageInfo, 32) +var file_remote_ethbackend_proto_msgTypes = make([]protoimpl.MessageInfo, 33) var file_remote_ethbackend_proto_goTypes = []any{ (Event)(0), // 0: remote.Event (*EtherbaseRequest)(nil), // 1: remote.EtherbaseRequest @@ -1926,46 +1981,47 @@ var file_remote_ethbackend_proto_goTypes = []any{ (*BlockReply)(nil), // 22: remote.BlockReply (*TxnLookupRequest)(nil), // 23: remote.TxnLookupRequest (*TxnLookupReply)(nil), // 24: remote.TxnLookupReply - (*NodesInfoRequest)(nil), // 25: remote.NodesInfoRequest - (*AddPeerRequest)(nil), // 26: remote.AddPeerRequest - (*NodesInfoReply)(nil), // 27: remote.NodesInfoReply - (*PeersReply)(nil), // 28: remote.PeersReply - (*AddPeerReply)(nil), // 29: remote.AddPeerReply - (*PendingBlockReply)(nil), // 30: remote.PendingBlockReply - (*EngineGetPayloadBodiesByHashV1Request)(nil), // 31: remote.EngineGetPayloadBodiesByHashV1Request - (*EngineGetPayloadBodiesByRangeV1Request)(nil), // 32: remote.EngineGetPayloadBodiesByRangeV1Request - (*typesproto.H160)(nil), // 33: types.H160 - (*typesproto.H256)(nil), // 34: types.H256 - (*typesproto.NodeInfoReply)(nil), // 35: types.NodeInfoReply - (*typesproto.PeerInfo)(nil), // 36: types.PeerInfo - (*emptypb.Empty)(nil), // 37: google.protobuf.Empty - (*BorTxnLookupRequest)(nil), // 38: remote.BorTxnLookupRequest - (*BorEventsRequest)(nil), // 39: remote.BorEventsRequest - (*typesproto.VersionReply)(nil), // 40: types.VersionReply - (*BorTxnLookupReply)(nil), // 41: remote.BorTxnLookupReply - (*BorEventsReply)(nil), // 42: remote.BorEventsReply + (*TxnNumLookupReply)(nil), // 25: remote.TxnNumLookupReply + (*NodesInfoRequest)(nil), // 26: remote.NodesInfoRequest + (*AddPeerRequest)(nil), // 27: remote.AddPeerRequest + (*NodesInfoReply)(nil), // 28: remote.NodesInfoReply + (*PeersReply)(nil), // 29: remote.PeersReply + (*AddPeerReply)(nil), // 30: remote.AddPeerReply + (*PendingBlockReply)(nil), // 31: remote.PendingBlockReply + (*EngineGetPayloadBodiesByHashV1Request)(nil), // 32: remote.EngineGetPayloadBodiesByHashV1Request + (*EngineGetPayloadBodiesByRangeV1Request)(nil), // 33: remote.EngineGetPayloadBodiesByRangeV1Request + (*typesproto.H160)(nil), // 34: types.H160 + (*typesproto.H256)(nil), // 35: types.H256 + (*typesproto.NodeInfoReply)(nil), // 36: types.NodeInfoReply + (*typesproto.PeerInfo)(nil), // 37: types.PeerInfo + (*emptypb.Empty)(nil), // 38: google.protobuf.Empty + (*BorTxnLookupRequest)(nil), // 39: remote.BorTxnLookupRequest + (*BorEventsRequest)(nil), // 40: remote.BorEventsRequest + (*typesproto.VersionReply)(nil), // 41: types.VersionReply + (*BorTxnLookupReply)(nil), // 42: remote.BorTxnLookupReply + (*BorEventsReply)(nil), // 43: remote.BorEventsReply } var file_remote_ethbackend_proto_depIdxs = []int32{ - 33, // 0: remote.EtherbaseReply.address:type_name -> types.H160 - 34, // 1: remote.CanonicalHashReply.hash:type_name -> types.H256 - 34, // 2: remote.HeaderNumberRequest.hash:type_name -> types.H256 + 34, // 0: remote.EtherbaseReply.address:type_name -> types.H160 + 35, // 1: remote.CanonicalHashReply.hash:type_name -> types.H256 + 35, // 2: remote.HeaderNumberRequest.hash:type_name -> types.H256 0, // 3: remote.SubscribeRequest.type:type_name -> remote.Event 0, // 4: remote.SubscribeReply.type:type_name -> remote.Event - 33, // 5: remote.LogsFilterRequest.addresses:type_name -> types.H160 - 34, // 6: remote.LogsFilterRequest.topics:type_name -> types.H256 - 33, // 7: remote.SubscribeLogsReply.address:type_name -> types.H160 - 34, // 8: remote.SubscribeLogsReply.block_hash:type_name -> types.H256 - 34, // 9: remote.SubscribeLogsReply.topics:type_name -> types.H256 - 34, // 10: remote.SubscribeLogsReply.transaction_hash:type_name -> types.H256 - 34, // 11: remote.BlockRequest.block_hash:type_name -> types.H256 - 34, // 12: remote.TxnLookupRequest.txn_hash:type_name -> types.H256 - 35, // 13: remote.NodesInfoReply.nodes_info:type_name -> types.NodeInfoReply - 36, // 14: remote.PeersReply.peers:type_name -> types.PeerInfo - 34, // 15: remote.EngineGetPayloadBodiesByHashV1Request.hashes:type_name -> types.H256 + 34, // 5: remote.LogsFilterRequest.addresses:type_name -> types.H160 + 35, // 6: remote.LogsFilterRequest.topics:type_name -> types.H256 + 34, // 7: remote.SubscribeLogsReply.address:type_name -> types.H160 + 35, // 8: remote.SubscribeLogsReply.block_hash:type_name -> types.H256 + 35, // 9: remote.SubscribeLogsReply.topics:type_name -> types.H256 + 35, // 10: remote.SubscribeLogsReply.transaction_hash:type_name -> types.H256 + 35, // 11: remote.BlockRequest.block_hash:type_name -> types.H256 + 35, // 12: remote.TxnLookupRequest.txn_hash:type_name -> types.H256 + 36, // 13: remote.NodesInfoReply.nodes_info:type_name -> types.NodeInfoReply + 37, // 14: remote.PeersReply.peers:type_name -> types.PeerInfo + 35, // 15: remote.EngineGetPayloadBodiesByHashV1Request.hashes:type_name -> types.H256 1, // 16: remote.ETHBACKEND.Etherbase:input_type -> remote.EtherbaseRequest 3, // 17: remote.ETHBACKEND.NetVersion:input_type -> remote.NetVersionRequest 5, // 18: remote.ETHBACKEND.NetPeerCount:input_type -> remote.NetPeerCountRequest - 37, // 19: remote.ETHBACKEND.Version:input_type -> google.protobuf.Empty + 38, // 19: remote.ETHBACKEND.Version:input_type -> google.protobuf.Empty 7, // 20: remote.ETHBACKEND.ProtocolVersion:input_type -> remote.ProtocolVersionRequest 9, // 21: remote.ETHBACKEND.ClientVersion:input_type -> remote.ClientVersionRequest 17, // 22: remote.ETHBACKEND.Subscribe:input_type -> remote.SubscribeRequest @@ -1975,33 +2031,35 @@ var file_remote_ethbackend_proto_depIdxs = []int32{ 11, // 26: remote.ETHBACKEND.CanonicalHash:input_type -> remote.CanonicalHashRequest 13, // 27: remote.ETHBACKEND.HeaderNumber:input_type -> remote.HeaderNumberRequest 23, // 28: remote.ETHBACKEND.TxnLookup:input_type -> remote.TxnLookupRequest - 25, // 29: remote.ETHBACKEND.NodeInfo:input_type -> remote.NodesInfoRequest - 37, // 30: remote.ETHBACKEND.Peers:input_type -> google.protobuf.Empty - 26, // 31: remote.ETHBACKEND.AddPeer:input_type -> remote.AddPeerRequest - 37, // 32: remote.ETHBACKEND.PendingBlock:input_type -> google.protobuf.Empty - 38, // 33: remote.ETHBACKEND.BorTxnLookup:input_type -> remote.BorTxnLookupRequest - 39, // 34: remote.ETHBACKEND.BorEvents:input_type -> remote.BorEventsRequest - 2, // 35: remote.ETHBACKEND.Etherbase:output_type -> remote.EtherbaseReply - 4, // 36: remote.ETHBACKEND.NetVersion:output_type -> remote.NetVersionReply - 6, // 37: remote.ETHBACKEND.NetPeerCount:output_type -> remote.NetPeerCountReply - 40, // 38: remote.ETHBACKEND.Version:output_type -> types.VersionReply - 8, // 39: remote.ETHBACKEND.ProtocolVersion:output_type -> remote.ProtocolVersionReply - 10, // 40: remote.ETHBACKEND.ClientVersion:output_type -> remote.ClientVersionReply - 18, // 41: remote.ETHBACKEND.Subscribe:output_type -> remote.SubscribeReply - 20, // 42: remote.ETHBACKEND.SubscribeLogs:output_type -> remote.SubscribeLogsReply - 22, // 43: remote.ETHBACKEND.Block:output_type -> remote.BlockReply - 16, // 44: remote.ETHBACKEND.CanonicalBodyForStorage:output_type -> remote.CanonicalBodyForStorageReply - 12, // 45: remote.ETHBACKEND.CanonicalHash:output_type -> remote.CanonicalHashReply - 14, // 46: remote.ETHBACKEND.HeaderNumber:output_type -> remote.HeaderNumberReply - 24, // 47: remote.ETHBACKEND.TxnLookup:output_type -> remote.TxnLookupReply - 27, // 48: remote.ETHBACKEND.NodeInfo:output_type -> remote.NodesInfoReply - 28, // 49: remote.ETHBACKEND.Peers:output_type -> remote.PeersReply - 29, // 50: remote.ETHBACKEND.AddPeer:output_type -> remote.AddPeerReply - 30, // 51: remote.ETHBACKEND.PendingBlock:output_type -> remote.PendingBlockReply - 41, // 52: remote.ETHBACKEND.BorTxnLookup:output_type -> remote.BorTxnLookupReply - 42, // 53: remote.ETHBACKEND.BorEvents:output_type -> remote.BorEventsReply - 35, // [35:54] is the sub-list for method output_type - 16, // [16:35] is the sub-list for method input_type + 23, // 29: remote.ETHBACKEND.TxnNumLookup:input_type -> remote.TxnLookupRequest + 26, // 30: remote.ETHBACKEND.NodeInfo:input_type -> remote.NodesInfoRequest + 38, // 31: remote.ETHBACKEND.Peers:input_type -> google.protobuf.Empty + 27, // 32: remote.ETHBACKEND.AddPeer:input_type -> remote.AddPeerRequest + 38, // 33: remote.ETHBACKEND.PendingBlock:input_type -> google.protobuf.Empty + 39, // 34: remote.ETHBACKEND.BorTxnLookup:input_type -> remote.BorTxnLookupRequest + 40, // 35: remote.ETHBACKEND.BorEvents:input_type -> remote.BorEventsRequest + 2, // 36: remote.ETHBACKEND.Etherbase:output_type -> remote.EtherbaseReply + 4, // 37: remote.ETHBACKEND.NetVersion:output_type -> remote.NetVersionReply + 6, // 38: remote.ETHBACKEND.NetPeerCount:output_type -> remote.NetPeerCountReply + 41, // 39: remote.ETHBACKEND.Version:output_type -> types.VersionReply + 8, // 40: remote.ETHBACKEND.ProtocolVersion:output_type -> remote.ProtocolVersionReply + 10, // 41: remote.ETHBACKEND.ClientVersion:output_type -> remote.ClientVersionReply + 18, // 42: remote.ETHBACKEND.Subscribe:output_type -> remote.SubscribeReply + 20, // 43: remote.ETHBACKEND.SubscribeLogs:output_type -> remote.SubscribeLogsReply + 22, // 44: remote.ETHBACKEND.Block:output_type -> remote.BlockReply + 16, // 45: remote.ETHBACKEND.CanonicalBodyForStorage:output_type -> remote.CanonicalBodyForStorageReply + 12, // 46: remote.ETHBACKEND.CanonicalHash:output_type -> remote.CanonicalHashReply + 14, // 47: remote.ETHBACKEND.HeaderNumber:output_type -> remote.HeaderNumberReply + 24, // 48: remote.ETHBACKEND.TxnLookup:output_type -> remote.TxnLookupReply + 25, // 49: remote.ETHBACKEND.TxnNumLookup:output_type -> remote.TxnNumLookupReply + 28, // 50: remote.ETHBACKEND.NodeInfo:output_type -> remote.NodesInfoReply + 29, // 51: remote.ETHBACKEND.Peers:output_type -> remote.PeersReply + 30, // 52: remote.ETHBACKEND.AddPeer:output_type -> remote.AddPeerReply + 31, // 53: remote.ETHBACKEND.PendingBlock:output_type -> remote.PendingBlockReply + 42, // 54: remote.ETHBACKEND.BorTxnLookup:output_type -> remote.BorTxnLookupReply + 43, // 55: remote.ETHBACKEND.BorEvents:output_type -> remote.BorEventsReply + 36, // [36:56] is the sub-list for method output_type + 16, // [16:36] is the sub-list for method input_type 16, // [16:16] is the sub-list for extension type_name 16, // [16:16] is the sub-list for extension extendee 0, // [0:16] is the sub-list for field type_name @@ -2303,7 +2361,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[24].Exporter = func(v any, i int) any { - switch v := v.(*NodesInfoRequest); i { + switch v := v.(*TxnNumLookupReply); i { case 0: return &v.state case 1: @@ -2315,7 +2373,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[25].Exporter = func(v any, i int) any { - switch v := v.(*AddPeerRequest); i { + switch v := v.(*NodesInfoRequest); i { case 0: return &v.state case 1: @@ -2327,7 +2385,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[26].Exporter = func(v any, i int) any { - switch v := v.(*NodesInfoReply); i { + switch v := v.(*AddPeerRequest); i { case 0: return &v.state case 1: @@ -2339,7 +2397,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[27].Exporter = func(v any, i int) any { - switch v := v.(*PeersReply); i { + switch v := v.(*NodesInfoReply); i { case 0: return &v.state case 1: @@ -2351,7 +2409,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[28].Exporter = func(v any, i int) any { - switch v := v.(*AddPeerReply); i { + switch v := v.(*PeersReply); i { case 0: return &v.state case 1: @@ -2363,7 +2421,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[29].Exporter = func(v any, i int) any { - switch v := v.(*PendingBlockReply); i { + switch v := v.(*AddPeerReply); i { case 0: return &v.state case 1: @@ -2375,7 +2433,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[30].Exporter = func(v any, i int) any { - switch v := v.(*EngineGetPayloadBodiesByHashV1Request); i { + switch v := v.(*PendingBlockReply); i { case 0: return &v.state case 1: @@ -2387,6 +2445,18 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[31].Exporter = func(v any, i int) any { + switch v := v.(*EngineGetPayloadBodiesByHashV1Request); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_remote_ethbackend_proto_msgTypes[32].Exporter = func(v any, i int) any { switch v := v.(*EngineGetPayloadBodiesByRangeV1Request); i { case 0: return &v.state @@ -2406,7 +2476,7 @@ func file_remote_ethbackend_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_remote_ethbackend_proto_rawDesc, NumEnums: 1, - NumMessages: 32, + NumMessages: 33, NumExtensions: 0, NumServices: 1, }, diff --git a/erigon-lib/gointerfaces/remoteproto/ethbackend_grpc.pb.go b/erigon-lib/gointerfaces/remoteproto/ethbackend_grpc.pb.go index 366e13975f1..cc63a2f32db 100644 --- a/erigon-lib/gointerfaces/remoteproto/ethbackend_grpc.pb.go +++ b/erigon-lib/gointerfaces/remoteproto/ethbackend_grpc.pb.go @@ -34,6 +34,7 @@ const ( ETHBACKEND_CanonicalHash_FullMethodName = "/remote.ETHBACKEND/CanonicalHash" ETHBACKEND_HeaderNumber_FullMethodName = "/remote.ETHBACKEND/HeaderNumber" ETHBACKEND_TxnLookup_FullMethodName = "/remote.ETHBACKEND/TxnLookup" + ETHBACKEND_TxnNumLookup_FullMethodName = "/remote.ETHBACKEND/TxnNumLookup" ETHBACKEND_NodeInfo_FullMethodName = "/remote.ETHBACKEND/NodeInfo" ETHBACKEND_Peers_FullMethodName = "/remote.ETHBACKEND/Peers" ETHBACKEND_AddPeer_FullMethodName = "/remote.ETHBACKEND/AddPeer" @@ -71,6 +72,9 @@ type ETHBACKENDClient interface { // High-level method - can find block number by txn hash // it doesn't provide consistency TxnLookup(ctx context.Context, in *TxnLookupRequest, opts ...grpc.CallOption) (*TxnLookupReply, error) + // High-level method - can find txn number by txn hash + // it doesn't provide consistency + TxnNumLookup(ctx context.Context, in *TxnLookupRequest, opts ...grpc.CallOption) (*TxnNumLookupReply, error) // NodeInfo collects and returns NodeInfo from all running sentry instances. NodeInfo(ctx context.Context, in *NodesInfoRequest, opts ...grpc.CallOption) (*NodesInfoReply, error) // Peers collects and returns peers information from all running sentry instances. @@ -265,6 +269,16 @@ func (c *eTHBACKENDClient) TxnLookup(ctx context.Context, in *TxnLookupRequest, return out, nil } +func (c *eTHBACKENDClient) TxnNumLookup(ctx context.Context, in *TxnLookupRequest, opts ...grpc.CallOption) (*TxnNumLookupReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(TxnNumLookupReply) + err := c.cc.Invoke(ctx, ETHBACKEND_TxnNumLookup_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *eTHBACKENDClient) NodeInfo(ctx context.Context, in *NodesInfoRequest, opts ...grpc.CallOption) (*NodesInfoReply, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(NodesInfoReply) @@ -354,6 +368,9 @@ type ETHBACKENDServer interface { // High-level method - can find block number by txn hash // it doesn't provide consistency TxnLookup(context.Context, *TxnLookupRequest) (*TxnLookupReply, error) + // High-level method - can find txn number by txn hash + // it doesn't provide consistency + TxnNumLookup(context.Context, *TxnLookupRequest) (*TxnNumLookupReply, error) // NodeInfo collects and returns NodeInfo from all running sentry instances. NodeInfo(context.Context, *NodesInfoRequest) (*NodesInfoReply, error) // Peers collects and returns peers information from all running sentry instances. @@ -409,6 +426,9 @@ func (UnimplementedETHBACKENDServer) HeaderNumber(context.Context, *HeaderNumber func (UnimplementedETHBACKENDServer) TxnLookup(context.Context, *TxnLookupRequest) (*TxnLookupReply, error) { return nil, status.Errorf(codes.Unimplemented, "method TxnLookup not implemented") } +func (UnimplementedETHBACKENDServer) TxnNumLookup(context.Context, *TxnLookupRequest) (*TxnNumLookupReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method TxnNumLookup not implemented") +} func (UnimplementedETHBACKENDServer) NodeInfo(context.Context, *NodesInfoRequest) (*NodesInfoReply, error) { return nil, status.Errorf(codes.Unimplemented, "method NodeInfo not implemented") } @@ -685,6 +705,24 @@ func _ETHBACKEND_TxnLookup_Handler(srv interface{}, ctx context.Context, dec fun return interceptor(ctx, in, info, handler) } +func _ETHBACKEND_TxnNumLookup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(TxnLookupRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ETHBACKENDServer).TxnNumLookup(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ETHBACKEND_TxnNumLookup_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ETHBACKENDServer).TxnNumLookup(ctx, req.(*TxnLookupRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _ETHBACKEND_NodeInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(NodesInfoRequest) if err := dec(in); err != nil { @@ -844,6 +882,10 @@ var ETHBACKEND_ServiceDesc = grpc.ServiceDesc{ MethodName: "TxnLookup", Handler: _ETHBACKEND_TxnLookup_Handler, }, + { + MethodName: "TxnNumLookup", + Handler: _ETHBACKEND_TxnNumLookup_Handler, + }, { MethodName: "NodeInfo", Handler: _ETHBACKEND_NodeInfo_Handler, diff --git a/erigon-lib/gointerfaces/typesproto/types.pb.go b/erigon-lib/gointerfaces/typesproto/types.pb.go index 6b7a6c5d0cd..e76f7a7001e 100644 --- a/erigon-lib/gointerfaces/typesproto/types.pb.go +++ b/erigon-lib/gointerfaces/typesproto/types.pb.go @@ -423,27 +423,24 @@ type ExecutionPayload struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` // v1 - no withdrawals, v2 - with withdrawals, v3 - with blob gas - ParentHash *H256 `protobuf:"bytes,2,opt,name=parent_hash,json=parentHash,proto3" json:"parent_hash,omitempty"` - Coinbase *H160 `protobuf:"bytes,3,opt,name=coinbase,proto3" json:"coinbase,omitempty"` - StateRoot *H256 `protobuf:"bytes,4,opt,name=state_root,json=stateRoot,proto3" json:"state_root,omitempty"` - ReceiptRoot *H256 `protobuf:"bytes,5,opt,name=receipt_root,json=receiptRoot,proto3" json:"receipt_root,omitempty"` - LogsBloom *H2048 `protobuf:"bytes,6,opt,name=logs_bloom,json=logsBloom,proto3" json:"logs_bloom,omitempty"` - PrevRandao *H256 `protobuf:"bytes,7,opt,name=prev_randao,json=prevRandao,proto3" json:"prev_randao,omitempty"` - BlockNumber uint64 `protobuf:"varint,8,opt,name=block_number,json=blockNumber,proto3" json:"block_number,omitempty"` - GasLimit uint64 `protobuf:"varint,9,opt,name=gas_limit,json=gasLimit,proto3" json:"gas_limit,omitempty"` - GasUsed uint64 `protobuf:"varint,10,opt,name=gas_used,json=gasUsed,proto3" json:"gas_used,omitempty"` - Timestamp uint64 `protobuf:"varint,11,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - ExtraData []byte `protobuf:"bytes,12,opt,name=extra_data,json=extraData,proto3" json:"extra_data,omitempty"` - BaseFeePerGas *H256 `protobuf:"bytes,13,opt,name=base_fee_per_gas,json=baseFeePerGas,proto3" json:"base_fee_per_gas,omitempty"` - BlockHash *H256 `protobuf:"bytes,14,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` - Transactions [][]byte `protobuf:"bytes,15,rep,name=transactions,proto3" json:"transactions,omitempty"` - Withdrawals []*Withdrawal `protobuf:"bytes,16,rep,name=withdrawals,proto3" json:"withdrawals,omitempty"` - BlobGasUsed *uint64 `protobuf:"varint,17,opt,name=blob_gas_used,json=blobGasUsed,proto3,oneof" json:"blob_gas_used,omitempty"` - ExcessBlobGas *uint64 `protobuf:"varint,18,opt,name=excess_blob_gas,json=excessBlobGas,proto3,oneof" json:"excess_blob_gas,omitempty"` - DepositRequests []*DepositRequest `protobuf:"bytes,19,rep,name=deposit_requests,json=depositRequests,proto3" json:"deposit_requests,omitempty"` - WithdrawalRequests []*WithdrawalRequest `protobuf:"bytes,20,rep,name=withdrawal_requests,json=withdrawalRequests,proto3" json:"withdrawal_requests,omitempty"` - ConsolidationRequests []*ConsolidationRequest `protobuf:"bytes,21,rep,name=consolidation_requests,json=consolidationRequests,proto3" json:"consolidation_requests,omitempty"` + Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` // v1 - no withdrawals, v2 - with withdrawals, v3 - with blob gas + ParentHash *H256 `protobuf:"bytes,2,opt,name=parent_hash,json=parentHash,proto3" json:"parent_hash,omitempty"` + Coinbase *H160 `protobuf:"bytes,3,opt,name=coinbase,proto3" json:"coinbase,omitempty"` + StateRoot *H256 `protobuf:"bytes,4,opt,name=state_root,json=stateRoot,proto3" json:"state_root,omitempty"` + ReceiptRoot *H256 `protobuf:"bytes,5,opt,name=receipt_root,json=receiptRoot,proto3" json:"receipt_root,omitempty"` + LogsBloom *H2048 `protobuf:"bytes,6,opt,name=logs_bloom,json=logsBloom,proto3" json:"logs_bloom,omitempty"` + PrevRandao *H256 `protobuf:"bytes,7,opt,name=prev_randao,json=prevRandao,proto3" json:"prev_randao,omitempty"` + BlockNumber uint64 `protobuf:"varint,8,opt,name=block_number,json=blockNumber,proto3" json:"block_number,omitempty"` + GasLimit uint64 `protobuf:"varint,9,opt,name=gas_limit,json=gasLimit,proto3" json:"gas_limit,omitempty"` + GasUsed uint64 `protobuf:"varint,10,opt,name=gas_used,json=gasUsed,proto3" json:"gas_used,omitempty"` + Timestamp uint64 `protobuf:"varint,11,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + ExtraData []byte `protobuf:"bytes,12,opt,name=extra_data,json=extraData,proto3" json:"extra_data,omitempty"` + BaseFeePerGas *H256 `protobuf:"bytes,13,opt,name=base_fee_per_gas,json=baseFeePerGas,proto3" json:"base_fee_per_gas,omitempty"` + BlockHash *H256 `protobuf:"bytes,14,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` + Transactions [][]byte `protobuf:"bytes,15,rep,name=transactions,proto3" json:"transactions,omitempty"` + Withdrawals []*Withdrawal `protobuf:"bytes,16,rep,name=withdrawals,proto3" json:"withdrawals,omitempty"` + BlobGasUsed *uint64 `protobuf:"varint,17,opt,name=blob_gas_used,json=blobGasUsed,proto3,oneof" json:"blob_gas_used,omitempty"` + ExcessBlobGas *uint64 `protobuf:"varint,18,opt,name=excess_blob_gas,json=excessBlobGas,proto3,oneof" json:"excess_blob_gas,omitempty"` } func (x *ExecutionPayload) Reset() { @@ -604,200 +601,6 @@ func (x *ExecutionPayload) GetExcessBlobGas() uint64 { return 0 } -func (x *ExecutionPayload) GetDepositRequests() []*DepositRequest { - if x != nil { - return x.DepositRequests - } - return nil -} - -func (x *ExecutionPayload) GetWithdrawalRequests() []*WithdrawalRequest { - if x != nil { - return x.WithdrawalRequests - } - return nil -} - -func (x *ExecutionPayload) GetConsolidationRequests() []*ConsolidationRequest { - if x != nil { - return x.ConsolidationRequests - } - return nil -} - -type DepositRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Pubkey []byte `protobuf:"bytes,1,opt,name=pubkey,proto3" json:"pubkey,omitempty"` - WithdrawalCredentials *H256 `protobuf:"bytes,2,opt,name=withdrawal_credentials,json=withdrawalCredentials,proto3" json:"withdrawal_credentials,omitempty"` - Amount uint64 `protobuf:"varint,3,opt,name=amount,proto3" json:"amount,omitempty"` - Signature []byte `protobuf:"bytes,4,opt,name=signature,proto3" json:"signature,omitempty"` - Index uint64 `protobuf:"varint,5,opt,name=index,proto3" json:"index,omitempty"` -} - -func (x *DepositRequest) Reset() { - *x = DepositRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_types_types_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DepositRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DepositRequest) ProtoMessage() {} - -func (x *DepositRequest) ProtoReflect() protoreflect.Message { - mi := &file_types_types_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DepositRequest.ProtoReflect.Descriptor instead. -func (*DepositRequest) Descriptor() ([]byte, []int) { - return file_types_types_proto_rawDescGZIP(), []int{8} -} - -func (x *DepositRequest) GetPubkey() []byte { - if x != nil { - return x.Pubkey - } - return nil -} - -func (x *DepositRequest) GetWithdrawalCredentials() *H256 { - if x != nil { - return x.WithdrawalCredentials - } - return nil -} - -func (x *DepositRequest) GetAmount() uint64 { - if x != nil { - return x.Amount - } - return 0 -} - -func (x *DepositRequest) GetSignature() []byte { - if x != nil { - return x.Signature - } - return nil -} - -func (x *DepositRequest) GetIndex() uint64 { - if x != nil { - return x.Index - } - return 0 -} - -type WithdrawalRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RequestData []byte `protobuf:"bytes,1,opt,name=request_data,json=requestData,proto3" json:"request_data,omitempty"` -} - -func (x *WithdrawalRequest) Reset() { - *x = WithdrawalRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_types_types_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *WithdrawalRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WithdrawalRequest) ProtoMessage() {} - -func (x *WithdrawalRequest) ProtoReflect() protoreflect.Message { - mi := &file_types_types_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use WithdrawalRequest.ProtoReflect.Descriptor instead. -func (*WithdrawalRequest) Descriptor() ([]byte, []int) { - return file_types_types_proto_rawDescGZIP(), []int{9} -} - -func (x *WithdrawalRequest) GetRequestData() []byte { - if x != nil { - return x.RequestData - } - return nil -} - -type ConsolidationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RequestData []byte `protobuf:"bytes,1,opt,name=request_data,json=requestData,proto3" json:"request_data,omitempty"` -} - -func (x *ConsolidationRequest) Reset() { - *x = ConsolidationRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_types_types_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ConsolidationRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ConsolidationRequest) ProtoMessage() {} - -func (x *ConsolidationRequest) ProtoReflect() protoreflect.Message { - mi := &file_types_types_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ConsolidationRequest.ProtoReflect.Descriptor instead. -func (*ConsolidationRequest) Descriptor() ([]byte, []int) { - return file_types_types_proto_rawDescGZIP(), []int{10} -} - -func (x *ConsolidationRequest) GetRequestData() []byte { - if x != nil { - return x.RequestData - } - return nil -} - type Withdrawal struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -812,7 +615,7 @@ type Withdrawal struct { func (x *Withdrawal) Reset() { *x = Withdrawal{} if protoimpl.UnsafeEnabled { - mi := &file_types_types_proto_msgTypes[11] + mi := &file_types_types_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -825,7 +628,7 @@ func (x *Withdrawal) String() string { func (*Withdrawal) ProtoMessage() {} func (x *Withdrawal) ProtoReflect() protoreflect.Message { - mi := &file_types_types_proto_msgTypes[11] + mi := &file_types_types_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -838,7 +641,7 @@ func (x *Withdrawal) ProtoReflect() protoreflect.Message { // Deprecated: Use Withdrawal.ProtoReflect.Descriptor instead. func (*Withdrawal) Descriptor() ([]byte, []int) { - return file_types_types_proto_rawDescGZIP(), []int{11} + return file_types_types_proto_rawDescGZIP(), []int{8} } func (x *Withdrawal) GetIndex() uint64 { @@ -884,7 +687,7 @@ type BlobsBundleV1 struct { func (x *BlobsBundleV1) Reset() { *x = BlobsBundleV1{} if protoimpl.UnsafeEnabled { - mi := &file_types_types_proto_msgTypes[12] + mi := &file_types_types_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -897,7 +700,7 @@ func (x *BlobsBundleV1) String() string { func (*BlobsBundleV1) ProtoMessage() {} func (x *BlobsBundleV1) ProtoReflect() protoreflect.Message { - mi := &file_types_types_proto_msgTypes[12] + mi := &file_types_types_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -910,7 +713,7 @@ func (x *BlobsBundleV1) ProtoReflect() protoreflect.Message { // Deprecated: Use BlobsBundleV1.ProtoReflect.Descriptor instead. func (*BlobsBundleV1) Descriptor() ([]byte, []int) { - return file_types_types_proto_rawDescGZIP(), []int{12} + return file_types_types_proto_rawDescGZIP(), []int{9} } func (x *BlobsBundleV1) GetCommitments() [][]byte { @@ -934,6 +737,53 @@ func (x *BlobsBundleV1) GetProofs() [][]byte { return nil } +type RequestsBundle struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Requests [][]byte `protobuf:"bytes,1,rep,name=requests,proto3" json:"requests,omitempty"` +} + +func (x *RequestsBundle) Reset() { + *x = RequestsBundle{} + if protoimpl.UnsafeEnabled { + mi := &file_types_types_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RequestsBundle) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RequestsBundle) ProtoMessage() {} + +func (x *RequestsBundle) ProtoReflect() protoreflect.Message { + mi := &file_types_types_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RequestsBundle.ProtoReflect.Descriptor instead. +func (*RequestsBundle) Descriptor() ([]byte, []int) { + return file_types_types_proto_rawDescGZIP(), []int{10} +} + +func (x *RequestsBundle) GetRequests() [][]byte { + if x != nil { + return x.Requests + } + return nil +} + type NodeInfoPorts struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -946,7 +796,7 @@ type NodeInfoPorts struct { func (x *NodeInfoPorts) Reset() { *x = NodeInfoPorts{} if protoimpl.UnsafeEnabled { - mi := &file_types_types_proto_msgTypes[13] + mi := &file_types_types_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -959,7 +809,7 @@ func (x *NodeInfoPorts) String() string { func (*NodeInfoPorts) ProtoMessage() {} func (x *NodeInfoPorts) ProtoReflect() protoreflect.Message { - mi := &file_types_types_proto_msgTypes[13] + mi := &file_types_types_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -972,7 +822,7 @@ func (x *NodeInfoPorts) ProtoReflect() protoreflect.Message { // Deprecated: Use NodeInfoPorts.ProtoReflect.Descriptor instead. func (*NodeInfoPorts) Descriptor() ([]byte, []int) { - return file_types_types_proto_rawDescGZIP(), []int{13} + return file_types_types_proto_rawDescGZIP(), []int{11} } func (x *NodeInfoPorts) GetDiscovery() uint32 { @@ -1006,7 +856,7 @@ type NodeInfoReply struct { func (x *NodeInfoReply) Reset() { *x = NodeInfoReply{} if protoimpl.UnsafeEnabled { - mi := &file_types_types_proto_msgTypes[14] + mi := &file_types_types_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1019,7 +869,7 @@ func (x *NodeInfoReply) String() string { func (*NodeInfoReply) ProtoMessage() {} func (x *NodeInfoReply) ProtoReflect() protoreflect.Message { - mi := &file_types_types_proto_msgTypes[14] + mi := &file_types_types_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1032,7 +882,7 @@ func (x *NodeInfoReply) ProtoReflect() protoreflect.Message { // Deprecated: Use NodeInfoReply.ProtoReflect.Descriptor instead. func (*NodeInfoReply) Descriptor() ([]byte, []int) { - return file_types_types_proto_rawDescGZIP(), []int{14} + return file_types_types_proto_rawDescGZIP(), []int{12} } func (x *NodeInfoReply) GetId() string { @@ -1104,7 +954,7 @@ type PeerInfo struct { func (x *PeerInfo) Reset() { *x = PeerInfo{} if protoimpl.UnsafeEnabled { - mi := &file_types_types_proto_msgTypes[15] + mi := &file_types_types_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1117,7 +967,7 @@ func (x *PeerInfo) String() string { func (*PeerInfo) ProtoMessage() {} func (x *PeerInfo) ProtoReflect() protoreflect.Message { - mi := &file_types_types_proto_msgTypes[15] + mi := &file_types_types_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1130,7 +980,7 @@ func (x *PeerInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use PeerInfo.ProtoReflect.Descriptor instead. func (*PeerInfo) Descriptor() ([]byte, []int) { - return file_types_types_proto_rawDescGZIP(), []int{15} + return file_types_types_proto_rawDescGZIP(), []int{13} } func (x *PeerInfo) GetId() string { @@ -1215,7 +1065,7 @@ type ExecutionPayloadBodyV1 struct { func (x *ExecutionPayloadBodyV1) Reset() { *x = ExecutionPayloadBodyV1{} if protoimpl.UnsafeEnabled { - mi := &file_types_types_proto_msgTypes[16] + mi := &file_types_types_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1228,7 +1078,7 @@ func (x *ExecutionPayloadBodyV1) String() string { func (*ExecutionPayloadBodyV1) ProtoMessage() {} func (x *ExecutionPayloadBodyV1) ProtoReflect() protoreflect.Message { - mi := &file_types_types_proto_msgTypes[16] + mi := &file_types_types_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1241,7 +1091,7 @@ func (x *ExecutionPayloadBodyV1) ProtoReflect() protoreflect.Message { // Deprecated: Use ExecutionPayloadBodyV1.ProtoReflect.Descriptor instead. func (*ExecutionPayloadBodyV1) Descriptor() ([]byte, []int) { - return file_types_types_proto_rawDescGZIP(), []int{16} + return file_types_types_proto_rawDescGZIP(), []int{14} } func (x *ExecutionPayloadBodyV1) GetTransactions() [][]byte { @@ -1329,7 +1179,7 @@ var file_types_types_proto_rawDesc = []byte{ 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x22, 0xea, 0x07, 0x0a, 0x10, 0x45, 0x78, 0x65, 0x63, + 0x52, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x22, 0x89, 0x06, 0x0a, 0x10, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, @@ -1375,119 +1225,89 @@ var file_types_types_proto_rawDesc = []byte{ 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x62, 0x47, 0x61, 0x73, 0x55, 0x73, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x65, 0x78, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x67, 0x61, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x0d, 0x65, 0x78, 0x63, - 0x65, 0x73, 0x73, 0x42, 0x6c, 0x6f, 0x62, 0x47, 0x61, 0x73, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, - 0x10, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, - 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0f, - 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, - 0x49, 0x0a, 0x13, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x5f, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, - 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x12, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, - 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x52, 0x0a, 0x16, 0x63, 0x6f, - 0x6e, 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x79, 0x70, - 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x15, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x42, 0x10, - 0x0a, 0x0e, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, - 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x62, - 0x5f, 0x67, 0x61, 0x73, 0x22, 0xb8, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, - 0x42, 0x0a, 0x16, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x5f, 0x63, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x15, 0x77, 0x69, - 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, - 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, - 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, - 0x36, 0x0a, 0x11, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x22, 0x39, 0x0a, 0x14, 0x43, 0x6f, 0x6e, 0x73, 0x6f, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x44, 0x61, - 0x74, 0x61, 0x22, 0x8a, 0x01, 0x0a, 0x0a, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, - 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x27, 0x0a, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x0e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, - 0x12, 0x25, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x31, 0x36, 0x30, 0x52, 0x07, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, - 0x5f, 0x0a, 0x0d, 0x42, 0x6c, 0x6f, 0x62, 0x73, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x56, 0x31, - 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, - 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x62, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0c, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x62, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x6f, 0x6f, - 0x66, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x06, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x73, - 0x22, 0x49, 0x0a, 0x0d, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x6f, 0x72, 0x74, - 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x12, - 0x1a, 0x0a, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x22, 0xca, 0x01, 0x0a, 0x0d, - 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x65, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x72, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x72, 0x12, 0x2a, 0x0a, 0x05, 0x70, 0x6f, 0x72, - 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x52, 0x05, - 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, - 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x69, - 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x22, 0xb2, 0x02, 0x0a, 0x08, 0x50, 0x65, 0x65, - 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6e, 0x6f, - 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6e, 0x6f, 0x64, 0x65, 0x12, - 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, - 0x72, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x61, 0x70, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x04, 0x63, 0x61, 0x70, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x5f, 0x6c, 0x6f, - 0x63, 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x63, 0x6f, 0x6e, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x12, 0x28, 0x0a, - 0x10, 0x63, 0x6f, 0x6e, 0x6e, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x64, - 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x52, 0x65, 0x6d, - 0x6f, 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x5f, - 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x6e, 0x49, 0x73, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x12, - 0x26, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x5f, 0x69, 0x73, 0x5f, 0x74, 0x72, 0x75, 0x73, 0x74, - 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x6e, 0x49, 0x73, - 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x5f, - 0x69, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0c, 0x63, 0x6f, 0x6e, 0x6e, 0x49, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x22, 0x71, 0x0a, - 0x16, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x42, 0x6f, 0x64, 0x79, 0x56, 0x31, 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0c, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x0b, 0x77, - 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, - 0x77, 0x61, 0x6c, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, - 0x3a, 0x52, 0x0a, 0x15, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x6a, 0x6f, - 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xd1, 0x86, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x13, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x6a, 0x6f, 0x72, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x52, 0x0a, 0x15, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, - 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xd2, 0x86, 0x03, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x13, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x69, 0x6e, 0x6f, - 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x52, 0x0a, 0x15, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0xd3, 0x86, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x50, 0x61, 0x74, 0x63, 0x68, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x14, 0x5a, 0x12, - 0x2e, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x3b, 0x74, 0x79, 0x70, 0x65, 0x73, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x73, 0x73, 0x42, 0x6c, 0x6f, 0x62, 0x47, 0x61, 0x73, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, + 0x0e, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x5f, 0x67, 0x61, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x42, + 0x12, 0x0a, 0x10, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x5f, + 0x67, 0x61, 0x73, 0x22, 0x8a, 0x01, 0x0a, 0x0a, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, + 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x27, 0x0a, 0x0f, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x0e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x12, 0x25, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x31, 0x36, 0x30, 0x52, + 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x22, 0x5f, 0x0a, 0x0d, 0x42, 0x6c, 0x6f, 0x62, 0x73, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x56, + 0x31, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x62, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0c, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x62, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x6f, + 0x6f, 0x66, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x06, 0x70, 0x72, 0x6f, 0x6f, 0x66, + 0x73, 0x22, 0x2c, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x42, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x22, + 0x49, 0x0a, 0x0d, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x6f, 0x72, 0x74, 0x73, + 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x09, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x12, 0x1a, + 0x0a, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x22, 0xca, 0x01, 0x0a, 0x0d, 0x4e, + 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x65, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x72, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x72, 0x12, 0x2a, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, + 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, + 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x52, 0x05, 0x70, + 0x6f, 0x72, 0x74, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x22, 0xb2, 0x02, 0x0a, 0x08, 0x50, 0x65, 0x65, 0x72, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6e, 0x6f, 0x64, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x10, + 0x0a, 0x03, 0x65, 0x6e, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x72, + 0x12, 0x12, 0x0a, 0x04, 0x63, 0x61, 0x70, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, + 0x63, 0x61, 0x70, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, + 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, + 0x6f, 0x6e, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x12, 0x28, 0x0a, 0x10, + 0x63, 0x6f, 0x6e, 0x6e, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x52, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x5f, 0x69, + 0x73, 0x5f, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0d, 0x63, 0x6f, 0x6e, 0x6e, 0x49, 0x73, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x26, + 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x5f, 0x69, 0x73, 0x5f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, + 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x6e, 0x49, 0x73, 0x54, + 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x5f, 0x69, + 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, + 0x63, 0x6f, 0x6e, 0x6e, 0x49, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x22, 0x71, 0x0a, 0x16, + 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x42, 0x6f, 0x64, 0x79, 0x56, 0x31, 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0c, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x0b, 0x77, 0x69, + 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, + 0x61, 0x6c, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x3a, + 0x52, 0x0a, 0x15, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x6a, 0x6f, 0x72, + 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xd1, 0x86, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x6a, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x3a, 0x52, 0x0a, 0x15, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6d, + 0x69, 0x6e, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, + 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xd2, 0x86, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x13, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x69, 0x6e, 0x6f, 0x72, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x52, 0x0a, 0x15, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xd3, + 0x86, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, + 0x61, 0x74, 0x63, 0x68, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x14, 0x5a, 0x12, 0x2e, + 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x3b, 0x74, 0x79, 0x70, 0x65, 0x73, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1502,7 +1322,7 @@ func file_types_types_proto_rawDescGZIP() []byte { return file_types_types_proto_rawDescData } -var file_types_types_proto_msgTypes = make([]protoimpl.MessageInfo, 17) +var file_types_types_proto_msgTypes = make([]protoimpl.MessageInfo, 15) var file_types_types_proto_goTypes = []any{ (*H128)(nil), // 0: types.H128 (*H160)(nil), // 1: types.H160 @@ -1512,16 +1332,14 @@ var file_types_types_proto_goTypes = []any{ (*H2048)(nil), // 5: types.H2048 (*VersionReply)(nil), // 6: types.VersionReply (*ExecutionPayload)(nil), // 7: types.ExecutionPayload - (*DepositRequest)(nil), // 8: types.DepositRequest - (*WithdrawalRequest)(nil), // 9: types.WithdrawalRequest - (*ConsolidationRequest)(nil), // 10: types.ConsolidationRequest - (*Withdrawal)(nil), // 11: types.Withdrawal - (*BlobsBundleV1)(nil), // 12: types.BlobsBundleV1 - (*NodeInfoPorts)(nil), // 13: types.NodeInfoPorts - (*NodeInfoReply)(nil), // 14: types.NodeInfoReply - (*PeerInfo)(nil), // 15: types.PeerInfo - (*ExecutionPayloadBodyV1)(nil), // 16: types.ExecutionPayloadBodyV1 - (*descriptorpb.FileOptions)(nil), // 17: google.protobuf.FileOptions + (*Withdrawal)(nil), // 8: types.Withdrawal + (*BlobsBundleV1)(nil), // 9: types.BlobsBundleV1 + (*RequestsBundle)(nil), // 10: types.RequestsBundle + (*NodeInfoPorts)(nil), // 11: types.NodeInfoPorts + (*NodeInfoReply)(nil), // 12: types.NodeInfoReply + (*PeerInfo)(nil), // 13: types.PeerInfo + (*ExecutionPayloadBodyV1)(nil), // 14: types.ExecutionPayloadBodyV1 + (*descriptorpb.FileOptions)(nil), // 15: google.protobuf.FileOptions } var file_types_types_proto_depIdxs = []int32{ 0, // 0: types.H160.hi:type_name -> types.H128 @@ -1541,22 +1359,18 @@ var file_types_types_proto_depIdxs = []int32{ 2, // 14: types.ExecutionPayload.prev_randao:type_name -> types.H256 2, // 15: types.ExecutionPayload.base_fee_per_gas:type_name -> types.H256 2, // 16: types.ExecutionPayload.block_hash:type_name -> types.H256 - 11, // 17: types.ExecutionPayload.withdrawals:type_name -> types.Withdrawal - 8, // 18: types.ExecutionPayload.deposit_requests:type_name -> types.DepositRequest - 9, // 19: types.ExecutionPayload.withdrawal_requests:type_name -> types.WithdrawalRequest - 10, // 20: types.ExecutionPayload.consolidation_requests:type_name -> types.ConsolidationRequest - 2, // 21: types.DepositRequest.withdrawal_credentials:type_name -> types.H256 - 1, // 22: types.Withdrawal.address:type_name -> types.H160 - 13, // 23: types.NodeInfoReply.ports:type_name -> types.NodeInfoPorts - 11, // 24: types.ExecutionPayloadBodyV1.withdrawals:type_name -> types.Withdrawal - 17, // 25: types.service_major_version:extendee -> google.protobuf.FileOptions - 17, // 26: types.service_minor_version:extendee -> google.protobuf.FileOptions - 17, // 27: types.service_patch_version:extendee -> google.protobuf.FileOptions - 28, // [28:28] is the sub-list for method output_type - 28, // [28:28] is the sub-list for method input_type - 28, // [28:28] is the sub-list for extension type_name - 25, // [25:28] is the sub-list for extension extendee - 0, // [0:25] is the sub-list for field type_name + 8, // 17: types.ExecutionPayload.withdrawals:type_name -> types.Withdrawal + 1, // 18: types.Withdrawal.address:type_name -> types.H160 + 11, // 19: types.NodeInfoReply.ports:type_name -> types.NodeInfoPorts + 8, // 20: types.ExecutionPayloadBodyV1.withdrawals:type_name -> types.Withdrawal + 15, // 21: types.service_major_version:extendee -> google.protobuf.FileOptions + 15, // 22: types.service_minor_version:extendee -> google.protobuf.FileOptions + 15, // 23: types.service_patch_version:extendee -> google.protobuf.FileOptions + 24, // [24:24] is the sub-list for method output_type + 24, // [24:24] is the sub-list for method input_type + 24, // [24:24] is the sub-list for extension type_name + 21, // [21:24] is the sub-list for extension extendee + 0, // [0:21] is the sub-list for field type_name } func init() { file_types_types_proto_init() } @@ -1662,7 +1476,7 @@ func file_types_types_proto_init() { } } file_types_types_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*DepositRequest); i { + switch v := v.(*Withdrawal); i { case 0: return &v.state case 1: @@ -1674,7 +1488,7 @@ func file_types_types_proto_init() { } } file_types_types_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*WithdrawalRequest); i { + switch v := v.(*BlobsBundleV1); i { case 0: return &v.state case 1: @@ -1686,7 +1500,7 @@ func file_types_types_proto_init() { } } file_types_types_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*ConsolidationRequest); i { + switch v := v.(*RequestsBundle); i { case 0: return &v.state case 1: @@ -1698,30 +1512,6 @@ func file_types_types_proto_init() { } } file_types_types_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*Withdrawal); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_types_types_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*BlobsBundleV1); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_types_types_proto_msgTypes[13].Exporter = func(v any, i int) any { switch v := v.(*NodeInfoPorts); i { case 0: return &v.state @@ -1733,7 +1523,7 @@ func file_types_types_proto_init() { return nil } } - file_types_types_proto_msgTypes[14].Exporter = func(v any, i int) any { + file_types_types_proto_msgTypes[12].Exporter = func(v any, i int) any { switch v := v.(*NodeInfoReply); i { case 0: return &v.state @@ -1745,7 +1535,7 @@ func file_types_types_proto_init() { return nil } } - file_types_types_proto_msgTypes[15].Exporter = func(v any, i int) any { + file_types_types_proto_msgTypes[13].Exporter = func(v any, i int) any { switch v := v.(*PeerInfo); i { case 0: return &v.state @@ -1757,7 +1547,7 @@ func file_types_types_proto_init() { return nil } } - file_types_types_proto_msgTypes[16].Exporter = func(v any, i int) any { + file_types_types_proto_msgTypes[14].Exporter = func(v any, i int) any { switch v := v.(*ExecutionPayloadBodyV1); i { case 0: return &v.state @@ -1777,7 +1567,7 @@ func file_types_types_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_types_types_proto_rawDesc, NumEnums: 0, - NumMessages: 17, + NumMessages: 15, NumExtensions: 3, NumServices: 0, }, diff --git a/turbo/snapshotsync/freezeblocks/block_reader.go b/turbo/snapshotsync/freezeblocks/block_reader.go index f4b6986cd13..f500a20b6fe 100644 --- a/turbo/snapshotsync/freezeblocks/block_reader.go +++ b/turbo/snapshotsync/freezeblocks/block_reader.go @@ -56,6 +56,17 @@ type RemoteBlockReader struct { client remote.ETHBACKENDClient } +func (r *RemoteBlockReader) TxnNumLookup(ctx context.Context, tx kv.Getter, txnHash common.Hash) (uint64, bool, error) { + reply, err := r.client.TxnNumLookup(ctx, &remote.TxnLookupRequest{TxnHash: gointerfaces.ConvertHashToH256(txnHash)}) + if err != nil { + return 0, false, err + } + if reply == nil { + return 0, false, nil + } + return reply.TxNumber, true, nil +} + func (r *RemoteBlockReader) CanPruneTo(uint64) uint64 { panic("not implemented") } From 64517eb2cf8643cd3b8ac9fcb5bf8b1b78f05ab3 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Thu, 24 Oct 2024 12:03:28 +0200 Subject: [PATCH 05/58] commit --- erigon-lib/go.sum | 2 -- 1 file changed, 2 deletions(-) diff --git a/erigon-lib/go.sum b/erigon-lib/go.sum index 75ab2bdde99..cfce3e087cc 100644 --- a/erigon-lib/go.sum +++ b/erigon-lib/go.sum @@ -146,8 +146,6 @@ github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymF github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/erigontech/interfaces v0.0.0-20241018080256-33c46aae5357 h1:bOHNyy/URcrQoN+BC3aUCQ3UXCZ6/52oIZ0UZM++JZw= -github.com/erigontech/interfaces v0.0.0-20241018080256-33c46aae5357/go.mod h1:N7OUkhkcagp9+7yb4ycHsG2VWCOmuJ1ONBecJshxtLE= github.com/erigontech/erigon-snapshot v1.3.1-0.20241023024258-f64407a77e8e h1:ZpIO6HeopuZPYDLldL6zR0qyRezj80kQrDOGEF779ts= github.com/erigontech/erigon-snapshot v1.3.1-0.20241023024258-f64407a77e8e/go.mod h1:ooHlCl+eEYzebiPu+FP6Q6SpPUeMADn8Jxabv3IKb9M= github.com/erigontech/interfaces v0.0.0-20241024094313-c5606cf2790f h1:4L5GC4W/S8oFQ/RoqTUA2HCt3YGEjG5iR6FMlfw+HkU= From ccae7088d8779a6db10200001f98913e1f4dccc6 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Thu, 24 Oct 2024 15:18:11 +0200 Subject: [PATCH 06/58] commit --- erigon-lib/direct/eth_backend_client.go | 4 + erigon-lib/go.mod | 2 +- erigon-lib/go.sum | 4 + erigon-lib/gointerfaces/remoteproto/bor.pb.go | 319 ++++++++++++++++-- .../gointerfaces/remoteproto/bor_grpc.pb.go | 131 +++++++ 5 files changed, 424 insertions(+), 36 deletions(-) diff --git a/erigon-lib/direct/eth_backend_client.go b/erigon-lib/direct/eth_backend_client.go index 66005d47dba..de51f5d54f5 100644 --- a/erigon-lib/direct/eth_backend_client.go +++ b/erigon-lib/direct/eth_backend_client.go @@ -31,6 +31,10 @@ type EthBackendClientDirect struct { server remote.ETHBACKENDServer } +func (s *EthBackendClientDirect) TxnNumLookup(ctx context.Context, in *remote.TxnLookupRequest, opts ...grpc.CallOption) (*remote.TxnNumLookupReply, error) { + return s.server.TxnNumLookup(ctx, in) +} + func NewEthBackendClientDirect(server remote.ETHBACKENDServer) *EthBackendClientDirect { return &EthBackendClientDirect{server: server} } diff --git a/erigon-lib/go.mod b/erigon-lib/go.mod index 0b5335dc4c4..b46fb17142a 100644 --- a/erigon-lib/go.mod +++ b/erigon-lib/go.mod @@ -4,7 +4,7 @@ go 1.22.0 require ( github.com/erigontech/erigon-snapshot v1.3.1-0.20241023024258-f64407a77e8e - github.com/erigontech/interfaces v0.0.0-20241024094313-c5606cf2790f + github.com/erigontech/interfaces v0.0.0-20241024130715-9a66b677a1a6 github.com/erigontech/mdbx-go v0.38.4 github.com/erigontech/secp256k1 v1.1.0 github.com/rs/dnscache v0.0.0-20211102005908-e0241e321417 diff --git a/erigon-lib/go.sum b/erigon-lib/go.sum index cfce3e087cc..15b62ec00b2 100644 --- a/erigon-lib/go.sum +++ b/erigon-lib/go.sum @@ -150,6 +150,10 @@ github.com/erigontech/erigon-snapshot v1.3.1-0.20241023024258-f64407a77e8e h1:Zp github.com/erigontech/erigon-snapshot v1.3.1-0.20241023024258-f64407a77e8e/go.mod h1:ooHlCl+eEYzebiPu+FP6Q6SpPUeMADn8Jxabv3IKb9M= github.com/erigontech/interfaces v0.0.0-20241024094313-c5606cf2790f h1:4L5GC4W/S8oFQ/RoqTUA2HCt3YGEjG5iR6FMlfw+HkU= github.com/erigontech/interfaces v0.0.0-20241024094313-c5606cf2790f/go.mod h1:N7OUkhkcagp9+7yb4ycHsG2VWCOmuJ1ONBecJshxtLE= +github.com/erigontech/interfaces v0.0.0-20241024130148-b9e0ed97502a h1:fmnL0sNMdI4XDHruTz/9UMgNkWtdgnymuKlIX5ZPw68= +github.com/erigontech/interfaces v0.0.0-20241024130148-b9e0ed97502a/go.mod h1:N7OUkhkcagp9+7yb4ycHsG2VWCOmuJ1ONBecJshxtLE= +github.com/erigontech/interfaces v0.0.0-20241024130715-9a66b677a1a6 h1:gUXLw3b3520mJP1S6p1KDt3QzYO+AS9cfL4elyvdjQc= +github.com/erigontech/interfaces v0.0.0-20241024130715-9a66b677a1a6/go.mod h1:N7OUkhkcagp9+7yb4ycHsG2VWCOmuJ1ONBecJshxtLE= github.com/erigontech/mdbx-go v0.38.4 h1:S9T7mTe9KPcFe4dOoOtVdI6gPzht9y7wMnYfUBgrQLo= github.com/erigontech/mdbx-go v0.38.4/go.mod h1:IcOLQDPw3VM/asP6T5JVPPN4FHHgJtY16XfYjzWKVNI= github.com/erigontech/secp256k1 v1.1.0 h1:mO3YJMUSoASE15Ya//SoHiisptUhdXExuMUN1M0X9qY= diff --git a/erigon-lib/gointerfaces/remoteproto/bor.pb.go b/erigon-lib/gointerfaces/remoteproto/bor.pb.go index dc5a29de682..a78af319caf 100644 --- a/erigon-lib/gointerfaces/remoteproto/bor.pb.go +++ b/erigon-lib/gointerfaces/remoteproto/bor.pb.go @@ -234,6 +234,179 @@ func (x *BorEventsReply) GetEventRlps() [][]byte { return nil } +type BorProducersRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BlockNum uint64 `protobuf:"varint,1,opt,name=block_num,json=blockNum,proto3" json:"block_num,omitempty"` +} + +func (x *BorProducersRequest) Reset() { + *x = BorProducersRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_remote_bor_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BorProducersRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BorProducersRequest) ProtoMessage() {} + +func (x *BorProducersRequest) ProtoReflect() protoreflect.Message { + mi := &file_remote_bor_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BorProducersRequest.ProtoReflect.Descriptor instead. +func (*BorProducersRequest) Descriptor() ([]byte, []int) { + return file_remote_bor_proto_rawDescGZIP(), []int{4} +} + +func (x *BorProducersRequest) GetBlockNum() uint64 { + if x != nil { + return x.BlockNum + } + return 0 +} + +type BorProducersResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Proposer *Validator `protobuf:"bytes,1,opt,name=proposer,proto3" json:"proposer,omitempty"` + Validators []*Validator `protobuf:"bytes,2,rep,name=validators,proto3" json:"validators,omitempty"` +} + +func (x *BorProducersResponse) Reset() { + *x = BorProducersResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_remote_bor_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BorProducersResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BorProducersResponse) ProtoMessage() {} + +func (x *BorProducersResponse) ProtoReflect() protoreflect.Message { + mi := &file_remote_bor_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BorProducersResponse.ProtoReflect.Descriptor instead. +func (*BorProducersResponse) Descriptor() ([]byte, []int) { + return file_remote_bor_proto_rawDescGZIP(), []int{5} +} + +func (x *BorProducersResponse) GetProposer() *Validator { + if x != nil { + return x.Proposer + } + return nil +} + +func (x *BorProducersResponse) GetValidators() []*Validator { + if x != nil { + return x.Validators + } + return nil +} + +type Validator struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Address *typesproto.H160 `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` + VotingPower int64 `protobuf:"varint,3,opt,name=voting_power,json=votingPower,proto3" json:"voting_power,omitempty"` + ProposerPriority int64 `protobuf:"varint,4,opt,name=proposer_priority,json=proposerPriority,proto3" json:"proposer_priority,omitempty"` +} + +func (x *Validator) Reset() { + *x = Validator{} + if protoimpl.UnsafeEnabled { + mi := &file_remote_bor_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Validator) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Validator) ProtoMessage() {} + +func (x *Validator) ProtoReflect() protoreflect.Message { + mi := &file_remote_bor_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Validator.ProtoReflect.Descriptor instead. +func (*Validator) Descriptor() ([]byte, []int) { + return file_remote_bor_proto_rawDescGZIP(), []int{6} +} + +func (x *Validator) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Validator) GetAddress() *typesproto.H160 { + if x != nil { + return x.Address + } + return nil +} + +func (x *Validator) GetVotingPower() int64 { + if x != nil { + return x.VotingPower + } + return 0 +} + +func (x *Validator) GetProposerPriority() int64 { + if x != nil { + return x.ProposerPriority + } + return 0 +} + var File_remote_bor_proto protoreflect.FileDescriptor var file_remote_bor_proto_rawDesc = []byte{ @@ -264,22 +437,51 @@ var file_remote_bor_proto_rawDesc = []byte{ 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6c, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x52, 0x6c, 0x70, 0x73, 0x32, 0xce, 0x01, 0x0a, 0x0d, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, - 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x12, 0x36, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x13, 0x2e, 0x74, 0x79, 0x70, - 0x65, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, - 0x46, 0x0a, 0x0c, 0x42, 0x6f, 0x72, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x12, - 0x1b, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x54, 0x78, 0x6e, 0x4c, - 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x72, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, - 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3d, 0x0a, 0x09, 0x42, 0x6f, 0x72, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x12, 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6f, - 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, - 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x42, 0x16, 0x5a, 0x14, 0x2e, 0x2f, 0x72, 0x65, 0x6d, 0x6f, - 0x74, 0x65, 0x3b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x52, 0x6c, 0x70, 0x73, 0x22, 0x32, 0x0a, 0x13, 0x42, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x08, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x22, 0x78, 0x0a, 0x14, 0x42, 0x6f, 0x72, + 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x2d, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, + 0x12, 0x31, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x73, 0x22, 0x92, 0x01, 0x0a, 0x09, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, + 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x25, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x31, 0x36, 0x30, 0x52, + 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x76, 0x6f, 0x74, 0x69, + 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, + 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x11, 0x70, + 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, + 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x32, 0xce, 0x01, 0x0a, 0x0d, 0x42, 0x72, 0x69, + 0x64, 0x67, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x12, 0x36, 0x0a, 0x07, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x13, 0x2e, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x12, 0x46, 0x0a, 0x0c, 0x42, 0x6f, 0x72, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, + 0x75, 0x70, 0x12, 0x1b, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x54, + 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x19, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x54, 0x78, 0x6e, 0x4c, + 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3d, 0x0a, 0x09, 0x42, 0x6f, + 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x2e, 0x42, 0x6f, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x32, 0x91, 0x01, 0x0a, 0x0f, 0x48, 0x65, + 0x69, 0x6d, 0x64, 0x61, 0x6c, 0x6c, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x12, 0x36, 0x0a, + 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x1a, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x46, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, + 0x72, 0x73, 0x12, 0x1b, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x50, + 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x64, + 0x75, 0x63, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x16, 0x5a, + 0x14, 0x2e, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x3b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -294,30 +496,41 @@ func file_remote_bor_proto_rawDescGZIP() []byte { return file_remote_bor_proto_rawDescData } -var file_remote_bor_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_remote_bor_proto_msgTypes = make([]protoimpl.MessageInfo, 7) var file_remote_bor_proto_goTypes = []any{ (*BorTxnLookupRequest)(nil), // 0: remote.BorTxnLookupRequest (*BorTxnLookupReply)(nil), // 1: remote.BorTxnLookupReply (*BorEventsRequest)(nil), // 2: remote.BorEventsRequest (*BorEventsReply)(nil), // 3: remote.BorEventsReply - (*typesproto.H256)(nil), // 4: types.H256 - (*emptypb.Empty)(nil), // 5: google.protobuf.Empty - (*typesproto.VersionReply)(nil), // 6: types.VersionReply + (*BorProducersRequest)(nil), // 4: remote.BorProducersRequest + (*BorProducersResponse)(nil), // 5: remote.BorProducersResponse + (*Validator)(nil), // 6: remote.Validator + (*typesproto.H256)(nil), // 7: types.H256 + (*typesproto.H160)(nil), // 8: types.H160 + (*emptypb.Empty)(nil), // 9: google.protobuf.Empty + (*typesproto.VersionReply)(nil), // 10: types.VersionReply } var file_remote_bor_proto_depIdxs = []int32{ - 4, // 0: remote.BorTxnLookupRequest.bor_tx_hash:type_name -> types.H256 - 4, // 1: remote.BorEventsRequest.block_hash:type_name -> types.H256 - 5, // 2: remote.BridgeBackend.Version:input_type -> google.protobuf.Empty - 0, // 3: remote.BridgeBackend.BorTxnLookup:input_type -> remote.BorTxnLookupRequest - 2, // 4: remote.BridgeBackend.BorEvents:input_type -> remote.BorEventsRequest - 6, // 5: remote.BridgeBackend.Version:output_type -> types.VersionReply - 1, // 6: remote.BridgeBackend.BorTxnLookup:output_type -> remote.BorTxnLookupReply - 3, // 7: remote.BridgeBackend.BorEvents:output_type -> remote.BorEventsReply - 5, // [5:8] is the sub-list for method output_type - 2, // [2:5] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 2, // [2:2] is the sub-list for extension extendee - 0, // [0:2] is the sub-list for field type_name + 7, // 0: remote.BorTxnLookupRequest.bor_tx_hash:type_name -> types.H256 + 7, // 1: remote.BorEventsRequest.block_hash:type_name -> types.H256 + 6, // 2: remote.BorProducersResponse.proposer:type_name -> remote.Validator + 6, // 3: remote.BorProducersResponse.validators:type_name -> remote.Validator + 8, // 4: remote.Validator.address:type_name -> types.H160 + 9, // 5: remote.BridgeBackend.Version:input_type -> google.protobuf.Empty + 0, // 6: remote.BridgeBackend.BorTxnLookup:input_type -> remote.BorTxnLookupRequest + 2, // 7: remote.BridgeBackend.BorEvents:input_type -> remote.BorEventsRequest + 9, // 8: remote.HeimdallBackend.Version:input_type -> google.protobuf.Empty + 4, // 9: remote.HeimdallBackend.Producers:input_type -> remote.BorProducersRequest + 10, // 10: remote.BridgeBackend.Version:output_type -> types.VersionReply + 1, // 11: remote.BridgeBackend.BorTxnLookup:output_type -> remote.BorTxnLookupReply + 3, // 12: remote.BridgeBackend.BorEvents:output_type -> remote.BorEventsReply + 10, // 13: remote.HeimdallBackend.Version:output_type -> types.VersionReply + 5, // 14: remote.HeimdallBackend.Producers:output_type -> remote.BorProducersResponse + 10, // [10:15] is the sub-list for method output_type + 5, // [5:10] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name } func init() { file_remote_bor_proto_init() } @@ -374,6 +587,42 @@ func file_remote_bor_proto_init() { return nil } } + file_remote_bor_proto_msgTypes[4].Exporter = func(v any, i int) any { + switch v := v.(*BorProducersRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_remote_bor_proto_msgTypes[5].Exporter = func(v any, i int) any { + switch v := v.(*BorProducersResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_remote_bor_proto_msgTypes[6].Exporter = func(v any, i int) any { + switch v := v.(*Validator); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -381,9 +630,9 @@ func file_remote_bor_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_remote_bor_proto_rawDesc, NumEnums: 0, - NumMessages: 4, + NumMessages: 7, NumExtensions: 0, - NumServices: 1, + NumServices: 2, }, GoTypes: file_remote_bor_proto_goTypes, DependencyIndexes: file_remote_bor_proto_depIdxs, diff --git a/erigon-lib/gointerfaces/remoteproto/bor_grpc.pb.go b/erigon-lib/gointerfaces/remoteproto/bor_grpc.pb.go index ada89d0e6f3..1bedc1c5378 100644 --- a/erigon-lib/gointerfaces/remoteproto/bor_grpc.pb.go +++ b/erigon-lib/gointerfaces/remoteproto/bor_grpc.pb.go @@ -188,3 +188,134 @@ var BridgeBackend_ServiceDesc = grpc.ServiceDesc{ Streams: []grpc.StreamDesc{}, Metadata: "remote/bor.proto", } + +const ( + HeimdallBackend_Version_FullMethodName = "/remote.HeimdallBackend/Version" + HeimdallBackend_Producers_FullMethodName = "/remote.HeimdallBackend/Producers" +) + +// HeimdallBackendClient is the client API for HeimdallBackend service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type HeimdallBackendClient interface { + // Version returns the service version number + Version(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*typesproto.VersionReply, error) + Producers(ctx context.Context, in *BorProducersRequest, opts ...grpc.CallOption) (*BorProducersResponse, error) +} + +type heimdallBackendClient struct { + cc grpc.ClientConnInterface +} + +func NewHeimdallBackendClient(cc grpc.ClientConnInterface) HeimdallBackendClient { + return &heimdallBackendClient{cc} +} + +func (c *heimdallBackendClient) Version(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*typesproto.VersionReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(typesproto.VersionReply) + err := c.cc.Invoke(ctx, HeimdallBackend_Version_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *heimdallBackendClient) Producers(ctx context.Context, in *BorProducersRequest, opts ...grpc.CallOption) (*BorProducersResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(BorProducersResponse) + err := c.cc.Invoke(ctx, HeimdallBackend_Producers_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// HeimdallBackendServer is the server API for HeimdallBackend service. +// All implementations must embed UnimplementedHeimdallBackendServer +// for forward compatibility +type HeimdallBackendServer interface { + // Version returns the service version number + Version(context.Context, *emptypb.Empty) (*typesproto.VersionReply, error) + Producers(context.Context, *BorProducersRequest) (*BorProducersResponse, error) + mustEmbedUnimplementedHeimdallBackendServer() +} + +// UnimplementedHeimdallBackendServer must be embedded to have forward compatible implementations. +type UnimplementedHeimdallBackendServer struct { +} + +func (UnimplementedHeimdallBackendServer) Version(context.Context, *emptypb.Empty) (*typesproto.VersionReply, error) { + return nil, status.Errorf(codes.Unimplemented, "method Version not implemented") +} +func (UnimplementedHeimdallBackendServer) Producers(context.Context, *BorProducersRequest) (*BorProducersResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Producers not implemented") +} +func (UnimplementedHeimdallBackendServer) mustEmbedUnimplementedHeimdallBackendServer() {} + +// UnsafeHeimdallBackendServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to HeimdallBackendServer will +// result in compilation errors. +type UnsafeHeimdallBackendServer interface { + mustEmbedUnimplementedHeimdallBackendServer() +} + +func RegisterHeimdallBackendServer(s grpc.ServiceRegistrar, srv HeimdallBackendServer) { + s.RegisterService(&HeimdallBackend_ServiceDesc, srv) +} + +func _HeimdallBackend_Version_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(emptypb.Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(HeimdallBackendServer).Version(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: HeimdallBackend_Version_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(HeimdallBackendServer).Version(ctx, req.(*emptypb.Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _HeimdallBackend_Producers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(BorProducersRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(HeimdallBackendServer).Producers(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: HeimdallBackend_Producers_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(HeimdallBackendServer).Producers(ctx, req.(*BorProducersRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// HeimdallBackend_ServiceDesc is the grpc.ServiceDesc for HeimdallBackend service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var HeimdallBackend_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "remote.HeimdallBackend", + HandlerType: (*HeimdallBackendServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Version", + Handler: _HeimdallBackend_Version_Handler, + }, + { + MethodName: "Producers", + Handler: _HeimdallBackend_Producers_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "remote/bor.proto", +} From 16cdeb6d3b691a0cf2f5f55361628b2281ba2c1e Mon Sep 17 00:00:00 2001 From: JkLondon Date: Thu, 24 Oct 2024 15:37:58 +0200 Subject: [PATCH 07/58] commit --- erigon-lib/kv/tables.go | 1 + 1 file changed, 1 insertion(+) diff --git a/erigon-lib/kv/tables.go b/erigon-lib/kv/tables.go index 5f82eabb39f..c75db833377 100644 --- a/erigon-lib/kv/tables.go +++ b/erigon-lib/kv/tables.go @@ -504,6 +504,7 @@ var ChaindataTables = []string{ BlockBody, Receipts, TxLookup, + TxIDLookUp, ConfigTable, DatabaseInfo, IncarnationMap, From d568b3980272a8cdd66bdd72dac0b8c3be514c63 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Thu, 24 Oct 2024 15:40:09 +0200 Subject: [PATCH 08/58] commit --- turbo/jsonrpc/eth_receipts.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/turbo/jsonrpc/eth_receipts.go b/turbo/jsonrpc/eth_receipts.go index a618f047aa8..2395f785b6c 100644 --- a/turbo/jsonrpc/eth_receipts.go +++ b/turbo/jsonrpc/eth_receipts.go @@ -485,7 +485,7 @@ func (api *APIImpl) GetTransactionReceipt(ctx context.Context, txnHash common.Ha return ethutils.MarshalReceipt(borReceipt, bortypes.NewBorTransaction(), chainConfig, block.HeaderNoCopy(), txnHash, false), nil } - receipt, err := api.getReceipt(ctx, chainConfig, tx.(kv.TemporalTx), block, int(txnIndex), txNum, false) + receipt, err := api.getReceipt(ctx, chainConfig, tx.(kv.TemporalTx), block, int(txnIndex), txNum, true) if err != nil { return nil, fmt.Errorf("getReceipt error: %w", err) } From a43cbb2741b15d1c4c1c0d1fd79565b612002c2b Mon Sep 17 00:00:00 2001 From: JkLondon Date: Thu, 24 Oct 2024 15:53:55 +0200 Subject: [PATCH 09/58] commit --- erigon-lib/go.sum | 4 ---- 1 file changed, 4 deletions(-) diff --git a/erigon-lib/go.sum b/erigon-lib/go.sum index 15b62ec00b2..ae9c811bacf 100644 --- a/erigon-lib/go.sum +++ b/erigon-lib/go.sum @@ -148,10 +148,6 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/erigontech/erigon-snapshot v1.3.1-0.20241023024258-f64407a77e8e h1:ZpIO6HeopuZPYDLldL6zR0qyRezj80kQrDOGEF779ts= github.com/erigontech/erigon-snapshot v1.3.1-0.20241023024258-f64407a77e8e/go.mod h1:ooHlCl+eEYzebiPu+FP6Q6SpPUeMADn8Jxabv3IKb9M= -github.com/erigontech/interfaces v0.0.0-20241024094313-c5606cf2790f h1:4L5GC4W/S8oFQ/RoqTUA2HCt3YGEjG5iR6FMlfw+HkU= -github.com/erigontech/interfaces v0.0.0-20241024094313-c5606cf2790f/go.mod h1:N7OUkhkcagp9+7yb4ycHsG2VWCOmuJ1ONBecJshxtLE= -github.com/erigontech/interfaces v0.0.0-20241024130148-b9e0ed97502a h1:fmnL0sNMdI4XDHruTz/9UMgNkWtdgnymuKlIX5ZPw68= -github.com/erigontech/interfaces v0.0.0-20241024130148-b9e0ed97502a/go.mod h1:N7OUkhkcagp9+7yb4ycHsG2VWCOmuJ1ONBecJshxtLE= github.com/erigontech/interfaces v0.0.0-20241024130715-9a66b677a1a6 h1:gUXLw3b3520mJP1S6p1KDt3QzYO+AS9cfL4elyvdjQc= github.com/erigontech/interfaces v0.0.0-20241024130715-9a66b677a1a6/go.mod h1:N7OUkhkcagp9+7yb4ycHsG2VWCOmuJ1ONBecJshxtLE= github.com/erigontech/mdbx-go v0.38.4 h1:S9T7mTe9KPcFe4dOoOtVdI6gPzht9y7wMnYfUBgrQLo= From 679c00f2995d4db2b65ad395d3e3f36e68ada834 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Thu, 24 Oct 2024 18:04:24 +0200 Subject: [PATCH 10/58] commit --- turbo/jsonrpc/eth_receipts.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/turbo/jsonrpc/eth_receipts.go b/turbo/jsonrpc/eth_receipts.go index 2395f785b6c..2aa509020a2 100644 --- a/turbo/jsonrpc/eth_receipts.go +++ b/turbo/jsonrpc/eth_receipts.go @@ -419,10 +419,16 @@ func (api *APIImpl) GetTransactionReceipt(ctx context.Context, txnHash common.Ha if err != nil { return nil, err } + if !ok { + return nil, nil + } txNum, ok, err = api.txnNumLookup(ctx, tx, txnHash) if err != nil { return nil, err } + if !ok { + return nil, nil + } chainConfig, err := api.chainConfig(ctx, tx) if err != nil { From 702065f21e685cc0ab0c4e52b3067331b2cb5362 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Fri, 25 Oct 2024 11:43:31 +0200 Subject: [PATCH 11/58] commit --- turbo/jsonrpc/eth_receipts.go | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/turbo/jsonrpc/eth_receipts.go b/turbo/jsonrpc/eth_receipts.go index 2aa509020a2..337be442bd2 100644 --- a/turbo/jsonrpc/eth_receipts.go +++ b/turbo/jsonrpc/eth_receipts.go @@ -415,25 +415,27 @@ func (api *APIImpl) GetTransactionReceipt(ctx context.Context, txnHash common.Ha var blockNum, txNum uint64 var ok bool - blockNum, ok, err = api.txnLookup(ctx, tx, txnHash) + chainConfig, err := api.chainConfig(ctx, tx) if err != nil { return nil, err } - if !ok { - return nil, nil - } + txNum, ok, err = api.txnNumLookup(ctx, tx, txnHash) if err != nil { return nil, err } - if !ok { + if !ok && chainConfig.Bor == nil { return nil, nil } - chainConfig, err := api.chainConfig(ctx, tx) + ok, blockNum, err = rawdbv3.TxNums.FindBlockNum(tx, txNum) if err != nil { return nil, err } + if !ok && chainConfig.Bor == nil { + return nil, nil + } + // Private API returns 0 if transaction is not found. if blockNum == 0 && chainConfig.Bor != nil { if api.bridgeReader != nil { From 550bada40df524886b267e81cfaeda86dd1ab20e Mon Sep 17 00:00:00 2001 From: JkLondon Date: Sun, 27 Oct 2024 18:41:57 +0100 Subject: [PATCH 12/58] commit --- erigon-lib/state/aggregator_test.go | 195 ++++++++++++++++++++++++++++ 1 file changed, 195 insertions(+) diff --git a/erigon-lib/state/aggregator_test.go b/erigon-lib/state/aggregator_test.go index a70e619ea00..7ec15301440 100644 --- a/erigon-lib/state/aggregator_test.go +++ b/erigon-lib/state/aggregator_test.go @@ -53,8 +53,11 @@ import ( ) func TestAggregatorV3_Merge(t *testing.T) { + ti := time.Now() t.Parallel() db, agg := testDbAndAggregatorv3(t, 10) + println("testDbAndAggregatorv3", time.Now().Sub(ti).Milliseconds()) + ti = time.Now() rwTx, err := db.BeginRwNosync(context.Background()) require.NoError(t, err) defer func() { @@ -62,12 +65,16 @@ func TestAggregatorV3_Merge(t *testing.T) { rwTx.Rollback() } }() + println("BeginRwNosync", time.Now().Sub(ti).Milliseconds()) + ti = time.Now() ac := agg.BeginFilesRo() defer ac.Close() domains, err := NewSharedDomains(WrapTxWithCtx(rwTx, ac), log.New()) require.NoError(t, err) defer domains.Close() + println("Initialisation", time.Now().Sub(ti).Milliseconds()) + ti = time.Now() txs := uint64(1000) rnd := rand.New(rand.NewSource(time.Now().UnixNano())) @@ -120,33 +127,196 @@ func TestAggregatorV3_Merge(t *testing.T) { require.NoError(t, err) } + println("cycle", time.Now().Sub(ti).Milliseconds()) + ti = time.Now() err = domains.Flush(context.Background(), rwTx) require.NoError(t, err) + println("flush", time.Now().Sub(ti).Milliseconds()) + ti = time.Now() require.NoError(t, err) err = rwTx.Commit() require.NoError(t, err) rwTx = nil + println("commit", time.Now().Sub(ti).Milliseconds()) + ti = time.Now() err = agg.BuildFiles(txs) require.NoError(t, err) + println("build files", time.Now().Sub(ti).Milliseconds()) + ti = time.Now() + + rwTx, err = db.BeginRw(context.Background()) + require.NoError(t, err) + defer rwTx.Rollback() + println("beginrw", time.Now().Sub(ti).Milliseconds()) + ti = time.Now() + + logEvery := time.NewTicker(30 * time.Second) + defer logEvery.Stop() + stat, err := ac.Prune(context.Background(), rwTx, 0, logEvery) + require.NoError(t, err) + println("prune", time.Now().Sub(ti).Milliseconds()) + ti = time.Now() + t.Logf("Prune: %s", stat) + + err = rwTx.Commit() + require.NoError(t, err) + println("2 commit", time.Now().Sub(ti).Milliseconds()) + ti = time.Now() + + err = agg.MergeLoop(context.Background()) + require.NoError(t, err) + println("mergeloop", time.Now().Sub(ti).Milliseconds()) + ti = time.Now() + + // Check the history + roTx, err := db.BeginRo(context.Background()) + require.NoError(t, err) + defer roTx.Rollback() + + dc := agg.BeginFilesRo() + println("Initialisation 2", time.Now().Sub(ti).Milliseconds()) + ti = time.Now() + + v, _, ex, err := dc.GetLatest(kv.CommitmentDomain, commKey1, nil, roTx) + require.NoError(t, err) + require.Truef(t, ex, "key %x not found", commKey1) + + require.EqualValues(t, maxWrite, binary.BigEndian.Uint64(v[:])) + println("getlatest1", time.Now().Sub(ti).Milliseconds()) + ti = time.Now() + + v, _, ex, err = dc.GetLatest(kv.CommitmentDomain, commKey2, nil, roTx) + require.NoError(t, err) + require.Truef(t, ex, "key %x not found", commKey2) + dc.Close() + println("getlates2", time.Now().Sub(ti).Milliseconds()) + ti = time.Now() + + require.EqualValues(t, otherMaxWrite, binary.BigEndian.Uint64(v[:])) +} + +func BenchmarkAggregatorV3_Merge(t *testing.B) { + ti := time.Now() + db, agg := testDbAndAggregatorv3Bench(t, 10) + println("testDbAndAggregatorv3", time.Now().Sub(ti).Milliseconds()) + ti = time.Now() + rwTx, err := db.BeginRwNosync(context.Background()) + require.NoError(t, err) + defer func() { + if rwTx != nil { + rwTx.Rollback() + } + }() + println("BeginRwNosync", time.Now().Sub(ti).Milliseconds()) + ti = time.Now() + + ac := agg.BeginFilesRo() + defer ac.Close() + domains, err := NewSharedDomains(WrapTxWithCtx(rwTx, ac), log.New()) + require.NoError(t, err) + defer domains.Close() + println("Initialisation", time.Now().Sub(ti).Milliseconds()) + ti = time.Now() + + txs := uint64(1000) + rnd := rand.New(rand.NewSource(time.Now().UnixNano())) + + var ( + commKey1 = []byte("someCommKey") + commKey2 = []byte("otherCommKey") + ) + + // keys are encodings of numbers 1..31 + // each key changes value on every txNum which is multiple of the key + var maxWrite, otherMaxWrite uint64 + for txNum := uint64(1); txNum <= txs; txNum++ { + domains.SetTxNum(txNum) + + addr, loc := make([]byte, length.Addr), make([]byte, length.Hash) + + n, err := rnd.Read(addr) + require.NoError(t, err) + require.EqualValues(t, length.Addr, n) + + n, err = rnd.Read(loc) + require.NoError(t, err) + require.EqualValues(t, length.Hash, n) + + buf := types.EncodeAccountBytesV3(1, uint256.NewInt(0), nil, 0) + err = domains.DomainPut(kv.AccountsDomain, addr, nil, buf, nil, 0) + require.NoError(t, err) + + err = domains.DomainPut(kv.StorageDomain, addr, loc, []byte{addr[0], loc[0]}, nil, 0) + require.NoError(t, err) + + var v [8]byte + binary.BigEndian.PutUint64(v[:], txNum) + if txNum%135 == 0 { + pv, step, _, err := ac.GetLatest(kv.CommitmentDomain, commKey2, nil, rwTx) + require.NoError(t, err) + + err = domains.DomainPut(kv.CommitmentDomain, commKey2, nil, v[:], pv, step) + require.NoError(t, err) + otherMaxWrite = txNum + } else { + pv, step, _, err := ac.GetLatest(kv.CommitmentDomain, commKey1, nil, rwTx) + require.NoError(t, err) + + err = domains.DomainPut(kv.CommitmentDomain, commKey1, nil, v[:], pv, step) + require.NoError(t, err) + maxWrite = txNum + } + require.NoError(t, err) + + } + println("cycle", time.Now().Sub(ti).Milliseconds()) + ti = time.Now() + + err = domains.Flush(context.Background(), rwTx) + require.NoError(t, err) + println("flush", time.Now().Sub(ti).Milliseconds()) + ti = time.Now() + + require.NoError(t, err) + err = rwTx.Commit() + require.NoError(t, err) + rwTx = nil + println("commit", time.Now().Sub(ti).Milliseconds()) + ti = time.Now() + + err = agg.BuildFiles(txs) + require.NoError(t, err) + + println("build files", time.Now().Sub(ti).Milliseconds()) + ti = time.Now() + rwTx, err = db.BeginRw(context.Background()) require.NoError(t, err) defer rwTx.Rollback() + println("beginrw", time.Now().Sub(ti).Milliseconds()) + ti = time.Now() logEvery := time.NewTicker(30 * time.Second) defer logEvery.Stop() stat, err := ac.Prune(context.Background(), rwTx, 0, logEvery) require.NoError(t, err) + println("prune", time.Now().Sub(ti).Milliseconds()) + ti = time.Now() t.Logf("Prune: %s", stat) err = rwTx.Commit() require.NoError(t, err) + println("2 commit", time.Now().Sub(ti).Milliseconds()) + ti = time.Now() err = agg.MergeLoop(context.Background()) require.NoError(t, err) + println("mergeloop", time.Now().Sub(ti).Milliseconds()) + ti = time.Now() // Check the history roTx, err := db.BeginRo(context.Background()) @@ -154,17 +324,23 @@ func TestAggregatorV3_Merge(t *testing.T) { defer roTx.Rollback() dc := agg.BeginFilesRo() + println("Initialisation 2", time.Now().Sub(ti).Milliseconds()) + ti = time.Now() v, _, ex, err := dc.GetLatest(kv.CommitmentDomain, commKey1, nil, roTx) require.NoError(t, err) require.Truef(t, ex, "key %x not found", commKey1) require.EqualValues(t, maxWrite, binary.BigEndian.Uint64(v[:])) + println("getlatest1", time.Now().Sub(ti).Milliseconds()) + ti = time.Now() v, _, ex, err = dc.GetLatest(kv.CommitmentDomain, commKey2, nil, roTx) require.NoError(t, err) require.Truef(t, ex, "key %x not found", commKey2) dc.Close() + println("getlates2", time.Now().Sub(ti).Milliseconds()) + ti = time.Now() require.EqualValues(t, otherMaxWrite, binary.BigEndian.Uint64(v[:])) } @@ -1107,6 +1283,25 @@ func testDbAndAggregatorv3(t *testing.T, aggStep uint64) (kv.RwDB, *Aggregator) return db, agg } +func testDbAndAggregatorv3Bench(t *testing.B, aggStep uint64) (kv.RwDB, *Aggregator) { + t.Helper() + require := require.New(t) + dirs := datadir.New(t.TempDir()) + logger := log.New() + db := mdbx.NewMDBX(logger).InMem(dirs.Chaindata).GrowthStep(32 * datasize.MB).MapSize(2 * datasize.GB).WithTableCfg(func(defaultBuckets kv.TableCfg) kv.TableCfg { + return kv.ChaindataTablesCfg + }).MustOpen() + t.Cleanup(db.Close) + + agg, err := NewAggregator(context.Background(), dirs, aggStep, db, logger) + require.NoError(err) + t.Cleanup(agg.Close) + err = agg.OpenFolder() + require.NoError(err) + agg.DisableFsync() + return db, agg +} + // generate test data for table tests, containing n; n < 20 keys of length 20 bytes and values of length <= 16 bytes func generateInputData(tb testing.TB, keySize, valueSize, keyCount int) ([][]byte, [][]byte) { tb.Helper() From 2d501501f351435d35f9bf99054540f5a111ca58 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Sun, 27 Oct 2024 18:54:43 +0100 Subject: [PATCH 13/58] commit --- turbo/jsonrpc/receipts/receipts_generator.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/turbo/jsonrpc/receipts/receipts_generator.go b/turbo/jsonrpc/receipts/receipts_generator.go index b8396e7e002..bf52377621b 100644 --- a/turbo/jsonrpc/receipts/receipts_generator.go +++ b/turbo/jsonrpc/receipts/receipts_generator.go @@ -2,8 +2,8 @@ package receipts import ( "context" - "github.com/erigontech/erigon/core/rawdb/rawtemporaldb" "fmt" + "github.com/erigontech/erigon/core/rawdb/rawtemporaldb" lru "github.com/hashicorp/golang-lru/v2" From fe5f7367d4ca7a966c72c078021be7058c96ab45 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Tue, 19 Nov 2024 15:21:00 +0100 Subject: [PATCH 14/58] commit --- erigon-lib/go.sum | 7 ++ polygon/heimdall/entity_store_mock.go | 113 -------------------------- 2 files changed, 7 insertions(+), 113 deletions(-) diff --git a/erigon-lib/go.sum b/erigon-lib/go.sum index 8a22db5b1f6..8ae9df4a32e 100644 --- a/erigon-lib/go.sum +++ b/erigon-lib/go.sum @@ -513,6 +513,7 @@ golang.org/x/crypto v0.0.0-20220516162934-403b01795ae8/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw= golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= +golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c h1:7dEasQXItcW1xKJ2+gg5VOiBnqWrJc+rq0DPKyvvdbY= golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:NQtJDoLvd6faHhE7m4T/1IY708gDefGGjR/iUW8yQQ8= @@ -568,6 +569,7 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -606,6 +608,7 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -621,8 +624,10 @@ golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ= golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -707,6 +712,7 @@ modernc.org/gc/v2 v2.4.1 h1:9cNzOqPyMJBvrUipmynX0ZohMhcxPtMccYgGOJdOiBw= modernc.org/gc/v2 v2.4.1/go.mod h1:wzN5dK1AzVGoH6XOzc3YZ+ey/jPgYHLuVckd62P0GYU= modernc.org/libc v1.50.4 h1:GeqBes21PQHbVitLewzkhLXLFnQ1AWxOlHI+g5InUnQ= modernc.org/libc v1.50.4/go.mod h1:rhzrUx5oePTSTIzBgM0mTftwWHK8tiT9aNFUt1mldl0= +modernc.org/libc v1.55.3/go.mod h1:qFXepLhz+JjFThQ4kzwzOjA/y/artDeg+pcYnY+Q83w= modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4= modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo= modernc.org/memory v1.8.0 h1:IqGTL6eFMaDZZhEWwcREgeMXYwmW83LYW8cROZYkg+E= @@ -717,6 +723,7 @@ modernc.org/sortutil v1.2.0 h1:jQiD3PfS2REGJNzNCMMaLSp/wdMNieTbKX920Cqdgqc= modernc.org/sortutil v1.2.0/go.mod h1:TKU2s7kJMf1AE84OoiGppNHJwvB753OYfNl2WRb++Ss= modernc.org/sqlite v1.29.8 h1:nGKglNx9K5v0As+zF0/Gcl1kMkmaU1XynYyq92PbsC8= modernc.org/sqlite v1.29.8/go.mod h1:lQPm27iqa4UNZpmr4Aor0MH0HkCLbt1huYDfWylLZFk= +modernc.org/sqlite v1.33.1/go.mod h1:pXV2xHxhzXZsgT/RtTFAPY6JJDEvOTcTdwADQCCWD4k= modernc.org/strutil v1.2.0 h1:agBi9dp1I+eOnxXeiZawM8F4LawKv4NzGWSaLfyeNZA= modernc.org/strutil v1.2.0/go.mod h1:/mdcBmfOibveCTBxUl5B5l6W+TTH1FXPLHZE6bTosX0= modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= diff --git a/polygon/heimdall/entity_store_mock.go b/polygon/heimdall/entity_store_mock.go index b216ab933e2..4c42dd1d181 100644 --- a/polygon/heimdall/entity_store_mock.go +++ b/polygon/heimdall/entity_store_mock.go @@ -505,116 +505,3 @@ func (c *MockEntityStoreSnapTypeCall[TEntity]) DoAndReturn(f func() snaptype.Typ c.Call = c.Call.DoAndReturn(f) return c } - -// EntityIdFromBlockNum mocks base method. -func (m *MockEntityStore[TEntity]) EntityIdFromBlockNum(ctx context.Context, blockNum uint64) (uint64, bool, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "EntityIdFromBlockNum", ctx, blockNum) - ret0, _ := ret[0].(uint64) - ret1, _ := ret[1].(bool) - ret2, _ := ret[2].(error) - return ret0, ret1, ret2 -} - -// EntityIdFromBlockNum indicates an expected call of EntityIdFromBlockNum. -func (mr *MockEntityStoreMockRecorder[TEntity]) EntityIdFromBlockNum(ctx any, blockNum any) *MockEntityStoreEntityIdFromBlockNumCall[TEntity] { - mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "EntityIdFromBlockNum", reflect.TypeOf((*MockEntityStore[TEntity])(nil).EntityIdFromBlockNum), ctx, blockNum) - return &MockEntityStoreEntityIdFromBlockNumCall[TEntity]{Call: call} -} - -// MockEntityStoreEntityIdFromBlockNumCall wrap *gomock.Call -type MockEntityStoreEntityIdFromBlockNumCall[TEntity Entity] struct { - *gomock.Call -} - -// Return rewrite *gomock.Call.Return -func (c *MockEntityStoreEntityIdFromBlockNumCall[TEntity]) Return(arg0 uint64, arg1 bool, arg2 error) *MockEntityStoreEntityIdFromBlockNumCall[TEntity] { - c.Call = c.Call.Return(arg0, arg1, arg2) - return c -} - -// Do rewrite *gomock.Call.Do -func (c *MockEntityStoreEntityIdFromBlockNumCall[TEntity]) Do(f func(context.Context, uint64) (uint64, bool, error)) *MockEntityStoreEntityIdFromBlockNumCall[TEntity] { - c.Call = c.Call.Do(f) - return c -} - -// DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *MockEntityStoreEntityIdFromBlockNumCall[TEntity]) DoAndReturn(f func(context.Context, uint64) (uint64, bool, error)) *MockEntityStoreEntityIdFromBlockNumCall[TEntity] { - c.Call = c.Call.DoAndReturn(f) - return c -} - -// EntityIdFromBlockNum mocks base method. -func (m *MockEntityStore[TEntity]) DeleteToBlockNum(ctx context.Context, blockNum uint64, limit int) (int, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteToBlockNum", ctx, blockNum, limit) - ret0, _ := ret[0].(int) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// DeleteToBlockNum indicates an expected call of DeleteToBlockNum. -func (mr *MockEntityStoreMockRecorder[TEntity]) DeleteToBlockNum(ctx any, blockNum any, limit any) *MockEntityStoreDeleteToBlockNumCall[TEntity] { - mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteToBlockNum", reflect.TypeOf((*MockEntityStore[TEntity])(nil).DeleteToBlockNum), ctx, blockNum, limit) - return &MockEntityStoreDeleteToBlockNumCall[TEntity]{Call: call} -} - -// MockEntityStoreDeleteToBlockNumCall wrap *gomock.Call -type MockEntityStoreDeleteToBlockNumCall[TEntity Entity] struct { - *gomock.Call -} - -// Return rewrite *gomock.Call.Return -func (c *MockEntityStoreDeleteToBlockNumCall[TEntity]) Return(arg0 int, arg1 error) *MockEntityStoreDeleteToBlockNumCall[TEntity] { - c.Call = c.Call.Return(arg0, arg1) - return c -} - -// Do rewrite *gomock.Call.Do -func (c *MockEntityStoreDeleteToBlockNumCall[TEntity]) Do(f func(context.Context, uint64, int) (int, error)) *MockEntityStoreDeleteToBlockNumCall[TEntity] { - c.Call = c.Call.Do(f) - return c -} - -// DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *MockEntityStoreDeleteToBlockNumCall[TEntity]) DoAndReturn(f func(context.Context, uint64, int) (int, error)) *MockEntityStoreDeleteToBlockNumCall[TEntity] { - c.Call = c.Call.DoAndReturn(f) - return c -} - -// EntityIdFromBlockNum mocks base method. -func (m *MockEntityStore[TEntity]) DeleteFromBlockNum(ctx context.Context, blockNum uint64) (int, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteFromBlockNum", ctx, blockNum) - ret0, _ := ret[0].(int) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// DeleteFromBlockNum indicates an expected call of DeleteFromBlockNum. -func (mr *MockEntityStoreMockRecorder[TEntity]) DeleteFromBlockNum(ctx any, blockNum any) *MockEntityStoreDeleteFromBlockNumCall[TEntity] { - mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteFromBlockNum", reflect.TypeOf((*MockEntityStore[TEntity])(nil).DeleteFromBlockNum), ctx, blockNum) - return &MockEntityStoreDeleteFromBlockNumCall[TEntity]{Call: call} -} - -// Return rewrite *gomock.Call.Return -func (c *MockEntityStoreDeleteFromBlockNumCall[TEntity]) Return(arg0 int, arg1 error) *MockEntityStoreDeleteFromBlockNumCall[TEntity] { - c.Call = c.Call.Return(arg0, arg1) - return c -} - -// Do rewrite *gomock.Call.Do -func (c *MockEntityStoreDeleteFromBlockNumCall[TEntity]) Do(f func(context.Context, uint64) (int, error)) *MockEntityStoreDeleteFromBlockNumCall[TEntity] { - c.Call = c.Call.Do(f) - return c -} - -// DoAndReturn rewrite *gomock.Call.DoAndReturn -func (c *MockEntityStoreDeleteFromBlockNumCall[TEntity]) DoAndReturn(f func(context.Context, uint64) (int, error)) *MockEntityStoreDeleteFromBlockNumCall[TEntity] { - c.Call = c.Call.DoAndReturn(f) - return c -} From e4c2209e0611ff7bd92bc79c012891ae94905aba Mon Sep 17 00:00:00 2001 From: JkLondon Date: Tue, 19 Nov 2024 15:35:16 +0100 Subject: [PATCH 15/58] commit --- erigon-lib/go.mod | 2 +- erigon-lib/go.sum | 41 +- .../gointerfaces/remoteproto/ethbackend.pb.go | 1055 ++++++++++------- .../gointerfaces/remoteproto/kv_grpc.pb.go | 13 +- .../snapshotsync/freezeblocks/block_reader.go | 8 +- txnprovider/txpool/pool_mock.go | 69 +- 6 files changed, 679 insertions(+), 509 deletions(-) diff --git a/erigon-lib/go.mod b/erigon-lib/go.mod index 6e6b8155006..7e9be053204 100644 --- a/erigon-lib/go.mod +++ b/erigon-lib/go.mod @@ -4,7 +4,7 @@ go 1.22.0 require ( github.com/erigontech/erigon-snapshot v1.3.1-0.20241023024258-f64407a77e8e - github.com/erigontech/interfaces v0.0.0-20241024130715-9a66b677a1a6 + github.com/erigontech/interfaces v0.0.0-20241119142727-0929f4896223 github.com/erigontech/mdbx-go v0.38.4 github.com/erigontech/secp256k1 v1.1.0 github.com/rs/dnscache v0.0.0-20211102005908-e0241e321417 diff --git a/erigon-lib/go.sum b/erigon-lib/go.sum index 8ae9df4a32e..be6b7db485d 100644 --- a/erigon-lib/go.sum +++ b/erigon-lib/go.sum @@ -100,10 +100,6 @@ github.com/bradfitz/iter v0.0.0-20140124041915-454541ec3da2/go.mod h1:PyRFw1Lt2w github.com/bradfitz/iter v0.0.0-20190303215204-33e6a9893b0c/go.mod h1:PyRFw1Lt2wKX4ZVSQ2mk+PeDa1rxyObEDlApuIsUKuo= github.com/bradfitz/iter v0.0.0-20191230175014-e8f45d346db8 h1:GKTyiRCL6zVf5wWaqKnf+7Qs6GbEPfd4iMOitWzXJx8= github.com/bradfitz/iter v0.0.0-20191230175014-e8f45d346db8/go.mod h1:spo1JLcs67NmW1aVLEgtA8Yy1elc+X8y5SRW1sFW4Og= -github.com/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurTXGPFfiQ= -github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= -github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= -github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= github.com/c2h5oh/datasize v0.0.0-20231215233829-aa82cc1e6500 h1:6lhrsTEnloDPXyeZBvSYvQf8u86jbKehZPVDDlkgDl4= github.com/c2h5oh/datasize v0.0.0-20231215233829-aa82cc1e6500/go.mod h1:S/7n9copUssQ56c7aAgHqftWO4LTf4xY6CGWt8Bc+3M= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -130,8 +126,6 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/deckarep/golang-set/v2 v2.3.1 h1:vjmkvJt/IV27WXPyYQpAh4bRyWJc5Y435D17XQ9QU5A= -github.com/deckarep/golang-set/v2 v2.3.1/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnNEcHYvcCuK6dPZSg= @@ -156,8 +150,8 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/erigontech/erigon-snapshot v1.3.1-0.20241023024258-f64407a77e8e h1:ZpIO6HeopuZPYDLldL6zR0qyRezj80kQrDOGEF779ts= github.com/erigontech/erigon-snapshot v1.3.1-0.20241023024258-f64407a77e8e/go.mod h1:ooHlCl+eEYzebiPu+FP6Q6SpPUeMADn8Jxabv3IKb9M= -github.com/erigontech/interfaces v0.0.0-20241024130715-9a66b677a1a6 h1:gUXLw3b3520mJP1S6p1KDt3QzYO+AS9cfL4elyvdjQc= -github.com/erigontech/interfaces v0.0.0-20241024130715-9a66b677a1a6/go.mod h1:N7OUkhkcagp9+7yb4ycHsG2VWCOmuJ1ONBecJshxtLE= +github.com/erigontech/interfaces v0.0.0-20241119142727-0929f4896223 h1:smICxSEOqb37tXo7MRzHawbsTbl4TWW5GKxd/X1Esh0= +github.com/erigontech/interfaces v0.0.0-20241119142727-0929f4896223/go.mod h1:N7OUkhkcagp9+7yb4ycHsG2VWCOmuJ1ONBecJshxtLE= github.com/erigontech/mdbx-go v0.38.4 h1:S9T7mTe9KPcFe4dOoOtVdI6gPzht9y7wMnYfUBgrQLo= github.com/erigontech/mdbx-go v0.38.4/go.mod h1:IcOLQDPw3VM/asP6T5JVPPN4FHHgJtY16XfYjzWKVNI= github.com/erigontech/secp256k1 v1.1.0 h1:mO3YJMUSoASE15Ya//SoHiisptUhdXExuMUN1M0X9qY= @@ -261,8 +255,6 @@ github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVH github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU= github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= -github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/holiman/uint256 v1.3.1 h1:JfTzmih28bittyHM8z360dCjIA9dbPIBlcTI6lmctQs= @@ -511,8 +503,7 @@ golang.org/x/crypto v0.0.0-20220131195533-30dcbda58838/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220516162934-403b01795ae8/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= -golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw= -golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= +golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c h1:7dEasQXItcW1xKJ2+gg5VOiBnqWrJc+rq0DPKyvvdbY= @@ -567,8 +558,7 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= -golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -606,8 +596,7 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= -golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -622,11 +611,9 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= -golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= -golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ= -golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg= golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -702,16 +689,15 @@ gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -modernc.org/cc/v4 v4.21.0 h1:D/gLKtcztomvWbsbvBKo3leKQv+86f+DdqEZBBXhnag= -modernc.org/cc/v4 v4.21.0/go.mod h1:HM7VJTZbUCR3rV8EYBi9wxnJ0ZBRiGE5OeGXNA0IsLQ= -modernc.org/ccgo/v4 v4.17.3 h1:t2CQci84jnxKw3GGnHvjGKjiNZeZqyQx/023spkk4hU= -modernc.org/ccgo/v4 v4.17.3/go.mod h1:1FCbAtWYJoKuc+AviS+dH+vGNtYmFJqBeRWjmnDWsIg= +modernc.org/cc/v4 v4.21.4 h1:3Be/Rdo1fpr8GrQ7IVw9OHtplU4gWbb+wNgeoBMmGLQ= +modernc.org/cc/v4 v4.21.4/go.mod h1:HM7VJTZbUCR3rV8EYBi9wxnJ0ZBRiGE5OeGXNA0IsLQ= +modernc.org/ccgo/v4 v4.19.2 h1:lwQZgvboKD0jBwdaeVCTouxhxAyN6iawF3STraAal8Y= +modernc.org/ccgo/v4 v4.19.2/go.mod h1:ysS3mxiMV38XGRTTcgo0DQTeTmAO4oCmJl1nX9VFI3s= modernc.org/fileutil v1.3.0 h1:gQ5SIzK3H9kdfai/5x41oQiKValumqNTDXMvKo62HvE= modernc.org/fileutil v1.3.0/go.mod h1:XatxS8fZi3pS8/hKG2GH/ArUogfxjpEKs3Ku3aK4JyQ= modernc.org/gc/v2 v2.4.1 h1:9cNzOqPyMJBvrUipmynX0ZohMhcxPtMccYgGOJdOiBw= modernc.org/gc/v2 v2.4.1/go.mod h1:wzN5dK1AzVGoH6XOzc3YZ+ey/jPgYHLuVckd62P0GYU= -modernc.org/libc v1.50.4 h1:GeqBes21PQHbVitLewzkhLXLFnQ1AWxOlHI+g5InUnQ= -modernc.org/libc v1.50.4/go.mod h1:rhzrUx5oePTSTIzBgM0mTftwWHK8tiT9aNFUt1mldl0= +modernc.org/libc v1.55.3 h1:AzcW1mhlPNrRtjS5sS+eW2ISCgSOLLNyFzRh/V3Qj/U= modernc.org/libc v1.55.3/go.mod h1:qFXepLhz+JjFThQ4kzwzOjA/y/artDeg+pcYnY+Q83w= modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4= modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo= @@ -721,8 +707,7 @@ modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4= modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= modernc.org/sortutil v1.2.0 h1:jQiD3PfS2REGJNzNCMMaLSp/wdMNieTbKX920Cqdgqc= modernc.org/sortutil v1.2.0/go.mod h1:TKU2s7kJMf1AE84OoiGppNHJwvB753OYfNl2WRb++Ss= -modernc.org/sqlite v1.29.8 h1:nGKglNx9K5v0As+zF0/Gcl1kMkmaU1XynYyq92PbsC8= -modernc.org/sqlite v1.29.8/go.mod h1:lQPm27iqa4UNZpmr4Aor0MH0HkCLbt1huYDfWylLZFk= +modernc.org/sqlite v1.33.1 h1:trb6Z3YYoeM9eDL1O8do81kP+0ejv+YzgyFo+Gwy0nM= modernc.org/sqlite v1.33.1/go.mod h1:pXV2xHxhzXZsgT/RtTFAPY6JJDEvOTcTdwADQCCWD4k= modernc.org/strutil v1.2.0 h1:agBi9dp1I+eOnxXeiZawM8F4LawKv4NzGWSaLfyeNZA= modernc.org/strutil v1.2.0/go.mod h1:/mdcBmfOibveCTBxUl5B5l6W+TTH1FXPLHZE6bTosX0= diff --git a/erigon-lib/gointerfaces/remoteproto/ethbackend.pb.go b/erigon-lib/gointerfaces/remoteproto/ethbackend.pb.go index a6a14ade738..991475c8357 100644 --- a/erigon-lib/gointerfaces/remoteproto/ethbackend.pb.go +++ b/erigon-lib/gointerfaces/remoteproto/ethbackend.pb.go @@ -247,6 +247,85 @@ func (x *NetVersionReply) GetId() uint64 { return 0 } +type SyncingReply struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + LastNewBlockSeen uint64 `protobuf:"varint,1,opt,name=last_new_block_seen,json=lastNewBlockSeen,proto3" json:"last_new_block_seen,omitempty"` + FrozenBlocks uint64 `protobuf:"varint,2,opt,name=frozen_blocks,json=frozenBlocks,proto3" json:"frozen_blocks,omitempty"` + CurrentBlock uint64 `protobuf:"varint,3,opt,name=current_block,json=currentBlock,proto3" json:"current_block,omitempty"` + Syncing bool `protobuf:"varint,4,opt,name=syncing,proto3" json:"syncing,omitempty"` + Stages []*SyncingReply_StageProgress `protobuf:"bytes,5,rep,name=stages,proto3" json:"stages,omitempty"` +} + +func (x *SyncingReply) Reset() { + *x = SyncingReply{} + if protoimpl.UnsafeEnabled { + mi := &file_remote_ethbackend_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncingReply) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncingReply) ProtoMessage() {} + +func (x *SyncingReply) ProtoReflect() protoreflect.Message { + mi := &file_remote_ethbackend_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncingReply.ProtoReflect.Descriptor instead. +func (*SyncingReply) Descriptor() ([]byte, []int) { + return file_remote_ethbackend_proto_rawDescGZIP(), []int{4} +} + +func (x *SyncingReply) GetLastNewBlockSeen() uint64 { + if x != nil { + return x.LastNewBlockSeen + } + return 0 +} + +func (x *SyncingReply) GetFrozenBlocks() uint64 { + if x != nil { + return x.FrozenBlocks + } + return 0 +} + +func (x *SyncingReply) GetCurrentBlock() uint64 { + if x != nil { + return x.CurrentBlock + } + return 0 +} + +func (x *SyncingReply) GetSyncing() bool { + if x != nil { + return x.Syncing + } + return false +} + +func (x *SyncingReply) GetStages() []*SyncingReply_StageProgress { + if x != nil { + return x.Stages + } + return nil +} + type NetPeerCountRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -256,7 +335,7 @@ type NetPeerCountRequest struct { func (x *NetPeerCountRequest) Reset() { *x = NetPeerCountRequest{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[4] + mi := &file_remote_ethbackend_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -269,7 +348,7 @@ func (x *NetPeerCountRequest) String() string { func (*NetPeerCountRequest) ProtoMessage() {} func (x *NetPeerCountRequest) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[4] + mi := &file_remote_ethbackend_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -282,7 +361,7 @@ func (x *NetPeerCountRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use NetPeerCountRequest.ProtoReflect.Descriptor instead. func (*NetPeerCountRequest) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{4} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{5} } type NetPeerCountReply struct { @@ -296,7 +375,7 @@ type NetPeerCountReply struct { func (x *NetPeerCountReply) Reset() { *x = NetPeerCountReply{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[5] + mi := &file_remote_ethbackend_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -309,7 +388,7 @@ func (x *NetPeerCountReply) String() string { func (*NetPeerCountReply) ProtoMessage() {} func (x *NetPeerCountReply) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[5] + mi := &file_remote_ethbackend_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -322,7 +401,7 @@ func (x *NetPeerCountReply) ProtoReflect() protoreflect.Message { // Deprecated: Use NetPeerCountReply.ProtoReflect.Descriptor instead. func (*NetPeerCountReply) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{5} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{6} } func (x *NetPeerCountReply) GetCount() uint64 { @@ -341,7 +420,7 @@ type ProtocolVersionRequest struct { func (x *ProtocolVersionRequest) Reset() { *x = ProtocolVersionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[6] + mi := &file_remote_ethbackend_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -354,7 +433,7 @@ func (x *ProtocolVersionRequest) String() string { func (*ProtocolVersionRequest) ProtoMessage() {} func (x *ProtocolVersionRequest) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[6] + mi := &file_remote_ethbackend_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -367,7 +446,7 @@ func (x *ProtocolVersionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ProtocolVersionRequest.ProtoReflect.Descriptor instead. func (*ProtocolVersionRequest) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{6} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{7} } type ProtocolVersionReply struct { @@ -381,7 +460,7 @@ type ProtocolVersionReply struct { func (x *ProtocolVersionReply) Reset() { *x = ProtocolVersionReply{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[7] + mi := &file_remote_ethbackend_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -394,7 +473,7 @@ func (x *ProtocolVersionReply) String() string { func (*ProtocolVersionReply) ProtoMessage() {} func (x *ProtocolVersionReply) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[7] + mi := &file_remote_ethbackend_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -407,7 +486,7 @@ func (x *ProtocolVersionReply) ProtoReflect() protoreflect.Message { // Deprecated: Use ProtocolVersionReply.ProtoReflect.Descriptor instead. func (*ProtocolVersionReply) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{7} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{8} } func (x *ProtocolVersionReply) GetId() uint64 { @@ -426,7 +505,7 @@ type ClientVersionRequest struct { func (x *ClientVersionRequest) Reset() { *x = ClientVersionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[8] + mi := &file_remote_ethbackend_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -439,7 +518,7 @@ func (x *ClientVersionRequest) String() string { func (*ClientVersionRequest) ProtoMessage() {} func (x *ClientVersionRequest) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[8] + mi := &file_remote_ethbackend_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -452,7 +531,7 @@ func (x *ClientVersionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ClientVersionRequest.ProtoReflect.Descriptor instead. func (*ClientVersionRequest) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{8} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{9} } type ClientVersionReply struct { @@ -466,7 +545,7 @@ type ClientVersionReply struct { func (x *ClientVersionReply) Reset() { *x = ClientVersionReply{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[9] + mi := &file_remote_ethbackend_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -479,7 +558,7 @@ func (x *ClientVersionReply) String() string { func (*ClientVersionReply) ProtoMessage() {} func (x *ClientVersionReply) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[9] + mi := &file_remote_ethbackend_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -492,7 +571,7 @@ func (x *ClientVersionReply) ProtoReflect() protoreflect.Message { // Deprecated: Use ClientVersionReply.ProtoReflect.Descriptor instead. func (*ClientVersionReply) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{9} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{10} } func (x *ClientVersionReply) GetNodeName() string { @@ -513,7 +592,7 @@ type CanonicalHashRequest struct { func (x *CanonicalHashRequest) Reset() { *x = CanonicalHashRequest{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[10] + mi := &file_remote_ethbackend_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -526,7 +605,7 @@ func (x *CanonicalHashRequest) String() string { func (*CanonicalHashRequest) ProtoMessage() {} func (x *CanonicalHashRequest) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[10] + mi := &file_remote_ethbackend_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -539,7 +618,7 @@ func (x *CanonicalHashRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CanonicalHashRequest.ProtoReflect.Descriptor instead. func (*CanonicalHashRequest) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{10} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{11} } func (x *CanonicalHashRequest) GetBlockNumber() uint64 { @@ -560,7 +639,7 @@ type CanonicalHashReply struct { func (x *CanonicalHashReply) Reset() { *x = CanonicalHashReply{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[11] + mi := &file_remote_ethbackend_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -573,7 +652,7 @@ func (x *CanonicalHashReply) String() string { func (*CanonicalHashReply) ProtoMessage() {} func (x *CanonicalHashReply) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[11] + mi := &file_remote_ethbackend_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -586,7 +665,7 @@ func (x *CanonicalHashReply) ProtoReflect() protoreflect.Message { // Deprecated: Use CanonicalHashReply.ProtoReflect.Descriptor instead. func (*CanonicalHashReply) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{11} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{12} } func (x *CanonicalHashReply) GetHash() *typesproto.H256 { @@ -607,7 +686,7 @@ type HeaderNumberRequest struct { func (x *HeaderNumberRequest) Reset() { *x = HeaderNumberRequest{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[12] + mi := &file_remote_ethbackend_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -620,7 +699,7 @@ func (x *HeaderNumberRequest) String() string { func (*HeaderNumberRequest) ProtoMessage() {} func (x *HeaderNumberRequest) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[12] + mi := &file_remote_ethbackend_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -633,7 +712,7 @@ func (x *HeaderNumberRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use HeaderNumberRequest.ProtoReflect.Descriptor instead. func (*HeaderNumberRequest) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{12} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{13} } func (x *HeaderNumberRequest) GetHash() *typesproto.H256 { @@ -654,7 +733,7 @@ type HeaderNumberReply struct { func (x *HeaderNumberReply) Reset() { *x = HeaderNumberReply{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[13] + mi := &file_remote_ethbackend_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -667,7 +746,7 @@ func (x *HeaderNumberReply) String() string { func (*HeaderNumberReply) ProtoMessage() {} func (x *HeaderNumberReply) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[13] + mi := &file_remote_ethbackend_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -680,7 +759,7 @@ func (x *HeaderNumberReply) ProtoReflect() protoreflect.Message { // Deprecated: Use HeaderNumberReply.ProtoReflect.Descriptor instead. func (*HeaderNumberReply) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{13} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{14} } func (x *HeaderNumberReply) GetNumber() uint64 { @@ -701,7 +780,7 @@ type CanonicalBodyForStorageRequest struct { func (x *CanonicalBodyForStorageRequest) Reset() { *x = CanonicalBodyForStorageRequest{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[14] + mi := &file_remote_ethbackend_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -714,7 +793,7 @@ func (x *CanonicalBodyForStorageRequest) String() string { func (*CanonicalBodyForStorageRequest) ProtoMessage() {} func (x *CanonicalBodyForStorageRequest) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[14] + mi := &file_remote_ethbackend_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -727,7 +806,7 @@ func (x *CanonicalBodyForStorageRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CanonicalBodyForStorageRequest.ProtoReflect.Descriptor instead. func (*CanonicalBodyForStorageRequest) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{14} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{15} } func (x *CanonicalBodyForStorageRequest) GetBlockNumber() uint64 { @@ -748,7 +827,7 @@ type CanonicalBodyForStorageReply struct { func (x *CanonicalBodyForStorageReply) Reset() { *x = CanonicalBodyForStorageReply{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[15] + mi := &file_remote_ethbackend_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -761,7 +840,7 @@ func (x *CanonicalBodyForStorageReply) String() string { func (*CanonicalBodyForStorageReply) ProtoMessage() {} func (x *CanonicalBodyForStorageReply) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[15] + mi := &file_remote_ethbackend_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -774,7 +853,7 @@ func (x *CanonicalBodyForStorageReply) ProtoReflect() protoreflect.Message { // Deprecated: Use CanonicalBodyForStorageReply.ProtoReflect.Descriptor instead. func (*CanonicalBodyForStorageReply) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{15} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{16} } func (x *CanonicalBodyForStorageReply) GetBody() []byte { @@ -795,7 +874,7 @@ type SubscribeRequest struct { func (x *SubscribeRequest) Reset() { *x = SubscribeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[16] + mi := &file_remote_ethbackend_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -808,7 +887,7 @@ func (x *SubscribeRequest) String() string { func (*SubscribeRequest) ProtoMessage() {} func (x *SubscribeRequest) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[16] + mi := &file_remote_ethbackend_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -821,7 +900,7 @@ func (x *SubscribeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscribeRequest.ProtoReflect.Descriptor instead. func (*SubscribeRequest) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{16} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{17} } func (x *SubscribeRequest) GetType() Event { @@ -843,7 +922,7 @@ type SubscribeReply struct { func (x *SubscribeReply) Reset() { *x = SubscribeReply{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[17] + mi := &file_remote_ethbackend_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -856,7 +935,7 @@ func (x *SubscribeReply) String() string { func (*SubscribeReply) ProtoMessage() {} func (x *SubscribeReply) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[17] + mi := &file_remote_ethbackend_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -869,7 +948,7 @@ func (x *SubscribeReply) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscribeReply.ProtoReflect.Descriptor instead. func (*SubscribeReply) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{17} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{18} } func (x *SubscribeReply) GetType() Event { @@ -900,7 +979,7 @@ type LogsFilterRequest struct { func (x *LogsFilterRequest) Reset() { *x = LogsFilterRequest{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[18] + mi := &file_remote_ethbackend_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -913,7 +992,7 @@ func (x *LogsFilterRequest) String() string { func (*LogsFilterRequest) ProtoMessage() {} func (x *LogsFilterRequest) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[18] + mi := &file_remote_ethbackend_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -926,7 +1005,7 @@ func (x *LogsFilterRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use LogsFilterRequest.ProtoReflect.Descriptor instead. func (*LogsFilterRequest) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{18} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{19} } func (x *LogsFilterRequest) GetAllAddresses() bool { @@ -976,7 +1055,7 @@ type SubscribeLogsReply struct { func (x *SubscribeLogsReply) Reset() { *x = SubscribeLogsReply{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[19] + mi := &file_remote_ethbackend_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -989,7 +1068,7 @@ func (x *SubscribeLogsReply) String() string { func (*SubscribeLogsReply) ProtoMessage() {} func (x *SubscribeLogsReply) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[19] + mi := &file_remote_ethbackend_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1002,7 +1081,7 @@ func (x *SubscribeLogsReply) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscribeLogsReply.ProtoReflect.Descriptor instead. func (*SubscribeLogsReply) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{19} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{20} } func (x *SubscribeLogsReply) GetAddress() *typesproto.H160 { @@ -1080,7 +1159,7 @@ type BlockRequest struct { func (x *BlockRequest) Reset() { *x = BlockRequest{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[20] + mi := &file_remote_ethbackend_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1093,7 +1172,7 @@ func (x *BlockRequest) String() string { func (*BlockRequest) ProtoMessage() {} func (x *BlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[20] + mi := &file_remote_ethbackend_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1106,7 +1185,7 @@ func (x *BlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use BlockRequest.ProtoReflect.Descriptor instead. func (*BlockRequest) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{20} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{21} } func (x *BlockRequest) GetBlockHeight() uint64 { @@ -1135,7 +1214,7 @@ type BlockReply struct { func (x *BlockReply) Reset() { *x = BlockReply{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[21] + mi := &file_remote_ethbackend_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1148,7 +1227,7 @@ func (x *BlockReply) String() string { func (*BlockReply) ProtoMessage() {} func (x *BlockReply) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[21] + mi := &file_remote_ethbackend_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1161,7 +1240,7 @@ func (x *BlockReply) ProtoReflect() protoreflect.Message { // Deprecated: Use BlockReply.ProtoReflect.Descriptor instead. func (*BlockReply) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{21} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{22} } func (x *BlockReply) GetBlockRlp() []byte { @@ -1189,7 +1268,7 @@ type TxnLookupRequest struct { func (x *TxnLookupRequest) Reset() { *x = TxnLookupRequest{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[22] + mi := &file_remote_ethbackend_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1202,7 +1281,7 @@ func (x *TxnLookupRequest) String() string { func (*TxnLookupRequest) ProtoMessage() {} func (x *TxnLookupRequest) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[22] + mi := &file_remote_ethbackend_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1215,7 +1294,7 @@ func (x *TxnLookupRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TxnLookupRequest.ProtoReflect.Descriptor instead. func (*TxnLookupRequest) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{22} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{23} } func (x *TxnLookupRequest) GetTxnHash() *typesproto.H256 { @@ -1236,7 +1315,7 @@ type TxnLookupReply struct { func (x *TxnLookupReply) Reset() { *x = TxnLookupReply{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[23] + mi := &file_remote_ethbackend_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1249,7 +1328,7 @@ func (x *TxnLookupReply) String() string { func (*TxnLookupReply) ProtoMessage() {} func (x *TxnLookupReply) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[23] + mi := &file_remote_ethbackend_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1262,7 +1341,7 @@ func (x *TxnLookupReply) ProtoReflect() protoreflect.Message { // Deprecated: Use TxnLookupReply.ProtoReflect.Descriptor instead. func (*TxnLookupReply) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{23} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{24} } func (x *TxnLookupReply) GetBlockNumber() uint64 { @@ -1283,7 +1362,7 @@ type TxnNumLookupReply struct { func (x *TxnNumLookupReply) Reset() { *x = TxnNumLookupReply{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[24] + mi := &file_remote_ethbackend_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1296,7 +1375,7 @@ func (x *TxnNumLookupReply) String() string { func (*TxnNumLookupReply) ProtoMessage() {} func (x *TxnNumLookupReply) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[24] + mi := &file_remote_ethbackend_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1309,7 +1388,7 @@ func (x *TxnNumLookupReply) ProtoReflect() protoreflect.Message { // Deprecated: Use TxnNumLookupReply.ProtoReflect.Descriptor instead. func (*TxnNumLookupReply) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{24} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{25} } func (x *TxnNumLookupReply) GetTxNumber() uint64 { @@ -1330,7 +1409,7 @@ type NodesInfoRequest struct { func (x *NodesInfoRequest) Reset() { *x = NodesInfoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[25] + mi := &file_remote_ethbackend_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1343,7 +1422,7 @@ func (x *NodesInfoRequest) String() string { func (*NodesInfoRequest) ProtoMessage() {} func (x *NodesInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[25] + mi := &file_remote_ethbackend_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1356,7 +1435,7 @@ func (x *NodesInfoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use NodesInfoRequest.ProtoReflect.Descriptor instead. func (*NodesInfoRequest) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{25} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{26} } func (x *NodesInfoRequest) GetLimit() uint32 { @@ -1377,7 +1456,7 @@ type AddPeerRequest struct { func (x *AddPeerRequest) Reset() { *x = AddPeerRequest{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[26] + mi := &file_remote_ethbackend_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1390,7 +1469,7 @@ func (x *AddPeerRequest) String() string { func (*AddPeerRequest) ProtoMessage() {} func (x *AddPeerRequest) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[26] + mi := &file_remote_ethbackend_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1403,7 +1482,7 @@ func (x *AddPeerRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AddPeerRequest.ProtoReflect.Descriptor instead. func (*AddPeerRequest) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{26} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{27} } func (x *AddPeerRequest) GetUrl() string { @@ -1424,7 +1503,7 @@ type NodesInfoReply struct { func (x *NodesInfoReply) Reset() { *x = NodesInfoReply{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[27] + mi := &file_remote_ethbackend_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1437,7 +1516,7 @@ func (x *NodesInfoReply) String() string { func (*NodesInfoReply) ProtoMessage() {} func (x *NodesInfoReply) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[27] + mi := &file_remote_ethbackend_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1450,7 +1529,7 @@ func (x *NodesInfoReply) ProtoReflect() protoreflect.Message { // Deprecated: Use NodesInfoReply.ProtoReflect.Descriptor instead. func (*NodesInfoReply) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{27} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{28} } func (x *NodesInfoReply) GetNodesInfo() []*typesproto.NodeInfoReply { @@ -1471,7 +1550,7 @@ type PeersReply struct { func (x *PeersReply) Reset() { *x = PeersReply{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[28] + mi := &file_remote_ethbackend_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1484,7 +1563,7 @@ func (x *PeersReply) String() string { func (*PeersReply) ProtoMessage() {} func (x *PeersReply) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[28] + mi := &file_remote_ethbackend_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1497,7 +1576,7 @@ func (x *PeersReply) ProtoReflect() protoreflect.Message { // Deprecated: Use PeersReply.ProtoReflect.Descriptor instead. func (*PeersReply) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{28} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{29} } func (x *PeersReply) GetPeers() []*typesproto.PeerInfo { @@ -1518,7 +1597,7 @@ type AddPeerReply struct { func (x *AddPeerReply) Reset() { *x = AddPeerReply{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[29] + mi := &file_remote_ethbackend_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1531,7 +1610,7 @@ func (x *AddPeerReply) String() string { func (*AddPeerReply) ProtoMessage() {} func (x *AddPeerReply) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[29] + mi := &file_remote_ethbackend_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1544,7 +1623,7 @@ func (x *AddPeerReply) ProtoReflect() protoreflect.Message { // Deprecated: Use AddPeerReply.ProtoReflect.Descriptor instead. func (*AddPeerReply) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{29} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{30} } func (x *AddPeerReply) GetSuccess() bool { @@ -1565,7 +1644,7 @@ type PendingBlockReply struct { func (x *PendingBlockReply) Reset() { *x = PendingBlockReply{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[30] + mi := &file_remote_ethbackend_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1578,7 +1657,7 @@ func (x *PendingBlockReply) String() string { func (*PendingBlockReply) ProtoMessage() {} func (x *PendingBlockReply) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[30] + mi := &file_remote_ethbackend_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1591,7 +1670,7 @@ func (x *PendingBlockReply) ProtoReflect() protoreflect.Message { // Deprecated: Use PendingBlockReply.ProtoReflect.Descriptor instead. func (*PendingBlockReply) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{30} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{31} } func (x *PendingBlockReply) GetBlockRlp() []byte { @@ -1612,7 +1691,7 @@ type EngineGetPayloadBodiesByHashV1Request struct { func (x *EngineGetPayloadBodiesByHashV1Request) Reset() { *x = EngineGetPayloadBodiesByHashV1Request{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[31] + mi := &file_remote_ethbackend_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1625,7 +1704,7 @@ func (x *EngineGetPayloadBodiesByHashV1Request) String() string { func (*EngineGetPayloadBodiesByHashV1Request) ProtoMessage() {} func (x *EngineGetPayloadBodiesByHashV1Request) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[31] + mi := &file_remote_ethbackend_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1638,7 +1717,7 @@ func (x *EngineGetPayloadBodiesByHashV1Request) ProtoReflect() protoreflect.Mess // Deprecated: Use EngineGetPayloadBodiesByHashV1Request.ProtoReflect.Descriptor instead. func (*EngineGetPayloadBodiesByHashV1Request) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{31} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{32} } func (x *EngineGetPayloadBodiesByHashV1Request) GetHashes() []*typesproto.H256 { @@ -1660,7 +1739,7 @@ type EngineGetPayloadBodiesByRangeV1Request struct { func (x *EngineGetPayloadBodiesByRangeV1Request) Reset() { *x = EngineGetPayloadBodiesByRangeV1Request{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[32] + mi := &file_remote_ethbackend_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1673,7 +1752,7 @@ func (x *EngineGetPayloadBodiesByRangeV1Request) String() string { func (*EngineGetPayloadBodiesByRangeV1Request) ProtoMessage() {} func (x *EngineGetPayloadBodiesByRangeV1Request) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[32] + mi := &file_remote_ethbackend_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1686,7 +1765,7 @@ func (x *EngineGetPayloadBodiesByRangeV1Request) ProtoReflect() protoreflect.Mes // Deprecated: Use EngineGetPayloadBodiesByRangeV1Request.ProtoReflect.Descriptor instead. func (*EngineGetPayloadBodiesByRangeV1Request) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{32} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{33} } func (x *EngineGetPayloadBodiesByRangeV1Request) GetStart() uint64 { @@ -1703,6 +1782,61 @@ func (x *EngineGetPayloadBodiesByRangeV1Request) GetCount() uint64 { return 0 } +type SyncingReply_StageProgress struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + StageName string `protobuf:"bytes,1,opt,name=stage_name,json=stageName,proto3" json:"stage_name,omitempty"` + BlockNumber uint64 `protobuf:"varint,2,opt,name=block_number,json=blockNumber,proto3" json:"block_number,omitempty"` +} + +func (x *SyncingReply_StageProgress) Reset() { + *x = SyncingReply_StageProgress{} + if protoimpl.UnsafeEnabled { + mi := &file_remote_ethbackend_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SyncingReply_StageProgress) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SyncingReply_StageProgress) ProtoMessage() {} + +func (x *SyncingReply_StageProgress) ProtoReflect() protoreflect.Message { + mi := &file_remote_ethbackend_proto_msgTypes[34] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SyncingReply_StageProgress.ProtoReflect.Descriptor instead. +func (*SyncingReply_StageProgress) Descriptor() ([]byte, []int) { + return file_remote_ethbackend_proto_rawDescGZIP(), []int{4, 0} +} + +func (x *SyncingReply_StageProgress) GetStageName() string { + if x != nil { + return x.StageName + } + return "" +} + +func (x *SyncingReply_StageProgress) GetBlockNumber() uint64 { + if x != nil { + return x.BlockNumber + } + return 0 +} + var File_remote_ethbackend_proto protoreflect.FileDescriptor var file_remote_ethbackend_proto_rawDesc = []byte{ @@ -1720,225 +1854,247 @@ var file_remote_ethbackend_proto_rawDesc = []byte{ 0x22, 0x13, 0x0a, 0x11, 0x4e, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x21, 0x0a, 0x0f, 0x4e, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x22, 0x15, 0x0a, 0x13, 0x4e, 0x65, 0x74, 0x50, - 0x65, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, - 0x29, 0x0a, 0x11, 0x4e, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, - 0x65, 0x70, 0x6c, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x18, 0x0a, 0x16, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x22, 0x26, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x22, 0x16, 0x0a, 0x14, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x22, 0x31, 0x0a, 0x12, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, - 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, - 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x39, 0x0a, 0x14, 0x43, 0x61, 0x6e, 0x6f, 0x6e, - 0x69, 0x63, 0x61, 0x6c, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x22, 0x35, 0x0a, 0x12, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x48, - 0x61, 0x73, 0x68, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x1f, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, - 0x32, 0x35, 0x36, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x22, 0x36, 0x0a, 0x13, 0x48, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1f, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, - 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x04, 0x68, 0x61, 0x73, - 0x68, 0x22, 0x3b, 0x0a, 0x11, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x1b, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x42, - 0x0a, 0x1e, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x42, 0x6f, 0x64, 0x79, 0x46, - 0x6f, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x22, 0x32, 0x0a, 0x1c, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x42, - 0x6f, 0x64, 0x79, 0x46, 0x6f, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x70, - 0x6c, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x35, 0x0a, 0x10, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x47, 0x0a, - 0x0e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, - 0x21, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, - 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xa7, 0x01, 0x0a, 0x11, 0x4c, 0x6f, 0x67, 0x73, 0x46, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, - 0x61, 0x6c, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, - 0x73, 0x12, 0x29, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x31, 0x36, - 0x30, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, - 0x61, 0x6c, 0x6c, 0x5f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x09, 0x61, 0x6c, 0x6c, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x12, 0x23, 0x0a, 0x06, 0x74, - 0x6f, 0x70, 0x69, 0x63, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, - 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x06, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, - 0x22, 0xdf, 0x02, 0x0a, 0x12, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4c, 0x6f, - 0x67, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x25, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x2e, 0x48, 0x31, 0x36, 0x30, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2a, - 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, - 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x12, 0x0a, - 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x23, - 0x0a, 0x06, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x22, 0xb0, 0x02, 0x0a, 0x0c, 0x53, 0x79, 0x6e, + 0x63, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x2d, 0x0a, 0x13, 0x6c, 0x61, 0x73, + 0x74, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x65, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x4e, 0x65, 0x77, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x65, 0x65, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x72, 0x6f, 0x7a, + 0x65, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x0c, 0x66, 0x72, 0x6f, 0x7a, 0x65, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x23, 0x0a, + 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x79, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x79, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x12, 0x3a, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x67, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x72, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x67, 0x65, 0x73, 0x1a, 0x51, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x67, + 0x65, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, + 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, + 0x74, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x15, 0x0a, 0x13, 0x4e, + 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x22, 0x29, 0x0a, 0x11, 0x4e, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x18, 0x0a, + 0x16, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x26, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x22, + 0x16, 0x0a, 0x14, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x31, 0x0a, 0x12, 0x43, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x1b, 0x0a, + 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x39, 0x0a, 0x14, 0x43, 0x61, + 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x35, 0x0a, 0x12, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, + 0x61, 0x6c, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x1f, 0x0a, 0x04, 0x68, + 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x22, 0x36, 0x0a, 0x13, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x04, + 0x68, 0x61, 0x73, 0x68, 0x22, 0x3b, 0x0a, 0x11, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x1b, 0x0a, 0x06, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x06, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x22, 0x42, 0x0a, 0x1e, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x42, 0x6f, + 0x64, 0x79, 0x46, 0x6f, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x32, 0x0a, 0x1c, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, + 0x61, 0x6c, 0x42, 0x6f, 0x64, 0x79, 0x46, 0x6f, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x35, 0x0a, 0x10, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x72, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x22, 0x47, 0x0a, 0x0e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x12, 0x21, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x0d, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xa7, 0x01, 0x0a, 0x11, 0x4c, 0x6f, + 0x67, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, + 0x48, 0x31, 0x36, 0x30, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, + 0x1d, 0x0a, 0x0a, 0x61, 0x6c, 0x6c, 0x5f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x09, 0x61, 0x6c, 0x6c, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x12, 0x23, + 0x0a, 0x06, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x06, 0x74, 0x6f, 0x70, - 0x69, 0x63, 0x73, 0x12, 0x36, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2b, 0x0a, 0x11, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x64, 0x22, 0x5d, 0x0a, 0x0c, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x2a, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, - 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, - 0x68, 0x22, 0x43, 0x0a, 0x0a, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, - 0x1b, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6c, 0x70, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x08, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6c, 0x70, 0x12, 0x18, 0x0a, 0x07, - 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x73, - 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x22, 0x3a, 0x0a, 0x10, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, - 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x08, 0x74, 0x78, - 0x6e, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, - 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x07, 0x74, 0x78, 0x6e, 0x48, 0x61, - 0x73, 0x68, 0x22, 0x33, 0x0a, 0x0e, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, - 0x65, 0x70, 0x6c, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x30, 0x0a, 0x11, 0x54, 0x78, 0x6e, 0x4e, 0x75, - 0x6d, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x1b, 0x0a, 0x09, - 0x74, 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x08, 0x74, 0x78, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x28, 0x0a, 0x10, 0x4e, 0x6f, 0x64, - 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x22, 0x22, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x45, 0x0a, 0x0e, 0x4e, 0x6f, 0x64, 0x65, 0x73, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x33, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, - 0x65, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x33, - 0x0a, 0x0a, 0x50, 0x65, 0x65, 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x25, 0x0a, 0x05, - 0x70, 0x65, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x79, - 0x70, 0x65, 0x73, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x70, 0x65, - 0x65, 0x72, 0x73, 0x22, 0x28, 0x0a, 0x0c, 0x41, 0x64, 0x64, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x30, 0x0a, - 0x11, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x70, + 0x69, 0x63, 0x73, 0x22, 0xdf, 0x02, 0x0a, 0x12, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, + 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x25, 0x0a, 0x07, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2e, 0x48, 0x31, 0x36, 0x30, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x12, 0x2a, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, + 0x35, 0x36, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x21, 0x0a, + 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x12, 0x23, 0x0a, 0x06, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x06, + 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x12, 0x36, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x0f, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2b, + 0x0a, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x72, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x22, 0x5d, 0x0a, 0x0c, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x2a, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x48, 0x61, 0x73, 0x68, 0x22, 0x43, 0x0a, 0x0a, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6c, 0x70, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6c, 0x70, 0x22, - 0x4c, 0x0a, 0x25, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x42, 0x6f, 0x64, 0x69, 0x65, 0x73, 0x42, 0x79, 0x48, 0x61, 0x73, 0x68, 0x56, - 0x31, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x68, 0x61, 0x73, 0x68, - 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x22, 0x54, 0x0a, - 0x26, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x42, 0x6f, 0x64, 0x69, 0x65, 0x73, 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x56, 0x31, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x2a, 0x4a, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0a, 0x0a, 0x06, - 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x45, 0x4e, 0x44, - 0x49, 0x4e, 0x47, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x45, - 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x02, 0x12, 0x10, 0x0a, - 0x0c, 0x4e, 0x45, 0x57, 0x5f, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, 0x10, 0x03, 0x32, - 0xdf, 0x0a, 0x0a, 0x0a, 0x45, 0x54, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x12, 0x3d, - 0x0a, 0x09, 0x45, 0x74, 0x68, 0x65, 0x72, 0x62, 0x61, 0x73, 0x65, 0x12, 0x18, 0x2e, 0x72, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x45, - 0x74, 0x68, 0x65, 0x72, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x40, 0x0a, - 0x0a, 0x4e, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x2e, 0x72, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, - 0x4e, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, - 0x46, 0x0a, 0x0c, 0x4e, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x1b, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x72, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x36, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x13, 0x2e, 0x74, 0x79, 0x70, - 0x65, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, - 0x4f, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x1e, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, - 0x12, 0x49, 0x0a, 0x0d, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x1c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1a, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3f, 0x0a, 0x09, 0x53, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x30, 0x01, 0x12, 0x4a, 0x0a, 0x0d, - 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x19, 0x2e, - 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x52, - 0x65, 0x70, 0x6c, 0x79, 0x28, 0x01, 0x30, 0x01, 0x12, 0x31, 0x0a, 0x05, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x12, 0x14, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, - 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x67, 0x0a, 0x17, 0x43, - 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x42, 0x6f, 0x64, 0x79, 0x46, 0x6f, 0x72, 0x53, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x26, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, - 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x42, 0x6f, 0x64, 0x79, 0x46, 0x6f, 0x72, - 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, - 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, - 0x6c, 0x42, 0x6f, 0x64, 0x79, 0x46, 0x6f, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, - 0x65, 0x70, 0x6c, 0x79, 0x12, 0x49, 0x0a, 0x0d, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, - 0x6c, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, - 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x61, 0x6e, - 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, - 0x46, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, - 0x1b, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x72, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3d, 0x0a, 0x09, 0x54, 0x78, 0x6e, 0x4c, 0x6f, - 0x6f, 0x6b, 0x75, 0x70, 0x12, 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x54, 0x78, - 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, - 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, - 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x43, 0x0a, 0x0c, 0x54, 0x78, 0x6e, 0x4e, 0x75, 0x6d, - 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x12, 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, - 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x19, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x54, 0x78, 0x6e, 0x4e, 0x75, 0x6d, - 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3c, 0x0a, 0x08, 0x4e, - 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, - 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x73, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x33, 0x0a, 0x05, 0x50, 0x65, 0x65, - 0x72, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x72, 0x65, 0x6d, - 0x6f, 0x74, 0x65, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x37, - 0x0a, 0x07, 0x41, 0x64, 0x64, 0x50, 0x65, 0x65, 0x72, 0x12, 0x16, 0x2e, 0x72, 0x65, 0x6d, 0x6f, - 0x74, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x14, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x65, - 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x41, 0x0a, 0x0c, 0x50, 0x65, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, - 0x19, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x46, 0x0a, 0x0c, 0x42, 0x6f, - 0x72, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x12, 0x1b, 0x2e, 0x72, 0x65, 0x6d, - 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, - 0x2e, 0x42, 0x6f, 0x72, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x70, - 0x6c, 0x79, 0x12, 0x3d, 0x0a, 0x09, 0x42, 0x6f, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, - 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x65, 0x6d, 0x6f, - 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x70, 0x6c, - 0x79, 0x42, 0x16, 0x5a, 0x14, 0x2e, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x3b, 0x72, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6c, 0x70, 0x12, + 0x18, 0x0a, 0x07, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x07, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x22, 0x3a, 0x0a, 0x10, 0x54, 0x78, 0x6e, + 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, + 0x08, 0x74, 0x78, 0x6e, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x07, 0x74, 0x78, + 0x6e, 0x48, 0x61, 0x73, 0x68, 0x22, 0x33, 0x0a, 0x0e, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, + 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x30, 0x0a, 0x11, 0x54, 0x78, + 0x6e, 0x4e, 0x75, 0x6d, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, + 0x1b, 0x0a, 0x09, 0x74, 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x08, 0x74, 0x78, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x28, 0x0a, 0x10, + 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x22, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x50, 0x65, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x45, 0x0a, 0x0e, 0x4e, 0x6f, + 0x64, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x33, 0x0a, 0x0a, + 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x49, 0x6e, 0x66, + 0x6f, 0x22, 0x33, 0x0a, 0x0a, 0x50, 0x65, 0x65, 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, + 0x25, 0x0a, 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, + 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, 0x22, 0x28, 0x0a, 0x0c, 0x41, 0x64, 0x64, 0x50, 0x65, 0x65, + 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x22, 0x30, 0x0a, 0x11, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, + 0x6c, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, + 0x6c, 0x70, 0x22, 0x4c, 0x0a, 0x25, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x47, 0x65, 0x74, 0x50, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x6f, 0x64, 0x69, 0x65, 0x73, 0x42, 0x79, 0x48, 0x61, + 0x73, 0x68, 0x56, 0x31, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x68, + 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, + 0x22, 0x54, 0x0a, 0x26, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x6f, 0x64, 0x69, 0x65, 0x73, 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, + 0x65, 0x56, 0x31, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2a, 0x4a, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, + 0x0a, 0x0a, 0x06, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x50, + 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x01, 0x12, 0x11, 0x0a, + 0x0d, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x02, + 0x12, 0x10, 0x0a, 0x0c, 0x4e, 0x45, 0x57, 0x5f, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, + 0x10, 0x03, 0x32, 0x98, 0x0b, 0x0a, 0x0a, 0x45, 0x54, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, + 0x44, 0x12, 0x3d, 0x0a, 0x09, 0x45, 0x74, 0x68, 0x65, 0x72, 0x62, 0x61, 0x73, 0x65, 0x12, 0x18, + 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x62, 0x61, 0x73, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, + 0x65, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x12, 0x40, 0x0a, 0x0a, 0x4e, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x19, + 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x72, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x2e, 0x4e, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x12, 0x46, 0x0a, 0x0c, 0x4e, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x1b, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x65, 0x74, 0x50, + 0x65, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x19, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x36, 0x0a, 0x07, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x13, 0x2e, + 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x12, 0x37, 0x0a, 0x07, 0x53, 0x79, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x12, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x14, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x53, + 0x79, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x4f, 0x0a, 0x0f, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, + 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, + 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x49, 0x0a, 0x0d, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x2e, + 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x72, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3f, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x62, 0x65, 0x12, 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x53, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, + 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, + 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x30, 0x01, 0x12, 0x4a, 0x0a, 0x0d, 0x53, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x62, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x19, 0x2e, 0x72, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x53, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x28, 0x01, 0x30, 0x01, 0x12, 0x31, 0x0a, 0x05, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x14, 0x2e, + 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x67, 0x0a, 0x17, 0x43, 0x61, 0x6e, 0x6f, 0x6e, + 0x69, 0x63, 0x61, 0x6c, 0x42, 0x6f, 0x64, 0x79, 0x46, 0x6f, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x12, 0x26, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x61, 0x6e, 0x6f, + 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x42, 0x6f, 0x64, 0x79, 0x46, 0x6f, 0x72, 0x53, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x65, 0x6d, + 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x42, 0x6f, 0x64, + 0x79, 0x46, 0x6f, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x12, 0x49, 0x0a, 0x0d, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x48, 0x61, 0x73, + 0x68, 0x12, 0x1c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x61, 0x6e, 0x6f, 0x6e, + 0x69, 0x63, 0x61, 0x6c, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1a, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, + 0x61, 0x6c, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x46, 0x0a, 0x0c, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x2e, 0x72, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, + 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, + 0x70, 0x6c, 0x79, 0x12, 0x3d, 0x0a, 0x09, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, + 0x12, 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, + 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x65, 0x6d, + 0x6f, 0x74, 0x65, 0x2e, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x12, 0x43, 0x0a, 0x0c, 0x54, 0x78, 0x6e, 0x4e, 0x75, 0x6d, 0x4c, 0x6f, 0x6f, 0x6b, + 0x75, 0x70, 0x12, 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x54, 0x78, 0x6e, 0x4c, + 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x72, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x54, 0x78, 0x6e, 0x4e, 0x75, 0x6d, 0x4c, 0x6f, 0x6f, 0x6b, + 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3c, 0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, + 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x33, 0x0a, 0x05, 0x50, 0x65, 0x65, 0x72, 0x73, 0x12, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, + 0x50, 0x65, 0x65, 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x37, 0x0a, 0x07, 0x41, 0x64, + 0x64, 0x50, 0x65, 0x65, 0x72, 0x12, 0x16, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x41, + 0x64, 0x64, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, + 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, + 0x70, 0x6c, 0x79, 0x12, 0x41, 0x0a, 0x0c, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x19, 0x2e, 0x72, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x46, 0x0a, 0x0c, 0x42, 0x6f, 0x72, 0x54, 0x78, 0x6e, + 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x12, 0x1b, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, + 0x42, 0x6f, 0x72, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x72, + 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3d, + 0x0a, 0x09, 0x42, 0x6f, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x18, 0x2e, 0x72, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, + 0x6f, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x42, 0x16, 0x5a, + 0x14, 0x2e, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x3b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1954,115 +2110,120 @@ func file_remote_ethbackend_proto_rawDescGZIP() []byte { } var file_remote_ethbackend_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_remote_ethbackend_proto_msgTypes = make([]protoimpl.MessageInfo, 33) +var file_remote_ethbackend_proto_msgTypes = make([]protoimpl.MessageInfo, 35) var file_remote_ethbackend_proto_goTypes = []any{ (Event)(0), // 0: remote.Event (*EtherbaseRequest)(nil), // 1: remote.EtherbaseRequest (*EtherbaseReply)(nil), // 2: remote.EtherbaseReply (*NetVersionRequest)(nil), // 3: remote.NetVersionRequest (*NetVersionReply)(nil), // 4: remote.NetVersionReply - (*NetPeerCountRequest)(nil), // 5: remote.NetPeerCountRequest - (*NetPeerCountReply)(nil), // 6: remote.NetPeerCountReply - (*ProtocolVersionRequest)(nil), // 7: remote.ProtocolVersionRequest - (*ProtocolVersionReply)(nil), // 8: remote.ProtocolVersionReply - (*ClientVersionRequest)(nil), // 9: remote.ClientVersionRequest - (*ClientVersionReply)(nil), // 10: remote.ClientVersionReply - (*CanonicalHashRequest)(nil), // 11: remote.CanonicalHashRequest - (*CanonicalHashReply)(nil), // 12: remote.CanonicalHashReply - (*HeaderNumberRequest)(nil), // 13: remote.HeaderNumberRequest - (*HeaderNumberReply)(nil), // 14: remote.HeaderNumberReply - (*CanonicalBodyForStorageRequest)(nil), // 15: remote.CanonicalBodyForStorageRequest - (*CanonicalBodyForStorageReply)(nil), // 16: remote.CanonicalBodyForStorageReply - (*SubscribeRequest)(nil), // 17: remote.SubscribeRequest - (*SubscribeReply)(nil), // 18: remote.SubscribeReply - (*LogsFilterRequest)(nil), // 19: remote.LogsFilterRequest - (*SubscribeLogsReply)(nil), // 20: remote.SubscribeLogsReply - (*BlockRequest)(nil), // 21: remote.BlockRequest - (*BlockReply)(nil), // 22: remote.BlockReply - (*TxnLookupRequest)(nil), // 23: remote.TxnLookupRequest - (*TxnLookupReply)(nil), // 24: remote.TxnLookupReply - (*TxnNumLookupReply)(nil), // 25: remote.TxnNumLookupReply - (*NodesInfoRequest)(nil), // 26: remote.NodesInfoRequest - (*AddPeerRequest)(nil), // 27: remote.AddPeerRequest - (*NodesInfoReply)(nil), // 28: remote.NodesInfoReply - (*PeersReply)(nil), // 29: remote.PeersReply - (*AddPeerReply)(nil), // 30: remote.AddPeerReply - (*PendingBlockReply)(nil), // 31: remote.PendingBlockReply - (*EngineGetPayloadBodiesByHashV1Request)(nil), // 32: remote.EngineGetPayloadBodiesByHashV1Request - (*EngineGetPayloadBodiesByRangeV1Request)(nil), // 33: remote.EngineGetPayloadBodiesByRangeV1Request - (*typesproto.H160)(nil), // 34: types.H160 - (*typesproto.H256)(nil), // 35: types.H256 - (*typesproto.NodeInfoReply)(nil), // 36: types.NodeInfoReply - (*typesproto.PeerInfo)(nil), // 37: types.PeerInfo - (*emptypb.Empty)(nil), // 38: google.protobuf.Empty - (*BorTxnLookupRequest)(nil), // 39: remote.BorTxnLookupRequest - (*BorEventsRequest)(nil), // 40: remote.BorEventsRequest - (*typesproto.VersionReply)(nil), // 41: types.VersionReply - (*BorTxnLookupReply)(nil), // 42: remote.BorTxnLookupReply - (*BorEventsReply)(nil), // 43: remote.BorEventsReply + (*SyncingReply)(nil), // 5: remote.SyncingReply + (*NetPeerCountRequest)(nil), // 6: remote.NetPeerCountRequest + (*NetPeerCountReply)(nil), // 7: remote.NetPeerCountReply + (*ProtocolVersionRequest)(nil), // 8: remote.ProtocolVersionRequest + (*ProtocolVersionReply)(nil), // 9: remote.ProtocolVersionReply + (*ClientVersionRequest)(nil), // 10: remote.ClientVersionRequest + (*ClientVersionReply)(nil), // 11: remote.ClientVersionReply + (*CanonicalHashRequest)(nil), // 12: remote.CanonicalHashRequest + (*CanonicalHashReply)(nil), // 13: remote.CanonicalHashReply + (*HeaderNumberRequest)(nil), // 14: remote.HeaderNumberRequest + (*HeaderNumberReply)(nil), // 15: remote.HeaderNumberReply + (*CanonicalBodyForStorageRequest)(nil), // 16: remote.CanonicalBodyForStorageRequest + (*CanonicalBodyForStorageReply)(nil), // 17: remote.CanonicalBodyForStorageReply + (*SubscribeRequest)(nil), // 18: remote.SubscribeRequest + (*SubscribeReply)(nil), // 19: remote.SubscribeReply + (*LogsFilterRequest)(nil), // 20: remote.LogsFilterRequest + (*SubscribeLogsReply)(nil), // 21: remote.SubscribeLogsReply + (*BlockRequest)(nil), // 22: remote.BlockRequest + (*BlockReply)(nil), // 23: remote.BlockReply + (*TxnLookupRequest)(nil), // 24: remote.TxnLookupRequest + (*TxnLookupReply)(nil), // 25: remote.TxnLookupReply + (*TxnNumLookupReply)(nil), // 26: remote.TxnNumLookupReply + (*NodesInfoRequest)(nil), // 27: remote.NodesInfoRequest + (*AddPeerRequest)(nil), // 28: remote.AddPeerRequest + (*NodesInfoReply)(nil), // 29: remote.NodesInfoReply + (*PeersReply)(nil), // 30: remote.PeersReply + (*AddPeerReply)(nil), // 31: remote.AddPeerReply + (*PendingBlockReply)(nil), // 32: remote.PendingBlockReply + (*EngineGetPayloadBodiesByHashV1Request)(nil), // 33: remote.EngineGetPayloadBodiesByHashV1Request + (*EngineGetPayloadBodiesByRangeV1Request)(nil), // 34: remote.EngineGetPayloadBodiesByRangeV1Request + (*SyncingReply_StageProgress)(nil), // 35: remote.SyncingReply.StageProgress + (*typesproto.H160)(nil), // 36: types.H160 + (*typesproto.H256)(nil), // 37: types.H256 + (*typesproto.NodeInfoReply)(nil), // 38: types.NodeInfoReply + (*typesproto.PeerInfo)(nil), // 39: types.PeerInfo + (*emptypb.Empty)(nil), // 40: google.protobuf.Empty + (*BorTxnLookupRequest)(nil), // 41: remote.BorTxnLookupRequest + (*BorEventsRequest)(nil), // 42: remote.BorEventsRequest + (*typesproto.VersionReply)(nil), // 43: types.VersionReply + (*BorTxnLookupReply)(nil), // 44: remote.BorTxnLookupReply + (*BorEventsReply)(nil), // 45: remote.BorEventsReply } var file_remote_ethbackend_proto_depIdxs = []int32{ - 34, // 0: remote.EtherbaseReply.address:type_name -> types.H160 - 35, // 1: remote.CanonicalHashReply.hash:type_name -> types.H256 - 35, // 2: remote.HeaderNumberRequest.hash:type_name -> types.H256 - 0, // 3: remote.SubscribeRequest.type:type_name -> remote.Event - 0, // 4: remote.SubscribeReply.type:type_name -> remote.Event - 34, // 5: remote.LogsFilterRequest.addresses:type_name -> types.H160 - 35, // 6: remote.LogsFilterRequest.topics:type_name -> types.H256 - 34, // 7: remote.SubscribeLogsReply.address:type_name -> types.H160 - 35, // 8: remote.SubscribeLogsReply.block_hash:type_name -> types.H256 - 35, // 9: remote.SubscribeLogsReply.topics:type_name -> types.H256 - 35, // 10: remote.SubscribeLogsReply.transaction_hash:type_name -> types.H256 - 35, // 11: remote.BlockRequest.block_hash:type_name -> types.H256 - 35, // 12: remote.TxnLookupRequest.txn_hash:type_name -> types.H256 - 36, // 13: remote.NodesInfoReply.nodes_info:type_name -> types.NodeInfoReply - 37, // 14: remote.PeersReply.peers:type_name -> types.PeerInfo - 35, // 15: remote.EngineGetPayloadBodiesByHashV1Request.hashes:type_name -> types.H256 - 1, // 16: remote.ETHBACKEND.Etherbase:input_type -> remote.EtherbaseRequest - 3, // 17: remote.ETHBACKEND.NetVersion:input_type -> remote.NetVersionRequest - 5, // 18: remote.ETHBACKEND.NetPeerCount:input_type -> remote.NetPeerCountRequest - 38, // 19: remote.ETHBACKEND.Version:input_type -> google.protobuf.Empty - 7, // 20: remote.ETHBACKEND.ProtocolVersion:input_type -> remote.ProtocolVersionRequest - 9, // 21: remote.ETHBACKEND.ClientVersion:input_type -> remote.ClientVersionRequest - 17, // 22: remote.ETHBACKEND.Subscribe:input_type -> remote.SubscribeRequest - 19, // 23: remote.ETHBACKEND.SubscribeLogs:input_type -> remote.LogsFilterRequest - 21, // 24: remote.ETHBACKEND.Block:input_type -> remote.BlockRequest - 15, // 25: remote.ETHBACKEND.CanonicalBodyForStorage:input_type -> remote.CanonicalBodyForStorageRequest - 11, // 26: remote.ETHBACKEND.CanonicalHash:input_type -> remote.CanonicalHashRequest - 13, // 27: remote.ETHBACKEND.HeaderNumber:input_type -> remote.HeaderNumberRequest - 23, // 28: remote.ETHBACKEND.TxnLookup:input_type -> remote.TxnLookupRequest - 23, // 29: remote.ETHBACKEND.TxnNumLookup:input_type -> remote.TxnLookupRequest - 26, // 30: remote.ETHBACKEND.NodeInfo:input_type -> remote.NodesInfoRequest - 38, // 31: remote.ETHBACKEND.Peers:input_type -> google.protobuf.Empty - 27, // 32: remote.ETHBACKEND.AddPeer:input_type -> remote.AddPeerRequest - 38, // 33: remote.ETHBACKEND.PendingBlock:input_type -> google.protobuf.Empty - 39, // 34: remote.ETHBACKEND.BorTxnLookup:input_type -> remote.BorTxnLookupRequest - 40, // 35: remote.ETHBACKEND.BorEvents:input_type -> remote.BorEventsRequest - 2, // 36: remote.ETHBACKEND.Etherbase:output_type -> remote.EtherbaseReply - 4, // 37: remote.ETHBACKEND.NetVersion:output_type -> remote.NetVersionReply - 6, // 38: remote.ETHBACKEND.NetPeerCount:output_type -> remote.NetPeerCountReply - 41, // 39: remote.ETHBACKEND.Version:output_type -> types.VersionReply - 8, // 40: remote.ETHBACKEND.ProtocolVersion:output_type -> remote.ProtocolVersionReply - 10, // 41: remote.ETHBACKEND.ClientVersion:output_type -> remote.ClientVersionReply - 18, // 42: remote.ETHBACKEND.Subscribe:output_type -> remote.SubscribeReply - 20, // 43: remote.ETHBACKEND.SubscribeLogs:output_type -> remote.SubscribeLogsReply - 22, // 44: remote.ETHBACKEND.Block:output_type -> remote.BlockReply - 16, // 45: remote.ETHBACKEND.CanonicalBodyForStorage:output_type -> remote.CanonicalBodyForStorageReply - 12, // 46: remote.ETHBACKEND.CanonicalHash:output_type -> remote.CanonicalHashReply - 14, // 47: remote.ETHBACKEND.HeaderNumber:output_type -> remote.HeaderNumberReply - 24, // 48: remote.ETHBACKEND.TxnLookup:output_type -> remote.TxnLookupReply - 25, // 49: remote.ETHBACKEND.TxnNumLookup:output_type -> remote.TxnNumLookupReply - 28, // 50: remote.ETHBACKEND.NodeInfo:output_type -> remote.NodesInfoReply - 29, // 51: remote.ETHBACKEND.Peers:output_type -> remote.PeersReply - 30, // 52: remote.ETHBACKEND.AddPeer:output_type -> remote.AddPeerReply - 31, // 53: remote.ETHBACKEND.PendingBlock:output_type -> remote.PendingBlockReply - 42, // 54: remote.ETHBACKEND.BorTxnLookup:output_type -> remote.BorTxnLookupReply - 43, // 55: remote.ETHBACKEND.BorEvents:output_type -> remote.BorEventsReply - 36, // [36:56] is the sub-list for method output_type - 16, // [16:36] is the sub-list for method input_type - 16, // [16:16] is the sub-list for extension type_name - 16, // [16:16] is the sub-list for extension extendee - 0, // [0:16] is the sub-list for field type_name + 36, // 0: remote.EtherbaseReply.address:type_name -> types.H160 + 35, // 1: remote.SyncingReply.stages:type_name -> remote.SyncingReply.StageProgress + 37, // 2: remote.CanonicalHashReply.hash:type_name -> types.H256 + 37, // 3: remote.HeaderNumberRequest.hash:type_name -> types.H256 + 0, // 4: remote.SubscribeRequest.type:type_name -> remote.Event + 0, // 5: remote.SubscribeReply.type:type_name -> remote.Event + 36, // 6: remote.LogsFilterRequest.addresses:type_name -> types.H160 + 37, // 7: remote.LogsFilterRequest.topics:type_name -> types.H256 + 36, // 8: remote.SubscribeLogsReply.address:type_name -> types.H160 + 37, // 9: remote.SubscribeLogsReply.block_hash:type_name -> types.H256 + 37, // 10: remote.SubscribeLogsReply.topics:type_name -> types.H256 + 37, // 11: remote.SubscribeLogsReply.transaction_hash:type_name -> types.H256 + 37, // 12: remote.BlockRequest.block_hash:type_name -> types.H256 + 37, // 13: remote.TxnLookupRequest.txn_hash:type_name -> types.H256 + 38, // 14: remote.NodesInfoReply.nodes_info:type_name -> types.NodeInfoReply + 39, // 15: remote.PeersReply.peers:type_name -> types.PeerInfo + 37, // 16: remote.EngineGetPayloadBodiesByHashV1Request.hashes:type_name -> types.H256 + 1, // 17: remote.ETHBACKEND.Etherbase:input_type -> remote.EtherbaseRequest + 3, // 18: remote.ETHBACKEND.NetVersion:input_type -> remote.NetVersionRequest + 6, // 19: remote.ETHBACKEND.NetPeerCount:input_type -> remote.NetPeerCountRequest + 40, // 20: remote.ETHBACKEND.Version:input_type -> google.protobuf.Empty + 40, // 21: remote.ETHBACKEND.Syncing:input_type -> google.protobuf.Empty + 8, // 22: remote.ETHBACKEND.ProtocolVersion:input_type -> remote.ProtocolVersionRequest + 10, // 23: remote.ETHBACKEND.ClientVersion:input_type -> remote.ClientVersionRequest + 18, // 24: remote.ETHBACKEND.Subscribe:input_type -> remote.SubscribeRequest + 20, // 25: remote.ETHBACKEND.SubscribeLogs:input_type -> remote.LogsFilterRequest + 22, // 26: remote.ETHBACKEND.Block:input_type -> remote.BlockRequest + 16, // 27: remote.ETHBACKEND.CanonicalBodyForStorage:input_type -> remote.CanonicalBodyForStorageRequest + 12, // 28: remote.ETHBACKEND.CanonicalHash:input_type -> remote.CanonicalHashRequest + 14, // 29: remote.ETHBACKEND.HeaderNumber:input_type -> remote.HeaderNumberRequest + 24, // 30: remote.ETHBACKEND.TxnLookup:input_type -> remote.TxnLookupRequest + 24, // 31: remote.ETHBACKEND.TxnNumLookup:input_type -> remote.TxnLookupRequest + 27, // 32: remote.ETHBACKEND.NodeInfo:input_type -> remote.NodesInfoRequest + 40, // 33: remote.ETHBACKEND.Peers:input_type -> google.protobuf.Empty + 28, // 34: remote.ETHBACKEND.AddPeer:input_type -> remote.AddPeerRequest + 40, // 35: remote.ETHBACKEND.PendingBlock:input_type -> google.protobuf.Empty + 41, // 36: remote.ETHBACKEND.BorTxnLookup:input_type -> remote.BorTxnLookupRequest + 42, // 37: remote.ETHBACKEND.BorEvents:input_type -> remote.BorEventsRequest + 2, // 38: remote.ETHBACKEND.Etherbase:output_type -> remote.EtherbaseReply + 4, // 39: remote.ETHBACKEND.NetVersion:output_type -> remote.NetVersionReply + 7, // 40: remote.ETHBACKEND.NetPeerCount:output_type -> remote.NetPeerCountReply + 43, // 41: remote.ETHBACKEND.Version:output_type -> types.VersionReply + 5, // 42: remote.ETHBACKEND.Syncing:output_type -> remote.SyncingReply + 9, // 43: remote.ETHBACKEND.ProtocolVersion:output_type -> remote.ProtocolVersionReply + 11, // 44: remote.ETHBACKEND.ClientVersion:output_type -> remote.ClientVersionReply + 19, // 45: remote.ETHBACKEND.Subscribe:output_type -> remote.SubscribeReply + 21, // 46: remote.ETHBACKEND.SubscribeLogs:output_type -> remote.SubscribeLogsReply + 23, // 47: remote.ETHBACKEND.Block:output_type -> remote.BlockReply + 17, // 48: remote.ETHBACKEND.CanonicalBodyForStorage:output_type -> remote.CanonicalBodyForStorageReply + 13, // 49: remote.ETHBACKEND.CanonicalHash:output_type -> remote.CanonicalHashReply + 15, // 50: remote.ETHBACKEND.HeaderNumber:output_type -> remote.HeaderNumberReply + 25, // 51: remote.ETHBACKEND.TxnLookup:output_type -> remote.TxnLookupReply + 26, // 52: remote.ETHBACKEND.TxnNumLookup:output_type -> remote.TxnNumLookupReply + 29, // 53: remote.ETHBACKEND.NodeInfo:output_type -> remote.NodesInfoReply + 30, // 54: remote.ETHBACKEND.Peers:output_type -> remote.PeersReply + 31, // 55: remote.ETHBACKEND.AddPeer:output_type -> remote.AddPeerReply + 32, // 56: remote.ETHBACKEND.PendingBlock:output_type -> remote.PendingBlockReply + 44, // 57: remote.ETHBACKEND.BorTxnLookup:output_type -> remote.BorTxnLookupReply + 45, // 58: remote.ETHBACKEND.BorEvents:output_type -> remote.BorEventsReply + 38, // [38:59] is the sub-list for method output_type + 17, // [17:38] is the sub-list for method input_type + 17, // [17:17] is the sub-list for extension type_name + 17, // [17:17] is the sub-list for extension extendee + 0, // [0:17] is the sub-list for field type_name } func init() { file_remote_ethbackend_proto_init() } @@ -2121,7 +2282,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*NetPeerCountRequest); i { + switch v := v.(*SyncingReply); i { case 0: return &v.state case 1: @@ -2133,7 +2294,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*NetPeerCountReply); i { + switch v := v.(*NetPeerCountRequest); i { case 0: return &v.state case 1: @@ -2145,7 +2306,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*ProtocolVersionRequest); i { + switch v := v.(*NetPeerCountReply); i { case 0: return &v.state case 1: @@ -2157,7 +2318,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*ProtocolVersionReply); i { + switch v := v.(*ProtocolVersionRequest); i { case 0: return &v.state case 1: @@ -2169,7 +2330,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*ClientVersionRequest); i { + switch v := v.(*ProtocolVersionReply); i { case 0: return &v.state case 1: @@ -2181,7 +2342,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*ClientVersionReply); i { + switch v := v.(*ClientVersionRequest); i { case 0: return &v.state case 1: @@ -2193,7 +2354,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*CanonicalHashRequest); i { + switch v := v.(*ClientVersionReply); i { case 0: return &v.state case 1: @@ -2205,7 +2366,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*CanonicalHashReply); i { + switch v := v.(*CanonicalHashRequest); i { case 0: return &v.state case 1: @@ -2217,7 +2378,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*HeaderNumberRequest); i { + switch v := v.(*CanonicalHashReply); i { case 0: return &v.state case 1: @@ -2229,7 +2390,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*HeaderNumberReply); i { + switch v := v.(*HeaderNumberRequest); i { case 0: return &v.state case 1: @@ -2241,7 +2402,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*CanonicalBodyForStorageRequest); i { + switch v := v.(*HeaderNumberReply); i { case 0: return &v.state case 1: @@ -2253,7 +2414,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*CanonicalBodyForStorageReply); i { + switch v := v.(*CanonicalBodyForStorageRequest); i { case 0: return &v.state case 1: @@ -2265,7 +2426,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*SubscribeRequest); i { + switch v := v.(*CanonicalBodyForStorageReply); i { case 0: return &v.state case 1: @@ -2277,7 +2438,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*SubscribeReply); i { + switch v := v.(*SubscribeRequest); i { case 0: return &v.state case 1: @@ -2289,7 +2450,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[18].Exporter = func(v any, i int) any { - switch v := v.(*LogsFilterRequest); i { + switch v := v.(*SubscribeReply); i { case 0: return &v.state case 1: @@ -2301,7 +2462,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[19].Exporter = func(v any, i int) any { - switch v := v.(*SubscribeLogsReply); i { + switch v := v.(*LogsFilterRequest); i { case 0: return &v.state case 1: @@ -2313,7 +2474,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[20].Exporter = func(v any, i int) any { - switch v := v.(*BlockRequest); i { + switch v := v.(*SubscribeLogsReply); i { case 0: return &v.state case 1: @@ -2325,7 +2486,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[21].Exporter = func(v any, i int) any { - switch v := v.(*BlockReply); i { + switch v := v.(*BlockRequest); i { case 0: return &v.state case 1: @@ -2337,7 +2498,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[22].Exporter = func(v any, i int) any { - switch v := v.(*TxnLookupRequest); i { + switch v := v.(*BlockReply); i { case 0: return &v.state case 1: @@ -2349,7 +2510,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[23].Exporter = func(v any, i int) any { - switch v := v.(*TxnLookupReply); i { + switch v := v.(*TxnLookupRequest); i { case 0: return &v.state case 1: @@ -2361,7 +2522,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[24].Exporter = func(v any, i int) any { - switch v := v.(*TxnNumLookupReply); i { + switch v := v.(*TxnLookupReply); i { case 0: return &v.state case 1: @@ -2373,7 +2534,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[25].Exporter = func(v any, i int) any { - switch v := v.(*NodesInfoRequest); i { + switch v := v.(*TxnNumLookupReply); i { case 0: return &v.state case 1: @@ -2385,7 +2546,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[26].Exporter = func(v any, i int) any { - switch v := v.(*AddPeerRequest); i { + switch v := v.(*NodesInfoRequest); i { case 0: return &v.state case 1: @@ -2397,7 +2558,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[27].Exporter = func(v any, i int) any { - switch v := v.(*NodesInfoReply); i { + switch v := v.(*AddPeerRequest); i { case 0: return &v.state case 1: @@ -2409,7 +2570,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[28].Exporter = func(v any, i int) any { - switch v := v.(*PeersReply); i { + switch v := v.(*NodesInfoReply); i { case 0: return &v.state case 1: @@ -2421,7 +2582,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[29].Exporter = func(v any, i int) any { - switch v := v.(*AddPeerReply); i { + switch v := v.(*PeersReply); i { case 0: return &v.state case 1: @@ -2433,7 +2594,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[30].Exporter = func(v any, i int) any { - switch v := v.(*PendingBlockReply); i { + switch v := v.(*AddPeerReply); i { case 0: return &v.state case 1: @@ -2445,7 +2606,7 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[31].Exporter = func(v any, i int) any { - switch v := v.(*EngineGetPayloadBodiesByHashV1Request); i { + switch v := v.(*PendingBlockReply); i { case 0: return &v.state case 1: @@ -2457,6 +2618,18 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[32].Exporter = func(v any, i int) any { + switch v := v.(*EngineGetPayloadBodiesByHashV1Request); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_remote_ethbackend_proto_msgTypes[33].Exporter = func(v any, i int) any { switch v := v.(*EngineGetPayloadBodiesByRangeV1Request); i { case 0: return &v.state @@ -2468,15 +2641,27 @@ func file_remote_ethbackend_proto_init() { return nil } } + file_remote_ethbackend_proto_msgTypes[34].Exporter = func(v any, i int) any { + switch v := v.(*SyncingReply_StageProgress); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } - file_remote_ethbackend_proto_msgTypes[13].OneofWrappers = []any{} + file_remote_ethbackend_proto_msgTypes[14].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_remote_ethbackend_proto_rawDesc, NumEnums: 1, - NumMessages: 33, + NumMessages: 35, NumExtensions: 0, NumServices: 1, }, diff --git a/erigon-lib/gointerfaces/remoteproto/kv_grpc.pb.go b/erigon-lib/gointerfaces/remoteproto/kv_grpc.pb.go index f64ddddf7e7..8179df4b950 100644 --- a/erigon-lib/gointerfaces/remoteproto/kv_grpc.pb.go +++ b/erigon-lib/gointerfaces/remoteproto/kv_grpc.pb.go @@ -7,13 +7,12 @@ package remoteproto import ( - "context" - - "github.com/erigontech/erigon-lib/gointerfaces/typesproto" - "google.golang.org/grpc" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" - "google.golang.org/protobuf/types/known/emptypb" + context "context" + typesproto "github.com/erigontech/erigon-lib/gointerfaces/typesproto" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" ) // This is a compile-time assertion to ensure that this generated file diff --git a/turbo/snapshotsync/freezeblocks/block_reader.go b/turbo/snapshotsync/freezeblocks/block_reader.go index c0880e86f7e..5a58c8ca77d 100644 --- a/turbo/snapshotsync/freezeblocks/block_reader.go +++ b/turbo/snapshotsync/freezeblocks/block_reader.go @@ -1151,12 +1151,12 @@ func (r *BlockReader) txnByHash(txnHash common.Hash, segments []*snapshotsync.Vi return nil, 0, false, nil } -func (r *BlockReader) txnIDByHash(txnHash common.Hash, segments []*VisibleSegment) (txnId uint64, found bool) { +func (r *BlockReader) txnIDByHash(txnHash common.Hash, segments []*snapshotsync.VisibleSegment) (txnId uint64, found bool) { for i := len(segments) - 1; i >= 0; i-- { sn := segments[i] - idxTxnHash := sn.src.Index(coresnaptype.Indexes.TxnHash) - idxTxnHash2BlockNum := sn.src.Index(coresnaptype.Indexes.TxnHash2BlockNum) + idxTxnHash := sn.Src().Index(coresnaptype.Indexes.TxnHash) + idxTxnHash2BlockNum := sn.Src().Index(coresnaptype.Indexes.TxnHash2BlockNum) if idxTxnHash == nil || idxTxnHash2BlockNum == nil { continue @@ -1254,7 +1254,7 @@ func (r *BlockReader) TxnNumLookup(_ context.Context, tx kv.Getter, txnHash comm txns := r.sn.ViewType(coresnaptype.Transactions) defer txns.Close() - txID, ok := r.txnIDByHash(txnHash, txns.VisibleSegments) + txID, ok := r.txnIDByHash(txnHash, txns.Segments) return txID, ok, nil } diff --git a/txnprovider/txpool/pool_mock.go b/txnprovider/txpool/pool_mock.go index 7c3baf01d83..35e3136df48 100644 --- a/txnprovider/txpool/pool_mock.go +++ b/txnprovider/txpool/pool_mock.go @@ -23,6 +23,7 @@ import ( type MockPool struct { ctrl *gomock.Controller recorder *MockPoolMockRecorder + isgomock struct{} } // MockPoolMockRecorder is the mock recorder for MockPool. @@ -43,18 +44,18 @@ func (m *MockPool) EXPECT() *MockPoolMockRecorder { } // AddLocalTxns mocks base method. -func (m *MockPool) AddLocalTxns(arg0 context.Context, arg1 TxnSlots) ([]txpoolcfg.DiscardReason, error) { +func (m *MockPool) AddLocalTxns(ctx context.Context, newTxns TxnSlots) ([]txpoolcfg.DiscardReason, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "AddLocalTxns", arg0, arg1) + ret := m.ctrl.Call(m, "AddLocalTxns", ctx, newTxns) ret0, _ := ret[0].([]txpoolcfg.DiscardReason) ret1, _ := ret[1].(error) return ret0, ret1 } // AddLocalTxns indicates an expected call of AddLocalTxns. -func (mr *MockPoolMockRecorder) AddLocalTxns(arg0, arg1 any) *MockPoolAddLocalTxnsCall { +func (mr *MockPoolMockRecorder) AddLocalTxns(ctx, newTxns any) *MockPoolAddLocalTxnsCall { mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddLocalTxns", reflect.TypeOf((*MockPool)(nil).AddLocalTxns), arg0, arg1) + call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddLocalTxns", reflect.TypeOf((*MockPool)(nil).AddLocalTxns), ctx, newTxns) return &MockPoolAddLocalTxnsCall{Call: call} } @@ -82,15 +83,15 @@ func (c *MockPoolAddLocalTxnsCall) DoAndReturn(f func(context.Context, TxnSlots) } // AddNewGoodPeer mocks base method. -func (m *MockPool) AddNewGoodPeer(arg0 PeerID) { +func (m *MockPool) AddNewGoodPeer(peerID PeerID) { m.ctrl.T.Helper() - m.ctrl.Call(m, "AddNewGoodPeer", arg0) + m.ctrl.Call(m, "AddNewGoodPeer", peerID) } // AddNewGoodPeer indicates an expected call of AddNewGoodPeer. -func (mr *MockPoolMockRecorder) AddNewGoodPeer(arg0 any) *MockPoolAddNewGoodPeerCall { +func (mr *MockPoolMockRecorder) AddNewGoodPeer(peerID any) *MockPoolAddNewGoodPeerCall { mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddNewGoodPeer", reflect.TypeOf((*MockPool)(nil).AddNewGoodPeer), arg0) + call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddNewGoodPeer", reflect.TypeOf((*MockPool)(nil).AddNewGoodPeer), peerID) return &MockPoolAddNewGoodPeerCall{Call: call} } @@ -118,15 +119,15 @@ func (c *MockPoolAddNewGoodPeerCall) DoAndReturn(f func(PeerID)) *MockPoolAddNew } // AddRemoteTxns mocks base method. -func (m *MockPool) AddRemoteTxns(arg0 context.Context, arg1 TxnSlots) { +func (m *MockPool) AddRemoteTxns(ctx context.Context, newTxns TxnSlots) { m.ctrl.T.Helper() - m.ctrl.Call(m, "AddRemoteTxns", arg0, arg1) + m.ctrl.Call(m, "AddRemoteTxns", ctx, newTxns) } // AddRemoteTxns indicates an expected call of AddRemoteTxns. -func (mr *MockPoolMockRecorder) AddRemoteTxns(arg0, arg1 any) *MockPoolAddRemoteTxnsCall { +func (mr *MockPoolMockRecorder) AddRemoteTxns(ctx, newTxns any) *MockPoolAddRemoteTxnsCall { mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddRemoteTxns", reflect.TypeOf((*MockPool)(nil).AddRemoteTxns), arg0, arg1) + call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddRemoteTxns", reflect.TypeOf((*MockPool)(nil).AddRemoteTxns), ctx, newTxns) return &MockPoolAddRemoteTxnsCall{Call: call} } @@ -154,18 +155,18 @@ func (c *MockPoolAddRemoteTxnsCall) DoAndReturn(f func(context.Context, TxnSlots } // FilterKnownIdHashes mocks base method. -func (m *MockPool) FilterKnownIdHashes(arg0 kv.Tx, arg1 Hashes) (Hashes, error) { +func (m *MockPool) FilterKnownIdHashes(tx kv.Tx, hashes Hashes) (Hashes, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "FilterKnownIdHashes", arg0, arg1) + ret := m.ctrl.Call(m, "FilterKnownIdHashes", tx, hashes) ret0, _ := ret[0].(Hashes) ret1, _ := ret[1].(error) return ret0, ret1 } // FilterKnownIdHashes indicates an expected call of FilterKnownIdHashes. -func (mr *MockPoolMockRecorder) FilterKnownIdHashes(arg0, arg1 any) *MockPoolFilterKnownIdHashesCall { +func (mr *MockPoolMockRecorder) FilterKnownIdHashes(tx, hashes any) *MockPoolFilterKnownIdHashesCall { mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FilterKnownIdHashes", reflect.TypeOf((*MockPool)(nil).FilterKnownIdHashes), arg0, arg1) + call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FilterKnownIdHashes", reflect.TypeOf((*MockPool)(nil).FilterKnownIdHashes), tx, hashes) return &MockPoolFilterKnownIdHashesCall{Call: call} } @@ -175,8 +176,8 @@ type MockPoolFilterKnownIdHashesCall struct { } // Return rewrite *gomock.Call.Return -func (c *MockPoolFilterKnownIdHashesCall) Return(arg0 Hashes, arg1 error) *MockPoolFilterKnownIdHashesCall { - c.Call = c.Call.Return(arg0, arg1) +func (c *MockPoolFilterKnownIdHashesCall) Return(unknownHashes Hashes, err error) *MockPoolFilterKnownIdHashesCall { + c.Call = c.Call.Return(unknownHashes, err) return c } @@ -193,18 +194,18 @@ func (c *MockPoolFilterKnownIdHashesCall) DoAndReturn(f func(kv.Tx, Hashes) (Has } // GetRlp mocks base method. -func (m *MockPool) GetRlp(arg0 kv.Tx, arg1 []byte) ([]byte, error) { +func (m *MockPool) GetRlp(tx kv.Tx, hash []byte) ([]byte, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetRlp", arg0, arg1) + ret := m.ctrl.Call(m, "GetRlp", tx, hash) ret0, _ := ret[0].([]byte) ret1, _ := ret[1].(error) return ret0, ret1 } // GetRlp indicates an expected call of GetRlp. -func (mr *MockPoolMockRecorder) GetRlp(arg0, arg1 any) *MockPoolGetRlpCall { +func (mr *MockPoolMockRecorder) GetRlp(tx, hash any) *MockPoolGetRlpCall { mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetRlp", reflect.TypeOf((*MockPool)(nil).GetRlp), arg0, arg1) + call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetRlp", reflect.TypeOf((*MockPool)(nil).GetRlp), tx, hash) return &MockPoolGetRlpCall{Call: call} } @@ -232,18 +233,18 @@ func (c *MockPoolGetRlpCall) DoAndReturn(f func(kv.Tx, []byte) ([]byte, error)) } // IdHashKnown mocks base method. -func (m *MockPool) IdHashKnown(arg0 kv.Tx, arg1 []byte) (bool, error) { +func (m *MockPool) IdHashKnown(tx kv.Tx, hash []byte) (bool, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "IdHashKnown", arg0, arg1) + ret := m.ctrl.Call(m, "IdHashKnown", tx, hash) ret0, _ := ret[0].(bool) ret1, _ := ret[1].(error) return ret0, ret1 } // IdHashKnown indicates an expected call of IdHashKnown. -func (mr *MockPoolMockRecorder) IdHashKnown(arg0, arg1 any) *MockPoolIdHashKnownCall { +func (mr *MockPoolMockRecorder) IdHashKnown(tx, hash any) *MockPoolIdHashKnownCall { mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IdHashKnown", reflect.TypeOf((*MockPool)(nil).IdHashKnown), arg0, arg1) + call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IdHashKnown", reflect.TypeOf((*MockPool)(nil).IdHashKnown), tx, hash) return &MockPoolIdHashKnownCall{Call: call} } @@ -271,17 +272,17 @@ func (c *MockPoolIdHashKnownCall) DoAndReturn(f func(kv.Tx, []byte) (bool, error } // OnNewBlock mocks base method. -func (m *MockPool) OnNewBlock(arg0 context.Context, arg1 *remoteproto.StateChangeBatch, arg2, arg3, arg4 TxnSlots) error { +func (m *MockPool) OnNewBlock(ctx context.Context, stateChanges *remoteproto.StateChangeBatch, unwindTxns, unwindBlobTxns, minedTxns TxnSlots) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "OnNewBlock", arg0, arg1, arg2, arg3, arg4) + ret := m.ctrl.Call(m, "OnNewBlock", ctx, stateChanges, unwindTxns, unwindBlobTxns, minedTxns) ret0, _ := ret[0].(error) return ret0 } // OnNewBlock indicates an expected call of OnNewBlock. -func (mr *MockPoolMockRecorder) OnNewBlock(arg0, arg1, arg2, arg3, arg4 any) *MockPoolOnNewBlockCall { +func (mr *MockPoolMockRecorder) OnNewBlock(ctx, stateChanges, unwindTxns, unwindBlobTxns, minedTxns any) *MockPoolOnNewBlockCall { mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "OnNewBlock", reflect.TypeOf((*MockPool)(nil).OnNewBlock), arg0, arg1, arg2, arg3, arg4) + call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "OnNewBlock", reflect.TypeOf((*MockPool)(nil).OnNewBlock), ctx, stateChanges, unwindTxns, unwindBlobTxns, minedTxns) return &MockPoolOnNewBlockCall{Call: call} } @@ -347,17 +348,17 @@ func (c *MockPoolStartedCall) DoAndReturn(f func() bool) *MockPoolStartedCall { } // ValidateSerializedTxn mocks base method. -func (m *MockPool) ValidateSerializedTxn(arg0 []byte) error { +func (m *MockPool) ValidateSerializedTxn(serializedTxn []byte) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ValidateSerializedTxn", arg0) + ret := m.ctrl.Call(m, "ValidateSerializedTxn", serializedTxn) ret0, _ := ret[0].(error) return ret0 } // ValidateSerializedTxn indicates an expected call of ValidateSerializedTxn. -func (mr *MockPoolMockRecorder) ValidateSerializedTxn(arg0 any) *MockPoolValidateSerializedTxnCall { +func (mr *MockPoolMockRecorder) ValidateSerializedTxn(serializedTxn any) *MockPoolValidateSerializedTxnCall { mr.mock.ctrl.T.Helper() - call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ValidateSerializedTxn", reflect.TypeOf((*MockPool)(nil).ValidateSerializedTxn), arg0) + call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ValidateSerializedTxn", reflect.TypeOf((*MockPool)(nil).ValidateSerializedTxn), serializedTxn) return &MockPoolValidateSerializedTxnCall{Call: call} } From 8b71849f0b889a022aff3fe63a49e1ffa32b11df Mon Sep 17 00:00:00 2001 From: JkLondon Date: Wed, 20 Nov 2024 09:52:11 +0100 Subject: [PATCH 16/58] commit --- accounts/abi/bind/backends/simulated.go | 4 +- accounts/abi/bind/backends/simulated_test.go | 2 +- cmd/integration/commands/refetence_db.go | 1 - cmd/pics/state.go | 1 - cmd/rpcdaemon/rpcservices/eth_backend.go | 5 +- core/rawdb/accessors_indexes.go | 59 +- core/rawdb/accessors_indexes_test.go | 2 +- core/rawdb/rawdbreset/reset_stages.go | 3 - erigon-lib/direct/eth_backend_client.go | 4 - erigon-lib/go.mod | 2 +- erigon-lib/go.sum | 2 + .../gointerfaces/remoteproto/ethbackend.pb.go | 511 ++++++++---------- .../remoteproto/ethbackend_grpc.pb.go | 42 -- erigon-lib/kv/tables.go | 4 +- eth/stagedsync/stage_txlookup.go | 82 +-- ethdb/privateapi/ethbackend.go | 6 +- go.mod | 1 + go.sum | 2 + turbo/jsonrpc/eth_api.go | 6 +- turbo/jsonrpc/eth_block.go | 2 +- turbo/jsonrpc/eth_receipts.go | 10 +- turbo/jsonrpc/eth_txs.go | 4 +- turbo/jsonrpc/otterscan_api.go | 2 +- turbo/jsonrpc/overlay_api.go | 2 +- turbo/jsonrpc/trace_adhoc.go | 2 +- turbo/jsonrpc/trace_filtering.go | 2 +- turbo/jsonrpc/tracing.go | 2 +- turbo/services/interfaces.go | 3 +- .../snapshotsync/freezeblocks/block_reader.go | 63 +-- turbo/stages/blockchain_test.go | 12 +- 30 files changed, 303 insertions(+), 540 deletions(-) diff --git a/accounts/abi/bind/backends/simulated.go b/accounts/abi/bind/backends/simulated.go index 74326cab8ee..f0b9a6bb03e 100644 --- a/accounts/abi/bind/backends/simulated.go +++ b/accounts/abi/bind/backends/simulated.go @@ -265,7 +265,7 @@ func (b *SimulatedBackend) TransactionReceipt(ctx context.Context, txHash libcom defer tx.Rollback() // Retrieve the context of the receipt based on the transaction hash - blockNumber, err := rawdb.ReadTxLookupEntry(tx, txHash) + blockNumber, _, err := rawdb.ReadTxLookupEntry(tx, txHash) if err != nil { return nil, err } @@ -308,7 +308,7 @@ func (b *SimulatedBackend) TransactionByHash(ctx context.Context, txHash libcomm if txn != nil { return txn, true, nil } - blockNumber, ok, err := b.BlockReader().TxnLookup(ctx, tx, txHash) + blockNumber, _, ok, err := b.BlockReader().TxnLookup(ctx, tx, txHash) if err != nil { return nil, false, err } diff --git a/accounts/abi/bind/backends/simulated_test.go b/accounts/abi/bind/backends/simulated_test.go index df82523d138..a4bc0f0c5af 100644 --- a/accounts/abi/bind/backends/simulated_test.go +++ b/accounts/abi/bind/backends/simulated_test.go @@ -90,7 +90,7 @@ func TestSimulatedBackend(t *testing.T) { sim.Commit() _, isPending, err = sim.TransactionByHash(context.Background(), txHash) if err != nil { - t.Fatalf("error getting transaction with hash: %v", txHash.String()) + t.Fatalf("error getting transaction with hash: %v %v", txHash.String(), err.Error()) } if isPending { t.Fatal("transaction should not have pending status") diff --git a/cmd/integration/commands/refetence_db.go b/cmd/integration/commands/refetence_db.go index f2813fb71c1..958bf2b8e8b 100644 --- a/cmd/integration/commands/refetence_db.go +++ b/cmd/integration/commands/refetence_db.go @@ -58,7 +58,6 @@ var stateBuckets = []string{ kv.E2AccountsHistory, kv.E2StorageHistory, kv.TxLookup, - kv.TxIDLookUp, } var cmdWarmup = &cobra.Command{ diff --git a/cmd/pics/state.go b/cmd/pics/state.go index 2d71010ae7e..1d1d195e6d6 100644 --- a/cmd/pics/state.go +++ b/cmd/pics/state.go @@ -96,7 +96,6 @@ var bucketLabels = map[string]string{ kv.BlockBody: "Block Bodies", kv.HeaderNumber: "Header Numbers", kv.TxLookup: "Transaction Index", - kv.TxIDLookUp: "Transaction ID and Info By Hash", kv.Code: "Code Of Contracts", kv.SyncStageProgress: "Sync Progress", kv.PlainState: "Plain State", diff --git a/cmd/rpcdaemon/rpcservices/eth_backend.go b/cmd/rpcdaemon/rpcservices/eth_backend.go index 7d29550c884..2c1a797a384 100644 --- a/cmd/rpcdaemon/rpcservices/eth_backend.go +++ b/cmd/rpcdaemon/rpcservices/eth_backend.go @@ -282,12 +282,9 @@ func (back *RemoteBackend) SubscribeLogs(ctx context.Context, onNewLogs func(rep return nil } -func (back *RemoteBackend) TxnLookup(ctx context.Context, tx kv.Getter, txnHash common.Hash) (uint64, bool, error) { +func (back *RemoteBackend) TxnLookup(ctx context.Context, tx kv.Getter, txnHash common.Hash) (uint64, uint64, bool, error) { return back.blockReader.TxnLookup(ctx, tx, txnHash) } -func (back *RemoteBackend) TxnNumLookup(ctx context.Context, tx kv.Getter, txnHash common.Hash) (uint64, bool, error) { - return back.blockReader.TxnNumLookup(ctx, tx, txnHash) -} func (back *RemoteBackend) HasSenders(ctx context.Context, tx kv.Getter, hash common.Hash, blockNum uint64) (bool, error) { panic("HasSenders is low-level method, don't use it in RPCDaemon") } diff --git a/core/rawdb/accessors_indexes.go b/core/rawdb/accessors_indexes.go index cf8ea9a8074..a8e2c0e199f 100644 --- a/core/rawdb/accessors_indexes.go +++ b/core/rawdb/accessors_indexes.go @@ -21,6 +21,7 @@ package rawdb import ( "encoding/binary" + "github.com/erigontech/erigon-lib/common/dbg" "math/big" libcommon "github.com/erigontech/erigon-lib/common" @@ -40,26 +41,39 @@ type TxLookupEntry struct { // ReadTxLookupEntry retrieves the positional metadata associated with a transaction // hash to allow retrieving the transaction or receipt by hash. -func ReadTxLookupEntry(db kv.Getter, txnHash libcommon.Hash) (*uint64, error) { - dataBlockNum, err := db.GetOne(kv.TxLookup, txnHash.Bytes()) +func ReadTxLookupEntry(db kv.Getter, txnHash libcommon.Hash) (*uint64, *uint64, error) { + data, err := db.GetOne(kv.TxLookup, txnHash.Bytes()) if err != nil { - return nil, err + return nil, nil, err } - if len(dataBlockNum) == 0 { - return nil, nil + if len(data) == 0 { + return nil, nil, nil + } + numberBlockNum := new(big.Int).SetBytes(data[:min(8, len(data))]).Uint64() + + var numberTxNum uint64 + if len(data) >= 8 { + numberTxNum = new(big.Int).SetBytes(data[8:]).Uint64() + } else { + return &numberBlockNum, nil, nil } - numberBlockNum := new(big.Int).SetBytes(dataBlockNum).Uint64() - return &numberBlockNum, nil + + return &numberBlockNum, &numberTxNum, nil } // WriteTxLookupEntries stores a positional metadata for every transaction from // a block, enabling hash based transaction and receipt lookups. -func WriteTxLookupEntries(db kv.Putter, block *types.Block) { +func WriteTxLookupEntries(db kv.Putter, block *types.Block, txNum uint64) { + println("aёёёёу", dbg.Stack()) for _, txn := range block.Transactions() { data := block.Number().Bytes() + txNumData := make([]byte, 8, 16) + binary.BigEndian.PutUint64(txNumData, txNum) + data = append(data, txNumData...) if err := db.Put(kv.TxLookup, txn.Hash().Bytes(), data); err != nil { log.Crit("Failed to store transaction lookup entry", "err", err) } + txNum++ } } @@ -67,32 +81,3 @@ func WriteTxLookupEntries(db kv.Putter, block *types.Block) { func DeleteTxLookupEntry(db kv.Putter, hash libcommon.Hash) error { return db.Delete(kv.TxLookup, hash.Bytes()) } - -// ReadTxIDLookupEntry retrieves the positional metadata associated with a transaction -// hash to allow retrieving the transaction or receipt by hash. -func ReadTxIDLookupEntry(db kv.Getter, txnHash libcommon.Hash) (*uint64, error) { - data, err := db.GetOne(kv.TxIDLookUp, txnHash.Bytes()) - if err != nil { - return nil, err - } - if len(data) == 0 { - return nil, nil - } - number := new(big.Int).SetBytes(data).Uint64() - return &number, nil -} - -// WriteTxIDLookupEntries stores a positional metadata for every transaction from -// a block, enabling hash based transaction and receipt lookups. -func WriteTxIDLookupEntries(db kv.Putter, txn types.Transaction, txNum uint64) { - data := make([]byte, 8) - binary.BigEndian.PutUint64(data, txNum) - if err := db.Put(kv.TxIDLookUp, txn.Hash().Bytes(), data); err != nil { - log.Crit("Failed to store transaction id lookup entry", "err", err) - } -} - -// DeleteTxIDLookupEntry removes all transaction data associated with a hash. -func DeleteTxIDLookupEntry(db kv.Putter, hash libcommon.Hash) error { - return db.Delete(kv.TxIDLookUp, hash.Bytes()) -} diff --git a/core/rawdb/accessors_indexes_test.go b/core/rawdb/accessors_indexes_test.go index 8dd02b14a13..2e3b239d09a 100644 --- a/core/rawdb/accessors_indexes_test.go +++ b/core/rawdb/accessors_indexes_test.go @@ -115,7 +115,7 @@ func TestLookupStorage(t *testing.T) { // ReadTransactionByHash retrieves a specific transaction from the database, along with // its added positional metadata. func readTransactionByHash(db kv.Tx, hash libcommon.Hash, br services.FullBlockReader) (types.Transaction, libcommon.Hash, uint64, uint64, error) { - blockNumber, err := rawdb.ReadTxLookupEntry(db, hash) + blockNumber, _, err := rawdb.ReadTxLookupEntry(db, hash) if err != nil { return nil, libcommon.Hash{}, 0, 0, err } diff --git a/core/rawdb/rawdbreset/reset_stages.go b/core/rawdb/rawdbreset/reset_stages.go index de3f4175a43..dcc4886027b 100644 --- a/core/rawdb/rawdbreset/reset_stages.go +++ b/core/rawdb/rawdbreset/reset_stages.go @@ -192,9 +192,6 @@ func ResetTxLookup(tx kv.RwTx) error { if err := tx.ClearBucket(kv.TxLookup); err != nil { return err } - if err := tx.ClearBucket(kv.TxIDLookUp); err != nil { - return err - } if err := stages.SaveStageProgress(tx, stages.TxLookup, 0); err != nil { return err } diff --git a/erigon-lib/direct/eth_backend_client.go b/erigon-lib/direct/eth_backend_client.go index 76934f47e3e..84cfdeddf0a 100644 --- a/erigon-lib/direct/eth_backend_client.go +++ b/erigon-lib/direct/eth_backend_client.go @@ -31,10 +31,6 @@ type EthBackendClientDirect struct { server remote.ETHBACKENDServer } -func (s *EthBackendClientDirect) TxnNumLookup(ctx context.Context, in *remote.TxnLookupRequest, opts ...grpc.CallOption) (*remote.TxnNumLookupReply, error) { - return s.server.TxnNumLookup(ctx, in) -} - func NewEthBackendClientDirect(server remote.ETHBACKENDServer) *EthBackendClientDirect { return &EthBackendClientDirect{server: server} } diff --git a/erigon-lib/go.mod b/erigon-lib/go.mod index 7e9be053204..fc94ae0d892 100644 --- a/erigon-lib/go.mod +++ b/erigon-lib/go.mod @@ -4,7 +4,7 @@ go 1.22.0 require ( github.com/erigontech/erigon-snapshot v1.3.1-0.20241023024258-f64407a77e8e - github.com/erigontech/interfaces v0.0.0-20241119142727-0929f4896223 + github.com/erigontech/interfaces v0.0.0-20241120074553-214b5fd396ed github.com/erigontech/mdbx-go v0.38.4 github.com/erigontech/secp256k1 v1.1.0 github.com/rs/dnscache v0.0.0-20211102005908-e0241e321417 diff --git a/erigon-lib/go.sum b/erigon-lib/go.sum index be6b7db485d..2e641674c97 100644 --- a/erigon-lib/go.sum +++ b/erigon-lib/go.sum @@ -152,6 +152,8 @@ github.com/erigontech/erigon-snapshot v1.3.1-0.20241023024258-f64407a77e8e h1:Zp github.com/erigontech/erigon-snapshot v1.3.1-0.20241023024258-f64407a77e8e/go.mod h1:ooHlCl+eEYzebiPu+FP6Q6SpPUeMADn8Jxabv3IKb9M= github.com/erigontech/interfaces v0.0.0-20241119142727-0929f4896223 h1:smICxSEOqb37tXo7MRzHawbsTbl4TWW5GKxd/X1Esh0= github.com/erigontech/interfaces v0.0.0-20241119142727-0929f4896223/go.mod h1:N7OUkhkcagp9+7yb4ycHsG2VWCOmuJ1ONBecJshxtLE= +github.com/erigontech/interfaces v0.0.0-20241120074553-214b5fd396ed h1:un44S8Tuol4LBIC6R94t93GShM53BYjz7GsNPziDLQ8= +github.com/erigontech/interfaces v0.0.0-20241120074553-214b5fd396ed/go.mod h1:N7OUkhkcagp9+7yb4ycHsG2VWCOmuJ1ONBecJshxtLE= github.com/erigontech/mdbx-go v0.38.4 h1:S9T7mTe9KPcFe4dOoOtVdI6gPzht9y7wMnYfUBgrQLo= github.com/erigontech/mdbx-go v0.38.4/go.mod h1:IcOLQDPw3VM/asP6T5JVPPN4FHHgJtY16XfYjzWKVNI= github.com/erigontech/secp256k1 v1.1.0 h1:mO3YJMUSoASE15Ya//SoHiisptUhdXExuMUN1M0X9qY= diff --git a/erigon-lib/gointerfaces/remoteproto/ethbackend.pb.go b/erigon-lib/gointerfaces/remoteproto/ethbackend.pb.go index 991475c8357..fbef7e8dd8f 100644 --- a/erigon-lib/gointerfaces/remoteproto/ethbackend.pb.go +++ b/erigon-lib/gointerfaces/remoteproto/ethbackend.pb.go @@ -1310,6 +1310,7 @@ type TxnLookupReply struct { unknownFields protoimpl.UnknownFields BlockNumber uint64 `protobuf:"varint,1,opt,name=block_number,json=blockNumber,proto3" json:"block_number,omitempty"` + TxNumber uint64 `protobuf:"varint,2,opt,name=tx_number,json=txNumber,proto3" json:"tx_number,omitempty"` } func (x *TxnLookupReply) Reset() { @@ -1351,47 +1352,7 @@ func (x *TxnLookupReply) GetBlockNumber() uint64 { return 0 } -type TxnNumLookupReply struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TxNumber uint64 `protobuf:"varint,1,opt,name=tx_number,json=txNumber,proto3" json:"tx_number,omitempty"` -} - -func (x *TxnNumLookupReply) Reset() { - *x = TxnNumLookupReply{} - if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *TxnNumLookupReply) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TxnNumLookupReply) ProtoMessage() {} - -func (x *TxnNumLookupReply) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[25] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TxnNumLookupReply.ProtoReflect.Descriptor instead. -func (*TxnNumLookupReply) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{25} -} - -func (x *TxnNumLookupReply) GetTxNumber() uint64 { +func (x *TxnLookupReply) GetTxNumber() uint64 { if x != nil { return x.TxNumber } @@ -1409,7 +1370,7 @@ type NodesInfoRequest struct { func (x *NodesInfoRequest) Reset() { *x = NodesInfoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[26] + mi := &file_remote_ethbackend_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1422,7 +1383,7 @@ func (x *NodesInfoRequest) String() string { func (*NodesInfoRequest) ProtoMessage() {} func (x *NodesInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[26] + mi := &file_remote_ethbackend_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1435,7 +1396,7 @@ func (x *NodesInfoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use NodesInfoRequest.ProtoReflect.Descriptor instead. func (*NodesInfoRequest) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{26} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{25} } func (x *NodesInfoRequest) GetLimit() uint32 { @@ -1456,7 +1417,7 @@ type AddPeerRequest struct { func (x *AddPeerRequest) Reset() { *x = AddPeerRequest{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[27] + mi := &file_remote_ethbackend_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1469,7 +1430,7 @@ func (x *AddPeerRequest) String() string { func (*AddPeerRequest) ProtoMessage() {} func (x *AddPeerRequest) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[27] + mi := &file_remote_ethbackend_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1482,7 +1443,7 @@ func (x *AddPeerRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AddPeerRequest.ProtoReflect.Descriptor instead. func (*AddPeerRequest) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{27} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{26} } func (x *AddPeerRequest) GetUrl() string { @@ -1503,7 +1464,7 @@ type NodesInfoReply struct { func (x *NodesInfoReply) Reset() { *x = NodesInfoReply{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[28] + mi := &file_remote_ethbackend_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1516,7 +1477,7 @@ func (x *NodesInfoReply) String() string { func (*NodesInfoReply) ProtoMessage() {} func (x *NodesInfoReply) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[28] + mi := &file_remote_ethbackend_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1529,7 +1490,7 @@ func (x *NodesInfoReply) ProtoReflect() protoreflect.Message { // Deprecated: Use NodesInfoReply.ProtoReflect.Descriptor instead. func (*NodesInfoReply) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{28} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{27} } func (x *NodesInfoReply) GetNodesInfo() []*typesproto.NodeInfoReply { @@ -1550,7 +1511,7 @@ type PeersReply struct { func (x *PeersReply) Reset() { *x = PeersReply{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[29] + mi := &file_remote_ethbackend_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1563,7 +1524,7 @@ func (x *PeersReply) String() string { func (*PeersReply) ProtoMessage() {} func (x *PeersReply) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[29] + mi := &file_remote_ethbackend_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1576,7 +1537,7 @@ func (x *PeersReply) ProtoReflect() protoreflect.Message { // Deprecated: Use PeersReply.ProtoReflect.Descriptor instead. func (*PeersReply) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{29} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{28} } func (x *PeersReply) GetPeers() []*typesproto.PeerInfo { @@ -1597,7 +1558,7 @@ type AddPeerReply struct { func (x *AddPeerReply) Reset() { *x = AddPeerReply{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[30] + mi := &file_remote_ethbackend_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1610,7 +1571,7 @@ func (x *AddPeerReply) String() string { func (*AddPeerReply) ProtoMessage() {} func (x *AddPeerReply) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[30] + mi := &file_remote_ethbackend_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1623,7 +1584,7 @@ func (x *AddPeerReply) ProtoReflect() protoreflect.Message { // Deprecated: Use AddPeerReply.ProtoReflect.Descriptor instead. func (*AddPeerReply) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{30} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{29} } func (x *AddPeerReply) GetSuccess() bool { @@ -1644,7 +1605,7 @@ type PendingBlockReply struct { func (x *PendingBlockReply) Reset() { *x = PendingBlockReply{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[31] + mi := &file_remote_ethbackend_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1657,7 +1618,7 @@ func (x *PendingBlockReply) String() string { func (*PendingBlockReply) ProtoMessage() {} func (x *PendingBlockReply) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[31] + mi := &file_remote_ethbackend_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1670,7 +1631,7 @@ func (x *PendingBlockReply) ProtoReflect() protoreflect.Message { // Deprecated: Use PendingBlockReply.ProtoReflect.Descriptor instead. func (*PendingBlockReply) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{31} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{30} } func (x *PendingBlockReply) GetBlockRlp() []byte { @@ -1691,7 +1652,7 @@ type EngineGetPayloadBodiesByHashV1Request struct { func (x *EngineGetPayloadBodiesByHashV1Request) Reset() { *x = EngineGetPayloadBodiesByHashV1Request{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[32] + mi := &file_remote_ethbackend_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1704,7 +1665,7 @@ func (x *EngineGetPayloadBodiesByHashV1Request) String() string { func (*EngineGetPayloadBodiesByHashV1Request) ProtoMessage() {} func (x *EngineGetPayloadBodiesByHashV1Request) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[32] + mi := &file_remote_ethbackend_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1717,7 +1678,7 @@ func (x *EngineGetPayloadBodiesByHashV1Request) ProtoReflect() protoreflect.Mess // Deprecated: Use EngineGetPayloadBodiesByHashV1Request.ProtoReflect.Descriptor instead. func (*EngineGetPayloadBodiesByHashV1Request) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{32} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{31} } func (x *EngineGetPayloadBodiesByHashV1Request) GetHashes() []*typesproto.H256 { @@ -1739,7 +1700,7 @@ type EngineGetPayloadBodiesByRangeV1Request struct { func (x *EngineGetPayloadBodiesByRangeV1Request) Reset() { *x = EngineGetPayloadBodiesByRangeV1Request{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[33] + mi := &file_remote_ethbackend_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1752,7 +1713,7 @@ func (x *EngineGetPayloadBodiesByRangeV1Request) String() string { func (*EngineGetPayloadBodiesByRangeV1Request) ProtoMessage() {} func (x *EngineGetPayloadBodiesByRangeV1Request) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[33] + mi := &file_remote_ethbackend_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1765,7 +1726,7 @@ func (x *EngineGetPayloadBodiesByRangeV1Request) ProtoReflect() protoreflect.Mes // Deprecated: Use EngineGetPayloadBodiesByRangeV1Request.ProtoReflect.Descriptor instead. func (*EngineGetPayloadBodiesByRangeV1Request) Descriptor() ([]byte, []int) { - return file_remote_ethbackend_proto_rawDescGZIP(), []int{33} + return file_remote_ethbackend_proto_rawDescGZIP(), []int{32} } func (x *EngineGetPayloadBodiesByRangeV1Request) GetStart() uint64 { @@ -1794,7 +1755,7 @@ type SyncingReply_StageProgress struct { func (x *SyncingReply_StageProgress) Reset() { *x = SyncingReply_StageProgress{} if protoimpl.UnsafeEnabled { - mi := &file_remote_ethbackend_proto_msgTypes[34] + mi := &file_remote_ethbackend_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1807,7 +1768,7 @@ func (x *SyncingReply_StageProgress) String() string { func (*SyncingReply_StageProgress) ProtoMessage() {} func (x *SyncingReply_StageProgress) ProtoReflect() protoreflect.Message { - mi := &file_remote_ethbackend_proto_msgTypes[34] + mi := &file_remote_ethbackend_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1963,138 +1924,133 @@ var file_remote_ethbackend_proto_rawDesc = []byte{ 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x08, 0x74, 0x78, 0x6e, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x07, 0x74, 0x78, - 0x6e, 0x48, 0x61, 0x73, 0x68, 0x22, 0x33, 0x0a, 0x0e, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, + 0x6e, 0x48, 0x61, 0x73, 0x68, 0x22, 0x50, 0x0a, 0x0e, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x30, 0x0a, 0x11, 0x54, 0x78, - 0x6e, 0x4e, 0x75, 0x6d, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, - 0x1b, 0x0a, 0x09, 0x74, 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x08, 0x74, 0x78, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x28, 0x0a, 0x10, - 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x22, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x50, 0x65, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x45, 0x0a, 0x0e, 0x4e, 0x6f, - 0x64, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x33, 0x0a, 0x0a, - 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x49, 0x6e, 0x66, - 0x6f, 0x22, 0x33, 0x0a, 0x0a, 0x50, 0x65, 0x65, 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, - 0x25, 0x0a, 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, - 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, 0x22, 0x28, 0x0a, 0x0c, 0x41, 0x64, 0x64, 0x50, 0x65, 0x65, - 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x22, 0x30, 0x0a, 0x11, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, - 0x6c, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, - 0x6c, 0x70, 0x22, 0x4c, 0x0a, 0x25, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x47, 0x65, 0x74, 0x50, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x6f, 0x64, 0x69, 0x65, 0x73, 0x42, 0x79, 0x48, 0x61, - 0x73, 0x68, 0x56, 0x31, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x68, - 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, - 0x70, 0x65, 0x73, 0x2e, 0x48, 0x32, 0x35, 0x36, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, - 0x22, 0x54, 0x0a, 0x26, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x6f, 0x64, 0x69, 0x65, 0x73, 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, - 0x65, 0x56, 0x31, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2a, 0x4a, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, - 0x0a, 0x0a, 0x06, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x50, - 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x01, 0x12, 0x11, 0x0a, - 0x0d, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x02, - 0x12, 0x10, 0x0a, 0x0c, 0x4e, 0x45, 0x57, 0x5f, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, - 0x10, 0x03, 0x32, 0x98, 0x0b, 0x0a, 0x0a, 0x45, 0x54, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, - 0x44, 0x12, 0x3d, 0x0a, 0x09, 0x45, 0x74, 0x68, 0x65, 0x72, 0x62, 0x61, 0x73, 0x65, 0x12, 0x18, - 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x62, 0x61, 0x73, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, - 0x12, 0x40, 0x0a, 0x0a, 0x4e, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x19, - 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x72, 0x65, 0x6d, 0x6f, - 0x74, 0x65, 0x2e, 0x4e, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, - 0x6c, 0x79, 0x12, 0x46, 0x0a, 0x0c, 0x4e, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x1b, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x65, 0x74, 0x50, - 0x65, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x19, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x36, 0x0a, 0x07, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x13, 0x2e, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, - 0x6c, 0x79, 0x12, 0x37, 0x0a, 0x07, 0x53, 0x79, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x12, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x14, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x53, - 0x79, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x4f, 0x0a, 0x0f, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, - 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, - 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x49, 0x0a, 0x0d, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x2e, - 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x72, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3f, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, - 0x72, 0x69, 0x62, 0x65, 0x12, 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x53, 0x75, - 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, - 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, - 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x30, 0x01, 0x12, 0x4a, 0x0a, 0x0d, 0x53, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x62, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x19, 0x2e, 0x72, 0x65, 0x6d, 0x6f, - 0x74, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x53, 0x75, - 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, - 0x28, 0x01, 0x30, 0x01, 0x12, 0x31, 0x0a, 0x05, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x14, 0x2e, - 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x67, 0x0a, 0x17, 0x43, 0x61, 0x6e, 0x6f, 0x6e, - 0x69, 0x63, 0x61, 0x6c, 0x42, 0x6f, 0x64, 0x79, 0x46, 0x6f, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x12, 0x26, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x61, 0x6e, 0x6f, - 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x42, 0x6f, 0x64, 0x79, 0x46, 0x6f, 0x72, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x65, 0x6d, - 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x42, 0x6f, 0x64, - 0x79, 0x46, 0x6f, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, - 0x12, 0x49, 0x0a, 0x0d, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x48, 0x61, 0x73, - 0x68, 0x12, 0x1c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x61, 0x6e, 0x6f, 0x6e, - 0x69, 0x63, 0x61, 0x6c, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1a, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, - 0x61, 0x6c, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x46, 0x0a, 0x0c, 0x48, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x2e, 0x72, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x12, 0x3d, 0x0a, 0x09, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, - 0x12, 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, - 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x65, 0x6d, - 0x6f, 0x74, 0x65, 0x2e, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x70, - 0x6c, 0x79, 0x12, 0x43, 0x0a, 0x0c, 0x54, 0x78, 0x6e, 0x4e, 0x75, 0x6d, 0x4c, 0x6f, 0x6f, 0x6b, - 0x75, 0x70, 0x12, 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x54, 0x78, 0x6e, 0x4c, - 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x72, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x54, 0x78, 0x6e, 0x4e, 0x75, 0x6d, 0x4c, 0x6f, 0x6f, 0x6b, - 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3c, 0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x6f, 0x64, - 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, - 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x33, 0x0a, 0x05, 0x50, 0x65, 0x65, 0x72, 0x73, 0x12, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, - 0x50, 0x65, 0x65, 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x37, 0x0a, 0x07, 0x41, 0x64, - 0x64, 0x50, 0x65, 0x65, 0x72, 0x12, 0x16, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x41, - 0x64, 0x64, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, - 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, - 0x70, 0x6c, 0x79, 0x12, 0x41, 0x0a, 0x0c, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x19, 0x2e, 0x72, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x46, 0x0a, 0x0c, 0x42, 0x6f, 0x72, 0x54, 0x78, 0x6e, - 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x12, 0x1b, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, - 0x42, 0x6f, 0x72, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x72, - 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3d, - 0x0a, 0x09, 0x42, 0x6f, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x18, 0x2e, 0x72, 0x65, + 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x78, + 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, + 0x78, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x28, 0x0a, 0x10, 0x4e, 0x6f, 0x64, 0x65, 0x73, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x22, 0x22, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x45, 0x0a, 0x0e, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x33, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x73, + 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x70, 0x6c, + 0x79, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x33, 0x0a, 0x0a, + 0x50, 0x65, 0x65, 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x25, 0x0a, 0x05, 0x70, 0x65, + 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x70, 0x65, 0x65, 0x72, + 0x73, 0x22, 0x28, 0x0a, 0x0c, 0x41, 0x64, 0x64, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, + 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x30, 0x0a, 0x11, 0x50, + 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x6c, 0x70, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x08, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x6c, 0x70, 0x22, 0x4c, 0x0a, + 0x25, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x42, 0x6f, 0x64, 0x69, 0x65, 0x73, 0x42, 0x79, 0x48, 0x61, 0x73, 0x68, 0x56, 0x31, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x48, + 0x32, 0x35, 0x36, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x22, 0x54, 0x0a, 0x26, 0x45, + 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, + 0x6f, 0x64, 0x69, 0x65, 0x73, 0x42, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x56, 0x31, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x2a, 0x4a, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0a, 0x0a, 0x06, 0x48, 0x45, + 0x41, 0x44, 0x45, 0x52, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, + 0x47, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x45, 0x4e, 0x44, + 0x49, 0x4e, 0x47, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4e, + 0x45, 0x57, 0x5f, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, 0x10, 0x03, 0x32, 0xd3, 0x0a, + 0x0a, 0x0a, 0x45, 0x54, 0x48, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x12, 0x3d, 0x0a, 0x09, + 0x45, 0x74, 0x68, 0x65, 0x72, 0x62, 0x61, 0x73, 0x65, 0x12, 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x45, 0x74, 0x68, + 0x65, 0x72, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x40, 0x0a, 0x0a, 0x4e, + 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x2e, 0x72, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x2e, 0x4e, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x65, + 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x46, 0x0a, + 0x0c, 0x4e, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x2e, + 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x72, 0x65, 0x6d, + 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x36, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x37, 0x0a, + 0x07, 0x53, 0x79, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x1a, 0x14, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x69, 0x6e, + 0x67, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x4f, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x2e, 0x72, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x49, 0x0a, 0x0d, 0x43, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, + 0x65, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, + 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x12, 0x3f, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, + 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x70, 0x6c, + 0x79, 0x30, 0x01, 0x12, 0x4a, 0x0a, 0x0d, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, + 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x19, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4c, 0x6f, + 0x67, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1a, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x62, 0x65, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x28, 0x01, 0x30, 0x01, 0x12, + 0x31, 0x0a, 0x05, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x14, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, + 0x65, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, + 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x70, + 0x6c, 0x79, 0x12, 0x67, 0x0a, 0x17, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x42, + 0x6f, 0x64, 0x79, 0x46, 0x6f, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x26, 0x2e, + 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, + 0x42, 0x6f, 0x64, 0x79, 0x46, 0x6f, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, + 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x42, 0x6f, 0x64, 0x79, 0x46, 0x6f, 0x72, 0x53, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x49, 0x0a, 0x0d, 0x43, + 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1c, 0x2e, 0x72, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x48, + 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x72, 0x65, 0x6d, + 0x6f, 0x74, 0x65, 0x2e, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x48, 0x61, 0x73, + 0x68, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x46, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3d, + 0x0a, 0x09, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x12, 0x18, 0x2e, 0x72, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x54, + 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3c, 0x0a, + 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x33, 0x0a, 0x05, 0x50, + 0x65, 0x65, 0x72, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x12, 0x2e, 0x72, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, + 0x12, 0x37, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x50, 0x65, 0x65, 0x72, 0x12, 0x16, 0x2e, 0x72, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x41, 0x64, 0x64, + 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x41, 0x0a, 0x0c, 0x50, 0x65, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x1a, 0x19, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x50, 0x65, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x46, 0x0a, 0x0c, + 0x42, 0x6f, 0x72, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x12, 0x1b, 0x2e, 0x72, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, + 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x72, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x54, 0x78, 0x6e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, + 0x65, 0x70, 0x6c, 0x79, 0x12, 0x3d, 0x0a, 0x09, 0x42, 0x6f, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x12, 0x18, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, 0x6f, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x42, - 0x6f, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x42, 0x16, 0x5a, - 0x14, 0x2e, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x3b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x70, 0x6c, 0x79, 0x42, 0x16, 0x5a, 0x14, 0x2e, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x3b, + 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( @@ -2110,7 +2066,7 @@ func file_remote_ethbackend_proto_rawDescGZIP() []byte { } var file_remote_ethbackend_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_remote_ethbackend_proto_msgTypes = make([]protoimpl.MessageInfo, 35) +var file_remote_ethbackend_proto_msgTypes = make([]protoimpl.MessageInfo, 34) var file_remote_ethbackend_proto_goTypes = []any{ (Event)(0), // 0: remote.Event (*EtherbaseRequest)(nil), // 1: remote.EtherbaseRequest @@ -2138,50 +2094,49 @@ var file_remote_ethbackend_proto_goTypes = []any{ (*BlockReply)(nil), // 23: remote.BlockReply (*TxnLookupRequest)(nil), // 24: remote.TxnLookupRequest (*TxnLookupReply)(nil), // 25: remote.TxnLookupReply - (*TxnNumLookupReply)(nil), // 26: remote.TxnNumLookupReply - (*NodesInfoRequest)(nil), // 27: remote.NodesInfoRequest - (*AddPeerRequest)(nil), // 28: remote.AddPeerRequest - (*NodesInfoReply)(nil), // 29: remote.NodesInfoReply - (*PeersReply)(nil), // 30: remote.PeersReply - (*AddPeerReply)(nil), // 31: remote.AddPeerReply - (*PendingBlockReply)(nil), // 32: remote.PendingBlockReply - (*EngineGetPayloadBodiesByHashV1Request)(nil), // 33: remote.EngineGetPayloadBodiesByHashV1Request - (*EngineGetPayloadBodiesByRangeV1Request)(nil), // 34: remote.EngineGetPayloadBodiesByRangeV1Request - (*SyncingReply_StageProgress)(nil), // 35: remote.SyncingReply.StageProgress - (*typesproto.H160)(nil), // 36: types.H160 - (*typesproto.H256)(nil), // 37: types.H256 - (*typesproto.NodeInfoReply)(nil), // 38: types.NodeInfoReply - (*typesproto.PeerInfo)(nil), // 39: types.PeerInfo - (*emptypb.Empty)(nil), // 40: google.protobuf.Empty - (*BorTxnLookupRequest)(nil), // 41: remote.BorTxnLookupRequest - (*BorEventsRequest)(nil), // 42: remote.BorEventsRequest - (*typesproto.VersionReply)(nil), // 43: types.VersionReply - (*BorTxnLookupReply)(nil), // 44: remote.BorTxnLookupReply - (*BorEventsReply)(nil), // 45: remote.BorEventsReply + (*NodesInfoRequest)(nil), // 26: remote.NodesInfoRequest + (*AddPeerRequest)(nil), // 27: remote.AddPeerRequest + (*NodesInfoReply)(nil), // 28: remote.NodesInfoReply + (*PeersReply)(nil), // 29: remote.PeersReply + (*AddPeerReply)(nil), // 30: remote.AddPeerReply + (*PendingBlockReply)(nil), // 31: remote.PendingBlockReply + (*EngineGetPayloadBodiesByHashV1Request)(nil), // 32: remote.EngineGetPayloadBodiesByHashV1Request + (*EngineGetPayloadBodiesByRangeV1Request)(nil), // 33: remote.EngineGetPayloadBodiesByRangeV1Request + (*SyncingReply_StageProgress)(nil), // 34: remote.SyncingReply.StageProgress + (*typesproto.H160)(nil), // 35: types.H160 + (*typesproto.H256)(nil), // 36: types.H256 + (*typesproto.NodeInfoReply)(nil), // 37: types.NodeInfoReply + (*typesproto.PeerInfo)(nil), // 38: types.PeerInfo + (*emptypb.Empty)(nil), // 39: google.protobuf.Empty + (*BorTxnLookupRequest)(nil), // 40: remote.BorTxnLookupRequest + (*BorEventsRequest)(nil), // 41: remote.BorEventsRequest + (*typesproto.VersionReply)(nil), // 42: types.VersionReply + (*BorTxnLookupReply)(nil), // 43: remote.BorTxnLookupReply + (*BorEventsReply)(nil), // 44: remote.BorEventsReply } var file_remote_ethbackend_proto_depIdxs = []int32{ - 36, // 0: remote.EtherbaseReply.address:type_name -> types.H160 - 35, // 1: remote.SyncingReply.stages:type_name -> remote.SyncingReply.StageProgress - 37, // 2: remote.CanonicalHashReply.hash:type_name -> types.H256 - 37, // 3: remote.HeaderNumberRequest.hash:type_name -> types.H256 + 35, // 0: remote.EtherbaseReply.address:type_name -> types.H160 + 34, // 1: remote.SyncingReply.stages:type_name -> remote.SyncingReply.StageProgress + 36, // 2: remote.CanonicalHashReply.hash:type_name -> types.H256 + 36, // 3: remote.HeaderNumberRequest.hash:type_name -> types.H256 0, // 4: remote.SubscribeRequest.type:type_name -> remote.Event 0, // 5: remote.SubscribeReply.type:type_name -> remote.Event - 36, // 6: remote.LogsFilterRequest.addresses:type_name -> types.H160 - 37, // 7: remote.LogsFilterRequest.topics:type_name -> types.H256 - 36, // 8: remote.SubscribeLogsReply.address:type_name -> types.H160 - 37, // 9: remote.SubscribeLogsReply.block_hash:type_name -> types.H256 - 37, // 10: remote.SubscribeLogsReply.topics:type_name -> types.H256 - 37, // 11: remote.SubscribeLogsReply.transaction_hash:type_name -> types.H256 - 37, // 12: remote.BlockRequest.block_hash:type_name -> types.H256 - 37, // 13: remote.TxnLookupRequest.txn_hash:type_name -> types.H256 - 38, // 14: remote.NodesInfoReply.nodes_info:type_name -> types.NodeInfoReply - 39, // 15: remote.PeersReply.peers:type_name -> types.PeerInfo - 37, // 16: remote.EngineGetPayloadBodiesByHashV1Request.hashes:type_name -> types.H256 + 35, // 6: remote.LogsFilterRequest.addresses:type_name -> types.H160 + 36, // 7: remote.LogsFilterRequest.topics:type_name -> types.H256 + 35, // 8: remote.SubscribeLogsReply.address:type_name -> types.H160 + 36, // 9: remote.SubscribeLogsReply.block_hash:type_name -> types.H256 + 36, // 10: remote.SubscribeLogsReply.topics:type_name -> types.H256 + 36, // 11: remote.SubscribeLogsReply.transaction_hash:type_name -> types.H256 + 36, // 12: remote.BlockRequest.block_hash:type_name -> types.H256 + 36, // 13: remote.TxnLookupRequest.txn_hash:type_name -> types.H256 + 37, // 14: remote.NodesInfoReply.nodes_info:type_name -> types.NodeInfoReply + 38, // 15: remote.PeersReply.peers:type_name -> types.PeerInfo + 36, // 16: remote.EngineGetPayloadBodiesByHashV1Request.hashes:type_name -> types.H256 1, // 17: remote.ETHBACKEND.Etherbase:input_type -> remote.EtherbaseRequest 3, // 18: remote.ETHBACKEND.NetVersion:input_type -> remote.NetVersionRequest 6, // 19: remote.ETHBACKEND.NetPeerCount:input_type -> remote.NetPeerCountRequest - 40, // 20: remote.ETHBACKEND.Version:input_type -> google.protobuf.Empty - 40, // 21: remote.ETHBACKEND.Syncing:input_type -> google.protobuf.Empty + 39, // 20: remote.ETHBACKEND.Version:input_type -> google.protobuf.Empty + 39, // 21: remote.ETHBACKEND.Syncing:input_type -> google.protobuf.Empty 8, // 22: remote.ETHBACKEND.ProtocolVersion:input_type -> remote.ProtocolVersionRequest 10, // 23: remote.ETHBACKEND.ClientVersion:input_type -> remote.ClientVersionRequest 18, // 24: remote.ETHBACKEND.Subscribe:input_type -> remote.SubscribeRequest @@ -2191,36 +2146,34 @@ var file_remote_ethbackend_proto_depIdxs = []int32{ 12, // 28: remote.ETHBACKEND.CanonicalHash:input_type -> remote.CanonicalHashRequest 14, // 29: remote.ETHBACKEND.HeaderNumber:input_type -> remote.HeaderNumberRequest 24, // 30: remote.ETHBACKEND.TxnLookup:input_type -> remote.TxnLookupRequest - 24, // 31: remote.ETHBACKEND.TxnNumLookup:input_type -> remote.TxnLookupRequest - 27, // 32: remote.ETHBACKEND.NodeInfo:input_type -> remote.NodesInfoRequest - 40, // 33: remote.ETHBACKEND.Peers:input_type -> google.protobuf.Empty - 28, // 34: remote.ETHBACKEND.AddPeer:input_type -> remote.AddPeerRequest - 40, // 35: remote.ETHBACKEND.PendingBlock:input_type -> google.protobuf.Empty - 41, // 36: remote.ETHBACKEND.BorTxnLookup:input_type -> remote.BorTxnLookupRequest - 42, // 37: remote.ETHBACKEND.BorEvents:input_type -> remote.BorEventsRequest - 2, // 38: remote.ETHBACKEND.Etherbase:output_type -> remote.EtherbaseReply - 4, // 39: remote.ETHBACKEND.NetVersion:output_type -> remote.NetVersionReply - 7, // 40: remote.ETHBACKEND.NetPeerCount:output_type -> remote.NetPeerCountReply - 43, // 41: remote.ETHBACKEND.Version:output_type -> types.VersionReply - 5, // 42: remote.ETHBACKEND.Syncing:output_type -> remote.SyncingReply - 9, // 43: remote.ETHBACKEND.ProtocolVersion:output_type -> remote.ProtocolVersionReply - 11, // 44: remote.ETHBACKEND.ClientVersion:output_type -> remote.ClientVersionReply - 19, // 45: remote.ETHBACKEND.Subscribe:output_type -> remote.SubscribeReply - 21, // 46: remote.ETHBACKEND.SubscribeLogs:output_type -> remote.SubscribeLogsReply - 23, // 47: remote.ETHBACKEND.Block:output_type -> remote.BlockReply - 17, // 48: remote.ETHBACKEND.CanonicalBodyForStorage:output_type -> remote.CanonicalBodyForStorageReply - 13, // 49: remote.ETHBACKEND.CanonicalHash:output_type -> remote.CanonicalHashReply - 15, // 50: remote.ETHBACKEND.HeaderNumber:output_type -> remote.HeaderNumberReply - 25, // 51: remote.ETHBACKEND.TxnLookup:output_type -> remote.TxnLookupReply - 26, // 52: remote.ETHBACKEND.TxnNumLookup:output_type -> remote.TxnNumLookupReply - 29, // 53: remote.ETHBACKEND.NodeInfo:output_type -> remote.NodesInfoReply - 30, // 54: remote.ETHBACKEND.Peers:output_type -> remote.PeersReply - 31, // 55: remote.ETHBACKEND.AddPeer:output_type -> remote.AddPeerReply - 32, // 56: remote.ETHBACKEND.PendingBlock:output_type -> remote.PendingBlockReply - 44, // 57: remote.ETHBACKEND.BorTxnLookup:output_type -> remote.BorTxnLookupReply - 45, // 58: remote.ETHBACKEND.BorEvents:output_type -> remote.BorEventsReply - 38, // [38:59] is the sub-list for method output_type - 17, // [17:38] is the sub-list for method input_type + 26, // 31: remote.ETHBACKEND.NodeInfo:input_type -> remote.NodesInfoRequest + 39, // 32: remote.ETHBACKEND.Peers:input_type -> google.protobuf.Empty + 27, // 33: remote.ETHBACKEND.AddPeer:input_type -> remote.AddPeerRequest + 39, // 34: remote.ETHBACKEND.PendingBlock:input_type -> google.protobuf.Empty + 40, // 35: remote.ETHBACKEND.BorTxnLookup:input_type -> remote.BorTxnLookupRequest + 41, // 36: remote.ETHBACKEND.BorEvents:input_type -> remote.BorEventsRequest + 2, // 37: remote.ETHBACKEND.Etherbase:output_type -> remote.EtherbaseReply + 4, // 38: remote.ETHBACKEND.NetVersion:output_type -> remote.NetVersionReply + 7, // 39: remote.ETHBACKEND.NetPeerCount:output_type -> remote.NetPeerCountReply + 42, // 40: remote.ETHBACKEND.Version:output_type -> types.VersionReply + 5, // 41: remote.ETHBACKEND.Syncing:output_type -> remote.SyncingReply + 9, // 42: remote.ETHBACKEND.ProtocolVersion:output_type -> remote.ProtocolVersionReply + 11, // 43: remote.ETHBACKEND.ClientVersion:output_type -> remote.ClientVersionReply + 19, // 44: remote.ETHBACKEND.Subscribe:output_type -> remote.SubscribeReply + 21, // 45: remote.ETHBACKEND.SubscribeLogs:output_type -> remote.SubscribeLogsReply + 23, // 46: remote.ETHBACKEND.Block:output_type -> remote.BlockReply + 17, // 47: remote.ETHBACKEND.CanonicalBodyForStorage:output_type -> remote.CanonicalBodyForStorageReply + 13, // 48: remote.ETHBACKEND.CanonicalHash:output_type -> remote.CanonicalHashReply + 15, // 49: remote.ETHBACKEND.HeaderNumber:output_type -> remote.HeaderNumberReply + 25, // 50: remote.ETHBACKEND.TxnLookup:output_type -> remote.TxnLookupReply + 28, // 51: remote.ETHBACKEND.NodeInfo:output_type -> remote.NodesInfoReply + 29, // 52: remote.ETHBACKEND.Peers:output_type -> remote.PeersReply + 30, // 53: remote.ETHBACKEND.AddPeer:output_type -> remote.AddPeerReply + 31, // 54: remote.ETHBACKEND.PendingBlock:output_type -> remote.PendingBlockReply + 43, // 55: remote.ETHBACKEND.BorTxnLookup:output_type -> remote.BorTxnLookupReply + 44, // 56: remote.ETHBACKEND.BorEvents:output_type -> remote.BorEventsReply + 37, // [37:57] is the sub-list for method output_type + 17, // [17:37] is the sub-list for method input_type 17, // [17:17] is the sub-list for extension type_name 17, // [17:17] is the sub-list for extension extendee 0, // [0:17] is the sub-list for field type_name @@ -2534,18 +2487,6 @@ func file_remote_ethbackend_proto_init() { } } file_remote_ethbackend_proto_msgTypes[25].Exporter = func(v any, i int) any { - switch v := v.(*TxnNumLookupReply); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_remote_ethbackend_proto_msgTypes[26].Exporter = func(v any, i int) any { switch v := v.(*NodesInfoRequest); i { case 0: return &v.state @@ -2557,7 +2498,7 @@ func file_remote_ethbackend_proto_init() { return nil } } - file_remote_ethbackend_proto_msgTypes[27].Exporter = func(v any, i int) any { + file_remote_ethbackend_proto_msgTypes[26].Exporter = func(v any, i int) any { switch v := v.(*AddPeerRequest); i { case 0: return &v.state @@ -2569,7 +2510,7 @@ func file_remote_ethbackend_proto_init() { return nil } } - file_remote_ethbackend_proto_msgTypes[28].Exporter = func(v any, i int) any { + file_remote_ethbackend_proto_msgTypes[27].Exporter = func(v any, i int) any { switch v := v.(*NodesInfoReply); i { case 0: return &v.state @@ -2581,7 +2522,7 @@ func file_remote_ethbackend_proto_init() { return nil } } - file_remote_ethbackend_proto_msgTypes[29].Exporter = func(v any, i int) any { + file_remote_ethbackend_proto_msgTypes[28].Exporter = func(v any, i int) any { switch v := v.(*PeersReply); i { case 0: return &v.state @@ -2593,7 +2534,7 @@ func file_remote_ethbackend_proto_init() { return nil } } - file_remote_ethbackend_proto_msgTypes[30].Exporter = func(v any, i int) any { + file_remote_ethbackend_proto_msgTypes[29].Exporter = func(v any, i int) any { switch v := v.(*AddPeerReply); i { case 0: return &v.state @@ -2605,7 +2546,7 @@ func file_remote_ethbackend_proto_init() { return nil } } - file_remote_ethbackend_proto_msgTypes[31].Exporter = func(v any, i int) any { + file_remote_ethbackend_proto_msgTypes[30].Exporter = func(v any, i int) any { switch v := v.(*PendingBlockReply); i { case 0: return &v.state @@ -2617,7 +2558,7 @@ func file_remote_ethbackend_proto_init() { return nil } } - file_remote_ethbackend_proto_msgTypes[32].Exporter = func(v any, i int) any { + file_remote_ethbackend_proto_msgTypes[31].Exporter = func(v any, i int) any { switch v := v.(*EngineGetPayloadBodiesByHashV1Request); i { case 0: return &v.state @@ -2629,7 +2570,7 @@ func file_remote_ethbackend_proto_init() { return nil } } - file_remote_ethbackend_proto_msgTypes[33].Exporter = func(v any, i int) any { + file_remote_ethbackend_proto_msgTypes[32].Exporter = func(v any, i int) any { switch v := v.(*EngineGetPayloadBodiesByRangeV1Request); i { case 0: return &v.state @@ -2641,7 +2582,7 @@ func file_remote_ethbackend_proto_init() { return nil } } - file_remote_ethbackend_proto_msgTypes[34].Exporter = func(v any, i int) any { + file_remote_ethbackend_proto_msgTypes[33].Exporter = func(v any, i int) any { switch v := v.(*SyncingReply_StageProgress); i { case 0: return &v.state @@ -2661,7 +2602,7 @@ func file_remote_ethbackend_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_remote_ethbackend_proto_rawDesc, NumEnums: 1, - NumMessages: 35, + NumMessages: 34, NumExtensions: 0, NumServices: 1, }, diff --git a/erigon-lib/gointerfaces/remoteproto/ethbackend_grpc.pb.go b/erigon-lib/gointerfaces/remoteproto/ethbackend_grpc.pb.go index 09fa111d5bd..a6b3dae3b42 100644 --- a/erigon-lib/gointerfaces/remoteproto/ethbackend_grpc.pb.go +++ b/erigon-lib/gointerfaces/remoteproto/ethbackend_grpc.pb.go @@ -35,7 +35,6 @@ const ( ETHBACKEND_CanonicalHash_FullMethodName = "/remote.ETHBACKEND/CanonicalHash" ETHBACKEND_HeaderNumber_FullMethodName = "/remote.ETHBACKEND/HeaderNumber" ETHBACKEND_TxnLookup_FullMethodName = "/remote.ETHBACKEND/TxnLookup" - ETHBACKEND_TxnNumLookup_FullMethodName = "/remote.ETHBACKEND/TxnNumLookup" ETHBACKEND_NodeInfo_FullMethodName = "/remote.ETHBACKEND/NodeInfo" ETHBACKEND_Peers_FullMethodName = "/remote.ETHBACKEND/Peers" ETHBACKEND_AddPeer_FullMethodName = "/remote.ETHBACKEND/AddPeer" @@ -75,9 +74,6 @@ type ETHBACKENDClient interface { // High-level method - can find block number by txn hash // it doesn't provide consistency TxnLookup(ctx context.Context, in *TxnLookupRequest, opts ...grpc.CallOption) (*TxnLookupReply, error) - // High-level method - can find txn number by txn hash - // it doesn't provide consistency - TxnNumLookup(ctx context.Context, in *TxnLookupRequest, opts ...grpc.CallOption) (*TxnNumLookupReply, error) // NodeInfo collects and returns NodeInfo from all running sentry instances. NodeInfo(ctx context.Context, in *NodesInfoRequest, opts ...grpc.CallOption) (*NodesInfoReply, error) // Peers collects and returns peers information from all running sentry instances. @@ -282,16 +278,6 @@ func (c *eTHBACKENDClient) TxnLookup(ctx context.Context, in *TxnLookupRequest, return out, nil } -func (c *eTHBACKENDClient) TxnNumLookup(ctx context.Context, in *TxnLookupRequest, opts ...grpc.CallOption) (*TxnNumLookupReply, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(TxnNumLookupReply) - err := c.cc.Invoke(ctx, ETHBACKEND_TxnNumLookup_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *eTHBACKENDClient) NodeInfo(ctx context.Context, in *NodesInfoRequest, opts ...grpc.CallOption) (*NodesInfoReply, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(NodesInfoReply) @@ -383,9 +369,6 @@ type ETHBACKENDServer interface { // High-level method - can find block number by txn hash // it doesn't provide consistency TxnLookup(context.Context, *TxnLookupRequest) (*TxnLookupReply, error) - // High-level method - can find txn number by txn hash - // it doesn't provide consistency - TxnNumLookup(context.Context, *TxnLookupRequest) (*TxnNumLookupReply, error) // NodeInfo collects and returns NodeInfo from all running sentry instances. NodeInfo(context.Context, *NodesInfoRequest) (*NodesInfoReply, error) // Peers collects and returns peers information from all running sentry instances. @@ -444,9 +427,6 @@ func (UnimplementedETHBACKENDServer) HeaderNumber(context.Context, *HeaderNumber func (UnimplementedETHBACKENDServer) TxnLookup(context.Context, *TxnLookupRequest) (*TxnLookupReply, error) { return nil, status.Errorf(codes.Unimplemented, "method TxnLookup not implemented") } -func (UnimplementedETHBACKENDServer) TxnNumLookup(context.Context, *TxnLookupRequest) (*TxnNumLookupReply, error) { - return nil, status.Errorf(codes.Unimplemented, "method TxnNumLookup not implemented") -} func (UnimplementedETHBACKENDServer) NodeInfo(context.Context, *NodesInfoRequest) (*NodesInfoReply, error) { return nil, status.Errorf(codes.Unimplemented, "method NodeInfo not implemented") } @@ -741,24 +721,6 @@ func _ETHBACKEND_TxnLookup_Handler(srv interface{}, ctx context.Context, dec fun return interceptor(ctx, in, info, handler) } -func _ETHBACKEND_TxnNumLookup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(TxnLookupRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ETHBACKENDServer).TxnNumLookup(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: ETHBACKEND_TxnNumLookup_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ETHBACKENDServer).TxnNumLookup(ctx, req.(*TxnLookupRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _ETHBACKEND_NodeInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(NodesInfoRequest) if err := dec(in); err != nil { @@ -922,10 +884,6 @@ var ETHBACKEND_ServiceDesc = grpc.ServiceDesc{ MethodName: "TxnLookup", Handler: _ETHBACKEND_TxnLookup_Handler, }, - { - MethodName: "TxnNumLookup", - Handler: _ETHBACKEND_TxnNumLookup_Handler, - }, { MethodName: "NodeInfo", Handler: _ETHBACKEND_NodeInfo_Handler, diff --git a/erigon-lib/kv/tables.go b/erigon-lib/kv/tables.go index 747bc9f309f..7a01a507c8f 100644 --- a/erigon-lib/kv/tables.go +++ b/erigon-lib/kv/tables.go @@ -292,8 +292,7 @@ const ( CallFromIndex = "CallFromIndex" CallToIndex = "CallToIndex" - TxLookup = "BlockTransactionLookup" // hash -> transaction/receipt lookup metadata - TxIDLookUp = "TxIDLookup" + TxLookup = "BlockTransactionLookup" // hash -> transaction/receipt lookup metadata ConfigTable = "Config" // config prefix for the db @@ -503,7 +502,6 @@ var ChaindataTables = []string{ BlockBody, Receipts, TxLookup, - TxIDLookUp, ConfigTable, DatabaseInfo, IncarnationMap, diff --git a/eth/stagedsync/stage_txlookup.go b/eth/stagedsync/stage_txlookup.go index b1e9a1774b3..f9059ca2073 100644 --- a/eth/stagedsync/stage_txlookup.go +++ b/eth/stagedsync/stage_txlookup.go @@ -117,11 +117,6 @@ func SpawnTxLookup(s *StageState, tx kv.RwTx, toBlock uint64, cfg TxLookupCfg, c return fmt.Errorf("txnLookupTransform: %w", err) } - // etl.Transform uses ExtractEndKey as exclusive bound, therefore endBlock + 1 - if err = txnNumLookupTransform(logPrefix, tx, startBlock, endBlock+1, ctx, cfg, logger); err != nil { - return fmt.Errorf("txnNumLookupTransform: %w", err) - } - if cfg.borConfig != nil { if err = borTxnLookupTransform(logPrefix, tx, startBlock, endBlock+1, ctx.Done(), cfg, logger); err != nil { return fmt.Errorf("borTxnLookupTransform: %w", err) @@ -155,46 +150,21 @@ func txnLookupTransform(logPrefix string, tx kv.RwTx, blockFrom, blockTo uint64, } blockNumBytes := bigNum.SetUint64(blocknum).Bytes() - for _, txn := range body.Transactions { - if err := next(k, txn.Hash().Bytes(), blockNumBytes); err != nil { - return err - } - } - - return nil - }, etl.IdentityLoadFunc, etl.TransformArgs{ - Quit: ctx.Done(), - ExtractStartKey: hexutility.EncodeTs(blockFrom), - ExtractEndKey: hexutility.EncodeTs(blockTo), - LogDetailsExtract: func(k, v []byte) (additionalLogArguments []interface{}) { - return []interface{}{"block", binary.BigEndian.Uint64(k)} - }, - }, logger) -} - -// txnNumLookupTransform - [startKey, endKey) -func txnNumLookupTransform(logPrefix string, tx kv.RwTx, blockFrom, blockTo uint64, ctx context.Context, cfg TxLookupCfg, logger log.Logger) (err error) { - bigNum := new(big.Int) - return etl.Transform(logPrefix, tx, kv.HeaderCanonical, kv.TxIDLookUp, cfg.tmpdir, func(k, v []byte, next etl.ExtractNextFunc) error { - blocknum, blockHash := binary.BigEndian.Uint64(k), libcommon.CastToHash(v) - body, err := cfg.blockReader.BodyWithTransactions(ctx, tx, blockHash, blocknum) - if err != nil { - return err - } - if body == nil { // tolerate such an error, because likely it's corner-case - and not critical one - log.Warn(fmt.Sprintf("[%s] transform: empty block body %d, hash %x", logPrefix, blocknum, v)) - return nil - } txNum, err := rawdbv3.TxNums.Min(tx, blocknum) if err != nil { return err } + + data := make([]byte, 0, 16) + data = append(data, blockNumBytes...) for i, txn := range body.Transactions { txNumBytes := bigNum.SetUint64(txNum + uint64(i)).Bytes() - if err := next(k, txn.Hash().Bytes(), txNumBytes); err != nil { + data = append(data, txNumBytes...) + if err := next(k, txn.Hash().Bytes(), data); err != nil { return err } + data = data[:8] } return nil @@ -259,9 +229,6 @@ func UnwindTxLookup(u *UnwindState, s *StageState, tx kv.RwTx, cfg TxLookupCfg, if err := deleteTxLookupRange(tx, s.LogPrefix(), blockFrom, blockTo+1, ctx, cfg, logger); err != nil { return fmt.Errorf("unwind TxLookUp: %w", err) } - if err := deleteTxNumLookupRange(tx, s.LogPrefix(), blockFrom, blockTo+1, ctx, cfg, logger); err != nil { - return fmt.Errorf("unwind TxLookUp: %w", err) - } if cfg.borConfig != nil { if err := deleteBorTxLookupRange(tx, s.LogPrefix(), blockFrom, blockTo+1, ctx, cfg, logger); err != nil { return fmt.Errorf("unwind BorTxLookUp: %w", err) @@ -339,9 +306,6 @@ func PruneTxLookup(s *PruneState, tx kv.RwTx, cfg TxLookupCfg, ctx context.Conte if err != nil { return fmt.Errorf("prune TxLookUp: %w", err) } - if err = deleteTxNumLookupRange(tx, logPrefix, pruneBlockNum, pruneBlockNum+1, ctx, cfg, logger); err != nil { - return fmt.Errorf("prune TxLookUp: %w", err) - } if cfg.borConfig != nil && pruneBor { if err = deleteBorTxLookupRange(tx, logPrefix, pruneBlockNum, pruneBlockNum+1, ctx, cfg, logger); err != nil { @@ -400,40 +364,6 @@ func deleteTxLookupRange(tx kv.RwTx, logPrefix string, blockFrom, blockTo uint64 return nil } -// deleteTxnNumLookupRange - [blockFrom, blockTo) -func deleteTxNumLookupRange(tx kv.RwTx, logPrefix string, blockFrom, blockTo uint64, ctx context.Context, cfg TxLookupCfg, logger log.Logger) error { - err := etl.Transform(logPrefix, tx, kv.HeaderCanonical, kv.TxIDLookUp, cfg.tmpdir, func(k, v []byte, next etl.ExtractNextFunc) error { - blocknum, blockHash := binary.BigEndian.Uint64(k), libcommon.CastToHash(v) - body, err := cfg.blockReader.BodyWithTransactions(ctx, tx, blockHash, blocknum) - if err != nil { - return err - } - if body == nil { - log.Debug("TxLookup pruning, empty block body", "height", blocknum) - return nil - } - - for _, txn := range body.Transactions { - if err := next(k, txn.Hash().Bytes(), nil); err != nil { - return err - } - } - - return nil - }, etl.IdentityLoadFunc, etl.TransformArgs{ - Quit: ctx.Done(), - ExtractStartKey: hexutility.EncodeTs(blockFrom), - ExtractEndKey: hexutility.EncodeTs(blockTo), - LogDetailsExtract: func(k, v []byte) (additionalLogArguments []interface{}) { - return []interface{}{"block", binary.BigEndian.Uint64(k)} - }, - }, logger) - if err != nil { - return err - } - return nil -} - // deleteTxLookupRange - [blockFrom, blockTo) func deleteBorTxLookupRange(tx kv.RwTx, logPrefix string, blockFrom, blockTo uint64, ctx context.Context, cfg TxLookupCfg, logger log.Logger) error { return etl.Transform(logPrefix, tx, kv.HeaderCanonical, kv.BorTxLookup, cfg.tmpdir, func(k, v []byte, next etl.ExtractNextFunc) error { diff --git a/ethdb/privateapi/ethbackend.go b/ethdb/privateapi/ethbackend.go index 33d0e7126a3..1c04dc8bf86 100644 --- a/ethdb/privateapi/ethbackend.go +++ b/ethdb/privateapi/ethbackend.go @@ -276,15 +276,15 @@ func (s *EthBackendServer) TxnLookup(ctx context.Context, req *remote.TxnLookupR } defer tx.Rollback() - blockNum, ok, err := s.blockReader.TxnLookup(ctx, tx, gointerfaces.ConvertH256ToHash(req.TxnHash)) + blockNum, txNum, ok, err := s.blockReader.TxnLookup(ctx, tx, gointerfaces.ConvertH256ToHash(req.TxnHash)) if err != nil { return nil, err } if !ok { // Not a perfect solution, assumes there are no transactions in block 0 - return &remote.TxnLookupReply{BlockNumber: 0}, nil + return &remote.TxnLookupReply{BlockNumber: 0, TxNumber: txNum}, nil } - return &remote.TxnLookupReply{BlockNumber: blockNum}, nil + return &remote.TxnLookupReply{BlockNumber: blockNum, TxNumber: txNum}, nil } func (s *EthBackendServer) Block(ctx context.Context, req *remote.BlockRequest) (*remote.BlockReply, error) { diff --git a/go.mod b/go.mod index 9a6d9449db7..35c06f0bca9 100644 --- a/go.mod +++ b/go.mod @@ -108,6 +108,7 @@ require ( require ( github.com/alecthomas/atomic v0.1.0-alpha2 // indirect github.com/elastic/go-freelru v0.13.0 // indirect + github.com/erigontech/interfaces v0.0.0-20241120074553-214b5fd396ed // indirect github.com/erigontech/speedtest v0.0.2 // indirect github.com/go-ole/go-ole v1.2.6 // indirect github.com/go-viper/mapstructure/v2 v2.2.1 // indirect diff --git a/go.sum b/go.sum index 46fde5c4bf0..3cbc2f4cffc 100644 --- a/go.sum +++ b/go.sum @@ -269,6 +269,8 @@ github.com/erigontech/erigon-snapshot v1.3.1-0.20241023024258-f64407a77e8e h1:Zp github.com/erigontech/erigon-snapshot v1.3.1-0.20241023024258-f64407a77e8e/go.mod h1:ooHlCl+eEYzebiPu+FP6Q6SpPUeMADn8Jxabv3IKb9M= github.com/erigontech/erigonwatch v0.0.0-20240718131902-b6576bde1116 h1:KCFa2uXEfZoBjV4buzjWmCmoqVLXiGCq0ZmQ2OjeRvQ= github.com/erigontech/erigonwatch v0.0.0-20240718131902-b6576bde1116/go.mod h1:8vQ+VjvLu2gkPs8EwdPrOTAAo++WuLuBi54N7NuAF0I= +github.com/erigontech/interfaces v0.0.0-20241120074553-214b5fd396ed h1:un44S8Tuol4LBIC6R94t93GShM53BYjz7GsNPziDLQ8= +github.com/erigontech/interfaces v0.0.0-20241120074553-214b5fd396ed/go.mod h1:N7OUkhkcagp9+7yb4ycHsG2VWCOmuJ1ONBecJshxtLE= github.com/erigontech/mdbx-go v0.38.4 h1:S9T7mTe9KPcFe4dOoOtVdI6gPzht9y7wMnYfUBgrQLo= github.com/erigontech/mdbx-go v0.38.4/go.mod h1:IcOLQDPw3VM/asP6T5JVPPN4FHHgJtY16XfYjzWKVNI= github.com/erigontech/secp256k1 v1.1.0 h1:mO3YJMUSoASE15Ya//SoHiisptUhdXExuMUN1M0X9qY= diff --git a/turbo/jsonrpc/eth_api.go b/turbo/jsonrpc/eth_api.go index e12df460a13..28a69824cad 100644 --- a/turbo/jsonrpc/eth_api.go +++ b/turbo/jsonrpc/eth_api.go @@ -193,14 +193,10 @@ func (api *BaseAPI) genesis(ctx context.Context, tx kv.Tx) (*types.Block, error) return genesis, err } -func (api *BaseAPI) txnLookup(ctx context.Context, tx kv.Tx, txnHash common.Hash) (uint64, bool, error) { +func (api *BaseAPI) txnLookup(ctx context.Context, tx kv.Tx, txnHash common.Hash) (uint64, uint64, bool, error) { return api._txnReader.TxnLookup(ctx, tx, txnHash) } -func (api *BaseAPI) txnNumLookup(ctx context.Context, tx kv.Tx, txnHash common.Hash) (uint64, bool, error) { - return api._txnReader.TxnNumLookup(ctx, tx, txnHash) -} - func (api *BaseAPI) blockByNumberWithSenders(ctx context.Context, tx kv.Tx, number uint64) (*types.Block, error) { hash, ok, hashErr := api._blockReader.CanonicalHash(ctx, tx, number) if hashErr != nil { diff --git a/turbo/jsonrpc/eth_block.go b/turbo/jsonrpc/eth_block.go index 7ab7d3bbed0..de0ddff2df1 100644 --- a/turbo/jsonrpc/eth_block.go +++ b/turbo/jsonrpc/eth_block.go @@ -66,7 +66,7 @@ func (api *APIImpl) CallBundle(ctx context.Context, txHashes []common.Hash, stat var txs types.Transactions for _, txHash := range txHashes { - blockNum, ok, err := api.txnLookup(ctx, tx, txHash) + blockNum, _, ok, err := api.txnLookup(ctx, tx, txHash) if err != nil { return nil, err } diff --git a/turbo/jsonrpc/eth_receipts.go b/turbo/jsonrpc/eth_receipts.go index 4ae299dde6e..95ab2d1132a 100644 --- a/turbo/jsonrpc/eth_receipts.go +++ b/turbo/jsonrpc/eth_receipts.go @@ -416,15 +416,7 @@ func (api *APIImpl) GetTransactionReceipt(ctx context.Context, txnHash common.Ha return nil, err } - txNum, ok, err = api.txnNumLookup(ctx, tx, txnHash) - if err != nil { - return nil, err - } - if !ok && chainConfig.Bor == nil { - return nil, nil - } - - ok, blockNum, err = rawdbv3.TxNums.FindBlockNum(tx, txNum) + blockNum, txNum, ok, err = api.txnLookup(ctx, tx, txnHash) if err != nil { return nil, err } diff --git a/turbo/jsonrpc/eth_txs.go b/turbo/jsonrpc/eth_txs.go index f81ba55d972..b53134c4fcb 100644 --- a/turbo/jsonrpc/eth_txs.go +++ b/turbo/jsonrpc/eth_txs.go @@ -49,7 +49,7 @@ func (api *APIImpl) GetTransactionByHash(ctx context.Context, txnHash common.Has } // https://infura.io/docs/ethereum/json-rpc/eth-getTransactionByHash - blockNum, ok, err := api.txnLookup(ctx, tx, txnHash) + blockNum, _, ok, err := api.txnLookup(ctx, tx, txnHash) if err != nil { return nil, err } @@ -139,7 +139,7 @@ func (api *APIImpl) GetRawTransactionByHash(ctx context.Context, hash common.Has defer tx.Rollback() // https://infura.io/docs/ethereum/json-rpc/eth-getTransactionByHash - blockNum, ok, err := api.txnLookup(ctx, tx, hash) + blockNum, _, ok, err := api.txnLookup(ctx, tx, hash) if err != nil { return nil, err } diff --git a/turbo/jsonrpc/otterscan_api.go b/turbo/jsonrpc/otterscan_api.go index b6f9eb9fd31..272f6327581 100644 --- a/turbo/jsonrpc/otterscan_api.go +++ b/turbo/jsonrpc/otterscan_api.go @@ -90,7 +90,7 @@ func (api *OtterscanAPIImpl) GetApiLevel() uint8 { // TODO: dedup from eth_txs.go#GetTransactionByHash func (api *OtterscanAPIImpl) getTransactionByHash(ctx context.Context, tx kv.Tx, hash common.Hash) (types.Transaction, *types.Block, common.Hash, uint64, uint64, error) { // https://infura.io/docs/ethereum/json-rpc/eth-getTransactionByHash - blockNum, ok, err := api.txnLookup(ctx, tx, hash) + blockNum, _, ok, err := api.txnLookup(ctx, tx, hash) if err != nil { return nil, nil, common.Hash{}, 0, 0, err } diff --git a/turbo/jsonrpc/overlay_api.go b/turbo/jsonrpc/overlay_api.go index ba4e970f01b..987c0d9bf4b 100644 --- a/turbo/jsonrpc/overlay_api.go +++ b/turbo/jsonrpc/overlay_api.go @@ -115,7 +115,7 @@ func (api *OverlayAPIImpl) CallConstructor(ctx context.Context, address common.A return nil, err } - blockNum, ok, err := api.txnLookup(ctx, tx, creationData.Tx) + blockNum, _, ok, err := api.txnLookup(ctx, tx, creationData.Tx) if err != nil { return nil, err } diff --git a/turbo/jsonrpc/trace_adhoc.go b/turbo/jsonrpc/trace_adhoc.go index 57cf151420a..3c5dd4d71f6 100644 --- a/turbo/jsonrpc/trace_adhoc.go +++ b/turbo/jsonrpc/trace_adhoc.go @@ -766,7 +766,7 @@ func (api *TraceAPIImpl) ReplayTransaction(ctx context.Context, txHash libcommon } var isBorStateSyncTxn bool - blockNum, ok, err := api.txnLookup(ctx, tx, txHash) + blockNum, _, ok, err := api.txnLookup(ctx, tx, txHash) if err != nil { return nil, err } diff --git a/turbo/jsonrpc/trace_filtering.go b/turbo/jsonrpc/trace_filtering.go index d4fc600370e..d887e799583 100644 --- a/turbo/jsonrpc/trace_filtering.go +++ b/turbo/jsonrpc/trace_filtering.go @@ -67,7 +67,7 @@ func (api *TraceAPIImpl) Transaction(ctx context.Context, txHash common.Hash, ga } var isBorStateSyncTxn bool - blockNumber, ok, err := api.txnLookup(ctx, tx, txHash) + blockNumber, _, ok, err := api.txnLookup(ctx, tx, txHash) if err != nil { return nil, err } diff --git a/turbo/jsonrpc/tracing.go b/turbo/jsonrpc/tracing.go index 032c42eaa62..d92c7027bdd 100644 --- a/turbo/jsonrpc/tracing.go +++ b/turbo/jsonrpc/tracing.go @@ -252,7 +252,7 @@ func (api *PrivateDebugAPIImpl) TraceTransaction(ctx context.Context, hash commo } // Retrieve the transaction and assemble its EVM context var isBorStateSyncTxn bool - blockNum, ok, err := api.txnLookup(ctx, tx, hash) + blockNum, _, ok, err := api.txnLookup(ctx, tx, hash) if err != nil { stream.WriteNil() return err diff --git a/turbo/services/interfaces.go b/turbo/services/interfaces.go index 00523f20073..c6ff507866e 100644 --- a/turbo/services/interfaces.go +++ b/turbo/services/interfaces.go @@ -96,8 +96,7 @@ type BodyReader interface { } type TxnReader interface { - TxnLookup(ctx context.Context, tx kv.Getter, txnHash common.Hash) (uint64, bool, error) - TxnNumLookup(ctx context.Context, tx kv.Getter, txnHash common.Hash) (uint64, bool, error) + TxnLookup(ctx context.Context, tx kv.Getter, txnHash common.Hash) (uint64, uint64, bool, error) TxnByIdxInBlock(ctx context.Context, tx kv.Getter, blockNum uint64, i int) (txn types.Transaction, err error) RawTransactions(ctx context.Context, tx kv.Getter, fromBlock, toBlock uint64) (txs [][]byte, err error) FirstTxnNumNotInSnapshots() uint64 diff --git a/turbo/snapshotsync/freezeblocks/block_reader.go b/turbo/snapshotsync/freezeblocks/block_reader.go index 5a58c8ca77d..1c1ff61e325 100644 --- a/turbo/snapshotsync/freezeblocks/block_reader.go +++ b/turbo/snapshotsync/freezeblocks/block_reader.go @@ -49,17 +49,6 @@ type RemoteBlockReader struct { client remote.ETHBACKENDClient } -func (r *RemoteBlockReader) TxnNumLookup(ctx context.Context, tx kv.Getter, txnHash common.Hash) (uint64, bool, error) { - reply, err := r.client.TxnNumLookup(ctx, &remote.TxnLookupRequest{TxnHash: gointerfaces.ConvertHashToH256(txnHash)}) - if err != nil { - return 0, false, err - } - if reply == nil { - return 0, false, nil - } - return reply.TxNumber, true, nil -} - func (r *RemoteBlockReader) CanPruneTo(uint64) uint64 { panic("not implemented") } @@ -175,15 +164,15 @@ func NewRemoteBlockReader(client remote.ETHBACKENDClient) *RemoteBlockReader { return &RemoteBlockReader{client} } -func (r *RemoteBlockReader) TxnLookup(ctx context.Context, tx kv.Getter, txnHash common.Hash) (uint64, bool, error) { +func (r *RemoteBlockReader) TxnLookup(ctx context.Context, tx kv.Getter, txnHash common.Hash) (uint64, uint64, bool, error) { reply, err := r.client.TxnLookup(ctx, &remote.TxnLookupRequest{TxnHash: gointerfaces.ConvertHashToH256(txnHash)}) if err != nil { - return 0, false, err + return 0, 0, false, err } if reply == nil { - return 0, false, nil + return 0, 0, false, nil } - return reply.BlockNumber, true, nil + return reply.BlockNumber, reply.TxNumber, true, nil } func (r *RemoteBlockReader) TxnByIdxInBlock(ctx context.Context, tx kv.Getter, blockNum uint64, i int) (txn types.Transaction, err error) { @@ -1102,7 +1091,7 @@ func (r *BlockReader) txnByID(txnID uint64, sn *snapshotsync.VisibleSegment, buf return } -func (r *BlockReader) txnByHash(txnHash common.Hash, segments []*snapshotsync.VisibleSegment, buf []byte) (types.Transaction, uint64, bool, error) { +func (r *BlockReader) txnByHash(txnHash common.Hash, segments []*snapshotsync.VisibleSegment, buf []byte) (types.Transaction, uint64, uint64, bool, error) { for i := len(segments) - 1; i >= 0; i-- { sn := segments[i] @@ -1131,7 +1120,7 @@ func (r *BlockReader) txnByHash(txnHash common.Hash, segments []*snapshotsync.Vi txn, err := types.DecodeTransaction(txnRlp) if err != nil { - return nil, 0, false, err + return nil, 0, 0, false, err } txn.SetSender(sender) // see: https://tip.golang.org/ref/spec#Conversions_from_slice_to_array_pointer @@ -1144,11 +1133,11 @@ func (r *BlockReader) txnByHash(txnHash common.Hash, segments []*snapshotsync.Vi // final txnHash check - completely avoid false-positives if txn.Hash() == txnHash { - return txn, blockNum, true, nil + return txn, blockNum, txnId, true, nil } } - return nil, 0, false, nil + return nil, 0, 0, false, nil } func (r *BlockReader) txnIDByHash(txnHash common.Hash, segments []*snapshotsync.VisibleSegment) (txnId uint64, found bool) { @@ -1220,43 +1209,25 @@ func (r *BlockReader) TxnByIdxInBlock(ctx context.Context, tx kv.Getter, blockNu } // TxnLookup - find blockNumber and txnID by txnHash -func (r *BlockReader) TxnLookup(_ context.Context, tx kv.Getter, txnHash common.Hash) (uint64, bool, error) { - blockNumPointer, err := rawdb.ReadTxLookupEntry(tx, txnHash) +func (r *BlockReader) TxnLookup(_ context.Context, tx kv.Getter, txnHash common.Hash) (uint64, uint64, bool, error) { + println("хихихих") + blockNumPointer, txNumPointer, err := rawdb.ReadTxLookupEntry(tx, txnHash) if err != nil { - return 0, false, err + return 0, 0, false, err } - if blockNumPointer != nil { - return *blockNumPointer, true, nil + if blockNumPointer != nil && txNumPointer != nil { + return *blockNumPointer, *txNumPointer, true, nil } txns := r.sn.ViewType(coresnaptype.Transactions) defer txns.Close() - _, blockNum, ok, err := r.txnByHash(txnHash, txns.Segments, nil) - if err != nil { - return 0, false, err - } - - return blockNum, ok, nil -} - -// TxnNumLookup - find txnID by txnHash -func (r *BlockReader) TxnNumLookup(_ context.Context, tx kv.Getter, txnHash common.Hash) (uint64, bool, error) { - n, err := rawdb.ReadTxIDLookupEntry(tx, txnHash) + _, blockNum, txNum, ok, err := r.txnByHash(txnHash, txns.Segments, nil) if err != nil { - return 0, false, err + return 0, 0, false, err } - if n != nil { - return *n, true, nil - } - - txns := r.sn.ViewType(coresnaptype.Transactions) - defer txns.Close() - - txID, ok := r.txnIDByHash(txnHash, txns.Segments) - - return txID, ok, nil + return blockNum, txNum, ok, nil } func (r *BlockReader) FirstTxnNumNotInSnapshots() uint64 { diff --git a/turbo/stages/blockchain_test.go b/turbo/stages/blockchain_test.go index 7978aa65f84..7e62742312d 100644 --- a/turbo/stages/blockchain_test.go +++ b/turbo/stages/blockchain_test.go @@ -544,7 +544,7 @@ func TestChainTxReorgs(t *testing.T) { // removed tx txs := types.Transactions{pastDrop, freshDrop} for i, txn := range txs { - if bn, _ := rawdb.ReadTxLookupEntry(tx, txn.Hash()); bn != nil { + if bn, _, _ := rawdb.ReadTxLookupEntry(tx, txn.Hash()); bn != nil { t.Errorf("drop %d: tx %v found while shouldn't have been", i, txn) } if rcpt, _, _, _, _ := readReceipt(tx, txn.Hash(), m); rcpt != nil { @@ -555,7 +555,7 @@ func TestChainTxReorgs(t *testing.T) { // added tx txs = types.Transactions{pastAdd, freshAdd, futureAdd} for i, txn := range txs { - _, found, err := m.BlockReader.TxnLookup(m.Ctx, tx, txn.Hash()) + _, _, found, err := m.BlockReader.TxnLookup(m.Ctx, tx, txn.Hash()) require.NoError(t, err) require.True(t, found) @@ -566,7 +566,7 @@ func TestChainTxReorgs(t *testing.T) { // shared tx txs = types.Transactions{postponed, swapped} for i, txn := range txs { - if bn, _ := rawdb.ReadTxLookupEntry(tx, txn.Hash()); bn == nil { + if bn, _, _ := rawdb.ReadTxLookupEntry(tx, txn.Hash()); bn == nil { t.Errorf("drop %d: tx %v found while shouldn't have been", i, txn) } @@ -578,7 +578,7 @@ func TestChainTxReorgs(t *testing.T) { func readReceipt(db kv.Tx, txHash libcommon.Hash, m *mock.MockSentry) (*types.Receipt, libcommon.Hash, uint64, uint64, error) { // Retrieve the context of the receipt based on the transaction hash - blockNumber, err := rawdb.ReadTxLookupEntry(db, txHash) + blockNumber, _, err := rawdb.ReadTxLookupEntry(db, txHash) if err != nil { return nil, libcommon.Hash{}, 0, 0, err } @@ -883,7 +883,7 @@ func doModesTest(t *testing.T, pm prune.Mode) error { b, err := m.BlockReader.BlockByNumber(m.Ctx, tx, 1) require.NoError(err) for _, txn := range b.Transactions() { - found, err := rawdb.ReadTxLookupEntry(tx, txn.Hash()) + found, _, err := rawdb.ReadTxLookupEntry(tx, txn.Hash()) require.NoError(err) require.Nil(found) } @@ -891,7 +891,7 @@ func doModesTest(t *testing.T, pm prune.Mode) error { b, err := m.BlockReader.BlockByNumber(m.Ctx, tx, 1) require.NoError(err) for _, txn := range b.Transactions() { - foundBlockNum, found, err := m.BlockReader.TxnLookup(context.Background(), tx, txn.Hash()) + foundBlockNum, _, found, err := m.BlockReader.TxnLookup(context.Background(), tx, txn.Hash()) require.NoError(err) require.True(found) require.Equal(uint64(1), foundBlockNum) From 6a58a91ee3561c50042e2f53de7bb3d489108d9e Mon Sep 17 00:00:00 2001 From: JkLondon Date: Wed, 20 Nov 2024 11:17:25 +0100 Subject: [PATCH 17/58] commit --- core/rawdb/accessors_indexes.go | 9 +++------ core/rawdb/accessors_indexes_test.go | 14 ++++++++++---- eth/stagedsync/stage_txlookup.go | 12 ++++-------- turbo/snapshotsync/freezeblocks/block_reader.go | 1 - turbo/stages/blockchain_test.go | 4 ++-- 5 files changed, 19 insertions(+), 21 deletions(-) diff --git a/core/rawdb/accessors_indexes.go b/core/rawdb/accessors_indexes.go index a8e2c0e199f..7e8f9e71ab0 100644 --- a/core/rawdb/accessors_indexes.go +++ b/core/rawdb/accessors_indexes.go @@ -21,7 +21,6 @@ package rawdb import ( "encoding/binary" - "github.com/erigontech/erigon-lib/common/dbg" "math/big" libcommon "github.com/erigontech/erigon-lib/common" @@ -64,12 +63,10 @@ func ReadTxLookupEntry(db kv.Getter, txnHash libcommon.Hash) (*uint64, *uint64, // WriteTxLookupEntries stores a positional metadata for every transaction from // a block, enabling hash based transaction and receipt lookups. func WriteTxLookupEntries(db kv.Putter, block *types.Block, txNum uint64) { - println("aёёёёу", dbg.Stack()) for _, txn := range block.Transactions() { - data := block.Number().Bytes() - txNumData := make([]byte, 8, 16) - binary.BigEndian.PutUint64(txNumData, txNum) - data = append(data, txNumData...) + data := make([]byte, 16) + binary.BigEndian.PutUint64(data[:8], block.NumberU64()) + binary.BigEndian.PutUint64(data[8:], txNum) if err := db.Put(kv.TxLookup, txn.Hash().Bytes(), data); err != nil { log.Crit("Failed to store transaction lookup entry", "err", err) } diff --git a/core/rawdb/accessors_indexes_test.go b/core/rawdb/accessors_indexes_test.go index 2e3b239d09a..9b093b8703e 100644 --- a/core/rawdb/accessors_indexes_test.go +++ b/core/rawdb/accessors_indexes_test.go @@ -21,6 +21,7 @@ package rawdb_test import ( "context" + "github.com/erigontech/erigon-lib/kv/rawdbv3" "math/big" "testing" @@ -41,12 +42,12 @@ func TestLookupStorage(t *testing.T) { t.Parallel() tests := []struct { name string - writeTxLookupEntries func(kv.Putter, *types.Block) + writeTxLookupEntries func(kv.Putter, *types.Block, uint64) }{ { "DatabaseV6", - func(db kv.Putter, block *types.Block) { - rawdb.WriteTxLookupEntries(db, block) + func(db kv.Putter, block *types.Block, txNum uint64) { + rawdb.WriteTxLookupEntries(db, block, txNum) }, }, // Erigon: older databases are removed, no backward compatibility @@ -85,7 +86,12 @@ func TestLookupStorage(t *testing.T) { if err := rawdb.WriteSenders(tx, block.Hash(), block.NumberU64(), block.Body().SendersFromTxs()); err != nil { t.Fatal(err) } - tc.writeTxLookupEntries(tx, block) + txNum, err := rawdbv3.TxNums.Min(tx, block.NumberU64()) + if err != nil { + t.Fatal(err) + } + + tc.writeTxLookupEntries(tx, block, txNum) for i, txn := range txs { if txn2, hash, number, index, _ := readTransactionByHash(tx, txn.Hash(), br); txn2 == nil { diff --git a/eth/stagedsync/stage_txlookup.go b/eth/stagedsync/stage_txlookup.go index f9059ca2073..8cb4ff5a1db 100644 --- a/eth/stagedsync/stage_txlookup.go +++ b/eth/stagedsync/stage_txlookup.go @@ -137,7 +137,6 @@ func SpawnTxLookup(s *StageState, tx kv.RwTx, toBlock uint64, cfg TxLookupCfg, c // txnLookupTransform - [startKey, endKey) func txnLookupTransform(logPrefix string, tx kv.RwTx, blockFrom, blockTo uint64, ctx context.Context, cfg TxLookupCfg, logger log.Logger) (err error) { - bigNum := new(big.Int) return etl.Transform(logPrefix, tx, kv.HeaderCanonical, kv.TxLookup, cfg.tmpdir, func(k, v []byte, next etl.ExtractNextFunc) error { blocknum, blockHash := binary.BigEndian.Uint64(k), libcommon.CastToHash(v) body, err := cfg.blockReader.BodyWithTransactions(ctx, tx, blockHash, blocknum) @@ -149,22 +148,19 @@ func txnLookupTransform(logPrefix string, tx kv.RwTx, blockFrom, blockTo uint64, return nil } - blockNumBytes := bigNum.SetUint64(blocknum).Bytes() - txNum, err := rawdbv3.TxNums.Min(tx, blocknum) if err != nil { return err } - data := make([]byte, 0, 16) - data = append(data, blockNumBytes...) + data := make([]byte, 16) + binary.BigEndian.PutUint64(data[:8], blocknum) + for i, txn := range body.Transactions { - txNumBytes := bigNum.SetUint64(txNum + uint64(i)).Bytes() - data = append(data, txNumBytes...) + binary.BigEndian.PutUint64(data[8:], txNum+uint64(i)) if err := next(k, txn.Hash().Bytes(), data); err != nil { return err } - data = data[:8] } return nil diff --git a/turbo/snapshotsync/freezeblocks/block_reader.go b/turbo/snapshotsync/freezeblocks/block_reader.go index 1c1ff61e325..48d8b998f2a 100644 --- a/turbo/snapshotsync/freezeblocks/block_reader.go +++ b/turbo/snapshotsync/freezeblocks/block_reader.go @@ -1210,7 +1210,6 @@ func (r *BlockReader) TxnByIdxInBlock(ctx context.Context, tx kv.Getter, blockNu // TxnLookup - find blockNumber and txnID by txnHash func (r *BlockReader) TxnLookup(_ context.Context, tx kv.Getter, txnHash common.Hash) (uint64, uint64, bool, error) { - println("хихихих") blockNumPointer, txNumPointer, err := rawdb.ReadTxLookupEntry(tx, txnHash) if err != nil { return 0, 0, false, err diff --git a/turbo/stages/blockchain_test.go b/turbo/stages/blockchain_test.go index 7e62742312d..0bd0d3d6740 100644 --- a/turbo/stages/blockchain_test.go +++ b/turbo/stages/blockchain_test.go @@ -559,8 +559,8 @@ func TestChainTxReorgs(t *testing.T) { require.NoError(t, err) require.True(t, found) - if rcpt, _, _, _, _ := readReceipt(tx, txn.Hash(), m); rcpt == nil { - t.Errorf("add %d: expected receipt to be found", i) + if rcpt, _, _, _, err := readReceipt(tx, txn.Hash(), m); rcpt == nil { + t.Errorf("add %d: expected receipt to be found, err %v", i, err) } } // shared tx From e14dfc60218f403ad10d5e01d15a498ab71b316b Mon Sep 17 00:00:00 2001 From: JkLondon Date: Wed, 20 Nov 2024 11:45:26 +0100 Subject: [PATCH 18/58] commit --- erigon-lib/go.sum | 2 -- go.mod | 1 - go.sum | 2 -- 3 files changed, 5 deletions(-) diff --git a/erigon-lib/go.sum b/erigon-lib/go.sum index 2e641674c97..a3d06795828 100644 --- a/erigon-lib/go.sum +++ b/erigon-lib/go.sum @@ -150,8 +150,6 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/erigontech/erigon-snapshot v1.3.1-0.20241023024258-f64407a77e8e h1:ZpIO6HeopuZPYDLldL6zR0qyRezj80kQrDOGEF779ts= github.com/erigontech/erigon-snapshot v1.3.1-0.20241023024258-f64407a77e8e/go.mod h1:ooHlCl+eEYzebiPu+FP6Q6SpPUeMADn8Jxabv3IKb9M= -github.com/erigontech/interfaces v0.0.0-20241119142727-0929f4896223 h1:smICxSEOqb37tXo7MRzHawbsTbl4TWW5GKxd/X1Esh0= -github.com/erigontech/interfaces v0.0.0-20241119142727-0929f4896223/go.mod h1:N7OUkhkcagp9+7yb4ycHsG2VWCOmuJ1ONBecJshxtLE= github.com/erigontech/interfaces v0.0.0-20241120074553-214b5fd396ed h1:un44S8Tuol4LBIC6R94t93GShM53BYjz7GsNPziDLQ8= github.com/erigontech/interfaces v0.0.0-20241120074553-214b5fd396ed/go.mod h1:N7OUkhkcagp9+7yb4ycHsG2VWCOmuJ1ONBecJshxtLE= github.com/erigontech/mdbx-go v0.38.4 h1:S9T7mTe9KPcFe4dOoOtVdI6gPzht9y7wMnYfUBgrQLo= diff --git a/go.mod b/go.mod index 35c06f0bca9..9a6d9449db7 100644 --- a/go.mod +++ b/go.mod @@ -108,7 +108,6 @@ require ( require ( github.com/alecthomas/atomic v0.1.0-alpha2 // indirect github.com/elastic/go-freelru v0.13.0 // indirect - github.com/erigontech/interfaces v0.0.0-20241120074553-214b5fd396ed // indirect github.com/erigontech/speedtest v0.0.2 // indirect github.com/go-ole/go-ole v1.2.6 // indirect github.com/go-viper/mapstructure/v2 v2.2.1 // indirect diff --git a/go.sum b/go.sum index 3cbc2f4cffc..46fde5c4bf0 100644 --- a/go.sum +++ b/go.sum @@ -269,8 +269,6 @@ github.com/erigontech/erigon-snapshot v1.3.1-0.20241023024258-f64407a77e8e h1:Zp github.com/erigontech/erigon-snapshot v1.3.1-0.20241023024258-f64407a77e8e/go.mod h1:ooHlCl+eEYzebiPu+FP6Q6SpPUeMADn8Jxabv3IKb9M= github.com/erigontech/erigonwatch v0.0.0-20240718131902-b6576bde1116 h1:KCFa2uXEfZoBjV4buzjWmCmoqVLXiGCq0ZmQ2OjeRvQ= github.com/erigontech/erigonwatch v0.0.0-20240718131902-b6576bde1116/go.mod h1:8vQ+VjvLu2gkPs8EwdPrOTAAo++WuLuBi54N7NuAF0I= -github.com/erigontech/interfaces v0.0.0-20241120074553-214b5fd396ed h1:un44S8Tuol4LBIC6R94t93GShM53BYjz7GsNPziDLQ8= -github.com/erigontech/interfaces v0.0.0-20241120074553-214b5fd396ed/go.mod h1:N7OUkhkcagp9+7yb4ycHsG2VWCOmuJ1ONBecJshxtLE= github.com/erigontech/mdbx-go v0.38.4 h1:S9T7mTe9KPcFe4dOoOtVdI6gPzht9y7wMnYfUBgrQLo= github.com/erigontech/mdbx-go v0.38.4/go.mod h1:IcOLQDPw3VM/asP6T5JVPPN4FHHgJtY16XfYjzWKVNI= github.com/erigontech/secp256k1 v1.1.0 h1:mO3YJMUSoASE15Ya//SoHiisptUhdXExuMUN1M0X9qY= From e5bb16a06c1e431fd1e2acadf296f9c227fb7c0b Mon Sep 17 00:00:00 2001 From: "alex.sharov" Date: Thu, 21 Nov 2024 13:42:02 +0700 Subject: [PATCH 19/58] save --- cmd/integration/Readme.md | 1 + 1 file changed, 1 insertion(+) diff --git a/cmd/integration/Readme.md b/cmd/integration/Readme.md index 13cb4fa5dfa..1896000999c 100644 --- a/cmd/integration/Readme.md +++ b/cmd/integration/Readme.md @@ -13,6 +13,7 @@ integration print_stages integration stage_senders integration stage_exec integration stage_exec --block=1_000_000 # stop at 1M block +integration stage_exec --sync.mode.chaintip # every block: `ComputeCommitment`, `rwtx.Commit()`, write diffs/changesets integration stage_hash_state integration stage_trie integration stage_history From 08dbe732f545e2a1b4a185ada3b475a4ca7710cb Mon Sep 17 00:00:00 2001 From: JkLondon Date: Thu, 21 Nov 2024 17:08:16 +0100 Subject: [PATCH 20/58] commit --- turbo/jsonrpc/receipts/receipts_generator.go | 48 +++++++------------- 1 file changed, 16 insertions(+), 32 deletions(-) diff --git a/turbo/jsonrpc/receipts/receipts_generator.go b/turbo/jsonrpc/receipts/receipts_generator.go index bf52377621b..3cd31522fa8 100644 --- a/turbo/jsonrpc/receipts/receipts_generator.go +++ b/turbo/jsonrpc/receipts/receipts_generator.go @@ -4,7 +4,6 @@ import ( "context" "fmt" "github.com/erigontech/erigon/core/rawdb/rawtemporaldb" - lru "github.com/hashicorp/golang-lru/v2" "github.com/erigontech/erigon-lib/chain" @@ -90,38 +89,23 @@ func (g *Generator) PrepareEnv(ctx context.Context, block *types.Block, cfg *cha func (g *Generator) GetReceipt(ctx context.Context, cfg *chain.Config, tx kv.TemporalTx, block *types.Block, index int, txNum uint64, optimize bool) (*types.Receipt, error) { var receipt *types.Receipt - if optimize { - genEnv, err := g.PrepareEnv(ctx, block, cfg, tx, index) - if err != nil { - return nil, err - } - receipt, _, err = core.ApplyTransaction(cfg, core.GetHashFn(genEnv.header, genEnv.getHeader), g.engine, nil, genEnv.gp, genEnv.ibs, genEnv.noopWriter, genEnv.header, block.Transactions()[index], genEnv.usedGas, genEnv.usedBlobGas, vm.Config{}) - if err != nil { - return nil, fmt.Errorf("ReceiptGen.GetReceipt: bn=%d, txnIdx=%d, %w", block.NumberU64(), index, err) - } - receipt.BlockHash = block.Hash() - cumGasUsed, _, _, err := rawtemporaldb.ReceiptAsOf(tx, txNum) - if err != nil { - return nil, err - } - receipt.CumulativeGasUsed = cumGasUsed - } else { - genEnv, err := g.PrepareEnv(ctx, block, cfg, tx, 0) - if err != nil { - return nil, err - } - for i, txn := range block.Transactions() { - genEnv.ibs.SetTxContext(i) - receipt, _, err = core.ApplyTransaction(cfg, core.GetHashFn(genEnv.header, genEnv.getHeader), g.engine, nil, genEnv.gp, genEnv.ibs, genEnv.noopWriter, genEnv.header, txn, genEnv.usedGas, genEnv.usedBlobGas, vm.Config{}) - if err != nil { - return nil, fmt.Errorf("ReceiptGen.GetReceipt: bn=%d, txnIdx=%d, %w", block.NumberU64(), i, err) - } - receipt.BlockHash = block.Hash() - if i == index { - break - } - } + genEnv, err := g.PrepareEnv(ctx, block, cfg, tx, index) + if err != nil { + return nil, err + } + receipt, _, err = core.ApplyTransaction(cfg, core.GetHashFn(genEnv.header, genEnv.getHeader), g.engine, nil, genEnv.gp, genEnv.ibs, genEnv.noopWriter, genEnv.header, block.Transactions()[index], genEnv.usedGas, genEnv.usedBlobGas, vm.Config{}) + if err != nil { + return nil, fmt.Errorf("ReceiptGen.GetReceipt: bn=%d, txnIdx=%d, %w", block.NumberU64(), index, err) } + receipt.BlockHash = block.Hash() + cumGasUsed, _, _, err := rawtemporaldb.ReceiptAsOf(tx, txNum) + if err != nil { + return nil, err + } + println("cum gas used", cumGasUsed) + + receipt.CumulativeGasUsed = cumGasUsed + receipt.TransactionIndex = uint(index) return receipt, nil } From 6928bdaf274a85187180533765423afa87aea3f2 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Thu, 21 Nov 2024 17:46:15 +0100 Subject: [PATCH 21/58] commit --- turbo/jsonrpc/eth_receipts.go | 2 +- turbo/jsonrpc/receipts/receipts_generator.go | 10 ++++++++-- turbo/snapshotsync/freezeblocks/block_reader.go | 3 ++- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/turbo/jsonrpc/eth_receipts.go b/turbo/jsonrpc/eth_receipts.go index 95ab2d1132a..d33316612a2 100644 --- a/turbo/jsonrpc/eth_receipts.go +++ b/turbo/jsonrpc/eth_receipts.go @@ -480,7 +480,7 @@ func (api *APIImpl) GetTransactionReceipt(ctx context.Context, txnHash common.Ha return ethutils.MarshalReceipt(borReceipt, bortypes.NewBorTransaction(), chainConfig, block.HeaderNoCopy(), txnHash, false), nil } - + println("txnum", txNum, "txInd", txnIndex) receipt, err := api.getReceipt(ctx, chainConfig, tx.(kv.TemporalTx), block, int(txnIndex), txNum, true) if err != nil { return nil, fmt.Errorf("getReceipt error: %w", err) diff --git a/turbo/jsonrpc/receipts/receipts_generator.go b/turbo/jsonrpc/receipts/receipts_generator.go index 3cd31522fa8..cf51062684e 100644 --- a/turbo/jsonrpc/receipts/receipts_generator.go +++ b/turbo/jsonrpc/receipts/receipts_generator.go @@ -98,15 +98,21 @@ func (g *Generator) GetReceipt(ctx context.Context, cfg *chain.Config, tx kv.Tem return nil, fmt.Errorf("ReceiptGen.GetReceipt: bn=%d, txnIdx=%d, %w", block.NumberU64(), index, err) } receipt.BlockHash = block.Hash() - cumGasUsed, _, _, err := rawtemporaldb.ReceiptAsOf(tx, txNum) + cumGasUsed, _, firstLogIndex, err := rawtemporaldb.ReceiptAsOf(tx, txNum) if err != nil { return nil, err } - println("cum gas used", cumGasUsed) + println("cum gas used", cumGasUsed, firstLogIndex, txNum) receipt.CumulativeGasUsed = cumGasUsed receipt.TransactionIndex = uint(index) + for i := range receipt.Logs { + receipt.Logs[i].TxIndex = uint(index) + receipt.Logs[i].Index = uint(firstLogIndex) + firstLogIndex++ + } + return receipt, nil } diff --git a/turbo/snapshotsync/freezeblocks/block_reader.go b/turbo/snapshotsync/freezeblocks/block_reader.go index 48d8b998f2a..ec92c6982a8 100644 --- a/turbo/snapshotsync/freezeblocks/block_reader.go +++ b/turbo/snapshotsync/freezeblocks/block_reader.go @@ -1216,6 +1216,7 @@ func (r *BlockReader) TxnLookup(_ context.Context, tx kv.Getter, txnHash common. } if blockNumPointer != nil && txNumPointer != nil { + println("from db") return *blockNumPointer, *txNumPointer, true, nil } @@ -1225,7 +1226,7 @@ func (r *BlockReader) TxnLookup(_ context.Context, tx kv.Getter, txnHash common. if err != nil { return 0, 0, false, err } - + println("from files") return blockNum, txNum, ok, nil } From 06d3fddbfb6f21f82819ca9df81024fa8cca9f09 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Thu, 21 Nov 2024 18:51:24 +0100 Subject: [PATCH 22/58] commit --- turbo/jsonrpc/eth_receipts.go | 15 +++++++++++++++ turbo/jsonrpc/receipts/receipts_generator.go | 8 ++++++++ 2 files changed, 23 insertions(+) diff --git a/turbo/jsonrpc/eth_receipts.go b/turbo/jsonrpc/eth_receipts.go index d33316612a2..6282499b8b1 100644 --- a/turbo/jsonrpc/eth_receipts.go +++ b/turbo/jsonrpc/eth_receipts.go @@ -458,6 +458,21 @@ func (api *APIImpl) GetTransactionReceipt(ctx context.Context, txnHash common.Ha } } + if txNum-1 == txnIndex { + txNumNew, err := rawdbv3.TxNums.Min(tx, blockNum) + if err != nil { + return nil, err + } + txNumNew += txNum + txNum = txNumNew + } else { + txNum1, err := rawdbv3.TxNums.Min(tx, blockNum) + if err != nil { + return nil, err + } + println("txn", txNum1+txnIndex, txNum) + } + if txn == nil && chainConfig.Bor != nil { receipts, err := api.getReceipts(ctx, tx, block) if err != nil { diff --git a/turbo/jsonrpc/receipts/receipts_generator.go b/turbo/jsonrpc/receipts/receipts_generator.go index cf51062684e..da95362c30b 100644 --- a/turbo/jsonrpc/receipts/receipts_generator.go +++ b/turbo/jsonrpc/receipts/receipts_generator.go @@ -104,6 +104,14 @@ func (g *Generator) GetReceipt(ctx context.Context, cfg *chain.Config, tx kv.Tem } println("cum gas used", cumGasUsed, firstLogIndex, txNum) + for i := range 20 { + cumGasUsed1, _, firstLogIndex1, err := rawtemporaldb.ReceiptAsOf(tx, txNum+uint64(i)-uint64(10)) + if err != nil { + return nil, err + } + println("cum gas used", i, cumGasUsed1, firstLogIndex1, txNum+uint64(i)-uint64(10)) + } + receipt.CumulativeGasUsed = cumGasUsed receipt.TransactionIndex = uint(index) From fb571a03788b90dcfcd8854b36375e5240283ef4 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Thu, 21 Nov 2024 19:29:18 +0100 Subject: [PATCH 23/58] commit --- core/rawdb/accessors_indexes.go | 1 + turbo/jsonrpc/eth_receipts.go | 16 +--------------- turbo/jsonrpc/receipts/receipts_generator.go | 10 +--------- turbo/snapshotsync/freezeblocks/block_reader.go | 2 +- 4 files changed, 4 insertions(+), 25 deletions(-) diff --git a/core/rawdb/accessors_indexes.go b/core/rawdb/accessors_indexes.go index 7e8f9e71ab0..b6af2647698 100644 --- a/core/rawdb/accessors_indexes.go +++ b/core/rawdb/accessors_indexes.go @@ -53,6 +53,7 @@ func ReadTxLookupEntry(db kv.Getter, txnHash libcommon.Hash) (*uint64, *uint64, var numberTxNum uint64 if len(data) >= 8 { numberTxNum = new(big.Int).SetBytes(data[8:]).Uint64() + numberTxNum += 2 } else { return &numberBlockNum, nil, nil } diff --git a/turbo/jsonrpc/eth_receipts.go b/turbo/jsonrpc/eth_receipts.go index 6282499b8b1..585eea31bc3 100644 --- a/turbo/jsonrpc/eth_receipts.go +++ b/turbo/jsonrpc/eth_receipts.go @@ -423,6 +423,7 @@ func (api *APIImpl) GetTransactionReceipt(ctx context.Context, txnHash common.Ha if !ok && chainConfig.Bor == nil { return nil, nil } + println("txNum", txNum) // Private API returns 0 if transaction is not found. if blockNum == 0 && chainConfig.Bor != nil { @@ -458,21 +459,6 @@ func (api *APIImpl) GetTransactionReceipt(ctx context.Context, txnHash common.Ha } } - if txNum-1 == txnIndex { - txNumNew, err := rawdbv3.TxNums.Min(tx, blockNum) - if err != nil { - return nil, err - } - txNumNew += txNum - txNum = txNumNew - } else { - txNum1, err := rawdbv3.TxNums.Min(tx, blockNum) - if err != nil { - return nil, err - } - println("txn", txNum1+txnIndex, txNum) - } - if txn == nil && chainConfig.Bor != nil { receipts, err := api.getReceipts(ctx, tx, block) if err != nil { diff --git a/turbo/jsonrpc/receipts/receipts_generator.go b/turbo/jsonrpc/receipts/receipts_generator.go index da95362c30b..7a33c0c7ee7 100644 --- a/turbo/jsonrpc/receipts/receipts_generator.go +++ b/turbo/jsonrpc/receipts/receipts_generator.go @@ -102,15 +102,7 @@ func (g *Generator) GetReceipt(ctx context.Context, cfg *chain.Config, tx kv.Tem if err != nil { return nil, err } - println("cum gas used", cumGasUsed, firstLogIndex, txNum) - - for i := range 20 { - cumGasUsed1, _, firstLogIndex1, err := rawtemporaldb.ReceiptAsOf(tx, txNum+uint64(i)-uint64(10)) - if err != nil { - return nil, err - } - println("cum gas used", i, cumGasUsed1, firstLogIndex1, txNum+uint64(i)-uint64(10)) - } + println("cum gas used", cumGasUsed, "first log index", firstLogIndex, "txNum", txNum) receipt.CumulativeGasUsed = cumGasUsed receipt.TransactionIndex = uint(index) diff --git a/turbo/snapshotsync/freezeblocks/block_reader.go b/turbo/snapshotsync/freezeblocks/block_reader.go index ec92c6982a8..1cf591160a2 100644 --- a/turbo/snapshotsync/freezeblocks/block_reader.go +++ b/turbo/snapshotsync/freezeblocks/block_reader.go @@ -1133,7 +1133,7 @@ func (r *BlockReader) txnByHash(txnHash common.Hash, segments []*snapshotsync.Vi // final txnHash check - completely avoid false-positives if txn.Hash() == txnHash { - return txn, blockNum, txnId, true, nil + return txn, blockNum, idxTxnHash.BaseDataID() + txnId + 1, true, nil } } From 8ca6e1896ca203a00adc3725184753ca46818230 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Thu, 21 Nov 2024 20:04:16 +0100 Subject: [PATCH 24/58] commit --- turbo/jsonrpc/otterscan_search_v3.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/turbo/jsonrpc/otterscan_search_v3.go b/turbo/jsonrpc/otterscan_search_v3.go index 8474f8899fd..1f1799e3796 100644 --- a/turbo/jsonrpc/otterscan_search_v3.go +++ b/turbo/jsonrpc/otterscan_search_v3.go @@ -96,7 +96,7 @@ func (api *OtterscanAPIImpl) buildSearchResults(ctx context.Context, tx kv.Tempo rpcTx := NewRPCTransaction(txn, block.Hash(), blockNum, uint64(txIndex), block.BaseFee()) txs = append(txs, rpcTx) - receipt, err := api.receiptsGenerator.GetReceipt(ctx, chainConfig, tx, block, txIndex, txNum, true) + receipt, err := api.receiptsGenerator.GetReceipt(ctx, chainConfig, tx, block, txIndex, txNum+1, true) if err != nil { return nil, nil, false, err } From c870e84a3fd657a35e287d0bc3b2b9d717bf18a2 Mon Sep 17 00:00:00 2001 From: "alex.sharov" Date: Fri, 22 Nov 2024 11:45:01 +0700 Subject: [PATCH 25/58] save --- core/rawdb/accessors_indexes_test.go | 2 +- turbo/jsonrpc/receipts/receipts_generator.go | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/core/rawdb/accessors_indexes_test.go b/core/rawdb/accessors_indexes_test.go index 9b093b8703e..47bb721ae15 100644 --- a/core/rawdb/accessors_indexes_test.go +++ b/core/rawdb/accessors_indexes_test.go @@ -21,7 +21,6 @@ package rawdb_test import ( "context" - "github.com/erigontech/erigon-lib/kv/rawdbv3" "math/big" "testing" @@ -30,6 +29,7 @@ import ( libcommon "github.com/erigontech/erigon-lib/common" "github.com/erigontech/erigon-lib/kv" + "github.com/erigontech/erigon-lib/kv/rawdbv3" "github.com/erigontech/erigon-lib/log/v3" "github.com/erigontech/erigon/core/rawdb" "github.com/erigontech/erigon/core/types" diff --git a/turbo/jsonrpc/receipts/receipts_generator.go b/turbo/jsonrpc/receipts/receipts_generator.go index 7a33c0c7ee7..55f9ecd5c21 100644 --- a/turbo/jsonrpc/receipts/receipts_generator.go +++ b/turbo/jsonrpc/receipts/receipts_generator.go @@ -3,7 +3,7 @@ package receipts import ( "context" "fmt" - "github.com/erigontech/erigon/core/rawdb/rawtemporaldb" + lru "github.com/hashicorp/golang-lru/v2" "github.com/erigontech/erigon-lib/chain" @@ -13,6 +13,7 @@ import ( "github.com/erigontech/erigon-lib/log/v3" "github.com/erigontech/erigon/consensus" "github.com/erigontech/erigon/core" + "github.com/erigontech/erigon/core/rawdb/rawtemporaldb" "github.com/erigontech/erigon/core/state" "github.com/erigontech/erigon/core/types" "github.com/erigontech/erigon/core/vm" From a45e349a467d7a670176693c86545e0bbc0b9650 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Fri, 22 Nov 2024 11:39:28 +0100 Subject: [PATCH 26/58] commit --- core/rawdb/accessors_indexes.go | 13 +++----- eth/stagedsync/stage_txlookup.go | 6 ++-- turbo/jsonrpc/eth_api.go | 2 +- turbo/jsonrpc/receipts/receipts_generator.go | 9 ++++++ turbo/services/interfaces.go | 2 +- .../snapshotsync/freezeblocks/block_reader.go | 32 +++---------------- 6 files changed, 24 insertions(+), 40 deletions(-) diff --git a/core/rawdb/accessors_indexes.go b/core/rawdb/accessors_indexes.go index b6af2647698..4fb2864d7c9 100644 --- a/core/rawdb/accessors_indexes.go +++ b/core/rawdb/accessors_indexes.go @@ -21,8 +21,6 @@ package rawdb import ( "encoding/binary" - "math/big" - libcommon "github.com/erigontech/erigon-lib/common" "github.com/erigontech/erigon-lib/kv" "github.com/erigontech/erigon-lib/log/v3" @@ -48,11 +46,11 @@ func ReadTxLookupEntry(db kv.Getter, txnHash libcommon.Hash) (*uint64, *uint64, if len(data) == 0 { return nil, nil, nil } - numberBlockNum := new(big.Int).SetBytes(data[:min(8, len(data))]).Uint64() + numberBlockNum := binary.BigEndian.Uint64(data[:min(8, len(data))]) var numberTxNum uint64 if len(data) >= 8 { - numberTxNum = new(big.Int).SetBytes(data[8:]).Uint64() + numberTxNum = binary.BigEndian.Uint64(data[8:]) numberTxNum += 2 } else { return &numberBlockNum, nil, nil @@ -64,14 +62,13 @@ func ReadTxLookupEntry(db kv.Getter, txnHash libcommon.Hash) (*uint64, *uint64, // WriteTxLookupEntries stores a positional metadata for every transaction from // a block, enabling hash based transaction and receipt lookups. func WriteTxLookupEntries(db kv.Putter, block *types.Block, txNum uint64) { - for _, txn := range block.Transactions() { - data := make([]byte, 16) + data := make([]byte, 16) + for i, txn := range block.Transactions() { binary.BigEndian.PutUint64(data[:8], block.NumberU64()) - binary.BigEndian.PutUint64(data[8:], txNum) + binary.BigEndian.PutUint64(data[8:], txNum+uint64(i)+1) if err := db.Put(kv.TxLookup, txn.Hash().Bytes(), data); err != nil { log.Crit("Failed to store transaction lookup entry", "err", err) } - txNum++ } } diff --git a/eth/stagedsync/stage_txlookup.go b/eth/stagedsync/stage_txlookup.go index 8cb4ff5a1db..cd36117fc48 100644 --- a/eth/stagedsync/stage_txlookup.go +++ b/eth/stagedsync/stage_txlookup.go @@ -137,6 +137,7 @@ func SpawnTxLookup(s *StageState, tx kv.RwTx, toBlock uint64, cfg TxLookupCfg, c // txnLookupTransform - [startKey, endKey) func txnLookupTransform(logPrefix string, tx kv.RwTx, blockFrom, blockTo uint64, ctx context.Context, cfg TxLookupCfg, logger log.Logger) (err error) { + data := make([]byte, 16) return etl.Transform(logPrefix, tx, kv.HeaderCanonical, kv.TxLookup, cfg.tmpdir, func(k, v []byte, next etl.ExtractNextFunc) error { blocknum, blockHash := binary.BigEndian.Uint64(k), libcommon.CastToHash(v) body, err := cfg.blockReader.BodyWithTransactions(ctx, tx, blockHash, blocknum) @@ -148,16 +149,15 @@ func txnLookupTransform(logPrefix string, tx kv.RwTx, blockFrom, blockTo uint64, return nil } - txNum, err := rawdbv3.TxNums.Min(tx, blocknum) + firstTxNumInBlock, err := rawdbv3.TxNums.Min(tx, blocknum) if err != nil { return err } - data := make([]byte, 16) binary.BigEndian.PutUint64(data[:8], blocknum) for i, txn := range body.Transactions { - binary.BigEndian.PutUint64(data[8:], txNum+uint64(i)) + binary.BigEndian.PutUint64(data[8:], firstTxNumInBlock+uint64(i)+1) if err := next(k, txn.Hash().Bytes(), data); err != nil { return err } diff --git a/turbo/jsonrpc/eth_api.go b/turbo/jsonrpc/eth_api.go index 28a69824cad..014783b830e 100644 --- a/turbo/jsonrpc/eth_api.go +++ b/turbo/jsonrpc/eth_api.go @@ -193,7 +193,7 @@ func (api *BaseAPI) genesis(ctx context.Context, tx kv.Tx) (*types.Block, error) return genesis, err } -func (api *BaseAPI) txnLookup(ctx context.Context, tx kv.Tx, txnHash common.Hash) (uint64, uint64, bool, error) { +func (api *BaseAPI) txnLookup(ctx context.Context, tx kv.Tx, txnHash common.Hash) (blockNum uint64, txNum uint64, ok bool, err error) { return api._txnReader.TxnLookup(ctx, tx, txnHash) } diff --git a/turbo/jsonrpc/receipts/receipts_generator.go b/turbo/jsonrpc/receipts/receipts_generator.go index 7a33c0c7ee7..0fd81b94dac 100644 --- a/turbo/jsonrpc/receipts/receipts_generator.go +++ b/turbo/jsonrpc/receipts/receipts_generator.go @@ -97,6 +97,7 @@ func (g *Generator) GetReceipt(ctx context.Context, cfg *chain.Config, tx kv.Tem if err != nil { return nil, fmt.Errorf("ReceiptGen.GetReceipt: bn=%d, txnIdx=%d, %w", block.NumberU64(), index, err) } + receipt.BlockHash = block.Hash() cumGasUsed, _, firstLogIndex, err := rawtemporaldb.ReceiptAsOf(tx, txNum) if err != nil { @@ -107,6 +108,14 @@ func (g *Generator) GetReceipt(ctx context.Context, cfg *chain.Config, tx kv.Tem receipt.CumulativeGasUsed = cumGasUsed receipt.TransactionIndex = uint(index) + for i := range 20 { + cumGasUsed1, _, firstLogIndex1, err := rawtemporaldb.ReceiptAsOf(tx, txNum+uint64(i)-10) + if err != nil { + return nil, err + } + println("cum gas used", cumGasUsed1, "first log index", firstLogIndex1, "txNum", txNum+uint64(i)-10) + } + for i := range receipt.Logs { receipt.Logs[i].TxIndex = uint(index) receipt.Logs[i].Index = uint(firstLogIndex) diff --git a/turbo/services/interfaces.go b/turbo/services/interfaces.go index c6ff507866e..920d4c3eace 100644 --- a/turbo/services/interfaces.go +++ b/turbo/services/interfaces.go @@ -96,7 +96,7 @@ type BodyReader interface { } type TxnReader interface { - TxnLookup(ctx context.Context, tx kv.Getter, txnHash common.Hash) (uint64, uint64, bool, error) + TxnLookup(ctx context.Context, tx kv.Getter, txnHash common.Hash) (blockNum uint64, txNum uint64, ok bool, err error) TxnByIdxInBlock(ctx context.Context, tx kv.Getter, blockNum uint64, i int) (txn types.Transaction, err error) RawTransactions(ctx context.Context, tx kv.Getter, fromBlock, toBlock uint64) (txs [][]byte, err error) FirstTxnNumNotInSnapshots() uint64 diff --git a/turbo/snapshotsync/freezeblocks/block_reader.go b/turbo/snapshotsync/freezeblocks/block_reader.go index 1cf591160a2..092faaaea23 100644 --- a/turbo/snapshotsync/freezeblocks/block_reader.go +++ b/turbo/snapshotsync/freezeblocks/block_reader.go @@ -1103,11 +1103,11 @@ func (r *BlockReader) txnByHash(txnHash common.Hash, segments []*snapshotsync.Vi } reader := recsplit.NewIndexReader(idxTxnHash) - txnId, ok := reader.Lookup(txnHash[:]) + txNumInFile, ok := reader.Lookup(txnHash[:]) if !ok { continue } - offset := idxTxnHash.OrdinalLookup(txnId) + offset := idxTxnHash.OrdinalLookup(txNumInFile) gg := sn.Src().MakeGetter() gg.Reset(offset) // first byte txnHash check - reducing false-positives 256 times. Allows don't store and don't calculate full hash of entity - when checking many snapshots. @@ -1133,35 +1133,13 @@ func (r *BlockReader) txnByHash(txnHash common.Hash, segments []*snapshotsync.Vi // final txnHash check - completely avoid false-positives if txn.Hash() == txnHash { - return txn, blockNum, idxTxnHash.BaseDataID() + txnId + 1, true, nil + return txn, blockNum, idxTxnHash.BaseDataID() + txNumInFile + 1, true, nil } } return nil, 0, 0, false, nil } -func (r *BlockReader) txnIDByHash(txnHash common.Hash, segments []*snapshotsync.VisibleSegment) (txnId uint64, found bool) { - for i := len(segments) - 1; i >= 0; i-- { - sn := segments[i] - - idxTxnHash := sn.Src().Index(coresnaptype.Indexes.TxnHash) - idxTxnHash2BlockNum := sn.Src().Index(coresnaptype.Indexes.TxnHash2BlockNum) - - if idxTxnHash == nil || idxTxnHash2BlockNum == nil { - continue - } - - reader := recsplit.NewIndexReader(idxTxnHash) - var ok bool - txnId, ok = reader.Lookup(txnHash[:]) - if ok { - found = true - break - } - } - return txnId, found -} - // TxnByIdxInBlock - doesn't include system-transactions in the begin/end of block // return nil if 0 < i < body.txCount func (r *BlockReader) TxnByIdxInBlock(ctx context.Context, tx kv.Getter, blockNum uint64, txIdxInBlock int) (txn types.Transaction, err error) { @@ -1209,7 +1187,7 @@ func (r *BlockReader) TxnByIdxInBlock(ctx context.Context, tx kv.Getter, blockNu } // TxnLookup - find blockNumber and txnID by txnHash -func (r *BlockReader) TxnLookup(_ context.Context, tx kv.Getter, txnHash common.Hash) (uint64, uint64, bool, error) { +func (r *BlockReader) TxnLookup(_ context.Context, tx kv.Getter, txnHash common.Hash) (blockNum uint64, txNum uint64, ok bool, err error) { blockNumPointer, txNumPointer, err := rawdb.ReadTxLookupEntry(tx, txnHash) if err != nil { return 0, 0, false, err @@ -1222,7 +1200,7 @@ func (r *BlockReader) TxnLookup(_ context.Context, tx kv.Getter, txnHash common. txns := r.sn.ViewType(coresnaptype.Transactions) defer txns.Close() - _, blockNum, txNum, ok, err := r.txnByHash(txnHash, txns.Segments, nil) + _, blockNum, txNum, ok, err = r.txnByHash(txnHash, txns.Segments, nil) if err != nil { return 0, 0, false, err } From 2e201003e379fecd4ab0d3e48feb75d9418b2a3e Mon Sep 17 00:00:00 2001 From: JkLondon Date: Mon, 25 Nov 2024 20:01:27 +0100 Subject: [PATCH 27/58] commit --- turbo/jsonrpc/eth_receipts.go | 30 +++++++++++++++++++- turbo/jsonrpc/receipts/receipts_generator.go | 6 ++-- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/turbo/jsonrpc/eth_receipts.go b/turbo/jsonrpc/eth_receipts.go index 585eea31bc3..8be83971f90 100644 --- a/turbo/jsonrpc/eth_receipts.go +++ b/turbo/jsonrpc/eth_receipts.go @@ -481,7 +481,35 @@ func (api *APIImpl) GetTransactionReceipt(ctx context.Context, txnHash common.Ha return ethutils.MarshalReceipt(borReceipt, bortypes.NewBorTransaction(), chainConfig, block.HeaderNoCopy(), txnHash, false), nil } - println("txnum", txNum, "txInd", txnIndex) + + txNumMin, err := rawdbv3.TxNums.Min(tx, blockNum) + if err != nil { + return nil, err + } + + println("txnum", txNum, "txInd", txnIndex, txNumMin+txnIndex) + + //well, let's find amogus + println("truly blocknum is:", blockNum) + ok, blockNumFromTxNums, err := rawdbv3.TxNums.FindBlockNum(tx, txNumMin+txnIndex) + if err != nil { + return nil, err + } + if !ok { + println("not found in txnums") + } else { + println("found in txnums blocknum:", blockNumFromTxNums) + } + ok, blockNumFromFiles, err := rawdbv3.TxNums.FindBlockNum(tx, txNum) + if err != nil { + return nil, err + } + if !ok { + println("not found in files") + } else { + println("found in files blocknum:", blockNumFromFiles) + } + //txNum = txNumMin + txnIndex receipt, err := api.getReceipt(ctx, chainConfig, tx.(kv.TemporalTx), block, int(txnIndex), txNum, true) if err != nil { return nil, fmt.Errorf("getReceipt error: %w", err) diff --git a/turbo/jsonrpc/receipts/receipts_generator.go b/turbo/jsonrpc/receipts/receipts_generator.go index 7a1764049b1..38d16a103fd 100644 --- a/turbo/jsonrpc/receipts/receipts_generator.go +++ b/turbo/jsonrpc/receipts/receipts_generator.go @@ -109,12 +109,12 @@ func (g *Generator) GetReceipt(ctx context.Context, cfg *chain.Config, tx kv.Tem receipt.CumulativeGasUsed = cumGasUsed receipt.TransactionIndex = uint(index) - for i := range 20 { - cumGasUsed1, _, firstLogIndex1, err := rawtemporaldb.ReceiptAsOf(tx, txNum+uint64(i)-10) + for i := range 40 { + cumGasUsed1, _, firstLogIndex1, err := rawtemporaldb.ReceiptAsOf(tx, txNum+uint64(i)-20) if err != nil { return nil, err } - println("cum gas used", cumGasUsed1, "first log index", firstLogIndex1, "txNum", txNum+uint64(i)-10) + println("cum gas used", cumGasUsed1, "first log index", firstLogIndex1, "txNum", txNum+uint64(i)-20) } for i := range receipt.Logs { From 223e8a9d8553cd16a93b66871f6b2aa38dd372f7 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Mon, 25 Nov 2024 20:05:46 +0100 Subject: [PATCH 28/58] commit --- eth/stagedsync/stage_txlookup.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/eth/stagedsync/stage_txlookup.go b/eth/stagedsync/stage_txlookup.go index cd36117fc48..8083945b318 100644 --- a/eth/stagedsync/stage_txlookup.go +++ b/eth/stagedsync/stage_txlookup.go @@ -154,6 +154,11 @@ func txnLookupTransform(logPrefix string, tx kv.RwTx, blockFrom, blockTo uint64, return err } + if firstTxNumInBlock == 0 { + log.Warn(fmt.Sprintf("[%s] transform: empty txnum %d, hash %x", logPrefix, firstTxNumInBlock, v)) + return nil + } + binary.BigEndian.PutUint64(data[:8], blocknum) for i, txn := range body.Transactions { From a592a53e97981bfff66191550a4ff48ae4bf66da Mon Sep 17 00:00:00 2001 From: JkLondon Date: Tue, 26 Nov 2024 13:04:54 +0100 Subject: [PATCH 29/58] commit --- core/rawdb/accessors_indexes.go | 16 +++------ core/rawdb/accessors_indexes_test.go | 54 ++++++++++++++++------------ turbo/jsonrpc/eth_receipts.go | 18 +++++----- 3 files changed, 45 insertions(+), 43 deletions(-) diff --git a/core/rawdb/accessors_indexes.go b/core/rawdb/accessors_indexes.go index 4fb2864d7c9..e3993255ede 100644 --- a/core/rawdb/accessors_indexes.go +++ b/core/rawdb/accessors_indexes.go @@ -38,23 +38,16 @@ type TxLookupEntry struct { // ReadTxLookupEntry retrieves the positional metadata associated with a transaction // hash to allow retrieving the transaction or receipt by hash. -func ReadTxLookupEntry(db kv.Getter, txnHash libcommon.Hash) (*uint64, *uint64, error) { +func ReadTxLookupEntry(db kv.Getter, txnHash libcommon.Hash) (blockNumber *uint64, txNum *uint64, err error) { data, err := db.GetOne(kv.TxLookup, txnHash.Bytes()) if err != nil { return nil, nil, err } - if len(data) == 0 { + if len(data) != 16 { return nil, nil, nil } - numberBlockNum := binary.BigEndian.Uint64(data[:min(8, len(data))]) - - var numberTxNum uint64 - if len(data) >= 8 { - numberTxNum = binary.BigEndian.Uint64(data[8:]) - numberTxNum += 2 - } else { - return &numberBlockNum, nil, nil - } + numberBlockNum := binary.BigEndian.Uint64(data[:8]) + numberTxNum := binary.BigEndian.Uint64(data[8:]) return &numberBlockNum, &numberTxNum, nil } @@ -66,6 +59,7 @@ func WriteTxLookupEntries(db kv.Putter, block *types.Block, txNum uint64) { for i, txn := range block.Transactions() { binary.BigEndian.PutUint64(data[:8], block.NumberU64()) binary.BigEndian.PutUint64(data[8:], txNum+uint64(i)+1) + if err := db.Put(kv.TxLookup, txn.Hash().Bytes(), data); err != nil { log.Crit("Failed to store transaction lookup entry", "err", err) } diff --git a/core/rawdb/accessors_indexes_test.go b/core/rawdb/accessors_indexes_test.go index 47bb721ae15..17141aabcaf 100644 --- a/core/rawdb/accessors_indexes_test.go +++ b/core/rawdb/accessors_indexes_test.go @@ -72,7 +72,7 @@ func TestLookupStorage(t *testing.T) { // Check that no transactions entries are in a pristine database for i, txn := range txs { - if txn2, _, _, _, _ := readTransactionByHash(tx, txn.Hash(), br); txn2 != nil { + if txn2, _, _, _, _, _ := readTransactionByHash(tx, txn.Hash(), br); txn2 != nil { t.Fatalf("txn #%d [%x]: non existent transaction returned: %v", i, txn.Hash(), txn2) } } @@ -86,23 +86,26 @@ func TestLookupStorage(t *testing.T) { if err := rawdb.WriteSenders(tx, block.Hash(), block.NumberU64(), block.Body().SendersFromTxs()); err != nil { t.Fatal(err) } - txNum, err := rawdbv3.TxNums.Min(tx, block.NumberU64()) + txNumMin, err := rawdbv3.TxNums.Min(tx, block.NumberU64()) if err != nil { t.Fatal(err) } - tc.writeTxLookupEntries(tx, block, txNum) + tc.writeTxLookupEntries(tx, block, txNumMin) for i, txn := range txs { - if txn2, hash, number, index, _ := readTransactionByHash(tx, txn.Hash(), br); txn2 == nil { + if txn2, hash, blockNumber, txNum, index, _ := readTransactionByHash(tx, txn.Hash(), br); txn2 == nil { t.Fatalf("txn #%d [%x]: transaction not found", i, txn.Hash()) } else { - if hash != block.Hash() || number != block.NumberU64() || index != uint64(i) { - t.Fatalf("txn #%d [%x]: positional metadata mismatch: have %x/%d/%d, want %x/%v/%v", i, txn.Hash(), hash, number, index, block.Hash(), block.NumberU64(), i) + if hash != block.Hash() || blockNumber != block.NumberU64() || index != uint64(i) { + t.Fatalf("txn #%d [%x]: positional metadata mismatch: have %x/%d/%d, want %x/%v/%v", i, txn.Hash(), hash, blockNumber, index, block.Hash(), block.NumberU64(), i) } if txn.Hash() != txn2.Hash() { t.Fatalf("txn #%d [%x]: transaction mismatch: have %v, want %v", i, txn.Hash(), txn, txn2) } + if txNum != txNumMin+uint64(i)+1 { + t.Fatalf("txn #%d [%x]: txnum mismatch: have %d, want %d", i, txn.Hash(), txNum, txNumMin+uint64(i)+1) + } } } // Delete the transactions and check purge @@ -110,7 +113,7 @@ func TestLookupStorage(t *testing.T) { if err := rawdb.DeleteTxLookupEntry(tx, txn.Hash()); err != nil { t.Fatal(err) } - if txn2, _, _, _, _ := readTransactionByHash(tx, txn.Hash(), br); txn2 != nil { + if txn2, _, _, _, _, _ := readTransactionByHash(tx, txn.Hash(), br); txn2 != nil { t.Fatalf("txn #%d [%x]: deleted transaction returned: %v", i, txn.Hash(), txn2) } } @@ -120,36 +123,41 @@ func TestLookupStorage(t *testing.T) { // ReadTransactionByHash retrieves a specific transaction from the database, along with // its added positional metadata. -func readTransactionByHash(db kv.Tx, hash libcommon.Hash, br services.FullBlockReader) (types.Transaction, libcommon.Hash, uint64, uint64, error) { - blockNumber, _, err := rawdb.ReadTxLookupEntry(db, hash) +func readTransactionByHash(db kv.Tx, hash libcommon.Hash, br services.FullBlockReader) (txn types.Transaction, blockHash libcommon.Hash, blockNumber uint64, txNum uint64, txIndex uint64, err error) { + blockNumberPtr, txNumPtr, err := rawdb.ReadTxLookupEntry(db, hash) if err != nil { - return nil, libcommon.Hash{}, 0, 0, err + return nil, libcommon.Hash{}, 0, 0, 0, err + } + if blockNumberPtr == nil { + return nil, libcommon.Hash{}, 0, 0, 0, nil } - if blockNumber == nil { - return nil, libcommon.Hash{}, 0, 0, nil + blockNumber = *blockNumberPtr + if txNumPtr == nil { + return nil, libcommon.Hash{}, 0, 0, 0, nil } - blockHash, ok, err := br.CanonicalHash(context.Background(), db, *blockNumber) + txNum = *txNumPtr + blockHash, ok, err := br.CanonicalHash(context.Background(), db, blockNumber) if err != nil { - return nil, libcommon.Hash{}, 0, 0, err + return nil, libcommon.Hash{}, 0, 0, 0, err } if !ok || blockHash == (libcommon.Hash{}) { - return nil, libcommon.Hash{}, 0, 0, nil + return nil, libcommon.Hash{}, 0, 0, 0, nil } - body, _ := br.BodyWithTransactions(context.Background(), db, blockHash, *blockNumber) + body, _ := br.BodyWithTransactions(context.Background(), db, blockHash, blockNumber) if body == nil { log.Error("Transaction referenced missing", "number", blockNumber, "hash", blockHash) - return nil, libcommon.Hash{}, 0, 0, nil + return nil, libcommon.Hash{}, 0, 0, 0, nil } - senders, err1 := rawdb.ReadSenders(db, blockHash, *blockNumber) + senders, err1 := rawdb.ReadSenders(db, blockHash, blockNumber) if err1 != nil { - return nil, libcommon.Hash{}, 0, 0, err1 + return nil, libcommon.Hash{}, 0, 0, 0, err1 } body.SendersToTxs(senders) - for txIndex, txn := range body.Transactions { - if txn.Hash() == hash { - return txn, blockHash, *blockNumber, uint64(txIndex), nil + for txInd, txnValue := range body.Transactions { + if txnValue.Hash() == hash { + return txnValue, blockHash, blockNumber, txNum, uint64(txInd), nil } } log.Error("Transaction not found", "number", blockNumber, "hash", blockHash, "txhash", hash) - return nil, libcommon.Hash{}, 0, 0, nil + return nil, libcommon.Hash{}, 0, 0, 0, nil } diff --git a/turbo/jsonrpc/eth_receipts.go b/turbo/jsonrpc/eth_receipts.go index 8be83971f90..ff6597bb54e 100644 --- a/turbo/jsonrpc/eth_receipts.go +++ b/turbo/jsonrpc/eth_receipts.go @@ -491,15 +491,15 @@ func (api *APIImpl) GetTransactionReceipt(ctx context.Context, txnHash common.Ha //well, let's find amogus println("truly blocknum is:", blockNum) - ok, blockNumFromTxNums, err := rawdbv3.TxNums.FindBlockNum(tx, txNumMin+txnIndex) - if err != nil { - return nil, err - } - if !ok { - println("not found in txnums") - } else { - println("found in txnums blocknum:", blockNumFromTxNums) - } + //ok, blockNumFromTxNums, err := rawdbv3.TxNums.FindBlockNum(tx, txNumMin+txnIndex) + //if err != nil { + // return nil, err + //} + //if !ok { + // println("not found in txnums") + //} else { + // println("found in txnums blocknum:", blockNumFromTxNums) + //} ok, blockNumFromFiles, err := rawdbv3.TxNums.FindBlockNum(tx, txNum) if err != nil { return nil, err From 5c50d11e46a5110c0cf878e9efc81f699d06ed1b Mon Sep 17 00:00:00 2001 From: JkLondon Date: Tue, 26 Nov 2024 21:32:50 +0100 Subject: [PATCH 30/58] commit --- turbo/jsonrpc/eth_receipts.go | 24 ++++++++++---------- turbo/jsonrpc/receipts/receipts_generator.go | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/turbo/jsonrpc/eth_receipts.go b/turbo/jsonrpc/eth_receipts.go index ff6597bb54e..d4db127d7bb 100644 --- a/turbo/jsonrpc/eth_receipts.go +++ b/turbo/jsonrpc/eth_receipts.go @@ -52,8 +52,8 @@ func (api *BaseAPI) getReceipts(ctx context.Context, tx kv.Tx, block *types.Bloc return api.receiptsGenerator.GetReceipts(ctx, chainConfig, tx, block) } -func (api *BaseAPI) getReceipt(ctx context.Context, cc *chain.Config, tx kv.TemporalTx, block *types.Block, index int, txNum uint64, optimize bool) (*types.Receipt, error) { - return api.receiptsGenerator.GetReceipt(ctx, cc, tx, block, index, txNum, optimize) +func (api *BaseAPI) getReceipt(ctx context.Context, cc *chain.Config, tx kv.TemporalTx, block *types.Block, index int, txNum uint64) (*types.Receipt, error) { + return api.receiptsGenerator.GetReceipt(ctx, cc, tx, block, index, txNum) } func (api *BaseAPI) getCachedReceipts(ctx context.Context, hash common.Hash) (types.Receipts, bool) { @@ -500,17 +500,17 @@ func (api *APIImpl) GetTransactionReceipt(ctx context.Context, txnHash common.Ha //} else { // println("found in txnums blocknum:", blockNumFromTxNums) //} - ok, blockNumFromFiles, err := rawdbv3.TxNums.FindBlockNum(tx, txNum) - if err != nil { - return nil, err - } - if !ok { - println("not found in files") - } else { - println("found in files blocknum:", blockNumFromFiles) - } + //ok, blockNumFromFiles, err := rawdbv3.TxNums.FindBlockNum(tx, txNum) + //if err != nil { + // return nil, err + //} + //if !ok { + // println("not found in files") + //} else { + // println("found in files blocknum:", blockNumFromFiles) + //} //txNum = txNumMin + txnIndex - receipt, err := api.getReceipt(ctx, chainConfig, tx.(kv.TemporalTx), block, int(txnIndex), txNum, true) + receipt, err := api.getReceipt(ctx, chainConfig, tx.(kv.TemporalTx), block, int(txnIndex), txNum) if err != nil { return nil, fmt.Errorf("getReceipt error: %w", err) } diff --git a/turbo/jsonrpc/receipts/receipts_generator.go b/turbo/jsonrpc/receipts/receipts_generator.go index 38d16a103fd..18bb425bfa8 100644 --- a/turbo/jsonrpc/receipts/receipts_generator.go +++ b/turbo/jsonrpc/receipts/receipts_generator.go @@ -88,7 +88,7 @@ func (g *Generator) PrepareEnv(ctx context.Context, block *types.Block, cfg *cha }, nil } -func (g *Generator) GetReceipt(ctx context.Context, cfg *chain.Config, tx kv.TemporalTx, block *types.Block, index int, txNum uint64, optimize bool) (*types.Receipt, error) { +func (g *Generator) GetReceipt(ctx context.Context, cfg *chain.Config, tx kv.TemporalTx, block *types.Block, index int, txNum uint64) (*types.Receipt, error) { var receipt *types.Receipt genEnv, err := g.PrepareEnv(ctx, block, cfg, tx, index) if err != nil { From 5940a0af1b94baec21f7878eba28d6967ea1470a Mon Sep 17 00:00:00 2001 From: JkLondon Date: Thu, 28 Nov 2024 13:33:18 +0100 Subject: [PATCH 31/58] commit --- turbo/jsonrpc/eth_receipts.go | 39 ++++++++++++++-------------- turbo/jsonrpc/otterscan_search_v3.go | 2 +- 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/turbo/jsonrpc/eth_receipts.go b/turbo/jsonrpc/eth_receipts.go index d4db127d7bb..0f639a6e394 100644 --- a/turbo/jsonrpc/eth_receipts.go +++ b/turbo/jsonrpc/eth_receipts.go @@ -491,32 +491,31 @@ func (api *APIImpl) GetTransactionReceipt(ctx context.Context, txnHash common.Ha //well, let's find amogus println("truly blocknum is:", blockNum) - //ok, blockNumFromTxNums, err := rawdbv3.TxNums.FindBlockNum(tx, txNumMin+txnIndex) - //if err != nil { - // return nil, err - //} - //if !ok { - // println("not found in txnums") - //} else { - // println("found in txnums blocknum:", blockNumFromTxNums) - //} - //ok, blockNumFromFiles, err := rawdbv3.TxNums.FindBlockNum(tx, txNum) - //if err != nil { - // return nil, err - //} - //if !ok { - // println("not found in files") - //} else { - // println("found in files blocknum:", blockNumFromFiles) - //} - //txNum = txNumMin + txnIndex + ok, blockNumFromTxNums, err := rawdbv3.TxNums.FindBlockNum(tx, txNumMin+txnIndex) + if err != nil { + return nil, err + } + if !ok { + println("not found in txnums") + } else { + println("found in txnums blocknum:", blockNumFromTxNums) + } + ok, blockNumFromFiles, err := rawdbv3.TxNums.FindBlockNum(tx, txNum) + if err != nil { + return nil, err + } + if !ok { + println("not found in files") + } else { + println("found in files blocknum:", blockNumFromFiles) + } + txNum = txNumMin + txnIndex receipt, err := api.getReceipt(ctx, chainConfig, tx.(kv.TemporalTx), block, int(txnIndex), txNum) if err != nil { return nil, fmt.Errorf("getReceipt error: %w", err) } return ethutils.MarshalReceipt(receipt, block.Transactions()[txnIndex], chainConfig, block.HeaderNoCopy(), txnHash, true), nil - } // GetBlockReceipts - receipts for individual block diff --git a/turbo/jsonrpc/otterscan_search_v3.go b/turbo/jsonrpc/otterscan_search_v3.go index 1f1799e3796..dbc34b5a18a 100644 --- a/turbo/jsonrpc/otterscan_search_v3.go +++ b/turbo/jsonrpc/otterscan_search_v3.go @@ -96,7 +96,7 @@ func (api *OtterscanAPIImpl) buildSearchResults(ctx context.Context, tx kv.Tempo rpcTx := NewRPCTransaction(txn, block.Hash(), blockNum, uint64(txIndex), block.BaseFee()) txs = append(txs, rpcTx) - receipt, err := api.receiptsGenerator.GetReceipt(ctx, chainConfig, tx, block, txIndex, txNum+1, true) + receipt, err := api.receiptsGenerator.GetReceipt(ctx, chainConfig, tx, block, txIndex, txNum+1) if err != nil { return nil, nil, false, err } From e3033c3b95fed6ee23d4d36489902460fb5a6378 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Fri, 29 Nov 2024 10:51:54 +0100 Subject: [PATCH 32/58] commit --- turbo/jsonrpc/eth_receipts.go | 2 +- turbo/jsonrpc/receipts/receipts_generator.go | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/turbo/jsonrpc/eth_receipts.go b/turbo/jsonrpc/eth_receipts.go index 0f639a6e394..9f436523de3 100644 --- a/turbo/jsonrpc/eth_receipts.go +++ b/turbo/jsonrpc/eth_receipts.go @@ -509,7 +509,7 @@ func (api *APIImpl) GetTransactionReceipt(ctx context.Context, txnHash common.Ha } else { println("found in files blocknum:", blockNumFromFiles) } - txNum = txNumMin + txnIndex + //txNum = txNumMin + txnIndex receipt, err := api.getReceipt(ctx, chainConfig, tx.(kv.TemporalTx), block, int(txnIndex), txNum) if err != nil { return nil, fmt.Errorf("getReceipt error: %w", err) diff --git a/turbo/jsonrpc/receipts/receipts_generator.go b/turbo/jsonrpc/receipts/receipts_generator.go index 18bb425bfa8..35469270384 100644 --- a/turbo/jsonrpc/receipts/receipts_generator.go +++ b/turbo/jsonrpc/receipts/receipts_generator.go @@ -94,21 +94,18 @@ func (g *Generator) GetReceipt(ctx context.Context, cfg *chain.Config, tx kv.Tem if err != nil { return nil, err } + receipt, _, err = core.ApplyTransaction(cfg, core.GetHashFn(genEnv.header, genEnv.getHeader), g.engine, nil, genEnv.gp, genEnv.ibs, genEnv.noopWriter, genEnv.header, block.Transactions()[index], genEnv.usedGas, genEnv.usedBlobGas, vm.Config{}) if err != nil { return nil, fmt.Errorf("ReceiptGen.GetReceipt: bn=%d, txnIdx=%d, %w", block.NumberU64(), index, err) } - receipt.BlockHash = block.Hash() cumGasUsed, _, firstLogIndex, err := rawtemporaldb.ReceiptAsOf(tx, txNum) if err != nil { return nil, err } println("cum gas used", cumGasUsed, "first log index", firstLogIndex, "txNum", txNum) - receipt.CumulativeGasUsed = cumGasUsed - receipt.TransactionIndex = uint(index) - for i := range 40 { cumGasUsed1, _, firstLogIndex1, err := rawtemporaldb.ReceiptAsOf(tx, txNum+uint64(i)-20) if err != nil { @@ -117,6 +114,11 @@ func (g *Generator) GetReceipt(ctx context.Context, cfg *chain.Config, tx kv.Tem println("cum gas used", cumGasUsed1, "first log index", firstLogIndex1, "txNum", txNum+uint64(i)-20) } + receipt.BlockHash = block.Hash() + + receipt.CumulativeGasUsed = cumGasUsed + receipt.TransactionIndex = uint(index) + for i := range receipt.Logs { receipt.Logs[i].TxIndex = uint(index) receipt.Logs[i].Index = uint(firstLogIndex) From ec418fc8a9bf5537807724bfac23aebfdd1c865d Mon Sep 17 00:00:00 2001 From: JkLondon Date: Fri, 29 Nov 2024 11:47:19 +0100 Subject: [PATCH 33/58] commit --- core/rawdb/accessors_indexes.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/rawdb/accessors_indexes.go b/core/rawdb/accessors_indexes.go index e3993255ede..c1b5175cb46 100644 --- a/core/rawdb/accessors_indexes.go +++ b/core/rawdb/accessors_indexes.go @@ -47,7 +47,7 @@ func ReadTxLookupEntry(db kv.Getter, txnHash libcommon.Hash) (blockNumber *uint6 return nil, nil, nil } numberBlockNum := binary.BigEndian.Uint64(data[:8]) - numberTxNum := binary.BigEndian.Uint64(data[8:]) + numberTxNum := binary.BigEndian.Uint64(data[8:]) + 1 return &numberBlockNum, &numberTxNum, nil } From ee3d06eddb5b5f5596a9597ad0b1e0eedb347a7a Mon Sep 17 00:00:00 2001 From: JkLondon Date: Fri, 29 Nov 2024 12:16:49 +0100 Subject: [PATCH 34/58] commit --- core/state/txtask.go | 3 +++ turbo/jsonrpc/receipts/receipts_generator.go | 14 +++++++------- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/core/state/txtask.go b/core/state/txtask.go index ff4a79feeb9..01dc0bab896 100644 --- a/core/state/txtask.go +++ b/core/state/txtask.go @@ -106,6 +106,9 @@ func (t *TxTask) CreateReceipt(tx kv.Tx) { } cumulativeGasUsed += t.UsedGas + if t.UsedGas == 0 { + panic("no gas used") + } r := t.createReceipt(cumulativeGasUsed) r.FirstLogIndexWithinBlock = firstLogIndex diff --git a/turbo/jsonrpc/receipts/receipts_generator.go b/turbo/jsonrpc/receipts/receipts_generator.go index 35469270384..381ac996eb0 100644 --- a/turbo/jsonrpc/receipts/receipts_generator.go +++ b/turbo/jsonrpc/receipts/receipts_generator.go @@ -95,11 +95,6 @@ func (g *Generator) GetReceipt(ctx context.Context, cfg *chain.Config, tx kv.Tem return nil, err } - receipt, _, err = core.ApplyTransaction(cfg, core.GetHashFn(genEnv.header, genEnv.getHeader), g.engine, nil, genEnv.gp, genEnv.ibs, genEnv.noopWriter, genEnv.header, block.Transactions()[index], genEnv.usedGas, genEnv.usedBlobGas, vm.Config{}) - if err != nil { - return nil, fmt.Errorf("ReceiptGen.GetReceipt: bn=%d, txnIdx=%d, %w", block.NumberU64(), index, err) - } - cumGasUsed, _, firstLogIndex, err := rawtemporaldb.ReceiptAsOf(tx, txNum) if err != nil { return nil, err @@ -107,11 +102,16 @@ func (g *Generator) GetReceipt(ctx context.Context, cfg *chain.Config, tx kv.Tem println("cum gas used", cumGasUsed, "first log index", firstLogIndex, "txNum", txNum) for i := range 40 { - cumGasUsed1, _, firstLogIndex1, err := rawtemporaldb.ReceiptAsOf(tx, txNum+uint64(i)-20) + cumGasUsed1, cbgu1, firstLogIndex1, err := rawtemporaldb.ReceiptAsOf(tx, txNum+uint64(i)-20) if err != nil { return nil, err } - println("cum gas used", cumGasUsed1, "first log index", firstLogIndex1, "txNum", txNum+uint64(i)-20) + println("cum gas used", cumGasUsed1, "cum blob gas used", cbgu1, "first log index", firstLogIndex1, "txNum", txNum+uint64(i)-20) + } + + receipt, _, err = core.ApplyTransaction(cfg, core.GetHashFn(genEnv.header, genEnv.getHeader), g.engine, nil, genEnv.gp, genEnv.ibs, genEnv.noopWriter, genEnv.header, block.Transactions()[index], genEnv.usedGas, genEnv.usedBlobGas, vm.Config{}) + if err != nil { + return nil, fmt.Errorf("ReceiptGen.GetReceipt: bn=%d, txnIdx=%d, %w", block.NumberU64(), index, err) } receipt.BlockHash = block.Hash() From 56e1cbe6f3d089dacf38fb9b3e5ebee6e7b75682 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Fri, 29 Nov 2024 12:19:51 +0100 Subject: [PATCH 35/58] commit --- core/state/txtask.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/state/txtask.go b/core/state/txtask.go index 01dc0bab896..709c7714bb4 100644 --- a/core/state/txtask.go +++ b/core/state/txtask.go @@ -19,6 +19,8 @@ package state import ( "container/heap" "context" + "fmt" + "github.com/erigontech/erigon-lib/common/dbg" "sync" "time" @@ -107,7 +109,7 @@ func (t *TxTask) CreateReceipt(tx kv.Tx) { cumulativeGasUsed += t.UsedGas if t.UsedGas == 0 { - panic("no gas used") + panic(fmt.Sprintf("no gas used stack: %s tx %+v", dbg.Stack(), t.Tx)) } r := t.createReceipt(cumulativeGasUsed) From 9fcb58bb46ae0b74d67421d10391ec1d646df6bc Mon Sep 17 00:00:00 2001 From: JkLondon Date: Sat, 30 Nov 2024 00:59:58 +0100 Subject: [PATCH 36/58] commit --- core/state/txtask.go | 3 ++- turbo/jsonrpc/eth_receipts.go | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/core/state/txtask.go b/core/state/txtask.go index 709c7714bb4..1038b8c1247 100644 --- a/core/state/txtask.go +++ b/core/state/txtask.go @@ -109,7 +109,8 @@ func (t *TxTask) CreateReceipt(tx kv.Tx) { cumulativeGasUsed += t.UsedGas if t.UsedGas == 0 { - panic(fmt.Sprintf("no gas used stack: %s tx %+v", dbg.Stack(), t.Tx)) + msg := fmt.Sprintf("no gas used stack: %s tx %+v", dbg.Stack(), t.Tx) + panic(msg) } r := t.createReceipt(cumulativeGasUsed) diff --git a/turbo/jsonrpc/eth_receipts.go b/turbo/jsonrpc/eth_receipts.go index 9f436523de3..2a0a9ad4dfd 100644 --- a/turbo/jsonrpc/eth_receipts.go +++ b/turbo/jsonrpc/eth_receipts.go @@ -493,7 +493,7 @@ func (api *APIImpl) GetTransactionReceipt(ctx context.Context, txnHash common.Ha println("truly blocknum is:", blockNum) ok, blockNumFromTxNums, err := rawdbv3.TxNums.FindBlockNum(tx, txNumMin+txnIndex) if err != nil { - return nil, err + println("error in finding block num from txnums.min:", err.Error()) } if !ok { println("not found in txnums") @@ -502,7 +502,7 @@ func (api *APIImpl) GetTransactionReceipt(ctx context.Context, txnHash common.Ha } ok, blockNumFromFiles, err := rawdbv3.TxNums.FindBlockNum(tx, txNum) if err != nil { - return nil, err + println("error in finding block num from files:", err.Error()) } if !ok { println("not found in files") From 0b29019cfe8938b2f6a2bf2760d0de6c52343bb9 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Sat, 30 Nov 2024 01:14:28 +0100 Subject: [PATCH 37/58] commit --- eth/stagedsync/exec3_serial.go | 8 ++++++++ eth/stagedsync/stage_custom_trace.go | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/eth/stagedsync/exec3_serial.go b/eth/stagedsync/exec3_serial.go index 2a59dc12099..67178c3abdb 100644 --- a/eth/stagedsync/exec3_serial.go +++ b/eth/stagedsync/exec3_serial.go @@ -4,6 +4,7 @@ import ( "context" "errors" "fmt" + "github.com/erigontech/erigon-lib/common/dbg" "sync/atomic" "time" @@ -133,6 +134,13 @@ func (se *serialExecutor) execute(ctx context.Context, tasks []*state.TxTask) (c if txTask.TxIndex >= 0 && !txTask.Final { receipt = txTask.BlockReceipts[txTask.TxIndex] } + + if txTask.TxIndex > 0 && receipt != nil && + txTask.BlockReceipts[txTask.TxIndex-1].CumulativeGasUsed == receipt.CumulativeGasUsed { + msg := fmt.Sprintf("bad receipts accert stack %s receipt %+v", dbg.Stack(), txTask.BlockReceipts[txTask.TxIndex]) + panic(msg) + } + if err := rawtemporaldb.AppendReceipt(se.doms, receipt, se.blobGasUsed); err != nil { return false, err } diff --git a/eth/stagedsync/stage_custom_trace.go b/eth/stagedsync/stage_custom_trace.go index dfd2b80a075..1d3a8eb95f1 100644 --- a/eth/stagedsync/stage_custom_trace.go +++ b/eth/stagedsync/stage_custom_trace.go @@ -199,6 +199,10 @@ func customTraceBatch(ctx context.Context, cfg *exec3.ExecArgs, tx kv.TemporalRw if txTask.TxIndex >= 0 && !txTask.Final { receipt = txTask.BlockReceipts[txTask.TxIndex] } + if txTask.TxIndex > 0 && txTask.BlockReceipts[txTask.TxIndex-1].CumulativeGasUsed == receipt.CumulativeGasUsed { + msg := fmt.Sprintf("bad receipts accert stack %s receipt %+v", dbg.Stack(), receipt) + panic(msg) + } if err := rawtemporaldb.AppendReceipt(doms, receipt, cumulativeBlobGasUsedInBlock); err != nil { return err } From dbedf22798acf164eab9563caa42de82f1e5d3a0 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Sat, 30 Nov 2024 03:34:15 +0100 Subject: [PATCH 38/58] commit --- core/rawdb/accessors_indexes_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/rawdb/accessors_indexes_test.go b/core/rawdb/accessors_indexes_test.go index 17141aabcaf..a0ba8bb95f4 100644 --- a/core/rawdb/accessors_indexes_test.go +++ b/core/rawdb/accessors_indexes_test.go @@ -103,7 +103,7 @@ func TestLookupStorage(t *testing.T) { if txn.Hash() != txn2.Hash() { t.Fatalf("txn #%d [%x]: transaction mismatch: have %v, want %v", i, txn.Hash(), txn, txn2) } - if txNum != txNumMin+uint64(i)+1 { + if txNum != txNumMin+uint64(i)+2 { t.Fatalf("txn #%d [%x]: txnum mismatch: have %d, want %d", i, txn.Hash(), txNum, txNumMin+uint64(i)+1) } } From 31666ed24390ec3f9e31da4fc8a24d6840f9e10c Mon Sep 17 00:00:00 2001 From: JkLondon Date: Sat, 30 Nov 2024 12:18:49 +0100 Subject: [PATCH 39/58] commit --- eth/stagedsync/exec3_serial.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eth/stagedsync/exec3_serial.go b/eth/stagedsync/exec3_serial.go index 67178c3abdb..fdd99b3b58d 100644 --- a/eth/stagedsync/exec3_serial.go +++ b/eth/stagedsync/exec3_serial.go @@ -135,7 +135,7 @@ func (se *serialExecutor) execute(ctx context.Context, tasks []*state.TxTask) (c receipt = txTask.BlockReceipts[txTask.TxIndex] } - if txTask.TxIndex > 0 && receipt != nil && + if txTask.TxIndex > 0 && receipt != nil && txTask.BlockReceipts[txTask.TxIndex-1] != nil && txTask.BlockReceipts[txTask.TxIndex-1].CumulativeGasUsed == receipt.CumulativeGasUsed { msg := fmt.Sprintf("bad receipts accert stack %s receipt %+v", dbg.Stack(), txTask.BlockReceipts[txTask.TxIndex]) panic(msg) From 296ac313b576a6420bb2ebf65e0f0a5d4f081428 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Sun, 1 Dec 2024 03:07:40 +0100 Subject: [PATCH 40/58] commit --- erigon-lib/state/inverted_index.go | 2 ++ turbo/jsonrpc/receipts/receipts_generator.go | 8 -------- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/erigon-lib/state/inverted_index.go b/erigon-lib/state/inverted_index.go index 7ce941d7510..384ee24d925 100644 --- a/erigon-lib/state/inverted_index.go +++ b/erigon-lib/state/inverted_index.go @@ -577,7 +577,9 @@ func (iit *InvertedIndexRoTx) seekInFiles(key []byte, txNum uint64) (found bool, } } + println("in hist files") for i := 0; i < len(iit.files); i++ { + println("start txnum:", iit.files[i].startTxNum, "end txnum:", iit.files[i].endTxNum) if iit.files[i].endTxNum <= txNum { continue } diff --git a/turbo/jsonrpc/receipts/receipts_generator.go b/turbo/jsonrpc/receipts/receipts_generator.go index 858482ff4d3..15d3ad05c75 100644 --- a/turbo/jsonrpc/receipts/receipts_generator.go +++ b/turbo/jsonrpc/receipts/receipts_generator.go @@ -123,14 +123,6 @@ func (g *Generator) GetReceipt(ctx context.Context, cfg *chain.Config, tx kv.Tem } println("cum gas used", cumGasUsed, "first log index", firstLogIndex, "txNum", txNum) - for i := range 40 { - cumGasUsed1, cbgu1, firstLogIndex1, err := rawtemporaldb.ReceiptAsOf(tx, txNum+uint64(i)-20) - if err != nil { - return nil, err - } - println("cum gas used", cumGasUsed1, "cum blob gas used", cbgu1, "first log index", firstLogIndex1, "txNum", txNum+uint64(i)-20) - } - receipt, _, err = core.ApplyTransaction(cfg, core.GetHashFn(genEnv.header, genEnv.getHeader), g.engine, nil, genEnv.gp, genEnv.ibs, genEnv.noopWriter, genEnv.header, block.Transactions()[index], genEnv.usedGas, genEnv.usedBlobGas, vm.Config{}) if err != nil { return nil, fmt.Errorf("ReceiptGen.GetReceipt: bn=%d, txnIdx=%d, %w", block.NumberU64(), index, err) From 6afd19c7fb51ee7fc16cfebea0a7c33a2a25d567 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Sun, 1 Dec 2024 03:11:57 +0100 Subject: [PATCH 41/58] commit --- erigon-lib/state/domain.go | 1 + 1 file changed, 1 insertion(+) diff --git a/erigon-lib/state/domain.go b/erigon-lib/state/domain.go index 93f8569f0bd..1482c8f1694 100644 --- a/erigon-lib/state/domain.go +++ b/erigon-lib/state/domain.go @@ -1626,6 +1626,7 @@ func (dt *DomainRoTx) GetAsOfFile(key []byte, txNum uint64) ([]byte, bool, error // historical value based only on static files, roTx will not be used. func (dt *DomainRoTx) GetAsOf(key []byte, txNum uint64, roTx kv.Tx) ([]byte, bool, error) { v, hOk, err := dt.ht.HistorySeek(key, txNum, roTx) + println(fmt.Sprintf("history seek %+v", v), hOk, err) if err != nil { return nil, false, err } From f62fb7ee5b4794c57fbb51358b6996d4b028b4a3 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Sun, 1 Dec 2024 03:19:33 +0100 Subject: [PATCH 42/58] commit --- erigon-lib/state/domain.go | 1 - erigon-lib/state/history.go | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/erigon-lib/state/domain.go b/erigon-lib/state/domain.go index 1482c8f1694..93f8569f0bd 100644 --- a/erigon-lib/state/domain.go +++ b/erigon-lib/state/domain.go @@ -1626,7 +1626,6 @@ func (dt *DomainRoTx) GetAsOfFile(key []byte, txNum uint64) ([]byte, bool, error // historical value based only on static files, roTx will not be used. func (dt *DomainRoTx) GetAsOf(key []byte, txNum uint64, roTx kv.Tx) ([]byte, bool, error) { v, hOk, err := dt.ht.HistorySeek(key, txNum, roTx) - println(fmt.Sprintf("history seek %+v", v), hOk, err) if err != nil { return nil, false, err } diff --git a/erigon-lib/state/history.go b/erigon-lib/state/history.go index 2ab7c30d3ba..6b0b9766628 100644 --- a/erigon-lib/state/history.go +++ b/erigon-lib/state/history.go @@ -1152,6 +1152,7 @@ func (ht *HistoryRoTx) historySeekInFiles(key []byte, txNum uint64) ([]byte, boo // Files list of II and History is different // it means II can't return index of file, but can return TxNum which History will use to find own file ok, histTxNum, err := ht.iit.seekInFiles(key, txNum) + println(fmt.Sprintf("history seek %d", histTxNum), ok, err) if err != nil { return nil, false, err } From bfa79602723b442a97069a5a082116b13ec970f3 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Sun, 1 Dec 2024 03:22:57 +0100 Subject: [PATCH 43/58] commit --- erigon-lib/state/inverted_index.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/erigon-lib/state/inverted_index.go b/erigon-lib/state/inverted_index.go index 384ee24d925..7ce941d7510 100644 --- a/erigon-lib/state/inverted_index.go +++ b/erigon-lib/state/inverted_index.go @@ -577,9 +577,7 @@ func (iit *InvertedIndexRoTx) seekInFiles(key []byte, txNum uint64) (found bool, } } - println("in hist files") for i := 0; i < len(iit.files); i++ { - println("start txnum:", iit.files[i].startTxNum, "end txnum:", iit.files[i].endTxNum) if iit.files[i].endTxNum <= txNum { continue } From 1a5df2b32be936354efdf18738a616fb57983391 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Sun, 1 Dec 2024 03:25:14 +0100 Subject: [PATCH 44/58] commit --- turbo/jsonrpc/receipts/receipts_generator.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/turbo/jsonrpc/receipts/receipts_generator.go b/turbo/jsonrpc/receipts/receipts_generator.go index 15d3ad05c75..dfae70720d7 100644 --- a/turbo/jsonrpc/receipts/receipts_generator.go +++ b/turbo/jsonrpc/receipts/receipts_generator.go @@ -123,6 +123,15 @@ func (g *Generator) GetReceipt(ctx context.Context, cfg *chain.Config, tx kv.Tem } println("cum gas used", cumGasUsed, "first log index", firstLogIndex, "txNum", txNum) + println("let's look around") + for i := range 60 { + cumGasUsed1, _, firstLogIndex1, err := rawtemporaldb.ReceiptAsOf(tx, txNum+i-30) + if err != nil { + return nil, err + } + println("cum gas used", cumGasUsed1, "first log index", firstLogIndex1, "txNum", txNum+i-30) + } + receipt, _, err = core.ApplyTransaction(cfg, core.GetHashFn(genEnv.header, genEnv.getHeader), g.engine, nil, genEnv.gp, genEnv.ibs, genEnv.noopWriter, genEnv.header, block.Transactions()[index], genEnv.usedGas, genEnv.usedBlobGas, vm.Config{}) if err != nil { return nil, fmt.Errorf("ReceiptGen.GetReceipt: bn=%d, txnIdx=%d, %w", block.NumberU64(), index, err) From 25b7b2baf66e3bf65864ae49bc60c86914e61879 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Sun, 1 Dec 2024 03:26:16 +0100 Subject: [PATCH 45/58] commit --- turbo/jsonrpc/receipts/receipts_generator.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/turbo/jsonrpc/receipts/receipts_generator.go b/turbo/jsonrpc/receipts/receipts_generator.go index dfae70720d7..64d181d72af 100644 --- a/turbo/jsonrpc/receipts/receipts_generator.go +++ b/turbo/jsonrpc/receipts/receipts_generator.go @@ -125,11 +125,11 @@ func (g *Generator) GetReceipt(ctx context.Context, cfg *chain.Config, tx kv.Tem println("let's look around") for i := range 60 { - cumGasUsed1, _, firstLogIndex1, err := rawtemporaldb.ReceiptAsOf(tx, txNum+i-30) + cumGasUsed1, _, firstLogIndex1, err := rawtemporaldb.ReceiptAsOf(tx, txNum+uint64(i)-30) if err != nil { return nil, err } - println("cum gas used", cumGasUsed1, "first log index", firstLogIndex1, "txNum", txNum+i-30) + println("cum gas used", cumGasUsed1, "first log index", firstLogIndex1, "txNum", txNum+uint64(i)-30) } receipt, _, err = core.ApplyTransaction(cfg, core.GetHashFn(genEnv.header, genEnv.getHeader), g.engine, nil, genEnv.gp, genEnv.ibs, genEnv.noopWriter, genEnv.header, block.Transactions()[index], genEnv.usedGas, genEnv.usedBlobGas, vm.Config{}) From 776c83a4716678f58b9f0ba382a2052a659f6cc6 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Sun, 1 Dec 2024 03:28:59 +0100 Subject: [PATCH 46/58] commit --- erigon-lib/state/history.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/erigon-lib/state/history.go b/erigon-lib/state/history.go index 6b0b9766628..66ca7ea2468 100644 --- a/erigon-lib/state/history.go +++ b/erigon-lib/state/history.go @@ -23,6 +23,7 @@ import ( "encoding/binary" "errors" "fmt" + "github.com/erigontech/erigon-lib/common/dbg" "math" "path/filepath" "sync" @@ -1152,7 +1153,7 @@ func (ht *HistoryRoTx) historySeekInFiles(key []byte, txNum uint64) ([]byte, boo // Files list of II and History is different // it means II can't return index of file, but can return TxNum which History will use to find own file ok, histTxNum, err := ht.iit.seekInFiles(key, txNum) - println(fmt.Sprintf("history seek %d", histTxNum), ok, err) + println(fmt.Sprintf("history seek %d", histTxNum), ok, err, dbg.Stack()) if err != nil { return nil, false, err } From 7e580d00b8e16a672bd6f0556a2285f373a35acc Mon Sep 17 00:00:00 2001 From: JkLondon Date: Sun, 1 Dec 2024 03:35:35 +0100 Subject: [PATCH 47/58] commit --- erigon-lib/state/history.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/erigon-lib/state/history.go b/erigon-lib/state/history.go index 66ca7ea2468..ff55a515983 100644 --- a/erigon-lib/state/history.go +++ b/erigon-lib/state/history.go @@ -23,7 +23,6 @@ import ( "encoding/binary" "errors" "fmt" - "github.com/erigontech/erigon-lib/common/dbg" "math" "path/filepath" "sync" @@ -1153,7 +1152,7 @@ func (ht *HistoryRoTx) historySeekInFiles(key []byte, txNum uint64) ([]byte, boo // Files list of II and History is different // it means II can't return index of file, but can return TxNum which History will use to find own file ok, histTxNum, err := ht.iit.seekInFiles(key, txNum) - println(fmt.Sprintf("history seek %d", histTxNum), ok, err, dbg.Stack()) + println(fmt.Sprintf("history seek histTxNum %d txNum %d", histTxNum, txNum)) if err != nil { return nil, false, err } From ae2f7b2afb55167b1e7bf52daaf8b251343fe825 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Wed, 4 Dec 2024 16:22:23 +0100 Subject: [PATCH 48/58] commit --- turbo/jsonrpc/eth_receipts.go | 28 -------------- turbo/jsonrpc/receipts/receipts_generator.go | 40 ++++++++++++++++++-- 2 files changed, 37 insertions(+), 31 deletions(-) diff --git a/turbo/jsonrpc/eth_receipts.go b/turbo/jsonrpc/eth_receipts.go index d998e9d4cc3..5a9950bbcc8 100644 --- a/turbo/jsonrpc/eth_receipts.go +++ b/turbo/jsonrpc/eth_receipts.go @@ -481,34 +481,6 @@ func (api *APIImpl) GetTransactionReceipt(ctx context.Context, txnHash common.Ha return ethutils.MarshalReceipt(borReceipt, bortypes.NewBorTransaction(), chainConfig, block.HeaderNoCopy(), txnHash, false), nil } - txNumMin, err := rawdbv3.TxNums.Min(tx, blockNum) - if err != nil { - return nil, err - } - - println("txnum", txNum, "txInd", txnIndex, txNumMin+txnIndex) - - //well, let's find amogus - println("truly blocknum is:", blockNum) - ok, blockNumFromTxNums, err := rawdbv3.TxNums.FindBlockNum(tx, txNumMin+txnIndex) - if err != nil { - println("error in finding block num from txnums.min:", err.Error()) - } - if !ok { - println("not found in txnums") - } else { - println("found in txnums blocknum:", blockNumFromTxNums) - } - ok, blockNumFromFiles, err := rawdbv3.TxNums.FindBlockNum(tx, txNum) - if err != nil { - println("error in finding block num from files:", err.Error()) - } - if !ok { - println("not found in files") - } else { - println("found in files blocknum:", blockNumFromFiles) - } - //txNum = txNumMin + txnIndex receipt, err := api.getReceipt(ctx, chainConfig, tx.(kv.TemporalTx), block, int(txnIndex), txNum) if err != nil { return nil, fmt.Errorf("getReceipt error: %w", err) diff --git a/turbo/jsonrpc/receipts/receipts_generator.go b/turbo/jsonrpc/receipts/receipts_generator.go index 64d181d72af..680bb8738af 100644 --- a/turbo/jsonrpc/receipts/receipts_generator.go +++ b/turbo/jsonrpc/receipts/receipts_generator.go @@ -124,13 +124,47 @@ func (g *Generator) GetReceipt(ctx context.Context, cfg *chain.Config, tx kv.Tem println("cum gas used", cumGasUsed, "first log index", firstLogIndex, "txNum", txNum) println("let's look around") - for i := range 60 { - cumGasUsed1, _, firstLogIndex1, err := rawtemporaldb.ReceiptAsOf(tx, txNum+uint64(i)-30) + cumGasUsed1 := cumGasUsed + i := uint64(0) + for cumGasUsed1 == cumGasUsed { + var firstLogIndex1 uint32 + i++ + cumGasUsed1, _, firstLogIndex1, err = rawtemporaldb.ReceiptAsOf(tx, txNum-uint64(i)) if err != nil { return nil, err } - println("cum gas used", cumGasUsed1, "first log index", firstLogIndex1, "txNum", txNum+uint64(i)-30) + _ = firstLogIndex1 + //println("cum gas used", cumGasUsed1, "first log index", firstLogIndex1, "txNum", txNum-uint64(i)) } + firstGoodTxNum := txNum - uint64(i) + firstIndex := index - int(i) + cumGasUsed1 = cumGasUsed + i = 0 + for cumGasUsed1 == cumGasUsed { + i++ + var firstLogIndex1 uint32 + cumGasUsed1, _, firstLogIndex1, err = rawtemporaldb.ReceiptAsOf(tx, txNum+uint64(i)) + if err != nil { + return nil, err + } + + _ = firstLogIndex1 + //println("cum gas used", cumGasUsed1, "first log index", firstLogIndex1, "txNum", txNum+uint64(i)) + } + println("first good txnum is", firstGoodTxNum, firstIndex) + println("last good txnum is", txNum+uint64(i)) + println("our txnum is", txNum, index) // 1962853351 1962853463 + cumGasUsed1, _, firstLogIndex1, err := rawtemporaldb.ReceiptAsOf(tx, firstGoodTxNum) + if err != nil { + return nil, err + } + println("cum gas used first", cumGasUsed1, "first log index", firstLogIndex1, "txNum", firstGoodTxNum) + + cumGasUsed1, _, firstLogIndex1, err = rawtemporaldb.ReceiptAsOf(tx, txNum+uint64(i)) + if err != nil { + return nil, err + } + println("cum gas used last", cumGasUsed1, "first log index", firstLogIndex1, "txNum", txNum+uint64(i)) receipt, _, err = core.ApplyTransaction(cfg, core.GetHashFn(genEnv.header, genEnv.getHeader), g.engine, nil, genEnv.gp, genEnv.ibs, genEnv.noopWriter, genEnv.header, block.Transactions()[index], genEnv.usedGas, genEnv.usedBlobGas, vm.Config{}) if err != nil { From 9a63dff3acf32152421d596ef299480442b9d077 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Fri, 6 Dec 2024 02:12:01 +0100 Subject: [PATCH 49/58] commit --- core/rawdb/rawtemporaldb/accessors_receipt.go | 11 ++++++++++- erigon-lib/state/history.go | 6 ++++-- eth/stagedsync/exec3_serial.go | 2 +- eth/stagedsync/stage_custom_trace.go | 9 ++++++++- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/core/rawdb/rawtemporaldb/accessors_receipt.go b/core/rawdb/rawtemporaldb/accessors_receipt.go index 51d09ce4cd8..031b5207141 100644 --- a/core/rawdb/rawtemporaldb/accessors_receipt.go +++ b/core/rawdb/rawtemporaldb/accessors_receipt.go @@ -71,7 +71,16 @@ func ReceiptAsOf(tx kv.TemporalTx, txNum uint64) (cumGasUsed uint64, cumBlobGasu return } -func AppendReceipt(ttx kv.TemporalPutDel, receipt *types.Receipt, cumBlobGasUsed uint64) error { +func AppendReceipt(ttx kv.TemporalPutDel, receipt *types.Receipt, cumBlobGasUsed uint64, txNum uint64) error { + //condition := txNum < 1962853462+10 && txNum > 1962853352-10 + //if condition { + // if receipt != nil { + // println("receipt put:", "cumGasUsed:", receipt.CumulativeGasUsed, "firstLogIndex:", receipt.FirstLogIndexWithinBlock, "txNum:", txNum) + // } else { + // println("receipt is nil", cumBlobGasUsed, txNum) + // } + //} + var cumGasUsedInBlock uint64 var firstLogIndexWithinBlock uint32 if receipt != nil { diff --git a/erigon-lib/state/history.go b/erigon-lib/state/history.go index 96d82baad4c..b440150f0a8 100644 --- a/erigon-lib/state/history.go +++ b/erigon-lib/state/history.go @@ -1079,7 +1079,7 @@ func (ht *HistoryRoTx) Prune(ctx context.Context, rwTx kv.RwTx, txFrom, txTo, li } if ht.h.historyLargeValues { - seek = append(append(seek[:0], k...), txnm...) + seek = append(bytes.Clone(k), txnm...) if err := valsC.Delete(seek); err != nil { return err } @@ -1156,7 +1156,9 @@ func (ht *HistoryRoTx) historySeekInFiles(key []byte, txNum uint64) ([]byte, boo // Files list of II and History is different // it means II can't return index of file, but can return TxNum which History will use to find own file ok, histTxNum, err := ht.iit.seekInFiles(key, txNum) - println(fmt.Sprintf("history seek histTxNum %d txNum %d", histTxNum, txNum)) + if txNum < 1962853462+10 && txNum > 1962853352-10 && string(key) == string([]byte{0x0}) { + println(fmt.Sprintf("history seek histTxNum %d txNum %d", histTxNum, txNum)) + } if err != nil { return nil, false, err } diff --git a/eth/stagedsync/exec3_serial.go b/eth/stagedsync/exec3_serial.go index fdd99b3b58d..46cc4fd3ca8 100644 --- a/eth/stagedsync/exec3_serial.go +++ b/eth/stagedsync/exec3_serial.go @@ -141,7 +141,7 @@ func (se *serialExecutor) execute(ctx context.Context, tasks []*state.TxTask) (c panic(msg) } - if err := rawtemporaldb.AppendReceipt(se.doms, receipt, se.blobGasUsed); err != nil { + if err := rawtemporaldb.AppendReceipt(se.doms, receipt, se.blobGasUsed, txTask.TxNum); err != nil { return false, err } } diff --git a/eth/stagedsync/stage_custom_trace.go b/eth/stagedsync/stage_custom_trace.go index 1d3a8eb95f1..9c7b05bb5e1 100644 --- a/eth/stagedsync/stage_custom_trace.go +++ b/eth/stagedsync/stage_custom_trace.go @@ -203,9 +203,16 @@ func customTraceBatch(ctx context.Context, cfg *exec3.ExecArgs, tx kv.TemporalRw msg := fmt.Sprintf("bad receipts accert stack %s receipt %+v", dbg.Stack(), receipt) panic(msg) } - if err := rawtemporaldb.AppendReceipt(doms, receipt, cumulativeBlobGasUsedInBlock); err != nil { + if err := rawtemporaldb.AppendReceipt(doms, receipt, cumulativeBlobGasUsedInBlock, txTask.TxNum); err != nil { return err } + if txTask.TxNum < 1962853462+10 && txTask.TxNum > 1962853352-10 { + cumGasUsed, _, firstLogIndex, err := rawtemporaldb.ReceiptAsOf(tx.(kv.TemporalTx), txTask.TxNum) + if err != nil { + println("error", err.Error()) + } + println("receipt get:", "cumGasUsed:", cumGasUsed, "firstLogIndex:", firstLogIndex, "txNum:", txTask.TxNum) + } } if txTask.Final { // block changed From eae12fb7200f7bdd6706c84e351a575b831076c9 Mon Sep 17 00:00:00 2001 From: "alex.sharov" Date: Mon, 9 Dec 2024 15:47:12 +0700 Subject: [PATCH 50/58] save --- ChangeLog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ChangeLog.md b/ChangeLog.md index ad5981794db..47b3a86805c 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -36,6 +36,7 @@ ChangeLog ### New features: - Reduced `.idx` and `.efi` files size by 25% (require re-sync) +- Support: `debug_getRawReceipts` - debian packages - `--externalcl` support - bor-mainnet can work on 32G machine From 02466642c3489fb4861b9e80e071770bc3a50ba7 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Tue, 10 Dec 2024 23:54:59 +0100 Subject: [PATCH 51/58] commit --- core/rawdb/rawtemporaldb/accessors_receipt.go | 11 +---------- eth/stagedsync/stage_custom_trace.go | 9 +-------- 2 files changed, 2 insertions(+), 18 deletions(-) diff --git a/core/rawdb/rawtemporaldb/accessors_receipt.go b/core/rawdb/rawtemporaldb/accessors_receipt.go index 209e5663317..06ea283e3ac 100644 --- a/core/rawdb/rawtemporaldb/accessors_receipt.go +++ b/core/rawdb/rawtemporaldb/accessors_receipt.go @@ -71,16 +71,7 @@ func ReceiptAsOf(tx kv.TemporalTx, txNum uint64) (cumGasUsed uint64, cumBlobGasu return } -func AppendReceipt(ttx kv.TemporalPutDel, receipt *types.Receipt, cumBlobGasUsed uint64, txNum uint64) error { - //condition := txNum < 1962853462+10 && txNum > 1962853352-10 - //if condition { - // if receipt != nil { - // println("receipt put:", "cumGasUsed:", receipt.CumulativeGasUsed, "firstLogIndex:", receipt.FirstLogIndexWithinBlock, "txNum:", txNum) - // } else { - // println("receipt is nil", cumBlobGasUsed, txNum) - // } - //} - +func AppendReceipt(ttx kv.TemporalPutDel, receipt *types.Receipt, cumBlobGasUsed uint64) error { var cumGasUsedInBlock uint64 var firstLogIndexWithinBlock uint32 if receipt != nil { diff --git a/eth/stagedsync/stage_custom_trace.go b/eth/stagedsync/stage_custom_trace.go index 9c7b05bb5e1..1d3a8eb95f1 100644 --- a/eth/stagedsync/stage_custom_trace.go +++ b/eth/stagedsync/stage_custom_trace.go @@ -203,16 +203,9 @@ func customTraceBatch(ctx context.Context, cfg *exec3.ExecArgs, tx kv.TemporalRw msg := fmt.Sprintf("bad receipts accert stack %s receipt %+v", dbg.Stack(), receipt) panic(msg) } - if err := rawtemporaldb.AppendReceipt(doms, receipt, cumulativeBlobGasUsedInBlock, txTask.TxNum); err != nil { + if err := rawtemporaldb.AppendReceipt(doms, receipt, cumulativeBlobGasUsedInBlock); err != nil { return err } - if txTask.TxNum < 1962853462+10 && txTask.TxNum > 1962853352-10 { - cumGasUsed, _, firstLogIndex, err := rawtemporaldb.ReceiptAsOf(tx.(kv.TemporalTx), txTask.TxNum) - if err != nil { - println("error", err.Error()) - } - println("receipt get:", "cumGasUsed:", cumGasUsed, "firstLogIndex:", firstLogIndex, "txNum:", txTask.TxNum) - } } if txTask.Final { // block changed From d2914101443736a0ee97d4e00920a24620376f5f Mon Sep 17 00:00:00 2001 From: JkLondon Date: Wed, 11 Dec 2024 00:00:25 +0100 Subject: [PATCH 52/58] commit --- erigon-lib/state/history.go | 3 -- eth/stagedsync/stage_custom_trace.go | 4 -- turbo/jsonrpc/receipts/receipts_generator.go | 47 +------------------- 3 files changed, 1 insertion(+), 53 deletions(-) diff --git a/erigon-lib/state/history.go b/erigon-lib/state/history.go index b440150f0a8..13728088c3f 100644 --- a/erigon-lib/state/history.go +++ b/erigon-lib/state/history.go @@ -1156,9 +1156,6 @@ func (ht *HistoryRoTx) historySeekInFiles(key []byte, txNum uint64) ([]byte, boo // Files list of II and History is different // it means II can't return index of file, but can return TxNum which History will use to find own file ok, histTxNum, err := ht.iit.seekInFiles(key, txNum) - if txNum < 1962853462+10 && txNum > 1962853352-10 && string(key) == string([]byte{0x0}) { - println(fmt.Sprintf("history seek histTxNum %d txNum %d", histTxNum, txNum)) - } if err != nil { return nil, false, err } diff --git a/eth/stagedsync/stage_custom_trace.go b/eth/stagedsync/stage_custom_trace.go index 1d3a8eb95f1..dfd2b80a075 100644 --- a/eth/stagedsync/stage_custom_trace.go +++ b/eth/stagedsync/stage_custom_trace.go @@ -199,10 +199,6 @@ func customTraceBatch(ctx context.Context, cfg *exec3.ExecArgs, tx kv.TemporalRw if txTask.TxIndex >= 0 && !txTask.Final { receipt = txTask.BlockReceipts[txTask.TxIndex] } - if txTask.TxIndex > 0 && txTask.BlockReceipts[txTask.TxIndex-1].CumulativeGasUsed == receipt.CumulativeGasUsed { - msg := fmt.Sprintf("bad receipts accert stack %s receipt %+v", dbg.Stack(), receipt) - panic(msg) - } if err := rawtemporaldb.AppendReceipt(doms, receipt, cumulativeBlobGasUsedInBlock); err != nil { return err } diff --git a/turbo/jsonrpc/receipts/receipts_generator.go b/turbo/jsonrpc/receipts/receipts_generator.go index 680bb8738af..5b2138e4339 100644 --- a/turbo/jsonrpc/receipts/receipts_generator.go +++ b/turbo/jsonrpc/receipts/receipts_generator.go @@ -121,50 +121,6 @@ func (g *Generator) GetReceipt(ctx context.Context, cfg *chain.Config, tx kv.Tem if err != nil { return nil, err } - println("cum gas used", cumGasUsed, "first log index", firstLogIndex, "txNum", txNum) - - println("let's look around") - cumGasUsed1 := cumGasUsed - i := uint64(0) - for cumGasUsed1 == cumGasUsed { - var firstLogIndex1 uint32 - i++ - cumGasUsed1, _, firstLogIndex1, err = rawtemporaldb.ReceiptAsOf(tx, txNum-uint64(i)) - if err != nil { - return nil, err - } - _ = firstLogIndex1 - //println("cum gas used", cumGasUsed1, "first log index", firstLogIndex1, "txNum", txNum-uint64(i)) - } - firstGoodTxNum := txNum - uint64(i) - firstIndex := index - int(i) - cumGasUsed1 = cumGasUsed - i = 0 - for cumGasUsed1 == cumGasUsed { - i++ - var firstLogIndex1 uint32 - cumGasUsed1, _, firstLogIndex1, err = rawtemporaldb.ReceiptAsOf(tx, txNum+uint64(i)) - if err != nil { - return nil, err - } - - _ = firstLogIndex1 - //println("cum gas used", cumGasUsed1, "first log index", firstLogIndex1, "txNum", txNum+uint64(i)) - } - println("first good txnum is", firstGoodTxNum, firstIndex) - println("last good txnum is", txNum+uint64(i)) - println("our txnum is", txNum, index) // 1962853351 1962853463 - cumGasUsed1, _, firstLogIndex1, err := rawtemporaldb.ReceiptAsOf(tx, firstGoodTxNum) - if err != nil { - return nil, err - } - println("cum gas used first", cumGasUsed1, "first log index", firstLogIndex1, "txNum", firstGoodTxNum) - - cumGasUsed1, _, firstLogIndex1, err = rawtemporaldb.ReceiptAsOf(tx, txNum+uint64(i)) - if err != nil { - return nil, err - } - println("cum gas used last", cumGasUsed1, "first log index", firstLogIndex1, "txNum", txNum+uint64(i)) receipt, _, err = core.ApplyTransaction(cfg, core.GetHashFn(genEnv.header, genEnv.getHeader), g.engine, nil, genEnv.gp, genEnv.ibs, genEnv.noopWriter, genEnv.header, block.Transactions()[index], genEnv.usedGas, genEnv.usedBlobGas, vm.Config{}) if err != nil { @@ -178,8 +134,7 @@ func (g *Generator) GetReceipt(ctx context.Context, cfg *chain.Config, tx kv.Tem for i := range receipt.Logs { receipt.Logs[i].TxIndex = uint(index) - receipt.Logs[i].Index = uint(firstLogIndex) - firstLogIndex++ + receipt.Logs[i].Index = uint(firstLogIndex + uint32(i)) } return receipt, nil From 3197ebcb00055212a95eddbb2eab800a9aba40bd Mon Sep 17 00:00:00 2001 From: JkLondon Date: Wed, 11 Dec 2024 00:08:23 +0100 Subject: [PATCH 53/58] commit --- .github/workflows/scripts/run_rpc_tests.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/scripts/run_rpc_tests.sh b/.github/workflows/scripts/run_rpc_tests.sh index 64dfe5d1975..0200d4a5c13 100755 --- a/.github/workflows/scripts/run_rpc_tests.sh +++ b/.github/workflows/scripts/run_rpc_tests.sh @@ -19,6 +19,8 @@ disabled_tests=( eth_coinbase/test_01.json eth_createAccessList/test_16.json eth_getTransactionByHash/test_02.json + # Small prune issue that leads to wrong ReceiptDomain data at 16999999 (probably at every million) block: https://github.com/erigontech/erigon/issues/13050 + eth_getTransactionReceipt/test_04.json eth_getWork/test_01.json eth_mining/test_01.json eth_protocolVersion/test_1.json From d16da08854ff7d16bfcaf3985188f15b235baba9 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Wed, 11 Dec 2024 00:25:30 +0100 Subject: [PATCH 54/58] commit --- migrations/reset_stage_txn_lookup.go | 47 ++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 migrations/reset_stage_txn_lookup.go diff --git a/migrations/reset_stage_txn_lookup.go b/migrations/reset_stage_txn_lookup.go new file mode 100644 index 00000000000..d4c9e7cb8b2 --- /dev/null +++ b/migrations/reset_stage_txn_lookup.go @@ -0,0 +1,47 @@ +// Copyright 2024 The Erigon Authors +// This file is part of Erigon. +// +// Erigon is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Erigon is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with Erigon. If not, see . + +package migrations + +import ( + "context" + "github.com/erigontech/erigon-lib/common/datadir" + "github.com/erigontech/erigon-lib/kv" + "github.com/erigontech/erigon-lib/log/v3" + reset2 "github.com/erigontech/erigon/core/rawdb/rawdbreset" +) + +// for new txn index. +var ResetStageTxnLookup = Migration{ + Name: "reset_stage_txn_lookup", + Up: func(db kv.RwDB, dirs datadir.Dirs, progress []byte, BeforeCommit Callback, logger log.Logger) (err error) { + tx, err := db.BeginRw(context.Background()) + if err != nil { + return err + } + defer tx.Rollback() + + if err := BeforeCommit(tx, nil, true); err != nil { + return err + } + + if err := reset2.ResetTxLookup(tx); err != nil { + return err + } + + return tx.Commit() + }, +} From 5d8d655ee7ec2902fa6d60c67d41635469789317 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Wed, 11 Dec 2024 00:27:34 +0100 Subject: [PATCH 55/58] commit --- migrations/migrations.go | 1 + 1 file changed, 1 insertion(+) diff --git a/migrations/migrations.go b/migrations/migrations.go index 211d77f860e..5fc2d4ed99b 100644 --- a/migrations/migrations.go +++ b/migrations/migrations.go @@ -55,6 +55,7 @@ var migrations = map[kv.Label][]Migration{ ProhibitNewDownloadsLock, ProhibitNewDownloadsLock2, ClearBorTables, + ResetStageTxnLookup, }, kv.TxPoolDB: {}, kv.SentryDB: {}, From 9c93710524b8187b30c5149a7fa697f83d8dcc68 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Wed, 11 Dec 2024 00:32:18 +0100 Subject: [PATCH 56/58] commit --- turbo/jsonrpc/eth_receipts.go | 1 - turbo/snapshotsync/freezeblocks/block_reader.go | 2 -- 2 files changed, 3 deletions(-) diff --git a/turbo/jsonrpc/eth_receipts.go b/turbo/jsonrpc/eth_receipts.go index 5a9950bbcc8..10edc6a73a5 100644 --- a/turbo/jsonrpc/eth_receipts.go +++ b/turbo/jsonrpc/eth_receipts.go @@ -422,7 +422,6 @@ func (api *APIImpl) GetTransactionReceipt(ctx context.Context, txnHash common.Ha if !ok && chainConfig.Bor == nil { return nil, nil } - println("txNum", txNum) // Private API returns 0 if transaction is not found. if blockNum == 0 && chainConfig.Bor != nil { diff --git a/turbo/snapshotsync/freezeblocks/block_reader.go b/turbo/snapshotsync/freezeblocks/block_reader.go index 361d619becc..0ab0faac892 100644 --- a/turbo/snapshotsync/freezeblocks/block_reader.go +++ b/turbo/snapshotsync/freezeblocks/block_reader.go @@ -1185,7 +1185,6 @@ func (r *BlockReader) TxnLookup(_ context.Context, tx kv.Getter, txnHash common. } if blockNumPointer != nil && txNumPointer != nil { - println("from db") return *blockNumPointer, *txNumPointer, true, nil } @@ -1195,7 +1194,6 @@ func (r *BlockReader) TxnLookup(_ context.Context, tx kv.Getter, txnHash common. if err != nil { return 0, 0, false, err } - println("from files") return blockNum, txNum, ok, nil } From f80a0e035137e489e2c28e5f59a2eed658d3dce0 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Wed, 11 Dec 2024 10:03:45 +0100 Subject: [PATCH 57/58] commit --- .github/workflows/scripts/run_rpc_tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scripts/run_rpc_tests.sh b/.github/workflows/scripts/run_rpc_tests.sh index 0200d4a5c13..9bca1c130be 100755 --- a/.github/workflows/scripts/run_rpc_tests.sh +++ b/.github/workflows/scripts/run_rpc_tests.sh @@ -20,7 +20,7 @@ disabled_tests=( eth_createAccessList/test_16.json eth_getTransactionByHash/test_02.json # Small prune issue that leads to wrong ReceiptDomain data at 16999999 (probably at every million) block: https://github.com/erigontech/erigon/issues/13050 - eth_getTransactionReceipt/test_04.json + ots_searchTransactionsBefore/test_04.json eth_getWork/test_01.json eth_mining/test_01.json eth_protocolVersion/test_1.json From a3b6cfbb0e813d1f8b3b26aeb0958df50e16b218 Mon Sep 17 00:00:00 2001 From: JkLondon Date: Wed, 11 Dec 2024 10:31:18 +0100 Subject: [PATCH 58/58] commit --- .github/workflows/scripts/run_rpc_tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scripts/run_rpc_tests.sh b/.github/workflows/scripts/run_rpc_tests.sh index 9bca1c130be..74e68533e7b 100755 --- a/.github/workflows/scripts/run_rpc_tests.sh +++ b/.github/workflows/scripts/run_rpc_tests.sh @@ -20,7 +20,7 @@ disabled_tests=( eth_createAccessList/test_16.json eth_getTransactionByHash/test_02.json # Small prune issue that leads to wrong ReceiptDomain data at 16999999 (probably at every million) block: https://github.com/erigontech/erigon/issues/13050 - ots_searchTransactionsBefore/test_04.json + ots_searchTransactionsBefore/test_04.tar eth_getWork/test_01.json eth_mining/test_01.json eth_protocolVersion/test_1.json