diff --git a/block/manager.go b/block/manager.go index ae1e620aad..9cdde7fdd9 100644 --- a/block/manager.go +++ b/block/manager.go @@ -26,6 +26,7 @@ import ( goheaderstore "github.com/celestiaorg/go-header/store" + execution "github.com/LastL2/go-execution-abci" "github.com/rollkit/go-sequencing" "github.com/rollkit/go-sequencing/proxy/grpc" "github.com/rollkit/rollkit/config" @@ -110,8 +111,6 @@ type Manager struct { proposerKey crypto.PrivKey - executor *state.BlockExecutor - dalc *da.DAClient // daHeight is the height of the latest processed DA block daHeight uint64 @@ -157,6 +156,7 @@ type Manager struct { seqClient *grpc.Client lastBatchHash []byte bq *BatchQueue + execClient *execution.ABCIExecutionClient } // getInitialState tries to load lastState from Store, and if it's not available it reads GenesisDoc. @@ -242,16 +242,16 @@ func NewManager( // allow buffer for the block header and protocol encoding maxBlobSize -= blockProtocolOverhead - exec := state.NewBlockExecutor(proposerAddress, genesis.ChainID, mempool, mempoolReaper, proxyApp, eventBus, maxBlobSize, logger, execMetrics) + execClient := execution.NewABCIExecutionClient(proposerAddress, genesis.ChainID, mempool, mempoolReaper, proxyApp, eventBus, maxBlobSize, logger, execMetrics, store, genesis, &s) if s.LastBlockHeight+1 == uint64(genesis.InitialHeight) { //nolint:gosec - res, err := exec.InitChain(genesis) + stateRoot, _, err := execClient.InitChain(genesis.GenesisTime, uint64(genesis.InitialHeight), genesis.ChainID) if err != nil { return nil, err } - if err := updateState(&s, res); err != nil { + // TO-DO updateState needs to be decoupled from ABCI + if err := updateState(&s, stateRoot); err != nil { return nil, err } - if err := store.UpdateState(context.Background(), s); err != nil { return nil, err } @@ -273,7 +273,6 @@ func NewManager( genesis: genesis, lastState: s, store: store, - executor: exec, dalc: dalc, daHeight: s.DAHeight, // channels are buffered to avoid blocking on input/output operations, buffer sizes are arbitrary @@ -296,6 +295,7 @@ func NewManager( isProposer: isProposer, seqClient: seqClient, bq: NewBatchQueue(), + execClient: execClient, } agg.init(context.Background()) return agg, nil @@ -726,7 +726,7 @@ func (m *Manager) trySyncNextBlock(ctx context.Context, daHeight uint64) error { hHeight := h.Height() m.logger.Info("Syncing header and data", "height", hHeight) // Validate the received block before applying - if err := m.executor.Validate(m.lastState, h, d); err != nil { + if err := m.execClient.Validate(m.lastState, h, d); err != nil { return fmt.Errorf("failed to validate block: %w", err) } newState, responses, err := m.applyBlock(ctx, h, d) @@ -741,7 +741,7 @@ func (m *Manager) trySyncNextBlock(ctx context.Context, daHeight uint64) error { if err != nil { return SaveBlockError{err} } - _, _, err = m.executor.Commit(ctx, newState, h, d, responses) + _, _, err = m.execClient.Commit(ctx, newState, h, d, responses) if err != nil { return fmt.Errorf("failed to Commit: %w", err) } @@ -1141,7 +1141,7 @@ func (m *Manager) publishBlock(ctx context.Context) error { LastDataHash: lastDataHash, } // Validate the created block before storing - if err := m.executor.Validate(m.lastState, header, data); err != nil { + if err := m.execClient.Validate(m.lastState, header, data); err != nil { return fmt.Errorf("failed to validate block: %w", err) } @@ -1157,7 +1157,7 @@ func (m *Manager) publishBlock(ctx context.Context) error { } // Commit the new state and block which writes to disk on the proxy app - appHash, _, err := m.executor.Commit(ctx, newState, header, data, responses) + appHash, _, err := m.execClient.Commit(ctx, newState, header, data, responses) if err != nil { return err } @@ -1226,7 +1226,7 @@ func (m *Manager) processVoteExtension(ctx context.Context, header *types.Signed return nil } - extension, err := m.executor.ExtendVote(ctx, header, data) + extension, err := m.execClient.ExtendVote(ctx, header, data) if err != nil { return fmt.Errorf("error returned by ExtendVote: %w", err) } @@ -1426,25 +1426,47 @@ func (m *Manager) getLastBlockTime() time.Time { func (m *Manager) createBlock(height uint64, lastSignature *types.Signature, lastHeaderHash types.Hash, extendedCommit abci.ExtendedCommitInfo, txs cmtypes.Txs, timestamp time.Time) (*types.SignedHeader, *types.Data, error) { m.lastStateMtx.RLock() defer m.lastStateMtx.RUnlock() - return m.executor.CreateBlock(height, lastSignature, extendedCommit, lastHeaderHash, m.lastState, txs, timestamp) + return m.execClient.CreateBlock(height, lastSignature, extendedCommit, lastHeaderHash, m.lastState, txs, timestamp) } func (m *Manager) applyBlock(ctx context.Context, header *types.SignedHeader, data *types.Data) (types.State, *abci.ResponseFinalizeBlock, error) { m.lastStateMtx.RLock() defer m.lastStateMtx.RUnlock() - return m.executor.ApplyBlock(ctx, m.lastState, header, data) + return m.execClient.ApplyBlock(ctx, m.lastState, header, data) } -func updateState(s *types.State, res *abci.ResponseInitChain) error { +func updateState(s *types.State, stateRoot []byte) error { + initChainResponse := &abci.ResponseInitChain{ + AppHash: stateRoot, + ConsensusParams: &cmproto.ConsensusParams{ + Block: &cmproto.BlockParams{ + MaxBytes: s.ConsensusParams.Block.MaxBytes, + MaxGas: s.ConsensusParams.Block.MaxGas, + }, + Evidence: &cmproto.EvidenceParams{ + MaxAgeNumBlocks: s.ConsensusParams.Evidence.MaxAgeNumBlocks, + MaxAgeDuration: s.ConsensusParams.Evidence.MaxAgeDuration, + MaxBytes: s.ConsensusParams.Evidence.MaxBytes, + }, + Validator: &cmproto.ValidatorParams{ + PubKeyTypes: s.ConsensusParams.Validator.PubKeyTypes, + }, + Version: &cmproto.VersionParams{ + App: s.ConsensusParams.Version.App, + }, + }, + Validators: cmtypes.TM2PB.ValidatorUpdates(s.Validators), + } + // If the app did not return an app hash, we keep the one set from the genesis doc in // the state. We don't set appHash since we don't want the genesis doc app hash // recorded in the genesis block. We should probably just remove GenesisDoc.AppHash. - if len(res.AppHash) > 0 { - s.AppHash = res.AppHash + if len(initChainResponse.AppHash) > 0 { + s.AppHash = initChainResponse.AppHash } - if res.ConsensusParams != nil { - params := res.ConsensusParams + if initChainResponse.ConsensusParams != nil { + params := initChainResponse.ConsensusParams if params.Block != nil { s.ConsensusParams.Block.MaxBytes = params.Block.MaxBytes s.ConsensusParams.Block.MaxGas = params.Block.MaxGas @@ -1467,7 +1489,7 @@ func updateState(s *types.State, res *abci.ResponseInitChain) error { // We update the last results hash with the empty hash, to conform with RFC-6962. s.LastResultsHash = merkle.HashFromByteSlices(nil) - vals, err := cmtypes.PB2TM.ValidatorUpdates(res.Validators) + vals, err := cmtypes.PB2TM.ValidatorUpdates(initChainResponse.Validators) if err != nil { return err } diff --git a/go.mod b/go.mod index 0abb410998..5e5597b9e0 100644 --- a/go.mod +++ b/go.mod @@ -1,14 +1,19 @@ module github.com/rollkit/rollkit -go 1.22 +go 1.22.7 -toolchain go1.22.2 +toolchain go1.22.8 retract v0.12.0 // Published by accident +replace ( + github.com/LastL2/go-execution => github.com/LastL2/go-execution v0.0.0-20241025044830-6028e95ddb3a + github.com/LastL2/go-execution-abci => github.com/LastL2/go-execution-abci v0.0.0-20241025051413-29b6d20dab76 +) + require ( github.com/celestiaorg/utils v0.1.0 - github.com/cometbft/cometbft v0.38.12 + github.com/cometbft/cometbft v0.38.13 github.com/cosmos/gogoproto v1.7.0 github.com/go-kit/kit v0.13.0 github.com/gogo/protobuf v1.3.2 @@ -36,6 +41,7 @@ require ( require ( github.com/BurntSushi/toml v1.4.0 + github.com/LastL2/go-execution-abci v0.0.0-00010101000000-000000000000 github.com/btcsuite/btcd/btcec/v2 v2.3.4 github.com/celestiaorg/go-header v0.6.2 github.com/ipfs/go-ds-badger4 v0.1.5 @@ -45,29 +51,28 @@ require ( require ( github.com/DataDog/zstd v1.4.5 // indirect + github.com/LastL2/go-execution v0.0.0-00010101000000-000000000000 // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect github.com/benbjohnson/clock v1.3.5 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.0.2 // indirect github.com/celestiaorg/go-libp2p-messenger v0.2.0 // indirect - github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/cockroachdb/errors v1.11.3 // indirect github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect - github.com/cockroachdb/pebble v1.1.1 // indirect + github.com/cockroachdb/pebble v1.1.2 // indirect github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect - github.com/cometbft/cometbft-db v0.11.0 // indirect + github.com/cometbft/cometbft-db v0.14.1 // indirect github.com/containerd/cgroups v1.1.0 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect - github.com/dgraph-io/badger/v2 v2.2007.4 // indirect github.com/dgraph-io/badger/v4 v4.2.1-0.20231013074411-fb1b00959581 // indirect github.com/dgraph-io/ristretto v0.1.1 // indirect - github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/elastic/gosigar v0.14.3 // indirect @@ -85,8 +90,8 @@ require ( github.com/golang/glog v1.2.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/golang/snappy v0.0.4 // indirect - github.com/google/btree v1.1.2 // indirect + github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect + github.com/google/btree v1.1.3 // indirect github.com/google/flatbuffers v1.12.1 // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/gopacket v1.1.19 // indirect @@ -114,7 +119,7 @@ require ( github.com/koron/go-ssdp v0.0.4 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect - github.com/lib/pq v1.10.7 // indirect + github.com/lib/pq v1.10.9 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/libp2p/go-cidranger v1.1.0 // indirect github.com/libp2p/go-flow-metrics v0.1.0 // indirect @@ -127,14 +132,14 @@ require ( github.com/libp2p/go-netroute v0.2.1 // indirect github.com/libp2p/go-reuseport v0.4.0 // indirect github.com/libp2p/go-yamux/v4 v4.0.1 // indirect - github.com/linxGnu/grocksdb v1.8.12 // indirect + github.com/linxGnu/grocksdb v1.8.14 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/miekg/dns v1.1.62 // indirect github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b // indirect github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect - github.com/minio/highwayhash v1.0.2 // indirect + github.com/minio/highwayhash v1.0.3 // indirect github.com/minio/sha256-simd v1.0.1 // indirect github.com/mr-tron/base58 v1.2.0 // indirect github.com/multiformats/go-base32 v0.1.0 // indirect @@ -153,7 +158,7 @@ require ( github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect github.com/pelletier/go-toml/v2 v2.2.2 // indirect - github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 // indirect + github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 // indirect github.com/pion/datachannel v1.5.8 // indirect github.com/pion/dtls/v2 v2.2.12 // indirect github.com/pion/ice/v2 v2.3.34 // indirect @@ -173,7 +178,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/polydawn/refmt v0.89.0 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.55.0 // indirect + github.com/prometheus/common v0.59.1 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/quic-go/qpack v0.4.0 // indirect github.com/quic-go/quic-go v0.46.0 // indirect @@ -184,7 +189,7 @@ require ( github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect - github.com/sasha-s/go-deadlock v0.3.1 // indirect + github.com/sasha-s/go-deadlock v0.3.5 // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/spaolacci/murmur3 v1.1.0 // indirect github.com/spf13/afero v1.11.0 // indirect @@ -195,7 +200,7 @@ require ( github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 // indirect github.com/wlynxg/anet v0.0.4 // indirect - go.etcd.io/bbolt v1.3.10 // indirect + go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/otel v1.27.0 // indirect go.opentelemetry.io/otel/metric v1.27.0 // indirect @@ -212,7 +217,7 @@ require ( golang.org/x/text v0.18.0 // indirect golang.org/x/tools v0.24.0 // indirect golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect - gonum.org/v1/gonum v0.15.0 // indirect + gonum.org/v1/gonum v0.15.1 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240827150818-7e3bb234dfed // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index 83af281415..f8ae669e7f 100644 --- a/go.sum +++ b/go.sum @@ -94,17 +94,20 @@ github.com/GaijinEntertainment/go-exhaustruct/v2 v2.2.0/go.mod h1:n/vLeA7V+QY84i github.com/HdrHistogram/hdrhistogram-go v1.1.0/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/LastL2/go-execution v0.0.0-20241025044830-6028e95ddb3a h1:l3EnFurDODyP+abpbtfb6v/F7TQmkMIYKRVu6xygO9c= +github.com/LastL2/go-execution v0.0.0-20241025044830-6028e95ddb3a/go.mod h1:PM6JVuwMV/RZa3SYq6vznGpzcfKFy6KYaDauAPQ13qc= +github.com/LastL2/go-execution-abci v0.0.0-20241025051413-29b6d20dab76 h1:kxLHjmIKg40w0bVXRig19G68jIyip4bwzxchs4z3gbA= +github.com/LastL2/go-execution-abci v0.0.0-20241025051413-29b6d20dab76/go.mod h1:L4nAeWqaTqak+qitl+NSoNudjC6umsi4sI7LtflAc6A= github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Masterminds/sprig v2.15.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= -github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= -github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= -github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OpenPeeDeeP/depguard v1.1.0/go.mod h1:JtAMzWkmFEzDPyAd+W0NHl1lvpQKTvT9jnRVsohBKpc= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= @@ -112,8 +115,9 @@ github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMx github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/Workiva/go-datastructures v1.0.53/go.mod h1:1yZL+zfsztete+ePzZz/Zb1/t5BnDuE2Ya2MMGhzP6A= -github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I= github.com/adlio/schema v1.3.3/go.mod h1:1EsRssiv9/Ce2CMzq5DoL7RiMshhuigQxrR4DMV9fHg= +github.com/adlio/schema v1.3.6 h1:k1/zc2jNfeiZBA5aFTRy37jlBIuCkXCm0XmvpzCKI9I= +github.com/adlio/schema v1.3.6/go.mod h1:qkxwLgPBd1FgLRHYVCmQT/rrBr3JH38J9LjmVzWNudg= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= @@ -208,7 +212,6 @@ github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInq github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -248,17 +251,17 @@ github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce h1:giXvy4KSc/6g/e github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= -github.com/cockroachdb/pebble v1.1.1 h1:XnKU22oiCLy2Xn8vp1re67cXg4SAasg/WDt1NtcRFaw= -github.com/cockroachdb/pebble v1.1.1/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU= +github.com/cockroachdb/pebble v1.1.2 h1:CUh2IPtR4swHlEj48Rhfzw6l/d0qA31fItcIszQVIsA= +github.com/cockroachdb/pebble v1.1.2/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/cometbft/cometbft v0.38.12 h1:OWsLZN2KcSSFe8bet9xCn07VwhBnavPea3VyPnNq1bg= -github.com/cometbft/cometbft v0.38.12/go.mod h1:GPHp3/pehPqgX1930HmK1BpBLZPxB75v/dZg8Viwy+o= -github.com/cometbft/cometbft-db v0.11.0 h1:M3Lscmpogx5NTbb1EGyGDaFRdsoLWrUWimFEyf7jej8= -github.com/cometbft/cometbft-db v0.11.0/go.mod h1:GDPJAC/iFHNjmZZPN8V8C1yr/eyityhi2W1hz2MGKSc= +github.com/cometbft/cometbft v0.38.13 h1:k0ssyC8W0FfFvGpSHpojZ4JrXAANlJEIM41hjRq6OoU= +github.com/cometbft/cometbft v0.38.13/go.mod h1:NMmNysQM+T5uxTXVLMgzcvq35OVOyC7GK2/bnHqldjE= +github.com/cometbft/cometbft-db v0.14.1 h1:SxoamPghqICBAIcGpleHbmoPqy+crij/++eZz3DlerQ= +github.com/cometbft/cometbft-db v0.14.1/go.mod h1:KHP1YghilyGV/xjD5DP3+2hyigWx0WTp9X+0Gnx0RxQ= github.com/containerd/cgroups v0.0.0-20201119153540-4cbc285b3327/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= github.com/containerd/cgroups v1.0.3/go.mod h1:/ofk34relqNjSGyqPrmEULrO4Sc8LJhvJmWbUCUKqj8= github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= @@ -316,8 +319,6 @@ github.com/denis-tingaikin/go-header v0.4.3/go.mod h1:0wOCWuN71D5qIgE2nz9KrKmuYB github.com/denisenkom/go-mssqldb v0.12.0/go.mod h1:iiK0YP1ZeepvmBQk/QpLEhhTNJgfzrpArPY/aFvc9yU= github.com/dgraph-io/badger v1.6.2/go.mod h1:JW2yswe3V058sS0kZ2h/AXeDSqFjxnZcRrVH//y2UQE= github.com/dgraph-io/badger/v2 v2.2007.2/go.mod h1:26P/7fbL4kUZVEVKLAKXkBXKOydDmM2p1e+NhhnBCAE= -github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= -github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= github.com/dgraph-io/badger/v4 v4.2.1-0.20231013074411-fb1b00959581 h1:yy45brf1ktmnkTCZlHynP1gRlVwZ9g19oz5D9wG81v4= github.com/dgraph-io/badger/v4 v4.2.1-0.20231013074411-fb1b00959581/go.mod h1:T/uWAYxrXdaXw64ihI++9RMbKTCpKd/yE9+saARew7k= github.com/dgraph-io/ristretto v0.0.2/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= @@ -518,8 +519,9 @@ github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6 github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= +github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2/go.mod h1:k9Qvh+8juN+UKMCS/3jFtGICgW8O96FVaZsaxdzDkR4= github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk= github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe/go.mod h1:gjqyPShc/m8pEMpk0a3SeagVb0kaqvhscv+i9jI5ZhQ= @@ -532,8 +534,8 @@ github.com/golangci/revgrep v0.0.0-20210930125155-c22e5001d4f2/go.mod h1:LK+zW4M github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4/go.mod h1:Izgrg8RkN3rCIMLGE9CyYmU9pY2Jer6DgANEnZ/L/cQ= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= -github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= +github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/certificate-transparency-go v1.0.21/go.mod h1:QeJfpSbVSfYc7RgB3gJFj9cbuQMMchQxrWXz8Ruopmg= github.com/google/certificate-transparency-go v1.1.1/go.mod h1:FDKqPvSXawb2ecErVRrD+nfy23RCzyl7eqVCEmlT1Zs= github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw= @@ -822,7 +824,6 @@ github.com/kisielk/errcheck v1.6.1/go.mod h1:nXw/i/MfnvRHqXa7XXmQMUB0oNFGuBrNI8d github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.5/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= @@ -870,8 +871,8 @@ github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lib/pq v1.9.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lib/pq v1.10.4/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= -github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= +github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libp2p/go-addr-util v0.1.0/go.mod h1:6I3ZYuFr2O/9D+SoyM0zEw0EF3YkldtTX406BpdQMqw= github.com/libp2p/go-buffer-pool v0.0.1/go.mod h1:xtyIz9PMobb13WaxR6Zo1Pd1zXJKYg0a8KiIvDp3TzQ= github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM= @@ -990,8 +991,8 @@ github.com/libp2p/go-yamux/v4 v4.0.1/go.mod h1:NWjl8ZTLOGlozrXSOZ/HlfG++39iKNnM5 github.com/libp2p/zeroconf/v2 v2.1.1/go.mod h1:fuJqLnUwZTshS3U/bMRJ3+ow/v9oid1n0DmyYyNO1Xs= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/linxGnu/grocksdb v1.8.12 h1:1/pCztQUOa3BX/1gR3jSZDoaKFpeHFvQ1XrqZpSvZVo= -github.com/linxGnu/grocksdb v1.8.12/go.mod h1:xZCIb5Muw+nhbDK4Y5UJuOrin5MceOuiXkVUR7vp4WY= +github.com/linxGnu/grocksdb v1.8.14 h1:HTgyYalNwBSG/1qCQUIott44wU5b2Y9Kr3z7SK5OfGQ= +github.com/linxGnu/grocksdb v1.8.14/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= github.com/lucas-clemente/quic-go v0.23.0/go.mod h1:paZuzjXCE5mj6sikVLMvqXk8lJV2AsqtJ6bDhjEfxx0= github.com/lucas-clemente/quic-go v0.25.0/go.mod h1:YtzP8bxRVCBlO77yRanE264+fY/T2U9ZlW1AaHOsMOg= github.com/lucas-clemente/quic-go v0.27.0/go.mod h1:AzgQoPda7N+3IqMMMkywBKggIFo2KT6pfnlrQ2QieeI= @@ -1068,8 +1069,9 @@ github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc h1:PTfri+PuQmWDqERdn github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc/go.mod h1:cGKTAVKx4SxOuR/czcZ/E2RSJ3sfHs8FpHhQ5CWMf9s= github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ= github.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= +github.com/minio/highwayhash v1.0.3 h1:kbnuUMoHYyVl7szWjSxJnxw11k2U709jqFPPmIUyD6Q= +github.com/minio/highwayhash v1.0.3/go.mod h1:GGYsuwP/fPD6Y9hMiXuapVvlIUEhFhMTh0rxU3ik1LQ= github.com/minio/sha256-simd v0.0.0-20190131020904-2d45a736cd16/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= github.com/minio/sha256-simd v0.0.0-20190328051042-05b4dd3047e5/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= github.com/minio/sha256-simd v0.1.0/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= @@ -1242,8 +1244,9 @@ github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zM github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034= github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= github.com/opencontainers/runc v1.1.2/go.mod h1:Tj1hFw6eFWp/o33uxGf5yF2BX5yz2Z6iptFpuvbbKqc= -github.com/opencontainers/runc v1.1.3 h1:vIXrkId+0/J2Ymu2m7VjGvbSlAId9XNRPhn2p4b+d8w= github.com/opencontainers/runc v1.1.3/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= +github.com/opencontainers/runc v1.1.12 h1:BOIssBaW1La0/qbNZHXOOa71dZfZEQOzW7dqQf3phss= +github.com/opencontainers/runc v1.1.12/go.mod h1:S+lQwSfncpBha7XTy/5lBwWgm5+y5Ma/O44Ekby9FK8= github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.2.0 h1:z97+pHb3uELt/yiAWD691HNHQIF07bE7dzrbT927iTk= @@ -1287,8 +1290,8 @@ github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9 github.com/performancecopilot/speed/v4 v4.0.0/go.mod h1:qxrSyuDGrTOWfV+uKRFhfxw6h/4HXRGUiZiufxo49BM= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= -github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 h1:hDSdbBuw3Lefr6R18ax0tZ2BJeNB3NehB3trOwYBsdU= -github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 h1:Dx7Ovyv/SFnMFw3fD4oEoeorXc6saIiQ23LrGLth0Gw= +github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d/go.mod h1:3OzsM7FXDQlpCiw2j81fOmAwQLnZnLGXVKUzeKQXIAw= github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= @@ -1393,8 +1396,8 @@ github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9 github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/common v0.33.0/go.mod h1:gB3sOl7P0TvJabZpLY5uQMpUqRCPPCyRLCZYc7JZTNE= -github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= -github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= +github.com/prometheus/common v0.59.1 h1:LXb1quJHWm1P6wq/U824uxYi4Sg0oGvNeUm1z5dJoX0= +github.com/prometheus/common v0.59.1/go.mod h1:GpWM7dewqmVYcd7SmRaiWVe9SSqjf0UrwnYnpEZNuT0= github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= @@ -1469,8 +1472,8 @@ github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWR github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/sanposhiho/wastedassign/v2 v2.0.6/go.mod h1:KyZ0MWTwxxBmfwn33zh3k1dmsbF2ud9pAAGfoLfjhtI= github.com/sasha-s/go-deadlock v0.2.1-0.20190427202633-1595213edefa/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= -github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= -github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= +github.com/sasha-s/go-deadlock v0.3.5 h1:tNCOEEDG6tBqrNDOX35j/7hL5FcFViG6awUGROb2NsU= +github.com/sasha-s/go-deadlock v0.3.5/go.mod h1:bugP6EGbdGYObIlx7pUZtWqlvo8k9H6vCBBsiChJQ5U= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/seccomp/libseccomp-golang v0.9.2-0.20210429002308-3879420cc921/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= @@ -1507,8 +1510,8 @@ github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6Mwd github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= -github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/sivchari/containedctx v1.0.2/go.mod h1:PwZOeqm4/DLoJOqMSIJs3aKqXRX4YO+uXww087KZ7Bw= github.com/sivchari/nosnakecase v1.5.0/go.mod h1:CwDzrzPea40/GB6uynrNLiorAlgFRvRbFSgJx2Gs+QY= github.com/sivchari/tenv v1.6.0/go.mod h1:64yStXKSOxDfX47NlhVwND4dHwfZDdbp2Lyl018Icvg= @@ -1680,8 +1683,8 @@ gitlab.com/bosi/decorder v0.2.2/go.mod h1:9K1RB5+VPNQYtXtTDAzd2OEftsZb1oV0IrJrzC go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= -go.etcd.io/bbolt v1.3.10 h1:+BqfJTcCzTItrop8mq/lbzL8wSGtj94UO/3U31shqG0= -go.etcd.io/bbolt v1.3.10/go.mod h1:bK3UQLPJZly7IlNmV7uVHJDxfe5aK9Ll93e/74Y9oEQ= +go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 h1:qxen9oVGzDdIRP6ejyAJc760RwW4SnVDiTYTzwnXuxo= +go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5/go.mod h1:eW0HG9/oHQhvRCvb1/pIXW4cOvtDqeQK+XSi3TnwaXY= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.etcd.io/etcd v0.0.0-20200513171258-e048e166ab9c/go.mod h1:xCI7ZzBfRuGgBXyXO6yfWfDmlWd35khcWpUa4L0xI/k= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= @@ -2117,6 +2120,7 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= @@ -2274,8 +2278,8 @@ golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSm golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= -gonum.org/v1/gonum v0.15.0 h1:2lYxjRbTYyxkJxlhC+LvJIx3SsANPdRybu1tGj9/OrQ= -gonum.org/v1/gonum v0.15.0/go.mod h1:xzZVBJBtS+Mz4q0Yl2LJTk+OxOg4jiXZ7qBoM0uISGo= +gonum.org/v1/gonum v0.15.1 h1:FNy7N6OUZVUaWG9pTiD+jlhdQ3lMP+/LcTpJ6+a8sQ0= +gonum.org/v1/gonum v0.15.1/go.mod h1:eZTZuRFrzu5pcyjN5wJhcIhnUdNijYxX1T2IcrOGY0o= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= diff --git a/state/executor.go b/state/executor.go deleted file mode 100644 index d5ce1df0db..0000000000 --- a/state/executor.go +++ /dev/null @@ -1,551 +0,0 @@ -package state - -import ( - "bytes" - "context" - "errors" - "fmt" - "time" - - abci "github.com/cometbft/cometbft/abci/types" - cmbytes "github.com/cometbft/cometbft/libs/bytes" - cmproto "github.com/cometbft/cometbft/proto/tendermint/types" - "github.com/cometbft/cometbft/proxy" - cmtypes "github.com/cometbft/cometbft/types" - - "github.com/rollkit/rollkit/mempool" - "github.com/rollkit/rollkit/third_party/log" - "github.com/rollkit/rollkit/types" - abciconv "github.com/rollkit/rollkit/types/abci" -) - -// ErrEmptyValSetGenerated is returned when applying the validator changes would result in empty set. -var ErrEmptyValSetGenerated = errors.New("applying the validator changes would result in empty set") - -// ErrAddingValidatorToBased is returned when trying to add a validator to an empty validator set. -var ErrAddingValidatorToBased = errors.New("cannot add validators to empty validator set") - -// BlockExecutor creates and applies blocks and maintains state. -type BlockExecutor struct { - proposerAddress []byte - chainID string - proxyApp proxy.AppConnConsensus - mempool mempool.Mempool - mempoolReaper *mempool.CListMempoolReaper - maxBytes uint64 - - eventBus *cmtypes.EventBus - - logger log.Logger - - metrics *Metrics -} - -// NewBlockExecutor creates new instance of BlockExecutor. -func NewBlockExecutor(proposerAddress []byte, chainID string, mempool mempool.Mempool, mempoolReaper *mempool.CListMempoolReaper, proxyApp proxy.AppConnConsensus, eventBus *cmtypes.EventBus, maxBytes uint64, logger log.Logger, metrics *Metrics) *BlockExecutor { - return &BlockExecutor{ - proposerAddress: proposerAddress, - chainID: chainID, - proxyApp: proxyApp, - mempool: mempool, - mempoolReaper: mempoolReaper, - eventBus: eventBus, - maxBytes: maxBytes, - logger: logger, - metrics: metrics, - } -} - -// InitChain calls InitChainSync using consensus connection to app. -func (e *BlockExecutor) InitChain(genesis *cmtypes.GenesisDoc) (*abci.ResponseInitChain, error) { - params := genesis.ConsensusParams - - validators := make([]*cmtypes.Validator, len(genesis.Validators)) - for i, v := range genesis.Validators { - validators[i] = cmtypes.NewValidator(v.PubKey, v.Power) - } - - return e.proxyApp.InitChain(context.Background(), &abci.RequestInitChain{ - Time: genesis.GenesisTime, - ChainId: genesis.ChainID, - ConsensusParams: &cmproto.ConsensusParams{ - Block: &cmproto.BlockParams{ - MaxBytes: params.Block.MaxBytes, - MaxGas: params.Block.MaxGas, - }, - Evidence: &cmproto.EvidenceParams{ - MaxAgeNumBlocks: params.Evidence.MaxAgeNumBlocks, - MaxAgeDuration: params.Evidence.MaxAgeDuration, - MaxBytes: params.Evidence.MaxBytes, - }, - Validator: &cmproto.ValidatorParams{ - PubKeyTypes: params.Validator.PubKeyTypes, - }, - Version: &cmproto.VersionParams{ - App: params.Version.App, - }, - Abci: &cmproto.ABCIParams{ - VoteExtensionsEnableHeight: params.ABCI.VoteExtensionsEnableHeight, - }, - }, - Validators: cmtypes.TM2PB.ValidatorUpdates(cmtypes.NewValidatorSet(validators)), - AppStateBytes: genesis.AppState, - InitialHeight: genesis.InitialHeight, - }) -} - -// CreateBlock reaps transactions from mempool and builds a block. -func (e *BlockExecutor) CreateBlock(height uint64, lastSignature *types.Signature, lastExtendedCommit abci.ExtendedCommitInfo, lastHeaderHash types.Hash, state types.State, txs cmtypes.Txs, timestamp time.Time) (*types.SignedHeader, *types.Data, error) { - maxBytes := state.ConsensusParams.Block.MaxBytes - emptyMaxBytes := maxBytes == -1 - if emptyMaxBytes { - maxBytes = int64(cmtypes.MaxBlockSizeBytes) - } - if maxBytes > int64(e.maxBytes) { //nolint:gosec - e.logger.Debug("limiting maxBytes to", "e.maxBytes=%d", e.maxBytes) - maxBytes = int64(e.maxBytes) //nolint:gosec - } - - header := &types.SignedHeader{ - Header: types.Header{ - Version: types.Version{ - Block: state.Version.Consensus.Block, - App: state.Version.Consensus.App, - }, - BaseHeader: types.BaseHeader{ - ChainID: e.chainID, - Height: height, - Time: uint64(timestamp.UnixNano()), //nolint:gosec - }, - DataHash: make(types.Hash, 32), - ConsensusHash: make(types.Hash, 32), - AppHash: state.AppHash, - LastResultsHash: state.LastResultsHash, - ProposerAddress: e.proposerAddress, - }, - Signature: *lastSignature, - } - data := &types.Data{ - Txs: toRollkitTxs(txs), - // IntermediateStateRoots: types.IntermediateStateRoots{RawRootsList: nil}, - // Note: Temporarily remove Evidence #896 - // Evidence: types.EvidenceData{Evidence: nil}, - } - - rpp, err := e.proxyApp.PrepareProposal( - context.TODO(), - &abci.RequestPrepareProposal{ - MaxTxBytes: maxBytes, - Txs: txs.ToSliceOfBytes(), - LocalLastCommit: lastExtendedCommit, - Misbehavior: []abci.Misbehavior{}, - Height: int64(header.Height()), //nolint:gosec - Time: header.Time(), //TODO: replace with sequencer timestamp - NextValidatorsHash: state.Validators.Hash(), - ProposerAddress: e.proposerAddress, - }, - ) - if err != nil { - // The App MUST ensure that only valid (and hence 'processable') transactions - // enter the mempool. Hence, at this point, we can't have any non-processable - // transaction causing an error. - // - // Also, the App can simply skip any transaction that could cause any kind of trouble. - // Either way, we cannot recover in a meaningful way, unless we skip proposing - // this block, repair what caused the error and try again. Hence, we return an - // error for now (the production code calling this function is expected to panic). - return nil, nil, err - } - - txl := cmtypes.ToTxs(rpp.Txs) - if err := txl.Validate(maxBytes); err != nil { - return nil, nil, err - } - - data.Txs = toRollkitTxs(txl) - // Note: This is hash of an ABCI type commit equivalent of the last signature in the signed header. - header.LastCommitHash = lastSignature.GetCommitHash(&header.Header, e.proposerAddress) - header.LastHeaderHash = lastHeaderHash - - return header, data, nil -} - -// ProcessProposal calls the corresponding ABCI method on the app. -func (e *BlockExecutor) ProcessProposal( - header *types.SignedHeader, - data *types.Data, - state types.State, -) (bool, error) { - resp, err := e.proxyApp.ProcessProposal(context.TODO(), &abci.RequestProcessProposal{ - Hash: header.Hash(), - Height: int64(header.Height()), //nolint:gosec - Time: header.Time(), - Txs: data.Txs.ToSliceOfBytes(), - ProposedLastCommit: abci.CommitInfo{ - Round: 0, - Votes: []abci.VoteInfo{ - { - Validator: abci.Validator{ - Address: header.Validators.GetProposer().Address, - Power: header.Validators.GetProposer().VotingPower, - }, - BlockIdFlag: cmproto.BlockIDFlagCommit, - }, - }, - }, - Misbehavior: []abci.Misbehavior{}, - ProposerAddress: e.proposerAddress, - NextValidatorsHash: state.Validators.Hash(), - }) - if err != nil { - return false, err - } - if resp.IsStatusUnknown() { - panic(fmt.Sprintf("ProcessProposal responded with status %s", resp.Status.String())) - } - - return resp.IsAccepted(), nil -} - -// ApplyBlock validates and executes the block. -func (e *BlockExecutor) ApplyBlock(ctx context.Context, state types.State, header *types.SignedHeader, data *types.Data) (types.State, *abci.ResponseFinalizeBlock, error) { - isAppValid, err := e.ProcessProposal(header, data, state) - if err != nil { - return types.State{}, nil, err - } - if !isAppValid { - return types.State{}, nil, fmt.Errorf("proposal processing resulted in an invalid application state") - } - - err = e.Validate(state, header, data) - if err != nil { - return types.State{}, nil, err - } - // This makes calls to the AppClient - resp, err := e.execute(ctx, state, header, data) - if err != nil { - return types.State{}, nil, err - } - abciValUpdates := resp.ValidatorUpdates - - validatorUpdates, err := cmtypes.PB2TM.ValidatorUpdates(abciValUpdates) - if err != nil { - return state, nil, err - } - - if resp.ConsensusParamUpdates != nil { - e.metrics.ConsensusParamUpdates.Add(1) - } - - state, err = e.updateState(state, header, data, resp, validatorUpdates) - if err != nil { - return types.State{}, nil, err - } - - if state.ConsensusParams.Block.MaxBytes <= 0 { - e.logger.Error("maxBytes<=0", "state.ConsensusParams.Block", state.ConsensusParams.Block, "header", header) - } - - return state, resp, nil -} - -// ExtendVote calls the ExtendVote ABCI method on the proxy app. -func (e *BlockExecutor) ExtendVote(ctx context.Context, header *types.SignedHeader, data *types.Data) ([]byte, error) { - resp, err := e.proxyApp.ExtendVote(ctx, &abci.RequestExtendVote{ - Hash: header.Hash(), - Height: int64(header.Height()), //nolint:gosec - Time: header.Time(), - Txs: data.Txs.ToSliceOfBytes(), - ProposedLastCommit: abci.CommitInfo{ - Votes: []abci.VoteInfo{{ - Validator: abci.Validator{ - Address: header.Validators.GetProposer().Address, - Power: header.Validators.GetProposer().VotingPower, - }, - BlockIdFlag: cmproto.BlockIDFlagCommit, - }}, - }, - Misbehavior: nil, - NextValidatorsHash: header.ValidatorHash, - ProposerAddress: header.ProposerAddress, - }) - if err != nil { - return nil, err - } - return resp.VoteExtension, nil -} - -// Commit commits the block -func (e *BlockExecutor) Commit(ctx context.Context, state types.State, header *types.SignedHeader, data *types.Data, resp *abci.ResponseFinalizeBlock) ([]byte, uint64, error) { - appHash, retainHeight, err := e.commit(ctx, state, header, data, resp) - if err != nil { - return []byte{}, 0, err - } - - state.AppHash = appHash - - e.publishEvents(resp, header, data, state) - - return appHash, retainHeight, nil -} - -// updateConsensusParams updates the consensus parameters based on the provided updates. -func (e *BlockExecutor) updateConsensusParams(height uint64, params cmtypes.ConsensusParams, consensusParamUpdates *cmproto.ConsensusParams) (cmproto.ConsensusParams, uint64, error) { - nextParams := params.Update(consensusParamUpdates) - if err := types.ConsensusParamsValidateBasic(nextParams); err != nil { - return cmproto.ConsensusParams{}, 0, fmt.Errorf("validating new consensus params: %w", err) - } - if err := nextParams.ValidateUpdate(consensusParamUpdates, int64(height)); err != nil { //nolint:gosec - return cmproto.ConsensusParams{}, 0, fmt.Errorf("updating consensus params: %w", err) - } - return nextParams.ToProto(), nextParams.Version.App, nil -} - -func (e *BlockExecutor) updateState(state types.State, header *types.SignedHeader, data *types.Data, finalizeBlockResponse *abci.ResponseFinalizeBlock, validatorUpdates []*cmtypes.Validator) (types.State, error) { - height := header.Height() - if finalizeBlockResponse.ConsensusParamUpdates != nil { - nextParamsProto, appVersion, err := e.updateConsensusParams(height, types.ConsensusParamsFromProto(state.ConsensusParams), finalizeBlockResponse.ConsensusParamUpdates) - if err != nil { - return types.State{}, err - } - // Change results from this height but only applies to the next height. - state.LastHeightConsensusParamsChanged = height + 1 - state.Version.Consensus.App = appVersion - state.ConsensusParams = nextParamsProto - } - - nValSet := state.NextValidators.Copy() - lastHeightValSetChanged := state.LastHeightValidatorsChanged - - if len(nValSet.Validators) > 0 { - err := nValSet.UpdateWithChangeSet(validatorUpdates) - if err != nil { - if err.Error() != ErrEmptyValSetGenerated.Error() { - return state, err - } - nValSet = &cmtypes.ValidatorSet{ - Validators: make([]*cmtypes.Validator, 0), - Proposer: nil, - } - } - // Change results from this height but only applies to the next next height. - lastHeightValSetChanged = int64(header.Header.Height() + 1 + 1) //nolint:gosec - - if len(nValSet.Validators) > 0 { - nValSet.IncrementProposerPriority(1) - } - } - - s := types.State{ - Version: state.Version, - ChainID: state.ChainID, - InitialHeight: state.InitialHeight, - LastBlockHeight: height, - LastBlockTime: header.Time(), - LastBlockID: cmtypes.BlockID{ - Hash: cmbytes.HexBytes(header.Hash()), - // for now, we don't care about part set headers - }, - ConsensusParams: state.ConsensusParams, - LastHeightConsensusParamsChanged: state.LastHeightConsensusParamsChanged, - AppHash: finalizeBlockResponse.AppHash, - Validators: state.NextValidators.Copy(), - NextValidators: nValSet, - LastHeightValidatorsChanged: lastHeightValSetChanged, - LastValidators: state.Validators.Copy(), - } - copy(s.LastResultsHash[:], cmtypes.NewResults(finalizeBlockResponse.TxResults).Hash()) - - return s, nil -} - -func (e *BlockExecutor) commit(ctx context.Context, state types.State, header *types.SignedHeader, data *types.Data, resp *abci.ResponseFinalizeBlock) ([]byte, uint64, error) { - e.mempool.Lock() - defer e.mempool.Unlock() - - err := e.mempool.FlushAppConn() - if err != nil { - return nil, 0, err - } - - commitResp, err := e.proxyApp.Commit(ctx) - if err != nil { - return nil, 0, err - } - - maxBytes := state.ConsensusParams.Block.MaxBytes - maxGas := state.ConsensusParams.Block.MaxGas - cTxs := fromRollkitTxs(data.Txs) - e.mempoolReaper.UpdateCommitedTxs(cTxs) - err = e.mempool.Update(header.Height(), cTxs, resp.TxResults, mempool.PreCheckMaxBytes(maxBytes), mempool.PostCheckMaxGas(maxGas)) - if err != nil { - return nil, 0, err - } - - return resp.AppHash, uint64(commitResp.RetainHeight), err //nolint:gosec -} - -// Validate validates the state and the block for the executor -func (e *BlockExecutor) Validate(state types.State, header *types.SignedHeader, data *types.Data) error { - if err := header.ValidateBasic(); err != nil { - return err - } - if err := data.ValidateBasic(); err != nil { - return err - } - if err := types.Validate(header, data); err != nil { - return err - } - if header.Version.App != state.Version.Consensus.App || - header.Version.Block != state.Version.Consensus.Block { - return errors.New("block version mismatch") - } - if state.LastBlockHeight <= 0 && header.Height() != state.InitialHeight { - return errors.New("initial block height mismatch") - } - if state.LastBlockHeight > 0 && header.Height() != state.LastBlockHeight+1 { - return errors.New("block height mismatch") - } - if !bytes.Equal(header.AppHash[:], state.AppHash[:]) { - return errors.New("AppHash mismatch") - } - - if !bytes.Equal(header.LastResultsHash[:], state.LastResultsHash[:]) { - return errors.New("LastResultsHash mismatch") - } - - return nil -} - -func (e *BlockExecutor) execute(ctx context.Context, state types.State, header *types.SignedHeader, data *types.Data) (*abci.ResponseFinalizeBlock, error) { - // Only execute if the node hasn't already shut down - select { - case <-ctx.Done(): - return nil, ctx.Err() - default: - } - abciHeader, err := abciconv.ToABCIHeaderPB(&header.Header) - if err != nil { - return nil, err - } - abciHeader.ChainID = e.chainID - abciBlock, err := abciconv.ToABCIBlock(header, data) - if err != nil { - return nil, err - } - - startTime := time.Now().UnixNano() - finalizeBlockResponse, err := e.proxyApp.FinalizeBlock(ctx, &abci.RequestFinalizeBlock{ - Hash: header.Hash(), - NextValidatorsHash: state.Validators.Hash(), - ProposerAddress: abciHeader.ProposerAddress, - Height: abciHeader.Height, - Time: abciHeader.Time, - DecidedLastCommit: abci.CommitInfo{ - Round: 0, - Votes: nil, - }, - Misbehavior: abciBlock.Evidence.Evidence.ToABCI(), - Txs: abciBlock.Txs.ToSliceOfBytes(), - }) - endTime := time.Now().UnixNano() - e.metrics.BlockProcessingTime.Observe(float64(endTime-startTime) / 1000000) - if err != nil { - e.logger.Error("error in proxyAppConn.FinalizeBlock", "err", err) - return nil, err - } - - e.logger.Info( - "finalized block", - "height", abciBlock.Height, - "num_txs_res", len(finalizeBlockResponse.TxResults), - "num_val_updates", len(finalizeBlockResponse.ValidatorUpdates), - "block_app_hash", fmt.Sprintf("%X", finalizeBlockResponse.AppHash), - ) - - // Assert that the application correctly returned tx results for each of the transactions provided in the block - if len(abciBlock.Data.Txs) != len(finalizeBlockResponse.TxResults) { - return nil, fmt.Errorf("expected tx results length to match size of transactions in block. Expected %d, got %d", len(data.Txs), len(finalizeBlockResponse.TxResults)) - } - - e.logger.Info("executed block", "height", abciHeader.Height, "app_hash", fmt.Sprintf("%X", finalizeBlockResponse.AppHash)) - - return finalizeBlockResponse, nil -} - -func (e *BlockExecutor) publishEvents(resp *abci.ResponseFinalizeBlock, header *types.SignedHeader, data *types.Data, state types.State) { - if e.eventBus == nil { - return - } - - abciBlock, err := abciconv.ToABCIBlock(header, data) - if err != nil { - return - } - - if err := e.eventBus.PublishEventNewBlock(cmtypes.EventDataNewBlock{ - Block: abciBlock, - BlockID: cmtypes.BlockID{ - Hash: cmbytes.HexBytes(header.Hash()), - // for now, we don't care about part set headers - }, - ResultFinalizeBlock: *resp, - }); err != nil { - e.logger.Error("failed publishing new block", "err", err) - } - - if err := e.eventBus.PublishEventNewBlockHeader(cmtypes.EventDataNewBlockHeader{ - Header: abciBlock.Header, - }); err != nil { - e.logger.Error("failed publishing new block header", "err", err) - } - - if err := e.eventBus.PublishEventNewBlockEvents(cmtypes.EventDataNewBlockEvents{ - Height: abciBlock.Height, - Events: resp.Events, - NumTxs: int64(len(abciBlock.Txs)), - }); err != nil { - e.logger.Error("failed publishing new block events", "err", err) - } - - if len(abciBlock.Evidence.Evidence) != 0 { - for _, ev := range abciBlock.Evidence.Evidence { - if err := e.eventBus.PublishEventNewEvidence(cmtypes.EventDataNewEvidence{ - Evidence: ev, - Height: int64(header.Header.Height()), //nolint:gosec - }); err != nil { - e.logger.Error("failed publishing new evidence", "err", err) - } - } - } - - for i, tx := range abciBlock.Data.Txs { - err := e.eventBus.PublishEventTx(cmtypes.EventDataTx{ - TxResult: abci.TxResult{ - Height: abciBlock.Height, - Index: uint32(i), //nolint:gosec - Tx: tx, - Result: *(resp.TxResults[i]), - }, - }) - if err != nil { - e.logger.Error("failed publishing event TX", "err", err) - } - } -} - -func toRollkitTxs(txs cmtypes.Txs) types.Txs { - rollkitTxs := make(types.Txs, len(txs)) - for i := range txs { - rollkitTxs[i] = []byte(txs[i]) - } - return rollkitTxs -} - -func fromRollkitTxs(rollkitTxs types.Txs) cmtypes.Txs { - txs := make(cmtypes.Txs, len(rollkitTxs)) - for i := range rollkitTxs { - txs[i] = []byte(rollkitTxs[i]) - } - return txs -}