From 4e8bc7c5763cbc06a3694073eeebb0f7b2249a25 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Wed, 20 Aug 2025 22:33:17 +0200 Subject: [PATCH 01/10] refactor(adapter): extract block id creation --- .github/workflows/integration_test.yml | 6 +-- .github/workflows/migration_test.yml | 2 +- Dockerfile | 2 +- go.mod | 2 +- go.sum | 4 +- pkg/adapter/adapter.go | 54 ++++++++++++++++++-------- 6 files changed, 45 insertions(+), 25 deletions(-) diff --git a/.github/workflows/integration_test.yml b/.github/workflows/integration_test.yml index 5ae0460f..e94b3ffb 100644 --- a/.github/workflows/integration_test.yml +++ b/.github/workflows/integration_test.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 30 env: - EVNODE_VERSION: "v1.0.0-beta.2.0.20250818133040-d096a24e7052" + EVNODE_VERSION: "v1.0.0-beta.2.0.20250819153439-29b8ddf5a753" IGNITE_VERSION: "v29.3.1" IGNITE_EVOLVE_APP_VERSION: "main" # use tagged when apps has tagged (blocked on things) EVOLVE_IMAGE_REPO: "evolve-gm" @@ -59,7 +59,7 @@ jobs: timeout-minutes: 30 env: DO_NOT_TRACK: true - EVNODE_VERSION: "v1.0.0-beta.2.0.20250818133040-d096a24e7052" + EVNODE_VERSION: "v1.0.0-beta.2.0.20250819153439-29b8ddf5a753" IGNITE_VERSION: "v29.3.1" IGNITE_EVOLVE_APP_VERSION: "main" # use tagged when apps has tagged (blocked on things) outputs: @@ -266,7 +266,7 @@ jobs: GMD_HOME: ${{ needs.liveness.outputs.gmd_home }} HERMES_VERSION: "v1.13.1" GAIA_VERSION: "v25.1.0" - EVNODE_VERSION: "v1.0.0-beta.2.0.20250818133040-d096a24e7052" + EVNODE_VERSION: "v1.0.0-beta.2.0.20250819153439-29b8ddf5a753" EVNODE_DA_VERSION: "v1.0.0-beta.1" steps: - name: Set up Go diff --git a/.github/workflows/migration_test.yml b/.github/workflows/migration_test.yml index 64f9bee6..0d1de4e3 100644 --- a/.github/workflows/migration_test.yml +++ b/.github/workflows/migration_test.yml @@ -13,7 +13,7 @@ jobs: timeout-minutes: 45 env: DO_NOT_TRACK: true - EVNODE_VERSION: "v1.0.0-beta.2.0.20250818133040-d096a24e7052" + EVNODE_VERSION: "v1.0.0-beta.2.0.20250819153439-29b8ddf5a753" IGNITE_VERSION: "v29.3.1" IGNITE_EVOLVE_APP_VERSION: "main" # use tagged when apps has tagged (blocked on things) steps: diff --git a/Dockerfile b/Dockerfile index 76561fac..8d93a3ea 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,7 +7,7 @@ RUN apk add --no-cache \ bash # Set environment variables -ENV EVNODE_VERSION=v1.0.0-beta.2.0.20250818133040-d096a24e7052 +ENV EVNODE_VERSION=v1.0.0-beta.2.0.20250819153439-29b8ddf5a753 ENV IGNITE_VERSION=v29.3.1 ENV IGNITE_EVOLVE_APP_VERSION=main diff --git a/go.mod b/go.mod index 291bc329..48d87ae5 100644 --- a/go.mod +++ b/go.mod @@ -25,7 +25,7 @@ require ( github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.50.14 github.com/cosmos/gogoproto v1.7.0 - github.com/evstack/ev-node v1.0.0-beta.2.0.20250818133040-d096a24e7052 + github.com/evstack/ev-node v1.0.0-beta.2.0.20250819153439-29b8ddf5a753 github.com/evstack/ev-node/core v1.0.0-beta.1.0.20250818133040-d096a24e7052 github.com/evstack/ev-node/da v0.0.0-20250818133040-d096a24e7052 github.com/evstack/ev-node/sequencers/single v0.0.0-20250818133040-d096a24e7052 diff --git a/go.sum b/go.sum index c57531fe..fff9a5fb 100644 --- a/go.sum +++ b/go.sum @@ -290,8 +290,8 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/evstack/ev-node v1.0.0-beta.2.0.20250818133040-d096a24e7052 h1:Fsu6gkxsANYfl/AgDEABDN7dmeEXCIcFSPgFKTHZEwA= -github.com/evstack/ev-node v1.0.0-beta.2.0.20250818133040-d096a24e7052/go.mod h1:LEP7bA5MA8+khDuZWmJcg8K8KXQ5jJVLTSETggQbrV0= +github.com/evstack/ev-node v1.0.0-beta.2.0.20250819153439-29b8ddf5a753 h1:m8YBaHxQGHJljm2+0KvOsHUD0g3qqkn51lBuRjwrcng= +github.com/evstack/ev-node v1.0.0-beta.2.0.20250819153439-29b8ddf5a753/go.mod h1:LEP7bA5MA8+khDuZWmJcg8K8KXQ5jJVLTSETggQbrV0= github.com/evstack/ev-node/core v1.0.0-beta.1.0.20250818133040-d096a24e7052 h1:FhMa6ZiUSPSq4EeQXAheS6+7vaOSika3eDgSQiTbMJk= github.com/evstack/ev-node/core v1.0.0-beta.1.0.20250818133040-d096a24e7052/go.mod h1:n2w/LhYQTPsi48m6lMj16YiIqsaQw6gxwjyJvR+B3sY= github.com/evstack/ev-node/da v0.0.0-20250818133040-d096a24e7052 h1:aHPY3amXzULbIn7M5lslwo3lz9w89gP04wbLNa/k/LI= diff --git a/pkg/adapter/adapter.go b/pkg/adapter/adapter.go index 4716bd05..f4aab221 100644 --- a/pkg/adapter/adapter.go +++ b/pkg/adapter/adapter.go @@ -331,6 +331,11 @@ func (a *Adapter) ExecuteTxs( return nil, 0, fmt.Errorf("compute header hash: %w", err) } + abciBlock, currentBlockID, err := makeABCIBlock(ctx, blockHeight, txs, s, abciHeader, lastCommit) + if err != nil { + return nil, 0, err + } + ppResp, err := a.App.ProcessProposal(&abci.RequestProcessProposal{ Hash: abciHeader.Hash(), Height: int64(blockHeight), @@ -448,24 +453,8 @@ func (a *Adapter) ExecuteTxs( if err != nil { return nil, 0, err } - cmtTxs := make(cmttypes.Txs, len(txs)) - for i := range txs { - cmtTxs[i] = txs[i] - } - abciBlock := s.MakeBlock(int64(blockHeight), cmtTxs, lastCommit, nil, s.Validators.Proposer.Address) - - blockParts, err := abciBlock.MakePartSet(cmttypes.BlockPartSizeBytes) - if err != nil { - return nil, 0, fmt.Errorf("make part set: %w", err) - } - - // use abci header hash to match the light client validation check - // where sh.Header.Hash() (comet header) must equal sh.Commit.BlockID.Hash - currentBlockID := cmttypes.BlockID{ - Hash: abciHeader.Hash(), - PartSetHeader: blockParts.Header(), - } + // saving data to ev-abci store if err := a.Store.SaveBlockID(ctx, blockHeight, ¤tBlockID); err != nil { return nil, 0, fmt.Errorf("save block ID: %w", err) @@ -555,6 +544,37 @@ func fireEvents( return nil } +// makeABCIBlock makes an ABCI block and its block ID +func makeABCIBlock( + ctx context.Context, + blockHeight uint64, + txs [][]byte, + currentState *cmtstate.State, + abciHeader cmttypes.Header, + lastCommit *cmttypes.Commit, +) (*cmttypes.Block, cmttypes.BlockID, error) { + cmtTxs := make(cmttypes.Txs, len(txs)) + for i := range txs { + cmtTxs[i] = txs[i] + } + + abciBlock := currentState.MakeBlock(int64(blockHeight), cmtTxs, lastCommit, nil, currentState.Validators.Proposer.Address) + + blockParts, err := abciBlock.MakePartSet(cmttypes.BlockPartSizeBytes) + if err != nil { + return nil, cmttypes.BlockID{}, fmt.Errorf("make part set: %w", err) + } + + // use abci header hash to match the light client validation check + // where sh.Header.Hash() (comet header) must equal sh.Commit.BlockID.Hash + currentBlockID := cmttypes.BlockID{ + Hash: abciHeader.Hash(), + PartSetHeader: blockParts.Header(), + } + + return abciBlock, currentBlockID, nil +} + // GetLastCommit retrieves the last commit for the given block height. func (a *Adapter) GetLastCommit(ctx context.Context, blockHeight uint64) (*cmttypes.Commit, error) { if blockHeight > 1 { From 2b898703cb9e927fd26033ea5de0a6ce9ff3b5d0 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Thu, 21 Aug 2025 20:20:11 +0200 Subject: [PATCH 02/10] Update ev-node version and refactor cometcompat to adapter - Bump github.com/evstack/ev-node to v1.0.0-beta.2.0.20250821181753-974aa15383de - Move cometcompat helpers to adapter package and update imports - Remove cometcompat package and related files - Add providers.go to adapter for signature and validator hash providers - Refactor usage across codebase to use adapter package functions --- .github/workflows/integration_test.yml | 6 +- .github/workflows/migration_test.yml | 2 +- Dockerfile | 2 +- go.mod | 5 +- go.sum | 4 +- pkg/adapter/adapter.go | 41 +----- pkg/adapter/adapter_test.go | 3 +- pkg/{cometcompat => adapter}/convert.go | 34 ++++- pkg/adapter/providers.go | 131 ++++++++++++++++++ .../signature_compatibility_test.go | 12 +- pkg/cometcompat/signer.go | 36 ----- pkg/cometcompat/validator_hasher.go | 56 -------- pkg/rpc/core/blocks.go | 12 +- pkg/rpc/core/blocks_test.go | 15 +- pkg/rpc/core/utils.go | 8 +- server/start.go | 7 +- 16 files changed, 208 insertions(+), 166 deletions(-) rename pkg/{cometcompat => adapter}/convert.go (72%) create mode 100644 pkg/adapter/providers.go rename pkg/{cometcompat => adapter}/signature_compatibility_test.go (81%) delete mode 100644 pkg/cometcompat/signer.go delete mode 100644 pkg/cometcompat/validator_hasher.go diff --git a/.github/workflows/integration_test.yml b/.github/workflows/integration_test.yml index e94b3ffb..5ed403d6 100644 --- a/.github/workflows/integration_test.yml +++ b/.github/workflows/integration_test.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 30 env: - EVNODE_VERSION: "v1.0.0-beta.2.0.20250819153439-29b8ddf5a753" + EVNODE_VERSION: "v1.0.0-beta.2.0.20250821181753-974aa15383de" IGNITE_VERSION: "v29.3.1" IGNITE_EVOLVE_APP_VERSION: "main" # use tagged when apps has tagged (blocked on things) EVOLVE_IMAGE_REPO: "evolve-gm" @@ -59,7 +59,7 @@ jobs: timeout-minutes: 30 env: DO_NOT_TRACK: true - EVNODE_VERSION: "v1.0.0-beta.2.0.20250819153439-29b8ddf5a753" + EVNODE_VERSION: "v1.0.0-beta.2.0.20250821181753-974aa15383de" IGNITE_VERSION: "v29.3.1" IGNITE_EVOLVE_APP_VERSION: "main" # use tagged when apps has tagged (blocked on things) outputs: @@ -266,7 +266,7 @@ jobs: GMD_HOME: ${{ needs.liveness.outputs.gmd_home }} HERMES_VERSION: "v1.13.1" GAIA_VERSION: "v25.1.0" - EVNODE_VERSION: "v1.0.0-beta.2.0.20250819153439-29b8ddf5a753" + EVNODE_VERSION: "v1.0.0-beta.2.0.20250821181753-974aa15383de" EVNODE_DA_VERSION: "v1.0.0-beta.1" steps: - name: Set up Go diff --git a/.github/workflows/migration_test.yml b/.github/workflows/migration_test.yml index 0d1de4e3..843e2d15 100644 --- a/.github/workflows/migration_test.yml +++ b/.github/workflows/migration_test.yml @@ -13,7 +13,7 @@ jobs: timeout-minutes: 45 env: DO_NOT_TRACK: true - EVNODE_VERSION: "v1.0.0-beta.2.0.20250819153439-29b8ddf5a753" + EVNODE_VERSION: "v1.0.0-beta.2.0.20250821181753-974aa15383de" IGNITE_VERSION: "v29.3.1" IGNITE_EVOLVE_APP_VERSION: "main" # use tagged when apps has tagged (blocked on things) steps: diff --git a/Dockerfile b/Dockerfile index 8d93a3ea..5b8ad2d0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,7 +7,7 @@ RUN apk add --no-cache \ bash # Set environment variables -ENV EVNODE_VERSION=v1.0.0-beta.2.0.20250819153439-29b8ddf5a753 +ENV EVNODE_VERSION=v1.0.0-beta.2.0.20250821181753-974aa15383de ENV IGNITE_VERSION=v29.3.1 ENV IGNITE_EVOLVE_APP_VERSION=main diff --git a/go.mod b/go.mod index 48d87ae5..ec09dc8b 100644 --- a/go.mod +++ b/go.mod @@ -2,6 +2,9 @@ module github.com/evstack/ev-abci go 1.24.1 +// https://github.com/evstack/ev-node/pull/2589 +replace github.com/evstack/ev-node => github.com/evstack/ev-node v1.0.0-beta.2.0.20250821181753-974aa15383de + replace ( github.com/btcsuite/btcd => github.com/btcsuite/btcd v0.22.0-beta github.com/cosmos/cosmos-sdk => github.com/cosmos/cosmos-sdk v0.50.14 @@ -25,7 +28,7 @@ require ( github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.50.14 github.com/cosmos/gogoproto v1.7.0 - github.com/evstack/ev-node v1.0.0-beta.2.0.20250819153439-29b8ddf5a753 + github.com/evstack/ev-node v1.0.0-beta.2.0.20250821181753-974aa15383de github.com/evstack/ev-node/core v1.0.0-beta.1.0.20250818133040-d096a24e7052 github.com/evstack/ev-node/da v0.0.0-20250818133040-d096a24e7052 github.com/evstack/ev-node/sequencers/single v0.0.0-20250818133040-d096a24e7052 diff --git a/go.sum b/go.sum index fff9a5fb..628017c4 100644 --- a/go.sum +++ b/go.sum @@ -290,8 +290,8 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/evstack/ev-node v1.0.0-beta.2.0.20250819153439-29b8ddf5a753 h1:m8YBaHxQGHJljm2+0KvOsHUD0g3qqkn51lBuRjwrcng= -github.com/evstack/ev-node v1.0.0-beta.2.0.20250819153439-29b8ddf5a753/go.mod h1:LEP7bA5MA8+khDuZWmJcg8K8KXQ5jJVLTSETggQbrV0= +github.com/evstack/ev-node v1.0.0-beta.2.0.20250821181753-974aa15383de h1:CmiLNFtVaR8R+sYtMA1NCkk13lSFUm5NQHS96Wa9bp8= +github.com/evstack/ev-node v1.0.0-beta.2.0.20250821181753-974aa15383de/go.mod h1:LEP7bA5MA8+khDuZWmJcg8K8KXQ5jJVLTSETggQbrV0= github.com/evstack/ev-node/core v1.0.0-beta.1.0.20250818133040-d096a24e7052 h1:FhMa6ZiUSPSq4EeQXAheS6+7vaOSika3eDgSQiTbMJk= github.com/evstack/ev-node/core v1.0.0-beta.1.0.20250818133040-d096a24e7052/go.mod h1:n2w/LhYQTPsi48m6lMj16YiIqsaQw6gxwjyJvR+B3sY= github.com/evstack/ev-node/da v0.0.0-20250818133040-d096a24e7052 h1:aHPY3amXzULbIn7M5lslwo3lz9w89gP04wbLNa/k/LI= diff --git a/pkg/adapter/adapter.go b/pkg/adapter/adapter.go index f4aab221..405e57d1 100644 --- a/pkg/adapter/adapter.go +++ b/pkg/adapter/adapter.go @@ -31,7 +31,6 @@ import ( rstore "github.com/evstack/ev-node/pkg/store" "github.com/evstack/ev-node/types" - "github.com/evstack/ev-abci/pkg/cometcompat" "github.com/evstack/ev-abci/pkg/p2p" execstore "github.com/evstack/ev-abci/pkg/store" ) @@ -326,12 +325,17 @@ func (a *Adapter) ExecuteTxs( return nil, 0, fmt.Errorf("get last commit: %w", err) } - abciHeader, err := cometcompat.ToABCIHeader(header, lastCommit) + abciHeader, err := ToABCIHeader(header, lastCommit) if err != nil { return nil, 0, fmt.Errorf("compute header hash: %w", err) } - abciBlock, currentBlockID, err := makeABCIBlock(ctx, blockHeight, txs, s, abciHeader, lastCommit) + cmtTxs := make(cmttypes.Txs, len(txs)) + for i := range txs { + cmtTxs[i] = txs[i] + } + + abciBlock, currentBlockID, err := MakeABCIBlock(blockHeight, cmtTxs, s, abciHeader, lastCommit) if err != nil { return nil, 0, err } @@ -544,37 +548,6 @@ func fireEvents( return nil } -// makeABCIBlock makes an ABCI block and its block ID -func makeABCIBlock( - ctx context.Context, - blockHeight uint64, - txs [][]byte, - currentState *cmtstate.State, - abciHeader cmttypes.Header, - lastCommit *cmttypes.Commit, -) (*cmttypes.Block, cmttypes.BlockID, error) { - cmtTxs := make(cmttypes.Txs, len(txs)) - for i := range txs { - cmtTxs[i] = txs[i] - } - - abciBlock := currentState.MakeBlock(int64(blockHeight), cmtTxs, lastCommit, nil, currentState.Validators.Proposer.Address) - - blockParts, err := abciBlock.MakePartSet(cmttypes.BlockPartSizeBytes) - if err != nil { - return nil, cmttypes.BlockID{}, fmt.Errorf("make part set: %w", err) - } - - // use abci header hash to match the light client validation check - // where sh.Header.Hash() (comet header) must equal sh.Commit.BlockID.Hash - currentBlockID := cmttypes.BlockID{ - Hash: abciHeader.Hash(), - PartSetHeader: blockParts.Header(), - } - - return abciBlock, currentBlockID, nil -} - // GetLastCommit retrieves the last commit for the given block height. func (a *Adapter) GetLastCommit(ctx context.Context, blockHeight uint64) (*cmttypes.Commit, error) { if blockHeight > 1 { diff --git a/pkg/adapter/adapter_test.go b/pkg/adapter/adapter_test.go index fafd9c29..2904e2fe 100644 --- a/pkg/adapter/adapter_test.go +++ b/pkg/adapter/adapter_test.go @@ -24,7 +24,6 @@ import ( "github.com/evstack/ev-node/types" - "github.com/evstack/ev-abci/pkg/cometcompat" execstore "github.com/evstack/ev-abci/pkg/store" ) @@ -104,7 +103,7 @@ func TestExecuteFiresEvents(t *testing.T) { AppHash: []byte("apphash1"), } - headerBz, err := cometcompat.SignaturePayloadProvider(adapter.Store)(&header) + headerBz, err := AggregatorNodeSignatureBytesProvider(adapter)(&header) require.NoError(t, err) sig, err := privKey.Sign(headerBz) diff --git a/pkg/cometcompat/convert.go b/pkg/adapter/convert.go similarity index 72% rename from pkg/cometcompat/convert.go rename to pkg/adapter/convert.go index a5629006..5339cb88 100644 --- a/pkg/cometcompat/convert.go +++ b/pkg/adapter/convert.go @@ -1,4 +1,4 @@ -package cometcompat +package adapter import ( "errors" @@ -6,6 +6,7 @@ import ( cmbytes "github.com/cometbft/cometbft/libs/bytes" cmprotoversion "github.com/cometbft/cometbft/proto/tendermint/version" + cmtstate "github.com/cometbft/cometbft/state" cmttypes "github.com/cometbft/cometbft/types" cmtversion "github.com/cometbft/cometbft/version" @@ -74,3 +75,34 @@ func ToABCIBlockMeta(abciBlock *cmttypes.Block) (*cmttypes.BlockMeta, error) { NumTxs: len(abciBlock.Txs), }, nil } + +// MakeABCIBlock makes an ABCI block and its block ID. +func MakeABCIBlock( + blockHeight uint64, + cmtTxs cmttypes.Txs, + currentState *cmtstate.State, + abciHeader cmttypes.Header, + lastCommit *cmttypes.Commit, +) (*cmttypes.Block, cmttypes.BlockID, error) { + abciBlock := currentState.MakeBlock( + int64(blockHeight), + cmtTxs, + lastCommit, + nil, + currentState.Validators.Proposer.Address, + ) + + blockParts, err := abciBlock.MakePartSet(cmttypes.BlockPartSizeBytes) + if err != nil { + return nil, cmttypes.BlockID{}, fmt.Errorf("make part set: %w", err) + } + + // use abci header hash to match the light client validation check + // where sh.Header.Hash() (comet header) must equal sh.Commit.BlockID.Hash + currentBlockID := cmttypes.BlockID{ + Hash: abciHeader.Hash(), + PartSetHeader: blockParts.Header(), + } + + return abciBlock, currentBlockID, nil +} diff --git a/pkg/adapter/providers.go b/pkg/adapter/providers.go new file mode 100644 index 00000000..9da3a570 --- /dev/null +++ b/pkg/adapter/providers.go @@ -0,0 +1,131 @@ +package adapter + +import ( + "bytes" + "context" + stdsha256 "crypto/sha256" + "encoding/hex" + "fmt" + + tmcryptoed25519 "github.com/cometbft/cometbft/crypto/ed25519" + tmtypes "github.com/cometbft/cometbft/types" + "github.com/libp2p/go-libp2p/core/crypto" + + cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" + cmttypes "github.com/cometbft/cometbft/types" + rollkittypes "github.com/evstack/ev-node/types" + + "github.com/evstack/ev-node/types" +) + +func AggregatorNodeSignatureBytesProvider(adapter *Adapter) types.AggregatorNodeSignatureBytesProvider { + return func(header *types.Header) ([]byte, error) { + blockID, err := adapter.Store.GetBlockID(context.Background(), header.Height()) + if err != nil && header.Height() > 1 { + return nil, err + } + + vote := cmtproto.Vote{ + Type: cmtproto.PrecommitType, + Height: int64(header.Height()), //nolint:gosec + BlockID: blockID.ToProto(), + Round: 0, + Timestamp: header.Time(), + ValidatorAddress: header.ProposerAddress, + ValidatorIndex: 0, + } + + chainID := header.ChainID() + consensusVoteBytes := cmttypes.VoteSignBytes(chainID, &vote) + + return consensusVoteBytes, nil + } +} + +func SyncNodeSignatureBytesProvider(adapter *Adapter) types.SyncNodeSignatureBytesProvider { + return func(ctx context.Context, header *types.Header, data *types.Data) ([]byte, error) { + blockHeight := header.Height() + + cmtTxs := make(cmttypes.Txs, len(data.Txs)) + for i := range data.Txs { + cmtTxs[i] = cmttypes.Tx(data.Txs[i]) + } + + lastCommit, err := adapter.GetLastCommit(ctx, blockHeight) + if err != nil { + return nil, fmt.Errorf("get last commit: %w", err) + } + + abciHeader, err := ToABCIHeader(*header, lastCommit) + if err != nil { + return nil, fmt.Errorf("compute header hash: %w", err) + } + + currentState, err := adapter.Store.LoadState(ctx) + if err != nil { + return nil, fmt.Errorf("load state: %w", err) + } + + _, blockID, err := MakeABCIBlock(blockHeight, cmtTxs, currentState, abciHeader, lastCommit) + if err != nil { + return nil, fmt.Errorf("make ABCI block: %w", err) + } + + vote := cmtproto.Vote{ + Type: cmtproto.PrecommitType, + Height: int64(header.Height()), //nolint:gosec + BlockID: blockID.ToProto(), + Round: 0, + Timestamp: header.Time(), + ValidatorAddress: header.ProposerAddress, + ValidatorIndex: 0, + } + + chainID := header.ChainID() + consensusVoteBytes := cmttypes.VoteSignBytes(chainID, &vote) + + return consensusVoteBytes, nil + } +} + +// ValidatorHasher returns a function that calculates the ValidatorHash +// compatible with CometBFT. This function is intended to be injected into ev-node's Manager. +func ValidatorHasherProvider() func(proposerAddress []byte, pubKey crypto.PubKey) (rollkittypes.Hash, error) { + return func(proposerAddress []byte, pubKey crypto.PubKey) (rollkittypes.Hash, error) { + var calculatedHash rollkittypes.Hash + + var cometBftPubKey tmcryptoed25519.PubKey + if pubKey.Type() == crypto.Ed25519 { + rawKey, err := pubKey.Raw() + if err != nil { + return calculatedHash, fmt.Errorf("failed to get raw bytes from libp2p public key: %w", err) + } + if len(rawKey) != tmcryptoed25519.PubKeySize { + return calculatedHash, fmt.Errorf("libp2p public key size (%d) does not match CometBFT Ed25519 PubKeySize (%d)", len(rawKey), tmcryptoed25519.PubKeySize) + } + cometBftPubKey = rawKey + } else { + return calculatedHash, fmt.Errorf("unsupported public key type '%s', expected Ed25519 for CometBFT compatibility", pubKey.Type()) + } + + votingPower := int64(1) + sequencerValidator := tmtypes.NewValidator(cometBftPubKey, votingPower) + + derivedAddress := sequencerValidator.Address.Bytes() + if !bytes.Equal(derivedAddress, proposerAddress) { + return calculatedHash, fmt.Errorf("CRITICAL MISMATCH - derived validator address (%s) does not match expected proposer address (%s). PubKey used for derivation: %s", + hex.EncodeToString(derivedAddress), + hex.EncodeToString(proposerAddress), + hex.EncodeToString(cometBftPubKey.Bytes())) + } + + sequencerValidatorSet := tmtypes.NewValidatorSet([]*tmtypes.Validator{sequencerValidator}) + + hashSumBytes := sequencerValidatorSet.Hash() + + calculatedHash = make(rollkittypes.Hash, stdsha256.Size) + copy(calculatedHash, hashSumBytes) + + return calculatedHash, nil + } +} diff --git a/pkg/cometcompat/signature_compatibility_test.go b/pkg/adapter/signature_compatibility_test.go similarity index 81% rename from pkg/cometcompat/signature_compatibility_test.go rename to pkg/adapter/signature_compatibility_test.go index b953d632..2f120606 100644 --- a/pkg/cometcompat/signature_compatibility_test.go +++ b/pkg/adapter/signature_compatibility_test.go @@ -1,4 +1,4 @@ -package cometcompat +package adapter import ( "context" @@ -12,8 +12,6 @@ import ( "github.com/stretchr/testify/require" "github.com/evstack/ev-node/types" - - execstore "github.com/evstack/ev-abci/pkg/store" ) func TestSignatureCompatibility_HeaderAndCommit(t *testing.T) { @@ -24,7 +22,7 @@ func TestSignatureCompatibility_HeaderAndCommit(t *testing.T) { // Create a test store dsStore := ds.NewMapDatastore() - store := execstore.NewExecABCIStore(dsStore) + storeOnlyAdapter := NewABCIExecutor(nil, dsStore, nil, nil, nil, nil, nil, nil) validatorAddress := make([]byte, 20) chainID := "test-chain" @@ -39,8 +37,8 @@ func TestSignatureCompatibility_HeaderAndCommit(t *testing.T) { ProposerAddress: validatorAddress, } - // Test 1: SignaturePayloadProvider should work without BlockID in store - provider := SignaturePayloadProvider(store) + // Test 1: AggregatorNodeSignatureBytesProvider should work without BlockID in store + provider := AggregatorNodeSignatureBytesProvider(storeOnlyAdapter) signBytes, err := provider(header) require.NoError(t, err) require.NotEmpty(t, signBytes) @@ -55,7 +53,7 @@ func TestSignatureCompatibility_HeaderAndCommit(t *testing.T) { blockID := &cmttypes.BlockID{ Hash: make([]byte, 32), // dummy hash for test } - err = store.SaveBlockID(context.Background(), header.Height(), blockID) + err = storeOnlyAdapter.Store.SaveBlockID(context.Background(), header.Height(), blockID) require.NoError(t, err) signBytes2, err := provider(header) diff --git a/pkg/cometcompat/signer.go b/pkg/cometcompat/signer.go deleted file mode 100644 index b52f3811..00000000 --- a/pkg/cometcompat/signer.go +++ /dev/null @@ -1,36 +0,0 @@ -package cometcompat - -import ( - "context" - - cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" - cmttypes "github.com/cometbft/cometbft/types" - - "github.com/evstack/ev-node/types" - - abciexecstore "github.com/evstack/ev-abci/pkg/store" -) - -func SignaturePayloadProvider(store *abciexecstore.Store) types.SignaturePayloadProvider { - return func(header *types.Header) ([]byte, error) { - blockID, err := store.GetBlockID(context.Background(), header.Height()) - if err != nil && header.Height() > 1 { - return nil, err - } - - vote := cmtproto.Vote{ - Type: cmtproto.PrecommitType, - Height: int64(header.Height()), //nolint:gosec - BlockID: blockID.ToProto(), - Round: 0, - Timestamp: header.Time(), - ValidatorAddress: header.ProposerAddress, - ValidatorIndex: 0, - } - - chainID := header.ChainID() - consensusVoteBytes := cmttypes.VoteSignBytes(chainID, &vote) - - return consensusVoteBytes, nil - } -} diff --git a/pkg/cometcompat/validator_hasher.go b/pkg/cometcompat/validator_hasher.go deleted file mode 100644 index 89f8a14b..00000000 --- a/pkg/cometcompat/validator_hasher.go +++ /dev/null @@ -1,56 +0,0 @@ -package cometcompat - -import ( - "bytes" - stdsha256 "crypto/sha256" - "encoding/hex" - "fmt" - - tmcryptoed25519 "github.com/cometbft/cometbft/crypto/ed25519" - tmtypes "github.com/cometbft/cometbft/types" - "github.com/libp2p/go-libp2p/core/crypto" - - rollkittypes "github.com/evstack/ev-node/types" -) - -// ValidatorHasher returns a function that calculates the ValidatorHash -// compatible with CometBFT. This function is intended to be injected into ev-node's Manager. -func ValidatorHasherProvider() func(proposerAddress []byte, pubKey crypto.PubKey) (rollkittypes.Hash, error) { - return func(proposerAddress []byte, pubKey crypto.PubKey) (rollkittypes.Hash, error) { - var calculatedHash rollkittypes.Hash - - var cometBftPubKey tmcryptoed25519.PubKey - if pubKey.Type() == crypto.Ed25519 { - rawKey, err := pubKey.Raw() - if err != nil { - return calculatedHash, fmt.Errorf("failed to get raw bytes from libp2p public key: %w", err) - } - if len(rawKey) != tmcryptoed25519.PubKeySize { - return calculatedHash, fmt.Errorf("libp2p public key size (%d) does not match CometBFT Ed25519 PubKeySize (%d)", len(rawKey), tmcryptoed25519.PubKeySize) - } - cometBftPubKey = rawKey - } else { - return calculatedHash, fmt.Errorf("unsupported public key type '%s', expected Ed25519 for CometBFT compatibility", pubKey.Type()) - } - - votingPower := int64(1) - sequencerValidator := tmtypes.NewValidator(cometBftPubKey, votingPower) - - derivedAddress := sequencerValidator.Address.Bytes() - if !bytes.Equal(derivedAddress, proposerAddress) { - return calculatedHash, fmt.Errorf("CRITICAL MISMATCH - derived validator address (%s) does not match expected proposer address (%s). PubKey used for derivation: %s", - hex.EncodeToString(derivedAddress), - hex.EncodeToString(proposerAddress), - hex.EncodeToString(cometBftPubKey.Bytes())) - } - - sequencerValidatorSet := tmtypes.NewValidatorSet([]*tmtypes.Validator{sequencerValidator}) - - hashSumBytes := sequencerValidatorSet.Hash() - - calculatedHash = make(rollkittypes.Hash, stdsha256.Size) - copy(calculatedHash, hashSumBytes) - - return calculatedHash, nil - } -} diff --git a/pkg/rpc/core/blocks.go b/pkg/rpc/core/blocks.go index a53a651b..2e5b87fd 100644 --- a/pkg/rpc/core/blocks.go +++ b/pkg/rpc/core/blocks.go @@ -15,7 +15,7 @@ import ( storepkg "github.com/evstack/ev-node/pkg/store" rlktypes "github.com/evstack/ev-node/types" - "github.com/evstack/ev-abci/pkg/cometcompat" + "github.com/evstack/ev-abci/pkg/adapter" ) // BlockSearch searches for a paginated set of blocks matching BeginBlock and @@ -77,12 +77,12 @@ func BlockSearch( return nil, fmt.Errorf("failed to get last commit for block %d: %w", results[i], err) } - abciHeader, err := cometcompat.ToABCIHeader(header.Header, lastCommit) + abciHeader, err := adapter.ToABCIHeader(header.Header, lastCommit) if err != nil { return nil, fmt.Errorf("failed to convert header to ABCI format: %w", err) } - abciBlock, err := cometcompat.ToABCIBlock(abciHeader, lastCommit, data) + abciBlock, err := adapter.ToABCIBlock(abciHeader, lastCommit, data) if err != nil { return nil, err } @@ -162,12 +162,12 @@ func BlockByHash(ctx *rpctypes.Context, hash []byte) (*ctypes.ResultBlock, error return nil, fmt.Errorf("failed to get last commit for block %d: %w", header.Height(), err) } - abciHeader, err := cometcompat.ToABCIHeader(header.Header, lastCommit) + abciHeader, err := adapter.ToABCIHeader(header.Header, lastCommit) if err != nil { return nil, fmt.Errorf("failed to convert header to ABCI format: %w", err) } - abciBlock, err := cometcompat.ToABCIBlock(abciHeader, lastCommit, data) + abciBlock, err := adapter.ToABCIBlock(abciHeader, lastCommit, data) if err != nil { return nil, err } @@ -267,7 +267,7 @@ func HeaderByHash(ctx *rpctypes.Context, hash cmbytes.HexBytes) (*ctypes.ResultH return nil, fmt.Errorf("failed to get last commit for block %d: %w", header.Height(), err) } - abciHeader, err := cometcompat.ToABCIHeader(header.Header, lastCommit) + abciHeader, err := adapter.ToABCIHeader(header.Header, lastCommit) if err != nil { return nil, fmt.Errorf("failed to convert header to ABCI format: %w", err) } diff --git a/pkg/rpc/core/blocks_test.go b/pkg/rpc/core/blocks_test.go index c825b4d2..f41fe95c 100644 --- a/pkg/rpc/core/blocks_test.go +++ b/pkg/rpc/core/blocks_test.go @@ -21,7 +21,6 @@ import ( "github.com/evstack/ev-node/types" "github.com/evstack/ev-abci/pkg/adapter" - "github.com/evstack/ev-abci/pkg/cometcompat" execstore "github.com/evstack/ev-abci/pkg/store" ) @@ -201,8 +200,8 @@ func TestCommit_VerifyCometBFTLightClientCompatibility_MultipleBlocks(t *testing chainID := "test-chain" now := time.Now() - // use the validator hasher helper from cometcompat - validatorHash, err := cometcompat.ValidatorHasherProvider()(validatorAddress, aggregatorPubKey) + // use the validator hasher helpers + validatorHash, err := adapter.ValidatorHasherProvider()(validatorAddress, aggregatorPubKey) require.NoError(err) fixedValSet := &cmttypes.ValidatorSet{ @@ -222,10 +221,10 @@ func TestCommit_VerifyCometBFTLightClientCompatibility_MultipleBlocks(t *testing lastCommit, err := env.Adapter.GetLastCommit(context.Background(), blockHeight) require.NoError(err, "Failed to get last commit for height %d", blockHeight) - abciHeader, err := cometcompat.ToABCIHeader(rollkitHeader, lastCommit) + abciHeader, err := adapter.ToABCIHeader(rollkitHeader, lastCommit) require.NoError(err, "Failed to create ABCI header") - abciBlock, err := cometcompat.ToABCIBlock(abciHeader, lastCommit, blockData) + abciBlock, err := adapter.ToABCIBlock(abciHeader, lastCommit, blockData) require.NoError(err, "Failed to create ABCI block") blockParts, err := abciBlock.MakePartSet(cmttypes.BlockPartSizeBytes) @@ -241,7 +240,7 @@ func TestCommit_VerifyCometBFTLightClientCompatibility_MultipleBlocks(t *testing require.NoError(err, "Failed to save BlockID for height %d", blockHeight) // create the signature for the rollkit block - realSignature := signBlock(t, env.Adapter.Store, rollkitHeader, aggregatorPrivKey) + realSignature := signBlock(t, env.Adapter, rollkitHeader, aggregatorPrivKey) // mock the store to return our signed block mockBlock(blockHeight, rollkitHeader, blockData, realSignature, aggregatorPubKey, validatorAddress) @@ -288,8 +287,8 @@ func createTestBlock(height uint64, chainID string, baseTime time.Time, validato return blockData, rollkitHeader } -func signBlock(t *testing.T, abciExecStore *execstore.Store, header types.Header, privKey crypto.PrivKey) []byte { - signBytes, err := cometcompat.SignaturePayloadProvider(abciExecStore)(&header) +func signBlock(t *testing.T, executor *adapter.Adapter, header types.Header, privKey crypto.PrivKey) []byte { + signBytes, err := adapter.AggregatorNodeSignatureBytesProvider(executor)(&header) require.NoError(t, err) signature, err := privKey.Sign(signBytes) diff --git a/pkg/rpc/core/utils.go b/pkg/rpc/core/utils.go index 470eca1f..6129ba7b 100644 --- a/pkg/rpc/core/utils.go +++ b/pkg/rpc/core/utils.go @@ -8,7 +8,7 @@ import ( cmttypes "github.com/cometbft/cometbft/types" - "github.com/evstack/ev-abci/pkg/cometcompat" + "github.com/evstack/ev-abci/pkg/adapter" ) const NodeIDByteLength = 20 @@ -51,19 +51,19 @@ func getBlockMeta(ctx context.Context, n uint64) (*cmttypes.BlockMeta, *cmttypes return nil, nil } - abciHeader, err := cometcompat.ToABCIHeader(header.Header, lastCommit) + abciHeader, err := adapter.ToABCIHeader(header.Header, lastCommit) if err != nil { env.Logger.Error("Failed to convert header to ABCI format", "height", n, "err", err) return nil, nil } - abciBlock, err := cometcompat.ToABCIBlock(abciHeader, lastCommit, data) + abciBlock, err := adapter.ToABCIBlock(abciHeader, lastCommit, data) if err != nil { env.Logger.Error("Failed to convert block to ABCI format", "height", n, "err", err) return nil, nil } - abciBlockMeta, err := cometcompat.ToABCIBlockMeta(abciBlock) + abciBlockMeta, err := adapter.ToABCIBlockMeta(abciBlock) if err != nil { env.Logger.Error("Failed to convert block to ABCI block meta", "height", n, "err", err) return nil, nil diff --git a/server/start.go b/server/start.go index 4c79780f..5351e97c 100644 --- a/server/start.go +++ b/server/start.go @@ -50,11 +50,9 @@ import ( "github.com/evstack/ev-node/sequencers/single" "github.com/evstack/ev-abci/pkg/adapter" - "github.com/evstack/ev-abci/pkg/cometcompat" "github.com/evstack/ev-abci/pkg/rpc" "github.com/evstack/ev-abci/pkg/rpc/core" execsigner "github.com/evstack/ev-abci/pkg/signer" - execstore "github.com/evstack/ev-abci/pkg/store" ) const ( @@ -495,8 +493,9 @@ func setupNodeAndExecutor( *evLogger, node.NodeOptions{ ManagerOptions: rollkitblock.ManagerOptions{ - SignaturePayloadProvider: cometcompat.SignaturePayloadProvider(execstore.NewExecABCIStore(database)), - ValidatorHasherProvider: cometcompat.ValidatorHasherProvider(), + AggregatorNodeSignatureBytesProvider: adapter.AggregatorNodeSignatureBytesProvider(executor), + SyncNodeSignatureBytesProvider: adapter.SyncNodeSignatureBytesProvider(executor), + ValidatorHasherProvider: adapter.ValidatorHasherProvider(), }, }, ) From bffba8e91f1c8b3dcb7fe3f5ec3fc48f64beb299 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Thu, 21 Aug 2025 20:27:52 +0200 Subject: [PATCH 03/10] typo + issue --- pkg/adapter/providers.go | 10 ++++------ pkg/adapter/signature_compatibility_test.go | 2 +- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/pkg/adapter/providers.go b/pkg/adapter/providers.go index 9da3a570..e4f71ed0 100644 --- a/pkg/adapter/providers.go +++ b/pkg/adapter/providers.go @@ -8,14 +8,12 @@ import ( "fmt" tmcryptoed25519 "github.com/cometbft/cometbft/crypto/ed25519" - tmtypes "github.com/cometbft/cometbft/types" - "github.com/libp2p/go-libp2p/core/crypto" - cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" cmttypes "github.com/cometbft/cometbft/types" - rollkittypes "github.com/evstack/ev-node/types" + "github.com/libp2p/go-libp2p/core/crypto" "github.com/evstack/ev-node/types" + rollkittypes "github.com/evstack/ev-node/types" ) func AggregatorNodeSignatureBytesProvider(adapter *Adapter) types.AggregatorNodeSignatureBytesProvider { @@ -109,7 +107,7 @@ func ValidatorHasherProvider() func(proposerAddress []byte, pubKey crypto.PubKey } votingPower := int64(1) - sequencerValidator := tmtypes.NewValidator(cometBftPubKey, votingPower) + sequencerValidator := cmttypes.NewValidator(cometBftPubKey, votingPower) derivedAddress := sequencerValidator.Address.Bytes() if !bytes.Equal(derivedAddress, proposerAddress) { @@ -119,7 +117,7 @@ func ValidatorHasherProvider() func(proposerAddress []byte, pubKey crypto.PubKey hex.EncodeToString(cometBftPubKey.Bytes())) } - sequencerValidatorSet := tmtypes.NewValidatorSet([]*tmtypes.Validator{sequencerValidator}) + sequencerValidatorSet := cmttypes.NewValidatorSet([]*cmttypes.Validator{sequencerValidator}) hashSumBytes := sequencerValidatorSet.Hash() diff --git a/pkg/adapter/signature_compatibility_test.go b/pkg/adapter/signature_compatibility_test.go index 2f120606..49fc61db 100644 --- a/pkg/adapter/signature_compatibility_test.go +++ b/pkg/adapter/signature_compatibility_test.go @@ -22,7 +22,7 @@ func TestSignatureCompatibility_HeaderAndCommit(t *testing.T) { // Create a test store dsStore := ds.NewMapDatastore() - storeOnlyAdapter := NewABCIExecutor(nil, dsStore, nil, nil, nil, nil, nil, nil) + storeOnlyAdapter := NewABCIExecutor(nil, dsStore, nil, nil, nil, nil, nil) validatorAddress := make([]byte, 20) chainID := "test-chain" From 14fed3e2324ab879397a96d2cf321b4772194eaa Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Thu, 21 Aug 2025 23:27:38 +0200 Subject: [PATCH 04/10] latest commit --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index ec09dc8b..6ee1992e 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/evstack/ev-abci go 1.24.1 // https://github.com/evstack/ev-node/pull/2589 -replace github.com/evstack/ev-node => github.com/evstack/ev-node v1.0.0-beta.2.0.20250821181753-974aa15383de +replace github.com/evstack/ev-node => github.com/evstack/ev-node v1.0.0-beta.2.0.20250821212538-d8df97d26f01 replace ( github.com/btcsuite/btcd => github.com/btcsuite/btcd v0.22.0-beta diff --git a/go.sum b/go.sum index 628017c4..c4be10f7 100644 --- a/go.sum +++ b/go.sum @@ -290,8 +290,8 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/evstack/ev-node v1.0.0-beta.2.0.20250821181753-974aa15383de h1:CmiLNFtVaR8R+sYtMA1NCkk13lSFUm5NQHS96Wa9bp8= -github.com/evstack/ev-node v1.0.0-beta.2.0.20250821181753-974aa15383de/go.mod h1:LEP7bA5MA8+khDuZWmJcg8K8KXQ5jJVLTSETggQbrV0= +github.com/evstack/ev-node v1.0.0-beta.2.0.20250821212538-d8df97d26f01 h1:1UAku3WiivDv22aLTHFOFtHwHz+MjYKb7oBwMPOaFF0= +github.com/evstack/ev-node v1.0.0-beta.2.0.20250821212538-d8df97d26f01/go.mod h1:LEP7bA5MA8+khDuZWmJcg8K8KXQ5jJVLTSETggQbrV0= github.com/evstack/ev-node/core v1.0.0-beta.1.0.20250818133040-d096a24e7052 h1:FhMa6ZiUSPSq4EeQXAheS6+7vaOSika3eDgSQiTbMJk= github.com/evstack/ev-node/core v1.0.0-beta.1.0.20250818133040-d096a24e7052/go.mod h1:n2w/LhYQTPsi48m6lMj16YiIqsaQw6gxwjyJvR+B3sY= github.com/evstack/ev-node/da v0.0.0-20250818133040-d096a24e7052 h1:aHPY3amXzULbIn7M5lslwo3lz9w89gP04wbLNa/k/LI= From 0b94d1c573598473820e456f9913f498622cf82f Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Fri, 22 Aug 2025 11:01:20 +0200 Subject: [PATCH 05/10] fix height 1 blockid --- pkg/adapter/providers.go | 41 +++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/pkg/adapter/providers.go b/pkg/adapter/providers.go index e4f71ed0..e309bc43 100644 --- a/pkg/adapter/providers.go +++ b/pkg/adapter/providers.go @@ -43,30 +43,33 @@ func AggregatorNodeSignatureBytesProvider(adapter *Adapter) types.AggregatorNode func SyncNodeSignatureBytesProvider(adapter *Adapter) types.SyncNodeSignatureBytesProvider { return func(ctx context.Context, header *types.Header, data *types.Data) ([]byte, error) { blockHeight := header.Height() + blockID := cmttypes.BlockID{} - cmtTxs := make(cmttypes.Txs, len(data.Txs)) - for i := range data.Txs { - cmtTxs[i] = cmttypes.Tx(data.Txs[i]) - } + if header.Height() > 1 { + cmtTxs := make(cmttypes.Txs, len(data.Txs)) + for i := range data.Txs { + cmtTxs[i] = cmttypes.Tx(data.Txs[i]) + } - lastCommit, err := adapter.GetLastCommit(ctx, blockHeight) - if err != nil { - return nil, fmt.Errorf("get last commit: %w", err) - } + lastCommit, err := adapter.GetLastCommit(ctx, blockHeight) + if err != nil { + return nil, fmt.Errorf("get last commit: %w", err) + } - abciHeader, err := ToABCIHeader(*header, lastCommit) - if err != nil { - return nil, fmt.Errorf("compute header hash: %w", err) - } + abciHeader, err := ToABCIHeader(*header, lastCommit) + if err != nil { + return nil, fmt.Errorf("compute header hash: %w", err) + } - currentState, err := adapter.Store.LoadState(ctx) - if err != nil { - return nil, fmt.Errorf("load state: %w", err) - } + currentState, err := adapter.Store.LoadState(ctx) + if err != nil { + return nil, fmt.Errorf("load state: %w", err) + } - _, blockID, err := MakeABCIBlock(blockHeight, cmtTxs, currentState, abciHeader, lastCommit) - if err != nil { - return nil, fmt.Errorf("make ABCI block: %w", err) + _, blockID, err = MakeABCIBlock(blockHeight, cmtTxs, currentState, abciHeader, lastCommit) + if err != nil { + return nil, fmt.Errorf("make ABCI block: %w", err) + } } vote := cmtproto.Vote{ From 32f988058a971c09a3871e0dbfac13e43c722663 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Fri, 22 Aug 2025 11:26:45 +0200 Subject: [PATCH 06/10] updates --- pkg/adapter/adapter.go | 10 ++--- pkg/adapter/convert.go | 6 +-- pkg/adapter/providers.go | 50 +++++++++------------ pkg/adapter/signature_compatibility_test.go | 33 ++++++++++++-- 4 files changed, 58 insertions(+), 41 deletions(-) diff --git a/pkg/adapter/adapter.go b/pkg/adapter/adapter.go index 405e57d1..2ebed8c3 100644 --- a/pkg/adapter/adapter.go +++ b/pkg/adapter/adapter.go @@ -460,7 +460,7 @@ func (a *Adapter) ExecuteTxs( // saving data to ev-abci store - if err := a.Store.SaveBlockID(ctx, blockHeight, ¤tBlockID); err != nil { + if err := a.Store.SaveBlockID(ctx, blockHeight, currentBlockID); err != nil { return nil, 0, fmt.Errorf("save block ID: %w", err) } @@ -490,13 +490,13 @@ func (a *Adapter) ExecuteTxs( func fireEvents( eventBus cmttypes.BlockEventPublisher, block *cmttypes.Block, - blockID cmttypes.BlockID, + blockID *cmttypes.BlockID, abciResponse *abci.ResponseFinalizeBlock, validatorUpdates []*cmttypes.Validator, ) error { if err := eventBus.PublishEventNewBlock(cmttypes.EventDataNewBlock{ Block: block, - BlockID: blockID, + BlockID: *blockID, ResultFinalizeBlock: *abciResponse, }); err != nil { return fmt.Errorf("publish new block event: %w", err) @@ -611,14 +611,14 @@ func cometCommitToABCICommitInfo(commit *cmttypes.Commit) abci.CommitInfo { } type StackedEvent struct { - blockID cmttypes.BlockID + blockID *cmttypes.BlockID block *cmttypes.Block abciResponse *abci.ResponseFinalizeBlock validatorUpdates []*cmttypes.Validator } func (a *Adapter) stackBlockCommitEvents( - blockID cmttypes.BlockID, + blockID *cmttypes.BlockID, block *cmttypes.Block, abciResponse *abci.ResponseFinalizeBlock, validatorUpdates []*cmttypes.Validator, diff --git a/pkg/adapter/convert.go b/pkg/adapter/convert.go index 5339cb88..7210dbe5 100644 --- a/pkg/adapter/convert.go +++ b/pkg/adapter/convert.go @@ -83,7 +83,7 @@ func MakeABCIBlock( currentState *cmtstate.State, abciHeader cmttypes.Header, lastCommit *cmttypes.Commit, -) (*cmttypes.Block, cmttypes.BlockID, error) { +) (*cmttypes.Block, *cmttypes.BlockID, error) { abciBlock := currentState.MakeBlock( int64(blockHeight), cmtTxs, @@ -94,12 +94,12 @@ func MakeABCIBlock( blockParts, err := abciBlock.MakePartSet(cmttypes.BlockPartSizeBytes) if err != nil { - return nil, cmttypes.BlockID{}, fmt.Errorf("make part set: %w", err) + return nil, nil, fmt.Errorf("make part set: %w", err) } // use abci header hash to match the light client validation check // where sh.Header.Hash() (comet header) must equal sh.Commit.BlockID.Hash - currentBlockID := cmttypes.BlockID{ + currentBlockID := &cmttypes.BlockID{ Hash: abciHeader.Hash(), PartSetHeader: blockParts.Header(), } diff --git a/pkg/adapter/providers.go b/pkg/adapter/providers.go index e309bc43..2adf3f67 100644 --- a/pkg/adapter/providers.go +++ b/pkg/adapter/providers.go @@ -23,29 +23,16 @@ func AggregatorNodeSignatureBytesProvider(adapter *Adapter) types.AggregatorNode return nil, err } - vote := cmtproto.Vote{ - Type: cmtproto.PrecommitType, - Height: int64(header.Height()), //nolint:gosec - BlockID: blockID.ToProto(), - Round: 0, - Timestamp: header.Time(), - ValidatorAddress: header.ProposerAddress, - ValidatorIndex: 0, - } - - chainID := header.ChainID() - consensusVoteBytes := cmttypes.VoteSignBytes(chainID, &vote) - - return consensusVoteBytes, nil + return createVote(header, blockID), nil } } func SyncNodeSignatureBytesProvider(adapter *Adapter) types.SyncNodeSignatureBytesProvider { return func(ctx context.Context, header *types.Header, data *types.Data) ([]byte, error) { blockHeight := header.Height() - blockID := cmttypes.BlockID{} + blockID := &cmttypes.BlockID{} - if header.Height() > 1 { + if header.Height() > 1 { // first block has an empty block ID cmtTxs := make(cmttypes.Txs, len(data.Txs)) for i := range data.Txs { cmtTxs[i] = cmttypes.Tx(data.Txs[i]) @@ -72,21 +59,26 @@ func SyncNodeSignatureBytesProvider(adapter *Adapter) types.SyncNodeSignatureByt } } - vote := cmtproto.Vote{ - Type: cmtproto.PrecommitType, - Height: int64(header.Height()), //nolint:gosec - BlockID: blockID.ToProto(), - Round: 0, - Timestamp: header.Time(), - ValidatorAddress: header.ProposerAddress, - ValidatorIndex: 0, - } - - chainID := header.ChainID() - consensusVoteBytes := cmttypes.VoteSignBytes(chainID, &vote) + return createVote(header, blockID), nil + } +} - return consensusVoteBytes, nil +// createVote builds the vote for the given header and block ID to be signed. +func createVote(header *types.Header, blockID *cmttypes.BlockID) []byte { + vote := cmtproto.Vote{ + Type: cmtproto.PrecommitType, + Height: int64(header.Height()), //nolint:gosec + BlockID: blockID.ToProto(), + Round: 0, + Timestamp: header.Time(), + ValidatorAddress: header.ProposerAddress, + ValidatorIndex: 0, } + + chainID := header.ChainID() + consensusVoteBytes := cmttypes.VoteSignBytes(chainID, &vote) + + return consensusVoteBytes } // ValidatorHasher returns a function that calculates the ValidatorHash diff --git a/pkg/adapter/signature_compatibility_test.go b/pkg/adapter/signature_compatibility_test.go index 49fc61db..942ef3ce 100644 --- a/pkg/adapter/signature_compatibility_test.go +++ b/pkg/adapter/signature_compatibility_test.go @@ -11,6 +11,7 @@ import ( "github.com/libp2p/go-libp2p/core/crypto" "github.com/stretchr/testify/require" + "github.com/evstack/ev-abci/pkg/store" "github.com/evstack/ev-node/types" ) @@ -43,16 +44,40 @@ func TestSignatureCompatibility_HeaderAndCommit(t *testing.T) { require.NoError(t, err) require.NotEmpty(t, signBytes) + syncProvider := SyncNodeSignatureBytesProvider(storeOnlyAdapter) + signBytesSync, err := syncProvider(context.Background(), header, &types.Data{}) + require.NoError(t, err) + require.NotEmpty(t, signBytesSync) + + require.Equal(t, signBytes, signBytesSync) + // Test 2: Should be able to sign the payload signature, err := p2pPrivKey.Sign(signBytes) require.NoError(t, err) require.NotEmpty(t, signature) require.Equal(t, 64, len(signature)) // Ed25519 signature length - // Test 3: After saving BlockID, should still work - blockID := &cmttypes.BlockID{ - Hash: make([]byte, 32), // dummy hash for test - } + // Test 3: Set up proper state and create consistent BlockID for both providers (at height > 2) + state := store.TestingStateFixture() + state.LastBlockHeight = 2 + err = storeOnlyAdapter.Store.SaveState(context.Background(), store.TestingStateFixture()) + require.NoError(t, err) + + // Create BlockID using the same method that SyncNodeSignatureBytesProvider uses + currentState, err := storeOnlyAdapter.Store.LoadState(context.Background()) + require.NoError(t, err) + + lastCommit, err := storeOnlyAdapter.GetLastCommit(context.Background(), header.Height()) + require.NoError(t, err) + + abciHeader, err := ToABCIHeader(*header, lastCommit) + require.NoError(t, err) + + cmtTxs := make(cmttypes.Txs, 0) + _, blockID, err := MakeABCIBlock(header.Height(), cmtTxs, currentState, abciHeader, lastCommit) + require.NoError(t, err) + + // Save the properly generated BlockID to the store err = storeOnlyAdapter.Store.SaveBlockID(context.Background(), header.Height(), blockID) require.NoError(t, err) From 5f6112143b810e94bb369856ab765786e105e805 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Fri, 22 Aug 2025 12:03:22 +0200 Subject: [PATCH 07/10] linting --- pkg/adapter/providers.go | 21 ++++++++++----------- pkg/adapter/signature_compatibility_test.go | 3 ++- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/pkg/adapter/providers.go b/pkg/adapter/providers.go index 2adf3f67..83b99c33 100644 --- a/pkg/adapter/providers.go +++ b/pkg/adapter/providers.go @@ -12,12 +12,11 @@ import ( cmttypes "github.com/cometbft/cometbft/types" "github.com/libp2p/go-libp2p/core/crypto" - "github.com/evstack/ev-node/types" - rollkittypes "github.com/evstack/ev-node/types" + evtypes "github.com/evstack/ev-node/types" ) -func AggregatorNodeSignatureBytesProvider(adapter *Adapter) types.AggregatorNodeSignatureBytesProvider { - return func(header *types.Header) ([]byte, error) { +func AggregatorNodeSignatureBytesProvider(adapter *Adapter) evtypes.AggregatorNodeSignatureBytesProvider { + return func(header *evtypes.Header) ([]byte, error) { blockID, err := adapter.Store.GetBlockID(context.Background(), header.Height()) if err != nil && header.Height() > 1 { return nil, err @@ -27,8 +26,8 @@ func AggregatorNodeSignatureBytesProvider(adapter *Adapter) types.AggregatorNode } } -func SyncNodeSignatureBytesProvider(adapter *Adapter) types.SyncNodeSignatureBytesProvider { - return func(ctx context.Context, header *types.Header, data *types.Data) ([]byte, error) { +func SyncNodeSignatureBytesProvider(adapter *Adapter) evtypes.SyncNodeSignatureBytesProvider { + return func(ctx context.Context, header *evtypes.Header, data *evtypes.Data) ([]byte, error) { blockHeight := header.Height() blockID := &cmttypes.BlockID{} @@ -64,7 +63,7 @@ func SyncNodeSignatureBytesProvider(adapter *Adapter) types.SyncNodeSignatureByt } // createVote builds the vote for the given header and block ID to be signed. -func createVote(header *types.Header, blockID *cmttypes.BlockID) []byte { +func createVote(header *evtypes.Header, blockID *cmttypes.BlockID) []byte { vote := cmtproto.Vote{ Type: cmtproto.PrecommitType, Height: int64(header.Height()), //nolint:gosec @@ -83,9 +82,9 @@ func createVote(header *types.Header, blockID *cmttypes.BlockID) []byte { // ValidatorHasher returns a function that calculates the ValidatorHash // compatible with CometBFT. This function is intended to be injected into ev-node's Manager. -func ValidatorHasherProvider() func(proposerAddress []byte, pubKey crypto.PubKey) (rollkittypes.Hash, error) { - return func(proposerAddress []byte, pubKey crypto.PubKey) (rollkittypes.Hash, error) { - var calculatedHash rollkittypes.Hash +func ValidatorHasherProvider() func(proposerAddress []byte, pubKey crypto.PubKey) (evtypes.Hash, error) { + return func(proposerAddress []byte, pubKey crypto.PubKey) (evtypes.Hash, error) { + var calculatedHash evtypes.Hash var cometBftPubKey tmcryptoed25519.PubKey if pubKey.Type() == crypto.Ed25519 { @@ -116,7 +115,7 @@ func ValidatorHasherProvider() func(proposerAddress []byte, pubKey crypto.PubKey hashSumBytes := sequencerValidatorSet.Hash() - calculatedHash = make(rollkittypes.Hash, stdsha256.Size) + calculatedHash = make(evtypes.Hash, stdsha256.Size) copy(calculatedHash, hashSumBytes) return calculatedHash, nil diff --git a/pkg/adapter/signature_compatibility_test.go b/pkg/adapter/signature_compatibility_test.go index 942ef3ce..10a85606 100644 --- a/pkg/adapter/signature_compatibility_test.go +++ b/pkg/adapter/signature_compatibility_test.go @@ -11,8 +11,9 @@ import ( "github.com/libp2p/go-libp2p/core/crypto" "github.com/stretchr/testify/require" - "github.com/evstack/ev-abci/pkg/store" "github.com/evstack/ev-node/types" + + "github.com/evstack/ev-abci/pkg/store" ) func TestSignatureCompatibility_HeaderAndCommit(t *testing.T) { From e6b801f87d8b4dc77084f9369735c4a9f4b13114 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Wed, 27 Aug 2025 22:25:56 +0200 Subject: [PATCH 08/10] bump ev node --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 6ee1992e..36e41e27 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/evstack/ev-abci go 1.24.1 // https://github.com/evstack/ev-node/pull/2589 -replace github.com/evstack/ev-node => github.com/evstack/ev-node v1.0.0-beta.2.0.20250821212538-d8df97d26f01 +replace github.com/evstack/ev-node => github.com/evstack/ev-node v1.0.0-beta.2.0.20250827202222-69410c0be91b replace ( github.com/btcsuite/btcd => github.com/btcsuite/btcd v0.22.0-beta @@ -137,7 +137,7 @@ require ( github.com/go-logfmt/logfmt v0.6.0 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-viper/mapstructure/v2 v2.3.0 // indirect + github.com/go-viper/mapstructure/v2 v2.4.0 // indirect github.com/goccy/go-yaml v1.18.0 // indirect github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/gofrs/flock v0.12.1 // indirect diff --git a/go.sum b/go.sum index c4be10f7..6696988f 100644 --- a/go.sum +++ b/go.sum @@ -290,8 +290,8 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/evstack/ev-node v1.0.0-beta.2.0.20250821212538-d8df97d26f01 h1:1UAku3WiivDv22aLTHFOFtHwHz+MjYKb7oBwMPOaFF0= -github.com/evstack/ev-node v1.0.0-beta.2.0.20250821212538-d8df97d26f01/go.mod h1:LEP7bA5MA8+khDuZWmJcg8K8KXQ5jJVLTSETggQbrV0= +github.com/evstack/ev-node v1.0.0-beta.2.0.20250827202222-69410c0be91b h1:K2b5LuQenTSVIPORvwdTKa4qUbTOSln/LOoYkmPEARc= +github.com/evstack/ev-node v1.0.0-beta.2.0.20250827202222-69410c0be91b/go.mod h1:jY/c+EkBt8G8srFBTpKuHrxioLYNLgDn1lFMktITA5Q= github.com/evstack/ev-node/core v1.0.0-beta.1.0.20250818133040-d096a24e7052 h1:FhMa6ZiUSPSq4EeQXAheS6+7vaOSika3eDgSQiTbMJk= github.com/evstack/ev-node/core v1.0.0-beta.1.0.20250818133040-d096a24e7052/go.mod h1:n2w/LhYQTPsi48m6lMj16YiIqsaQw6gxwjyJvR+B3sY= github.com/evstack/ev-node/da v0.0.0-20250818133040-d096a24e7052 h1:aHPY3amXzULbIn7M5lslwo3lz9w89gP04wbLNa/k/LI= @@ -367,8 +367,8 @@ github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GO github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -github.com/go-viper/mapstructure/v2 v2.3.0 h1:27XbWsHIqhbdR5TIC911OfYvgSaW93HM+dX7970Q7jk= -github.com/go-viper/mapstructure/v2 v2.3.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs= +github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/go-yaml/yaml v2.1.0+incompatible/go.mod h1:w2MrLa16VYP0jy6N7M5kHaCkaLENm+P+Tv+MfurjSw0= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= From e90978eb9e985767e7f857b5146e4ddaa8bf3cdf Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Wed, 27 Aug 2025 22:47:05 +0200 Subject: [PATCH 09/10] bump again --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 36e41e27..5c951fab 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/evstack/ev-abci go 1.24.1 // https://github.com/evstack/ev-node/pull/2589 -replace github.com/evstack/ev-node => github.com/evstack/ev-node v1.0.0-beta.2.0.20250827202222-69410c0be91b +replace github.com/evstack/ev-node => github.com/evstack/ev-node v1.0.0-beta.2.0.20250827204336-466544daec69 replace ( github.com/btcsuite/btcd => github.com/btcsuite/btcd v0.22.0-beta diff --git a/go.sum b/go.sum index 6696988f..6d75e2df 100644 --- a/go.sum +++ b/go.sum @@ -290,8 +290,8 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/evstack/ev-node v1.0.0-beta.2.0.20250827202222-69410c0be91b h1:K2b5LuQenTSVIPORvwdTKa4qUbTOSln/LOoYkmPEARc= -github.com/evstack/ev-node v1.0.0-beta.2.0.20250827202222-69410c0be91b/go.mod h1:jY/c+EkBt8G8srFBTpKuHrxioLYNLgDn1lFMktITA5Q= +github.com/evstack/ev-node v1.0.0-beta.2.0.20250827204336-466544daec69 h1:VIaTwaNRtpEsZsnQ+OqACcVWbYNKrMx1dvu3URKP7aQ= +github.com/evstack/ev-node v1.0.0-beta.2.0.20250827204336-466544daec69/go.mod h1:jY/c+EkBt8G8srFBTpKuHrxioLYNLgDn1lFMktITA5Q= github.com/evstack/ev-node/core v1.0.0-beta.1.0.20250818133040-d096a24e7052 h1:FhMa6ZiUSPSq4EeQXAheS6+7vaOSika3eDgSQiTbMJk= github.com/evstack/ev-node/core v1.0.0-beta.1.0.20250818133040-d096a24e7052/go.mod h1:n2w/LhYQTPsi48m6lMj16YiIqsaQw6gxwjyJvR+B3sY= github.com/evstack/ev-node/da v0.0.0-20250818133040-d096a24e7052 h1:aHPY3amXzULbIn7M5lslwo3lz9w89gP04wbLNa/k/LI= From 2c3251ccef8af8cd3c4329f490599b6840299b94 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Mon, 1 Sep 2025 11:27:33 +0200 Subject: [PATCH 10/10] bump to main --- .github/workflows/integration_test.yml | 6 +++--- .github/workflows/migration_test.yml | 2 +- Dockerfile | 2 +- go.mod | 11 ++++------- go.sum | 16 ++++++++-------- server/migration_cmd_test.go | 2 +- server/start.go | 2 +- 7 files changed, 19 insertions(+), 22 deletions(-) diff --git a/.github/workflows/integration_test.yml b/.github/workflows/integration_test.yml index 5ed403d6..20ce49f3 100644 --- a/.github/workflows/integration_test.yml +++ b/.github/workflows/integration_test.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 30 env: - EVNODE_VERSION: "v1.0.0-beta.2.0.20250821181753-974aa15383de" + EVNODE_VERSION: "v1.0.0-beta.2.0.20250901092248-017d6d45a621" IGNITE_VERSION: "v29.3.1" IGNITE_EVOLVE_APP_VERSION: "main" # use tagged when apps has tagged (blocked on things) EVOLVE_IMAGE_REPO: "evolve-gm" @@ -59,7 +59,7 @@ jobs: timeout-minutes: 30 env: DO_NOT_TRACK: true - EVNODE_VERSION: "v1.0.0-beta.2.0.20250821181753-974aa15383de" + EVNODE_VERSION: "v1.0.0-beta.2.0.20250901092248-017d6d45a621" IGNITE_VERSION: "v29.3.1" IGNITE_EVOLVE_APP_VERSION: "main" # use tagged when apps has tagged (blocked on things) outputs: @@ -266,7 +266,7 @@ jobs: GMD_HOME: ${{ needs.liveness.outputs.gmd_home }} HERMES_VERSION: "v1.13.1" GAIA_VERSION: "v25.1.0" - EVNODE_VERSION: "v1.0.0-beta.2.0.20250821181753-974aa15383de" + EVNODE_VERSION: "v1.0.0-beta.2.0.20250901092248-017d6d45a621" EVNODE_DA_VERSION: "v1.0.0-beta.1" steps: - name: Set up Go diff --git a/.github/workflows/migration_test.yml b/.github/workflows/migration_test.yml index 843e2d15..db58cc2d 100644 --- a/.github/workflows/migration_test.yml +++ b/.github/workflows/migration_test.yml @@ -13,7 +13,7 @@ jobs: timeout-minutes: 45 env: DO_NOT_TRACK: true - EVNODE_VERSION: "v1.0.0-beta.2.0.20250821181753-974aa15383de" + EVNODE_VERSION: "v1.0.0-beta.2.0.20250901092248-017d6d45a621" IGNITE_VERSION: "v29.3.1" IGNITE_EVOLVE_APP_VERSION: "main" # use tagged when apps has tagged (blocked on things) steps: diff --git a/Dockerfile b/Dockerfile index 5b8ad2d0..0527299b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,7 +7,7 @@ RUN apk add --no-cache \ bash # Set environment variables -ENV EVNODE_VERSION=v1.0.0-beta.2.0.20250821181753-974aa15383de +ENV EVNODE_VERSION=v1.0.0-beta.2.0.20250901092248-017d6d45a621 ENV IGNITE_VERSION=v29.3.1 ENV IGNITE_EVOLVE_APP_VERSION=main diff --git a/go.mod b/go.mod index 7d2420eb..e5e4a759 100644 --- a/go.mod +++ b/go.mod @@ -2,9 +2,6 @@ module github.com/evstack/ev-abci go 1.24.1 -// https://github.com/evstack/ev-node/pull/2589 -replace github.com/evstack/ev-node => github.com/evstack/ev-node v1.0.0-beta.2.0.20250827204336-466544daec69 - replace ( github.com/btcsuite/btcd => github.com/btcsuite/btcd v0.22.0-beta github.com/cosmos/cosmos-sdk => github.com/cosmos/cosmos-sdk v0.50.14 @@ -28,10 +25,10 @@ require ( github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.50.14 github.com/cosmos/gogoproto v1.7.0 - github.com/evstack/ev-node v1.0.0-beta.2.0.20250821181753-974aa15383de - github.com/evstack/ev-node/core v1.0.0-beta.1.0.20250818133040-d096a24e7052 - github.com/evstack/ev-node/da v0.0.0-20250818133040-d096a24e7052 - github.com/evstack/ev-node/sequencers/single v0.0.0-20250818133040-d096a24e7052 + github.com/evstack/ev-node v1.0.0-beta.2.0.20250901092248-017d6d45a621 + github.com/evstack/ev-node/core v1.0.0-beta.1.0.20250901092248-017d6d45a621 + github.com/evstack/ev-node/da v0.0.0-20250901092248-017d6d45a621 + github.com/evstack/ev-node/sequencers/single v0.0.0-20250901092248-017d6d45a621 github.com/go-kit/kit v0.13.0 github.com/golang/protobuf v1.5.4 github.com/grpc-ecosystem/grpc-gateway v1.16.0 diff --git a/go.sum b/go.sum index 0b2d9cd0..3ac65e2f 100644 --- a/go.sum +++ b/go.sum @@ -290,14 +290,14 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/evstack/ev-node v1.0.0-beta.2.0.20250827204336-466544daec69 h1:VIaTwaNRtpEsZsnQ+OqACcVWbYNKrMx1dvu3URKP7aQ= -github.com/evstack/ev-node v1.0.0-beta.2.0.20250827204336-466544daec69/go.mod h1:jY/c+EkBt8G8srFBTpKuHrxioLYNLgDn1lFMktITA5Q= -github.com/evstack/ev-node/core v1.0.0-beta.1.0.20250818133040-d096a24e7052 h1:FhMa6ZiUSPSq4EeQXAheS6+7vaOSika3eDgSQiTbMJk= -github.com/evstack/ev-node/core v1.0.0-beta.1.0.20250818133040-d096a24e7052/go.mod h1:n2w/LhYQTPsi48m6lMj16YiIqsaQw6gxwjyJvR+B3sY= -github.com/evstack/ev-node/da v0.0.0-20250818133040-d096a24e7052 h1:aHPY3amXzULbIn7M5lslwo3lz9w89gP04wbLNa/k/LI= -github.com/evstack/ev-node/da v0.0.0-20250818133040-d096a24e7052/go.mod h1:ooBV3tAL2o9brFql9I4DKgoDP4BchF3aMrUDR4ARC/k= -github.com/evstack/ev-node/sequencers/single v0.0.0-20250818133040-d096a24e7052 h1:PDM62mPdhXDkOU8RZkBbw7ALKVtXpvgZPYNjfJEwnQc= -github.com/evstack/ev-node/sequencers/single v0.0.0-20250818133040-d096a24e7052/go.mod h1:ll3+DmIF9X5mgyNhT/BaMZBVkS9bPDaq7tWHCqwtdkA= +github.com/evstack/ev-node v1.0.0-beta.2.0.20250901092248-017d6d45a621 h1:c3CM78SnNlQoYqzzYaUTpBAR/FK7JDfS0gd9fTRGe2E= +github.com/evstack/ev-node v1.0.0-beta.2.0.20250901092248-017d6d45a621/go.mod h1:jY/c+EkBt8G8srFBTpKuHrxioLYNLgDn1lFMktITA5Q= +github.com/evstack/ev-node/core v1.0.0-beta.1.0.20250901092248-017d6d45a621 h1:BXfwY70MP9Amivmcs8bWeXZzmOx8dE6Re9jbsKv+YbI= +github.com/evstack/ev-node/core v1.0.0-beta.1.0.20250901092248-017d6d45a621/go.mod h1:n2w/LhYQTPsi48m6lMj16YiIqsaQw6gxwjyJvR+B3sY= +github.com/evstack/ev-node/da v0.0.0-20250901092248-017d6d45a621 h1:nuv0sVhGhjkoF50iKGfi56XwkvlqcKKW1l19MG1Y3LA= +github.com/evstack/ev-node/da v0.0.0-20250901092248-017d6d45a621/go.mod h1:ooBV3tAL2o9brFql9I4DKgoDP4BchF3aMrUDR4ARC/k= +github.com/evstack/ev-node/sequencers/single v0.0.0-20250901092248-017d6d45a621 h1:WvaJVarlm+UQXclO86Fl/xMldJrquIGH6SBR6Fsapng= +github.com/evstack/ev-node/sequencers/single v0.0.0-20250901092248-017d6d45a621/go.mod h1:I9phdwpqEQjkvZVnhf3dvh4wozbiZ2BLY3cwCFxzT08= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= diff --git a/server/migration_cmd_test.go b/server/migration_cmd_test.go index ae5a9af3..18535048 100644 --- a/server/migration_cmd_test.go +++ b/server/migration_cmd_test.go @@ -242,7 +242,7 @@ func TestRollkitMigrationGenesis(t *testing.T) { require.NotNil(t, rollkitGenesis) require.Equal(t, chainID, rollkitGenesis.ChainID) require.Equal(t, uint64(initialHeight), rollkitGenesis.InitialHeight) - require.Equal(t, time.Unix(0, blockTime.UnixNano()), rollkitGenesis.GenesisDAStartTime) + require.Equal(t, time.Unix(0, blockTime.UnixNano()), rollkitGenesis.StartTime) require.Equal(t, address.Bytes(), rollkitGenesis.ProposerAddress) // verify validator set contains the expected validator diff --git a/server/start.go b/server/start.go index ea64eed0..e84beb01 100644 --- a/server/start.go +++ b/server/start.go @@ -357,7 +357,7 @@ func setupNodeAndExecutor( appGenesis = &genutiltypes.AppGenesis{ ChainID: migrationGenesis.ChainID, InitialHeight: int64(migrationGenesis.InitialHeight), - GenesisTime: rollkitGenesis.GenesisDAStartTime, + GenesisTime: rollkitGenesis.StartTime, Consensus: &genutiltypes.ConsensusGenesis{ // used in rpc/status.go Validators: []cmttypes.GenesisValidator{ {