Commit graph

520 commits

Author SHA1 Message Date
Péter Garamvölgyi
3c454e7101
fix: correctly select consensus engine during EuclidV2 transition (#1130)
* fix: correctly select consensus engine during EuclidV2 transition

* correctly backdate transition blocks

* nit

* correctly unset fields

* nit
2025-03-04 12:25:38 +01:00
Péter Garamvölgyi
748fb82899
fix: accept header at most 100ms earlier than timestamp (#1129)
* fix: address timing issue in system config worker

* make code easier to understand

* add 100ms header verification grace period to Clique
2025-03-03 16:31:57 +01:00
Péter Garamvölgyi
1dedddbffb
feat: address system contract consensus issues and comments (#1126)
* feat: address system contract consensus issues and comments

* fix Euclid header chain verification
2025-03-02 21:01:28 +01:00
Morty
365b82953d
feat: add system config consensus to deprecate clique (#1102)
* feat: add system config consensus to deprecate poa

* fix: check extra field lens

* Finish implementation with one signer only

* Implement unit tests

* Only check signature if block not requested

* Remove Extra from rlp encoding (and hashing)

* Implement UpgradableEngine as middleware for Clique/SystemContract

* Use isEuclid, add json tag to Requested, make go idiomatic

* Changes post integration test

* Remove comment

* Address comments

* Merge

* New field BlockSignature (not used in hashing/JSON)

* Enforce .Extra to be an empty slice

* replace header.Requested for header.IsNewBlock

* mark new block as IsNewBlock

* Make new RLP optional fields always default for legacy/reth compatibility

* Placing new fields as last non-zero rlp:optional values used by Scroll

* Penalize nodes that send non-zero Euclid V2 header field values

* Bring back .Requested to downloader instead of .IsNewBlock

* Replace IsNewBlock for Requested

* Address comments

* merge

* prevent timing issues in tests

* fix ci

* chore: auto version bump [bot]

* Update consensus/system_contract/consensus.go

Co-authored-by: Morty <70688412+yiweichi@users.noreply.github.com>

* chore: auto version bump [bot]

* Update consensus/system_contract/consensus.go

Co-authored-by: Jonas Theis <4181434+jonastheis@users.noreply.github.com>

* Remove whitespaces and merge version number

* chore: auto version bump [bot]

* validate that the read address from L1 is not empty and improved error handling when fetching address

* Fix indentation issue

* Fix test

* goimports fix

* goimports

---------

Co-authored-by: Alejandro Ranchal-Pedrosa <a.ranchalpedrosa@gmail.com>
Co-authored-by: jonastheis <4181434+jonastheis@users.noreply.github.com>
Co-authored-by: jonastheis <jonastheis@users.noreply.github.com>
Co-authored-by: ranchalp <ranchalp@users.noreply.github.com>
Co-authored-by: Péter Garamvölgyi <peter@scroll.io>
2025-02-28 15:53:32 +01:00
Jonas Theis
3d3032c0e1
feat(permissionless batches): block production without signature (#1117)
* port changes from #1013

* port changes from #1068

* go.mod tidy

* fix compile error

* fix goimports

* fix log

* address review comments

* upgrade golang.org/x/net to 0.23.0

* port changes from #1018

* fix tests and linter errors

* address review comments

* refactor rollup sync service / verifier to use CalldataBlobSource to retrieve data from L1

* add configuration and initialize blob clients

* fix unit tests

* remove unused code

* address review comments

* address more review comments

* implement first version of new da-codec and to handle multiple batches submitted in one transaction

* add CommitBatchDAV7 and handle multiple commit events submitted in a single transactions

* fix bug due to previous batch being empty when processing the first batch within a set of batches

* Allow using MPT

* update to latest da-codec

* add field to CommittedBatchMeta to store LastL1MessageQueueHash for CodecV7 batches

* adjust rollup verifier to support CodecV7 batches

* address review comments

* fix issues after merge

* go mod tidy

* fix unit tests

* update da-codec

* add test TestValidateBatchCodecV7

* go mod tidy

* do not log error on shutdown

* add sanity check for version to deserialization of committedBatchMetaV7

* port changes from #1073

* chore: auto version bump [bot]

* address review comments

* add more logs

* disable ENRUpdater if DA sync mode is enabled

* exit pipeline if context is cancelled

* correctly handle override by setting the head of the chain to the parent's height so that created blocks will always become part of canonical chain

* fix error with genesis event being nil

* rebase #1087 to new base branch

* chore: auto version bump [bot]

---------

Co-authored-by: Ömer Faruk Irmak <omerfirmak@gmail.com>
Co-authored-by: Thegaram <Thegaram@users.noreply.github.com>
Co-authored-by: jonastheis <jonastheis@users.noreply.github.com>
Co-authored-by: Péter Garamvölgyi <peter@scroll.io>
2025-02-25 15:38:48 +01:00
colin
60cbf64f9c
feat: add EIP-7702 (#1112)
* feat: add EIP-7702

* fix goimport

* add unit tests

* add api test

* sync txpool update

* update generated code

* make code readable

* fix goimport

* fix TestAsyncChecker unit test

* add AuthorizationList in fuzz tests for completeness sake

* add EuclidV2 test, EIP-7702 transaction in TestT8n

* clean up logs

* bump version

* fix TestAsyncChecker

* Revert "fix TestAsyncChecker"

This reverts commit 314478303d4a504a3948bd6595568916ba7d82f0.

* accept eip-7702 txns only after enabling eip-7702

* revert IntrinsicGas param name from setCodeAuthorizations to authList

* fix a bug

* align upstream implementation in Encoding Receipts

* fix one test case

* fix tracer

* return precode copy

* support setcode tx in EstimateGas and add unit tests

* add TestValidateAuthorizations

* poseidon hash fix

* migrate a fix before the fix pr is merged

* support setcode type transactions in TransactionData

* chore: auto version bump [bot]

* add a nonce-gapped-auth-does-not-block-pending-tx unit test

* make the auth invalid

* Apply suggestions from code review

* change usedAndLeftSlots and knownConflicts to util functions

* add comments about different return of applyAuthorization

* remove gencodec:required in transaction signatures

* fix goimport

* update StructLogger and AccessListTracer

* fix a bug

* fix flaky test

---------

Co-authored-by: colinlyguo <colinlyguo@users.noreply.github.com>
Co-authored-by: Péter Garamvölgyi <peter@scroll.io>
2025-02-25 14:56:51 +01:00
Jonas Theis
b4f36b2489
feat(MessageQueueV2): add reading of MessageQueueV2 and transition logic from V1 to V2 for EuclidV2 (#1108)
* port changes from #1013

* port changes from #1068

* go.mod tidy

* fix compile error

* fix goimports

* fix log

* address review comments

* upgrade golang.org/x/net to 0.23.0

* port changes from #1018

* fix tests and linter errors

* address review comments

* refactor rollup sync service / verifier to use CalldataBlobSource to retrieve data from L1

* add configuration and initialize blob clients

* fix unit tests

* remove unused code

* address review comments

* address more review comments

* implement first version of new da-codec and to handle multiple batches submitted in one transaction

* add CommitBatchDAV7 and handle multiple commit events submitted in a single transactions

* fix bug due to previous batch being empty when processing the first batch within a set of batches

* Allow using MPT

* implement reading of QueueTransaction from  L1MessageQueueV1 and V2

* implement access to V1 and V2 messages and replace usage so that V1 is used before EuclidV2 fork and V2 afterward

* add tests

* update to latest da-codec

* add field to CommittedBatchMeta to store LastL1MessageQueueHash for CodecV7 batches

* adjust rollup verifier to support CodecV7 batches

* address review comments

* consume all L1 messages before EuclidV2 fork

* address review comments

* address review comments

* fix issues after merge

* go mod tidy

* fix unit tests

* update da-codec

* add test TestValidateBatchCodecV7

* go mod tidy

* do not log error on shutdown

* add flag to explicitly disable L1MessageQueueV2

* add TestEuclidV2HardForkMessageQueue to scroll worker

* add sanity check for version to deserialization of committedBatchMetaV7

* add mechanism for nodes to retrieve V2 messages even if they upgrade after L1MessageQueueV2 is deployed

* chore: auto version bump [bot]

* address review comments

* Update core/rawdb/accessors_l1_message.go

Co-authored-by: colin <102356659+colinlyguo@users.noreply.github.com>

* address review comments

---------

Co-authored-by: Ömer Faruk Irmak <omerfirmak@gmail.com>
Co-authored-by: Thegaram <Thegaram@users.noreply.github.com>
Co-authored-by: colin <102356659+colinlyguo@users.noreply.github.com>
Co-authored-by: Péter Garamvölgyi <peter@scroll.io>
2025-02-14 12:57:07 +01:00
Ömer Faruk Irmak
4bdf6d096c
feat: Add support for L1 MPT (#1104)
* Allow using MPT

* Load leaves and compare in-memory

* Update api.go

* remove checker

* chore: auto version bump [bot]

---------

Co-authored-by: omerfirmak <omerfirmak@users.noreply.github.com>
2025-02-05 14:57:40 +01:00
Péter Garamvölgyi
447fed2573
feat: include L1 message with insufficient balance (#462)
* feat: include L1 message with insufficient balance

* fix tests

* add comment

* bump version
2025-01-22 12:42:05 +01:00
Jonas Theis
ac8164f5a4
feat: follower node sync from DA (#1098)
* port changes from #1013

* port changes from #1068

* go.mod tidy

* fix compile error

* fix goimports

* fix log

* address review comments

* upgrade golang.org/x/net to 0.23.0

* bump version

* remove unused flag

* update da-codec commit

---------

Co-authored-by: Péter Garamvölgyi <peter@scroll.io>
2024-12-18 17:27:51 +01:00
Ömer Faruk Irmak
f00dc06628
fix: account for tx subcircuit confidence factor (#1065) 2024-10-11 09:19:04 +03:00
Ömer Faruk Irmak
7ff93ca224
fix: initialize pending block with an empty block (#1052) 2024-09-20 17:19:50 +03:00
Ömer Faruk Irmak
c0094ee0b4
fix: avoid committing empty blocks after the deadline (#1051) 2024-09-20 14:59:23 +03:00
Ömer Faruk Irmak
d599666894
fix: make reorg mode explicit (#1049) 2024-09-20 10:19:05 +03:00
colin
1d02d04b5d
feat(scroll-worker): add nil consumption block metrics (#1033)
* feat(scroll-worker): add nil consumption block metrics

* increase the version
2024-09-17 22:03:15 +08:00
Ömer Faruk Irmak
6cdcff6275
fix: reuse timestamp for blocks failing CCC (#1031)
we assume that same height wont trigger multiple reorgs to be able
to put an upper bound on the reorg depth. We rely on the fact that
AsyncChecker executes transactions one-by-one and tells worker the
safe set of transactions to include in the replacement block that
wont trigger another error on the same block. If worker changes the
timestamp and that causes significant changes to the execution flow
of included transactions; we might have a height where multiple
reorgs happen.
2024-09-10 14:59:42 +03:00
Ömer Faruk Irmak
51082b29c5
fix: properly handle wrapped retryable errors (#1030)
* fix: properly handle wrapped retryable errors

* chore: auto version bump [bot]

---------

Co-authored-by: Péter Garamvölgyi <peter@scroll.io>
Co-authored-by: Thegaram <Thegaram@users.noreply.github.com>
2024-09-09 18:37:32 +02:00
Ömer Faruk Irmak
e426d4bffa
fix: ignore RC check if force committing (#1029)
* fix: ignore RC check if force committing

* rename force to reorging

* use prev goimports version
2024-09-09 18:31:22 +02:00
Ömer Faruk Irmak
bdb1ffb97a
feat: add miner idle metric (#1023) 2024-09-05 17:50:04 +03:00
Ömer Faruk Irmak
e0203bf9b7
feat: double check ancestor RowConsumption before committing (#1022) 2024-09-05 16:54:12 +03:00
Ömer Faruk Irmak
0573f6e440
fix: disable headCCCCheck for follower nodes (#1021) 2024-09-05 13:38:45 +03:00
Ömer Faruk Irmak
e9259b783f
feat: implement and integrate counter-based CCC (#982)
Co-authored-by: colin <102356659+colinlyguo@users.noreply.github.com>
Co-authored-by: Zhang Zhuo <mycinbrin@gmail.com>
Co-authored-by: Xi Lin <zimpha@gmail.com>
2024-09-04 13:33:51 +03:00
colin
c252ee1ee0
feat(tx-pool): fast reject known skipped txs (#1004)
* feat(tx-pool): fast reject known skipped txs (#1001)

* feat(tx-pool): fast reject known skipped txs

* fix make lint

* add miner flag to tx pool

* bump version
2024-08-26 22:48:44 +08:00
Ömer Faruk Irmak
4464f48a5d
refactor: remove unused unconfirmed.go (#972) 2024-08-12 13:08:42 +03:00
Ömer Faruk Irmak
2411ae063e
refactor: rename CCC package for less repetition (#967) 2024-08-09 08:21:14 +03:00
Ömer Faruk Irmak
9abdd5b9aa
feat: defer txpool reorg until worker fetches txns for the next block (#905) 2024-07-26 10:25:58 +03:00
HAOYUatHZ
9ee6976fe5
fix(miner,rpc): fix updateSnapshot (#916)
* fix `updateSnapshot`

* fix

* chore: auto version bump [bot]

---------

Co-authored-by: HAOYUatHZ <HAOYUatHZ@users.noreply.github.com>
2024-07-23 22:22:51 +08:00
Ömer Faruk Irmak
c3371e2b07
fix: return early as expected when engine.Prepare fails (#886) 2024-07-11 11:51:02 +03:00
Péter Garamvölgyi
c00352023b
fix: update l1 db entry for curie transition block (#835) 2024-06-20 15:00:07 +03:00
Ömer Faruk Irmak
94c6fc097a
refactor: cleanup scroll_worker.go (#823) 2024-06-14 15:02:21 +03:00
Ömer Faruk Irmak
dc57ae2468
fix: account for the artificially added delay in commit stage (#806)
* fix: account for the artificially added delay in commit stage

* linter

* chore: auto version bump [bot]

---------

Co-authored-by: omerfirmak <omerfirmak@users.noreply.github.com>
2024-06-07 09:39:05 +02:00
Ömer Faruk Irmak
d0860229c2
fix: avoid accidentally sharing a tracer between goroutines (#768)
Avoid accidentally sharing a tracer between goroutines

Co-authored-by: Péter Garamvölgyi <peter@scroll.io>
2024-06-05 17:55:05 +03:00
Ömer Faruk Irmak
36d7325ea1
fix: make commit retry logic selective (#788) 2024-05-31 12:05:36 +03:00
Ömer Faruk Irmak
a43879b738
feat: allow non-ccc pipelines (#781) 2024-05-30 14:59:37 +03:00
Ömer Faruk Irmak
e6cc960f2f
fix: properly release pipeline stages (#783) 2024-05-29 23:46:03 +03:00
Péter Garamvölgyi
bfe803001b
feat: update L1 data fee in Curie hard fork (#755)
* update fee calculation

* add missing GPO slots to trace

* add placeholder for contract update logic

* nit

* update fee calculation

* update formula

* update GPO slots

* update L1GPO bytecode

* apply Curie in new worker

* move bytecode to config

* create an empty block for curie hard fork

* initialize L1GasPriceOracle storage slots

* add comments

* add test

* add IsCurie to traces and tests

* group GPO storage slots into a struct

* update unit test

* chore: auto version bump [bot]

* trigger ci

* update bytecode

* remove leading 0x

* update comments

* include rollup fee tests in CI

---------

Co-authored-by: Ömer Faruk Irmak <omerfirmak@gmail.com>
Co-authored-by: Thegaram <Thegaram@users.noreply.github.com>
2024-05-28 14:12:39 +02:00
Ömer Faruk Irmak
89ff451c77
fix: make sure building of pending blocks don't have any lasting sideaffects (#779) 2024-05-28 12:54:36 +03:00
Ömer Faruk Irmak
b9919a572a
fix: make consensus engine wait for a bit before giving up on worker (#774)
and if it happens despite the wait, let worker retry
2024-05-27 19:44:40 +03:00
Ömer Faruk Irmak
9b4a779104
feat: sanity check locally built blocks via local consensus engine (#767)
and make the entire commit flow synchronous
2024-05-24 10:12:37 +03:00
Ömer Faruk Irmak
51bb998ded
fix: prioritized tx not being cleared after skipping it (#764)
* fix: prioritized tx not being cleared after skipping it

* fix nonce in comment

* chore: auto version bump [bot]

* chore: auto version bump [bot]

---------

Co-authored-by: omerfirmak <omerfirmak@users.noreply.github.com>
Co-authored-by: Péter Garamvölgyi <peter@scroll.io>
Co-authored-by: Thegaram <Thegaram@users.noreply.github.com>
2024-05-24 14:49:57 +08:00
Ömer Faruk Irmak
dd96ceced8
feat: implement relaxed period in clique (#763)
* feat: implement relaxed period in clique

and enable it on Sepolia

* simplify if check

* chore: auto version bump [bot]

* Update clique.go

---------

Co-authored-by: omerfirmak <omerfirmak@users.noreply.github.com>
2024-05-22 11:34:43 +02:00
Ömer Faruk Irmak
c7990a3eb1
feat(worker): pipeline block building (#735) 2024-05-21 16:11:06 +03:00
Péter Garamvölgyi
caec0c34fa
fix(worker): set default account fetch limit (#756) 2024-05-17 19:17:43 +02:00
Ömer Faruk Irmak
12871c7745
feat(worker): try to limit the number of txns miner has to deal with (#745)
to reduce the effect of having a huge backlog on performance
2024-05-13 09:20:55 +03:00
Péter Garamvölgyi
037781a187
feat(worker): disable enforceTips when fetching pending transactions (#740)
* Update worker.go

* chore: auto version bump [bot]

---------

Co-authored-by: Thegaram <Thegaram@users.noreply.github.com>
2024-05-06 10:04:16 +08:00
HAOYUatHZ
c5836a42d3
docs(miner): rename circuitCapacityReached to circuitCapacityOrBlockTimeReached (#724)
* docs(miner): rename `circuitCapacityReached` to `ccOrBtReached`

* minor

* rename `ccOrBtReached` to `circuitCapacityOrBlockTimeReached`
2024-04-28 16:27:52 +08:00
Nazarii Denha
3592139384
(feat)all: add EIP-1153 - transient storage (#721)
* all: implement EIP-1153 transient storage (#26003)

Implements TSTORE and TLOAD as specified by the following EIP:

https://eips.ethereum.org/EIPS/eip-1153
https://ethereum-magicians.org/t/eip-1153-transient-storage-opcodes/553

Co-authored-by: Sara Reynolds <snreynolds2506@gmail.com>
Co-authored-by: Martin Holst Swende <martin@swende.se>
Co-authored-by: Gary Rong <garyrong0905@gmail.com>

* core/vm: move TSTORE,TLOAD to correct opcode nums (#27613)

* core/vm: move TSTORE,TLOAD to correct opcode nums

* core/vm: cleanup

* fix tests, rename

* goimports

* enable 1153 at Curie

* bump version

* comment fix

* improve test

* version

* testchainconfig

* fix another test that affects newly added

* fix previous test to clenaup after

---------

Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Sara Reynolds <snreynolds2506@gmail.com>
Co-authored-by: Martin Holst Swende <martin@swende.se>
Co-authored-by: Gary Rong <garyrong0905@gmail.com>
Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de>
2024-04-28 15:59:26 +08:00
Péter Garamvölgyi
62926d4649
feat(worker): seal block early if we're over target block time (#706)
* feat(worker): seal block early if we're over target block time

* use current.header.Time

* typo

* break instead of return
2024-04-18 10:44:59 +08:00
colin
d81a3308b1
feat(worker): add a commit tx failed metric (#704)
* feat(worker): add a commit tx failed metric

* bump version

* add number of L1 messages metric
2024-04-17 18:32:00 +08:00
georgehao
678a9fcb69
feat: add more state_transition, worker, and tracing metrics (#700)
* feat: add transactions len metrics of block processer

* feat: (worker): add metrics

* feat: add commitTransaction loops

* feat: add metrics to rollup tracing

* feat: add metrics to getTxResult

* feat: bump version

* add state revert metric timer

* feat: add commitNewWrok metrics

* feat: fix comments

* feat: remove the consume part metrics

* feat: update

* Apply suggestions from code review

Co-authored-by: colin <102356659+colinlyguo@users.noreply.github.com>

* feat: update

* feat: address comments

* chore: auto version bump [bot]

* feat: bump version

* add tests

* Revert "add tests"

This reverts commit 175d544a68fc964dcc062b46c1a010ed821a0996.

---------

Co-authored-by: Ömer Faruk Irmak <omerfirmak@gmail.com>
Co-authored-by: colin <102356659+colinlyguo@users.noreply.github.com>
Co-authored-by: georgehao <georgehao@users.noreply.github.com>
Co-authored-by: colinlyguo <colinlyguo@scroll.io>
2024-04-16 16:05:21 +08:00