Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
c82a145
refactor(node): remove validator/challenge bypass per SPEC-005
May 12, 2026
09a2c72
merge: bring in feat/multi_batch (PR #935) for SPEC-005 baseline
May 12, 2026
e2c6f57
refactor(derivation): extract verifyBatchRoots into verify.go
May 12, 2026
9f01c53
feat(derivation): SPEC-005 Path B — local-rebuild blob verification
May 12, 2026
a73639d
feat(node): SPEC-005 derivation-driven tag management + validator rol…
May 13, 2026
b9ad14e
test(derivation): SPEC-005 verify-mode + Path B unit tests
May 13, 2026
ffad1fc
merge: integrate origin/feat/multi_batch (resolves PR #951 CONFLICTING)
May 13, 2026
6b096f8
style(derivation): fix gofmt + misspell lint failures
May 13, 2026
d27d088
fix(sync): make Syncer.Start idempotent via sync.Once
May 13, 2026
af90615
fix(types): RetryableClient — treat ethereum.NotFound as permanent
May 14, 2026
6a7d3df
feat(derivation): structured failure diagnostics for Path B
May 14, 2026
9d9629e
fix(derivation): Path B blob encoding selector — dispatch on ABI vari…
May 15, 2026
c20983d
fix(derivation): finalizer resolves batchIndex -> header from local m…
May 15, 2026
bbc25f7
fix(derivation): finalizer drives off (localSafe, L1FinalizedLastBloc…
May 15, 2026
36b7980
feat(derivation): SPEC-005 §4.7.6 L1 reorg detection (always-on)
May 15, 2026
076fd5b
feat(derivation): default L1 read level safe (was finalized)
May 15, 2026
d267986
refactor(derivation): merge finalizer into main loop, add rewindAndRe…
May 15, 2026
8c16fe8
fix devnet node beacon rpc env
curryxbo May 19, 2026
08ebbcb
fix(lint): behaviour -> behavior to satisfy misspell linter
May 19, 2026
d0d8cbb
Merge branch 'feat/multi_batch' into feat/derivation-batch-verify
curryxbo May 19, 2026
ea3f4ea
feat(derivation): SPEC-005 §4.2 hybrid verify mode (Path B with Path …
May 19, 2026
d16ef19
refactor(derivation): switch makes VerifyModePathA explicit, default …
May 19, 2026
9f1fc0a
fix(devnet): mount node jwt secret correctly
curryxbo May 19, 2026
24f7731
Revert "fix(devnet): mount node jwt secret correctly"
curryxbo May 19, 2026
e807bda
Merge branch 'feat/multi_batch' into feat/derivation-batch-verify
curryxbo May 21, 2026
a56aa14
fix(derivation): gate stateException on real divergence verdict, not …
May 21, 2026
80266cd
refactor(derivation): flatten path B verifier; drop test-only abstrac…
May 21, 2026
3b5a7e4
Merge branch 'feat/multi_batch' into feat/derivation-batch-verify
curryxbo May 21, 2026
574b354
refactor(derivation): drop Hybrid mode; default to pathB with self-he…
May 21, 2026
17fd27c
feat(derivation): wire Path B self-heal via NewL2BlockV2 (PR #325 dep)
May 21, 2026
1fe39b7
refactor
May 25, 2026
e8dd2ee
refactor(derivation): keep SafeL2BlockNumber gauge as watermark on re…
May 25, 2026
db38213
refactor(derivation): simplify local verify path, rename Path B to "l…
curryxbo May 26, 2026
6b7ad22
ops: add second sentry node for derivation validation
curryxbo May 26, 2026
3bc553f
Merge branch 'feat/multi_batch' into feat/derivation-batch-verify
curryxbo May 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion bindings/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ go 1.24.0

replace github.com/tendermint/tendermint => github.com/morph-l2/tendermint v0.3.7

require github.com/morph-l2/go-ethereum v1.10.14-0.20260506071313-045be0fdc7ca
require github.com/morph-l2/go-ethereum v1.10.14-0.20260508105911-56deb7072ae4

require (
github.com/VictoriaMetrics/fastcache v1.12.2 // indirect
Expand Down
2 changes: 2 additions & 0 deletions bindings/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,8 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJ
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/morph-l2/go-ethereum v1.10.14-0.20260506071313-045be0fdc7ca h1:ogHsgxvm1wzyNKYDSAsIi0PJZeu9VhQECSL91X/KTWI=
github.com/morph-l2/go-ethereum v1.10.14-0.20260506071313-045be0fdc7ca/go.mod h1:nkVzHjQWCOjvukQW8ittlwX+Xz9gmVHrP7mUi7zoHTs=
github.com/morph-l2/go-ethereum v1.10.14-0.20260508105911-56deb7072ae4 h1:RvKSy6ApUxDaA8gprbvYZVz/vpchwQStW34YdKxppHE=
github.com/morph-l2/go-ethereum v1.10.14-0.20260508105911-56deb7072ae4/go.mod h1:nkVzHjQWCOjvukQW8ittlwX+Xz9gmVHrP7mUi7zoHTs=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
Expand Down
21 changes: 15 additions & 6 deletions common/batch/batch_cache.go
Original file line number Diff line number Diff line change
Expand Up @@ -521,7 +521,7 @@ func (bc *BatchCache) CalculateCapWithProposalBlock(blockNumber uint64, withdraw
}

// Parse transactions, distinguish L1 and L2 transactions
txsPayload, l1TxHashes, newTotalL1MessagePopped, l2TxNum, err := parsingTxs(block.Transactions(), bc.totalL1MessagePopped)
txsPayload, l1TxHashes, newTotalL1MessagePopped, l2TxNum, err := ParsingTxs(block.Transactions(), bc.totalL1MessagePopped)
if err != nil {
return false, fmt.Errorf("failed to parse transactions: %w", err)
}
Expand All @@ -530,7 +530,7 @@ func (bc *BatchCache) CalculateCapWithProposalBlock(blockNumber uint64, withdraw
txsNum := l2TxNum + l1TxNum

// Build BlockContext (60 bytes)
blockContext := buildBlockContext(header, txsNum, l1TxNum)
blockContext := BuildBlockContext(header, txsNum, l1TxNum)

// Store to current, do not immediately append to batch
bc.currentBlockContext = blockContext
Expand Down Expand Up @@ -934,8 +934,14 @@ func (bc *BatchCache) createBatchHeader(dataHash common.Hash, sidecar *ethtypes.
return batchHeaderV0.Bytes()
}

// parsingTxs parses transactions, distinguishes L1 and L2 transactions
func parsingTxs(transactions []*ethtypes.Transaction, totalL1MessagePoppedBefore uint64) (
// ParsingTxs encodes a block's transactions into the on-chain payload format
// used by the batch builder: L2 transactions are RLP-marshalled and concatenated
// in order; L1 message transactions are excluded from the payload but their
// hashes and queue indices are tracked separately.
//
// Exported for derivation local verify (SPEC-005), which must rebuild blob bytes from
// local L2 blocks using the same encoding the sequencer applied at seal time.
func ParsingTxs(transactions []*ethtypes.Transaction, totalL1MessagePoppedBefore uint64) (
txsPayload []byte,
l1TxHashes []common.Hash,
totalL1MessagePopped uint64,
Expand Down Expand Up @@ -1010,9 +1016,12 @@ func (bc *BatchCache) sealEffectiveBlobCount(blockTimestamp uint64, replayCommit
return replayProtocolMaxBlobs
}

// buildBlockContext builds BlockContext from block header (60 bytes)
// BuildBlockContext serialises a block header + tx counts into the 60-byte
// BlockContext blob the batch builder writes for each block.
// Format: Number(8) || Timestamp(8) || BaseFee(32) || GasLimit(8) || numTxs(2) || numL1Messages(2)
func buildBlockContext(header *ethtypes.Header, txsNum, l1MsgNum int) []byte {
//
// Exported for derivation local verify (SPEC-005); see ParsingTxs.
func BuildBlockContext(header *ethtypes.Header, txsNum, l1MsgNum int) []byte {
blsBytes := make([]byte, 60)

// Number (8 bytes)
Expand Down
2 changes: 1 addition & 1 deletion common/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ replace github.com/tendermint/tendermint => github.com/morph-l2/tendermint v0.3.

require (
github.com/holiman/uint256 v1.2.4
github.com/morph-l2/go-ethereum v1.10.14-0.20260506071313-045be0fdc7ca
github.com/morph-l2/go-ethereum v1.10.14-0.20260508105911-56deb7072ae4
github.com/stretchr/testify v1.10.0
github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a
)
Expand Down
2 changes: 2 additions & 0 deletions common/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,8 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJ
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/morph-l2/go-ethereum v1.10.14-0.20260506071313-045be0fdc7ca h1:ogHsgxvm1wzyNKYDSAsIi0PJZeu9VhQECSL91X/KTWI=
github.com/morph-l2/go-ethereum v1.10.14-0.20260506071313-045be0fdc7ca/go.mod h1:nkVzHjQWCOjvukQW8ittlwX+Xz9gmVHrP7mUi7zoHTs=
github.com/morph-l2/go-ethereum v1.10.14-0.20260508105911-56deb7072ae4 h1:RvKSy6ApUxDaA8gprbvYZVz/vpchwQStW34YdKxppHE=
github.com/morph-l2/go-ethereum v1.10.14-0.20260508105911-56deb7072ae4/go.mod h1:nkVzHjQWCOjvukQW8ittlwX+Xz9gmVHrP7mUi7zoHTs=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
Expand Down
2 changes: 1 addition & 1 deletion contracts/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ replace github.com/tendermint/tendermint => github.com/morph-l2/tendermint v0.3.

require (
github.com/iden3/go-iden3-crypto v0.0.16
github.com/morph-l2/go-ethereum v1.10.14-0.20260506071313-045be0fdc7ca
github.com/morph-l2/go-ethereum v1.10.14-0.20260508105911-56deb7072ae4
github.com/stretchr/testify v1.10.0
)

Expand Down
2 changes: 2 additions & 0 deletions contracts/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,8 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJ
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/morph-l2/go-ethereum v1.10.14-0.20260506071313-045be0fdc7ca h1:ogHsgxvm1wzyNKYDSAsIi0PJZeu9VhQECSL91X/KTWI=
github.com/morph-l2/go-ethereum v1.10.14-0.20260506071313-045be0fdc7ca/go.mod h1:nkVzHjQWCOjvukQW8ittlwX+Xz9gmVHrP7mUi7zoHTs=
github.com/morph-l2/go-ethereum v1.10.14-0.20260508105911-56deb7072ae4 h1:RvKSy6ApUxDaA8gprbvYZVz/vpchwQStW34YdKxppHE=
github.com/morph-l2/go-ethereum v1.10.14-0.20260508105911-56deb7072ae4/go.mod h1:nkVzHjQWCOjvukQW8ittlwX+Xz9gmVHrP7mUi7zoHTs=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
Expand Down
52 changes: 0 additions & 52 deletions node/blocktag/config.go

This file was deleted.

Loading
Loading