From f8ad6c07a441e78b6a3dd2e9089e41221df572d8 Mon Sep 17 00:00:00 2001 From: colinlyguo Date: Wed, 23 Jul 2025 18:21:50 +0800 Subject: [PATCH 1/4] fix(rollup-relayer): upgrade boundary message queue hash initialization --- common/version/version.go | 2 +- rollup/internal/controller/watcher/chunk_proposer.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/common/version/version.go b/common/version/version.go index a892ffa6bf..e5cc6b49ea 100644 --- a/common/version/version.go +++ b/common/version/version.go @@ -5,7 +5,7 @@ import ( "runtime/debug" ) -var tag = "v4.5.33" +var tag = "v4.5.34" var commit = func() string { if info, ok := debug.ReadBuildInfo(); ok { diff --git a/rollup/internal/controller/watcher/chunk_proposer.go b/rollup/internal/controller/watcher/chunk_proposer.go index 622c27a9a7..94d1318545 100644 --- a/rollup/internal/controller/watcher/chunk_proposer.go +++ b/rollup/internal/controller/watcher/chunk_proposer.go @@ -270,8 +270,8 @@ func (p *ChunkProposer) proposeChunk() error { chunk.PrevL1MessageQueueHash = common.HexToHash(parentChunk.PostL1MessageQueueHash) - // previous chunk is not CodecV7, this means this is the first chunk of the fork. - if encoding.CodecVersion(parentChunk.CodecVersion) < codecVersion { + // previous chunk is before CodecV7, this means this is the first chunk of the fork. + if encoding.CodecVersion(parentChunk.CodecVersion) < encoding.CodecV7 && encoding.CodecVersion(parentChunk.CodecVersion) < codecVersion { chunk.PrevL1MessageQueueHash = common.Hash{} } From fb5bfde4de5e6a50e4cdff96be793c5d0bcab706 Mon Sep 17 00:00:00 2001 From: colinlyguo Date: Wed, 23 Jul 2025 18:27:53 +0800 Subject: [PATCH 2/4] stricter check --- rollup/internal/controller/watcher/chunk_proposer.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rollup/internal/controller/watcher/chunk_proposer.go b/rollup/internal/controller/watcher/chunk_proposer.go index 94d1318545..b7bbc35691 100644 --- a/rollup/internal/controller/watcher/chunk_proposer.go +++ b/rollup/internal/controller/watcher/chunk_proposer.go @@ -271,7 +271,7 @@ func (p *ChunkProposer) proposeChunk() error { chunk.PrevL1MessageQueueHash = common.HexToHash(parentChunk.PostL1MessageQueueHash) // previous chunk is before CodecV7, this means this is the first chunk of the fork. - if encoding.CodecVersion(parentChunk.CodecVersion) < encoding.CodecV7 && encoding.CodecVersion(parentChunk.CodecVersion) < codecVersion { + if encoding.CodecVersion(parentChunk.CodecVersion) == encoding.CodecV6 && codecVersion == encoding.CodecV7 { chunk.PrevL1MessageQueueHash = common.Hash{} } From 61fb4e9f3a782e554956b5e6883273d914ccf465 Mon Sep 17 00:00:00 2001 From: colinlyguo Date: Wed, 23 Jul 2025 18:31:36 +0800 Subject: [PATCH 3/4] remove unneeded init --- rollup/internal/controller/watcher/chunk_proposer.go | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/rollup/internal/controller/watcher/chunk_proposer.go b/rollup/internal/controller/watcher/chunk_proposer.go index b7bbc35691..9710184c96 100644 --- a/rollup/internal/controller/watcher/chunk_proposer.go +++ b/rollup/internal/controller/watcher/chunk_proposer.go @@ -268,13 +268,8 @@ func (p *ChunkProposer) proposeChunk() error { return fmt.Errorf("failed to get parent chunk: %w", err) } + // In EuclidV2 transition, empty PostL1MessageQueueHash will be naturally initialized to the first chunk's PrevL1MessageQueueHash. chunk.PrevL1MessageQueueHash = common.HexToHash(parentChunk.PostL1MessageQueueHash) - - // previous chunk is before CodecV7, this means this is the first chunk of the fork. - if encoding.CodecVersion(parentChunk.CodecVersion) == encoding.CodecV6 && codecVersion == encoding.CodecV7 { - chunk.PrevL1MessageQueueHash = common.Hash{} - } - chunk.PostL1MessageQueueHash = chunk.PrevL1MessageQueueHash var previousPostL1MessageQueueHash common.Hash From 2c7099eeddf406c8a2631e27f7f9ecb718edc053 Mon Sep 17 00:00:00 2001 From: colinlyguo Date: Wed, 23 Jul 2025 18:44:38 +0800 Subject: [PATCH 4/4] add a more comment --- rollup/internal/controller/watcher/chunk_proposer.go | 1 + 1 file changed, 1 insertion(+) diff --git a/rollup/internal/controller/watcher/chunk_proposer.go b/rollup/internal/controller/watcher/chunk_proposer.go index 9710184c96..d7c41efbce 100644 --- a/rollup/internal/controller/watcher/chunk_proposer.go +++ b/rollup/internal/controller/watcher/chunk_proposer.go @@ -268,6 +268,7 @@ func (p *ChunkProposer) proposeChunk() error { return fmt.Errorf("failed to get parent chunk: %w", err) } + // Currently rollup-relayer only supports >= v7 codec version, it checks the minimum codec version after start. // In EuclidV2 transition, empty PostL1MessageQueueHash will be naturally initialized to the first chunk's PrevL1MessageQueueHash. chunk.PrevL1MessageQueueHash = common.HexToHash(parentChunk.PostL1MessageQueueHash) chunk.PostL1MessageQueueHash = chunk.PrevL1MessageQueueHash