-
Notifications
You must be signed in to change notification settings - Fork 108
feat(runner): Proofs Extension #258
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Collaborator
🟡 Heimdall Review Status
|
b38d94c to
6e24951
Compare
Contributor
|
This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
Contributor
|
This pull request was closed because it has been inactive for 5 days since being marked as stale. |
danyalprout
pushed a commit
that referenced
this pull request
Jan 11, 2026
* bump reth * Add comm * Fix the problem
danyalprout
pushed a commit
that referenced
this pull request
Jan 11, 2026
* bump reth * Add comm * Fix the problem
danyalprout
pushed a commit
that referenced
this pull request
Jan 12, 2026
* bump reth * Add comm * Fix the problem
github-merge-queue bot
pushed a commit
that referenced
this pull request
Jan 12, 2026
* Tidy unused variables from op payload builder (#427) ## 📝 Summary Cleanup PR to remove unused variables. ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [ ] Run `make lint` * [ ] Run `make test` * [ ] Added tests (if applicable) * Reth 1.2.0 (#429) ## 📝 Summary Lovely reth changes. ## 💡 Motivation and Context Pectra ## ✅ I have completed the following steps: * [X] Run `make lint` * [X] Run `make test` * [ ] Added tests (if applicable) --------- Co-authored-by: Ferran Borreguero <[email protected]> Co-authored-by: shana <[email protected]> Co-authored-by: Solar Mithril <[email protected]> Co-authored-by: Vitaly Drogan <[email protected]> * Add metrics for reverted transactions and builder balance in exex (#451) ## 📝 Summary <!--- A general summary of your changes --> ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [x] Run `make lint` * [x] Run `make test` * [x] Added tests (if applicable) * Flashblocks with incremental blocks + support in tester (#454) ## 📝 Summary This PR changes uses the incremental format for Flashblocks and adds support for it on tester. Generate a genesis file: ``` $ cargo run -p op-rbuilder --bin tester --features optimism -- genesis --output genesis.json ``` Run op-rbuilder with flashblocks ``` $ cargo run -p op-rbuilder --bin op-rbuilder --features optimism,flashblocks node --authrpc.port 4444 --authrpc.jwtsecret ./crates/op-rbuilder/src/tester/fixtures/test-jwt-secret.txt --chain ./genesis.json --datadir /tmp/builder2 --disable-discovery --http --http.port 8545 ``` Run the tester with flashblocks enabled: ``` $ cargo run -p op-rbuilder --bin tester --features optimism -- run --flashblocks-endpoint ws://localhost:1111 ``` Now, there are two streams available, one from the builder (websocat ws://localhost:1111) and another one from the tester which mimicks the Rollup-boost preconfirmations (websocat ws://localhost:1112). ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [ ] Run `make lint` * [ ] Run `make test` * [ ] Added tests (if applicable) --------- Co-authored-by: Daniel Xifra <[email protected]> * Remove reverting transactions from pool in op-rbuilder (#456) ## 📝 Summary Marks reverting transactions as invalid in the payload building process and removed dependents. Also removes reverting hashes from the tx pool. This would result in transactions that revert not be considered for future blocks once it's simulated once. ## 💡 Motivation and Context Remove the need to resimulate reverting transactions for revert protection. --- ## ✅ I have completed the following steps: * [x] Run `make lint` * [x] Run `make test` * [x] Added tests (if applicable) * Fix deposit command to right address (#468) ## 📝 Summary Deposit command was not funding the address correctly ## 💡 Motivation and Context Tested deposits in integration tests --- ## ✅ I have completed the following steps: * [x] Run `make lint` * [x] Run `make test` * [x] Added tests (if applicable) * Add priority fee integration test (#463) ## 📝 Summary Add integration test to op-rbuilder that asserts that the block is built with priority fee ordering ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [x] Run `make lint` * [x] Run `make test` * [x] Added tests (if applicable) * Make flashblock ws url as a flag and add more data (#442) ## 📝 Summary Making flashblock websocket as flag so that it can be customizable. Also added receipts, account balance, block number into the metadata field, such that the RPC node can build the RPC response for `eth_transactionReceipt` and `eth_getBalance` for pending blocks. (#4) Added an integration test to test that the metadata field indeed has the new data. ## ✅ I have completed the following steps: * [x] Run `make lint` * [x] Run `make test` * [x] Added tests (if applicable) * Make block times dynamic in flashblock builder (#482) ## 📝 Summary Currently the block time is hard coded to assume the chain block time is 1s and flashblock time is 250ms. But for Base the chain block time is 2s. Thus fixing this by adding args to make it dynamic. <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [x] Run `make lint` * [x] Run `make test` * [x] Added tests (if applicable) * Fix flashblocks receipt index (#494) ## 📝 Summary The index for getting the receipt is incorrect as it's using an updated index, fix it. Added an additional assertion in integration test to test this. <!--- A general summary of your changes --> ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [ ] Run `make lint` * [ ] Run `make test` * [ ] Added tests (if applicable) * Refactor ExecutedPayload and ExecutionInfo (#477) ## 📝 Summary Moved ExecutionInfo and ExecutingPayload into primitives, combining them Now we could implement revert protection for Flashblocks too ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [ ] Run `make lint` * [ ] Run `make test` * [ ] Added tests (if applicable) * Remove prints in op-rbuilder (#502) ## 📝 Summary <!--- A general summary of your changes --> ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [ ] Run `make lint` * [ ] Run `make test` * [ ] Added tests (if applicable) * Add txn monitoring in op-rbuilder pool (#500) ## 📝 Summary This PR introduces a monitoring service that prints all the transactions that arrive to the transaction pool in op-rbuilder. ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [ ] Run `make lint` * [ ] Run `make test` * [ ] Added tests (if applicable) * Interop support (#462) Implement SupervisorValidator to be used in rbuilder Add additional primitives crate, that is used for storing external ## 📝 Summary <!--- A general summary of your changes --> ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [x] Run `make lint` * [x] Run `make test` * [x] Added tests (if applicable) * Fixed grammatical errors for improved readability (#511) Corrected grammar: "transactions events" → "transaction events" for proper noun-adjective agreement. Preposition correction: "on" → "at" for referring to a website link properly. Corrected article usage: "any" → "a" for clarity. * deps: reth v1.3.4 (#507) ## 📝 Summary <!--- A general summary of your changes --> Bump deps to reth `v1.3.3` ## ✅ I have completed the following steps: * [x] Run `make lint` * [x] Run `make test` * [ ] Added tests (if applicable) --------- Co-authored-by: Daniel Xifra <[email protected]> * Remove previous interop impl (#526) ## 📝 Summary I will remove previous interop version in favor of newly written reth implementation. After this PR i'll make a follow-up PR with dependency bump and additional logic for tx filtering. ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [ ] Run `make lint` * [ ] Run `make test` * [ ] Added tests (if applicable) * fix: don't miss blocks on batcher updates (#529) ## 📝 Summary When batcher's max channel duration is big enough (e.g. 10m), the batcher would be pushing its updates at specified intervals. This causes the sequencer to send an avalanche of FCUs (and getBlockByNumber) that push safe head step-by-step. As a consequence it can happen that the time b/w FCU and ensuing getPayload would be on the scale of ~2.5s. This means that we should "remember" the payloads long enough to accommodate that corner-case. --- ## ✅ I have completed the following steps: * [ ] Run `make lint` * [ ] Run `make test` * [ ] Added tests (if applicable) * Fix integration tests (#536) ## 📝 Summary Fix deposit and flashblocks integration tests. Resolves flashbots/rbuilder#533 and flashbots/rbuilder#521 ## ✅ I have completed the following steps: * [x] Run `make lint` * [x] Run `make test` * [x] Added tests (if applicable) * Add metrics for flashblock and message tracking in OpRBuilder (#543) Enhanced the OpRBuilderMetrics struct to include new metrics for tracking flashblocks, messages sent, and invalid blocks. Updated the OpPayloadBuilder to utilize these metrics during block building and transaction simulation processes. - Added `flashblock_count`, `messages_sent_count`, and `invalid_blocks_count` to OpRBuilderMetrics. - Integrated metrics tracking in OpPayloadBuilder for message sending, block building success, and transaction simulation. - Recorded durations for various operations to improve performance monitoring. ## 📝 Summary <!--- A general summary of your changes --> ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [ ] Run `make lint` * [ ] Run `make test` * [ ] Added tests (if applicable) * deps: reth v1.3.8 (#553) ## 📝 Summary Bumps reth dependencies to `1.3.8`. ## ✅ I have completed the following steps: * [x] Run `make lint` * [x] Run `make test` * [ ] Added tests (if applicable) * Fix Isthmus request hash; support reth 1.3.11 (#564) ## 📝 Summary Adding reth 1.3.11 for the upcoming op chain sepolia Isthmus hardfork for op-rbuilder flashblock builder Also fixing request hash for Isthmus validity rules https://specs.optimism.io/protocol/isthmus/exec-engine.html#header-validity-rules. Tested deploying on Base devnet, it's able to sync again ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [ ] Run `make lint` * [ ] Run `make test` * [ ] Added tests (if applicable) * chore: fix op-rbuilder devnet docs (#562) ## 📝 Summary Update the op-rbuilder devnet documentation: * Update it to use the builder-playground * Various fixes (e.g. remove optimism feature, use fully qualified docker image so it pulls automatically) ## ✅ I have completed the following steps: * [x] Run `make lint` * [x] Run `make test` * [x] Added tests (if applicable) * Use latest reth for op-rbuilder (#570) ## 📝 Summary <!--- A general summary of your changes --> ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [ ] Run `make lint` * [ ] Run `make test` * [ ] Added tests (if applicable) * Fix isthmus withdrawals hash on payload builder vanilla (#571) ## 📝 Summary Add isthmus withdrawal hash fix on the vanilla builder. Previously was added to the flashblocks builder. ## 💡 Motivation and Context Fix errors around invalid blocks due to incorrect withdrawals hash --- ## ✅ I have completed the following steps: * [x] Run `make lint` * [x] Run `make test` * [x] Added tests (if applicable) * Fix resource usage in monitoring task (#588) ## 📝 Summary Fixes unbounded mem growth in monitoring task ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [ ] Run `make lint` * [ ] Run `make test` * [ ] Added tests (if applicable) * fix: don't build flashblocks with more gas than block gas limit (#567) ## 📝 Summary Currently it's possible for the builder to make more Flashblocks than intended during a block (likely due to delays). If more flashblocks are made than desired (e.g. 11 flashblocks for a 2s block w/ 200ms Flashblocks), the 11th flashblock will have a gas limit that is over the blocks gas limit and will cause invalid blocks on the sequencer. ## 💡 Motivation and Context If the builder produces a full block that uses more gas than the gas limit, the local EL client will treat it as invalid. --- ## ✅ I have completed the following steps: * [ ] Run `make lint` * [x] Run `make test` * [x] Added tests (if applicable) * op-rbuilder: Update Documentation / CI Script (#575) ## 📝 Summary 1. Update the version of op-reth used by CI 2. Make the CI script work on macOS as well as linux 3. Update the instructions for running/testing op-rbuilder ## 💡 Motivation and Context 1. The CI script was handy for downloading Reth 2. The instructions didn't work for me (due to the optimism feature being removed etc). --- ## ✅ I have completed the following steps: * [x] Run `make lint` * [x] Run `make test` * [x] Added tests (if applicable) --------- Co-authored-by: shana <[email protected]> * Revert revert protection in op-rbuilder (#602) ## 📝 Summary The builder block building times always slowly increase to a very high number on Base Sepolia, suspecting revert protection is causing failed txs to get backed up, which causes slow down in op-rbuilder block building. ``` # HELP reth_op_rbuilder_payload_num_tx_simulated_fail Number of transactions in the payload that failed simulation # TYPE reth_op_rbuilder_payload_num_tx_simulated_fail summary reth_op_rbuilder_payload_num_tx_simulated_fail{quantile="0"} 77 reth_op_rbuilder_payload_num_tx_simulated_fail{quantile="0.5"} 3198.061173550786 reth_op_rbuilder_payload_num_tx_simulated_fail{quantile="0.9"} 3223.1035892442424 reth_op_rbuilder_payload_num_tx_simulated_fail{quantile="0.95"} 3223.748274430612 reth_op_rbuilder_payload_num_tx_simulated_fail{quantile="0.99"} 3226.973635127358 reth_op_rbuilder_payload_num_tx_simulated_fail{quantile="0.999"} 3226.973635127358 reth_op_rbuilder_payload_num_tx_simulated_fail{quantile="1"} 3228 reth_op_rbuilder_payload_num_tx_simulated_fail_sum 64118848 reth_op_rbuilder_payload_num_tx_simulated_fail_count 21069 # HELP reth_op_rbuilder_payload_tx_simulation_duration Duration of payload simulation of all transactions # TYPE reth_op_rbuilder_payload_tx_simulation_duration summary reth_op_rbuilder_payload_tx_simulation_duration{quantile="0"} 0.018329514 reth_op_rbuilder_payload_tx_simulation_duration{quantile="0.5"} 0.49002444205448686 reth_op_rbuilder_payload_tx_simulation_duration{quantile="0.9"} 0.5026304818952316 reth_op_rbuilder_payload_tx_simulation_duration{quantile="0.95"} 0.5079867028401951 reth_op_rbuilder_payload_tx_simulation_duration{quantile="0.99"} 0.553164415015488 reth_op_rbuilder_payload_tx_simulation_duration{quantile="0.999"} 0.553164415015488 reth_op_rbuilder_payload_tx_simulation_duration{quantile="1"} 0.555461782 reth_op_rbuilder_payload_tx_simulation_duration_sum 9654.159540928 reth_op_rbuilder_payload_tx_simulation_duration_count 25870 # HELP reth_op_rbuilder_flashblock_build_duration Flashblock build duration # TYPE reth_op_rbuilder_flashblock_build_duration summary reth_op_rbuilder_flashblock_build_duration{quantile="0"} 0.055144161 reth_op_rbuilder_flashblock_build_duration{quantile="0.5"} 0.5166962986266059 reth_op_rbuilder_flashblock_build_duration{quantile="0.9"} 0.5348868728374531 reth_op_rbuilder_flashblock_build_duration{quantile="0.95"} 0.5672812838109652 reth_op_rbuilder_flashblock_build_duration{quantile="0.99"} 0.583272957920482 reth_op_rbuilder_flashblock_build_duration{quantile="0.999"} 0.583272957920482 reth_op_rbuilder_flashblock_build_duration{quantile="1"} 0.60984729 reth_op_rbuilder_flashblock_build_duration_sum 9081.926654393968 reth_op_rbuilder_flashblock_build_duration_count 21065 # HELP reth_op_rbuilder_payload_num_tx_simulated_success Number of transactions in the payload that were successfully simulated # TYPE reth_op_rbuilder_payload_num_tx_simulated_success summary reth_op_rbuilder_payload_num_tx_simulated_success{quantile="0"} 1 reth_op_rbuilder_payload_num_tx_simulated_success{quantile="0.5"} 11.000052032263987 reth_op_rbuilder_payload_num_tx_simulated_success{quantile="0.9"} 20.999528921206892 reth_op_rbuilder_payload_num_tx_simulated_success{quantile="0.95"} 24.001108231483542 reth_op_rbuilder_payload_num_tx_simulated_success{quantile="0.99"} 29.00012111115082 reth_op_rbuilder_payload_num_tx_simulated_success{quantile="0.999"} 29.00012111115082 reth_op_rbuilder_payload_num_tx_simulated_success{quantile="1"} 60 reth_op_rbuilder_payload_num_tx_simulated_success_sum 136029 reth_op_rbuilder_payload_num_tx_simulated_success_count 21069 ``` <!--- A general summary of your changes --> ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [ ] Run `make lint` * [ ] Run `make test` * [ ] Added tests (if applicable) * Finish block building process even when cancel request is found (#606) ## 📝 Summary This PR introduces three changes: - It refactors some of the common utilities shared among the tests into a single `TestHarness` struct which spins the test framework with all the components. Note that it does not update the tests to use this new utility. - It fixes an issue with the block builder that would stop the block building process and not return any block if a cancel request was found. This happens when an FCU and a getPayload request are called to close to each other, the getPayload cancels the block building process, and getPayload waits forever for a block that will never be built. Now, the block building finishes. - It adds an integration test to cover this use case with the new utility. ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [ ] Run `make lint` * [ ] Run `make test` * [ ] Added tests (if applicable) * Add usage of jemalloc in op-rbuilder when feature is enabled + improve debug-fast profile (#617) ## 📝 Summary Adding `lto = "thin"` for debug fast profile sped up my build time from 5 min to 4 min Enabled jemalloc in op-rbuilder ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [ ] Run `make lint` * [ ] Run `make test` * [ ] Added tests (if applicable) * fix: set an address for authrpc to the op-rbuilder readme (#581) This PR fixes the launch instructions for `op-rbuilder`, making the AuthRPC accessible on all network interfaces. This is necessary to allow `op-rbuilder` to be reachable from the virtual network interface created by Docker. Additionally, the metrics port has been changed to `9011`, since `9001` is used by `builder-playground` for the `beacon`: ``` go run main.go cook opstack --external-builder http://host.docker.internal:4444 2025/04/23 20:21:02 Log level: info 2025/04/23 20:21:02 Genesis block hash: 0x301f9f301f868d587fec26c2a1b5f7d9896736842ab1787923722c3213b61e05 true ========= Services started ========= - el (authrpc: 8551/8551, http: 8545/8545, rpc: 30303/30303) - beacon (http: 3500/3500, p2p: 9000/9000/udp, p2p: 9000/9001, quic-p2p: 9100/9100) - validator () - rollup-boost (authrpc: 8551/8552) - op-node (http: 8549/8549, metrics: 7300/7300, p2p: 9003/9003, p2p: 9003/9004/udp) - op-geth (authrpc: 8551/8553, http: 8545/8546, metrics: 6061/6061, rpc: 30303/30304, ws: 8546/8547) - op-batcher () ========= Output ========= - op-geth-enode: enode://3479db4d9217fb5d7a8ed4d61ac36e120b05d36c2eefb795dc42ff2e971f251a2315f5649ea1833271e020b9adc98d5db9973c7ed92d6b2f1f2223088c3d852f@127.0.0.1:30304?discport=0 ``` Trailing spaces have also been removed in some places. * Clean up the repo * Add info log for reverting tx hashes * remove unecessary import * Remove monitoring tx task * Remove more things * Remove more stuff * Last clean * more cleaning * Use nightly clippy * Add variable builder deadline * Fix lint * Fix on FB * Remove dep * Change to info * Add flag to enable revert protection * Update * add metric * Fix * Fix lint * Remove print statement * Remove print * Add e2e test for monitor txn * Partial * Add test * Fix lint * Test new generator * More changes * add integration tet * Was using wrong static for jemalloc (#51) * Add version metric to op-rbuilder (#52) * Add a --playground flag on op-rbuilder to start with the flags required to run the builder on playground (#49) * Fix existing build warnings * Add a --playground flag on op-rbuilder to start with the flags required to run the builder on playground Issue: flashbots/op-rbuilder#9 This change adds the ability to autoconfigure op-rbuilder to run a locally deployed builder-playground. Follow the instructions on how to start a builder playground under this repo: https://github.com/SozinM/builder-playground/tree/msozin/feat/flashblocks Now we can use the following startup parameters for op-rbuilder: - `./op-rbuilder node --builder.playground` This will start using the default $HOME/.playground/devnet directory - `./op-rbuilder node --builder.playground=<PATH>` Will use the provided path as the working directory of the playground * Fixed build warning * added justfile recepe * Removing flashblocks and using vanilla builder for now * Updated readme * Integration test uses genesis file (#44) * Integration test uses genesis file * Fix lint * Revert * Issue #36: Migrate the rest of the test to the new test utility (#53) * Issue #36 flashbots/op-rbuilder#36 Migrate the rest of the test to the new test utility introduced in #606 --- This PR introduces the following changes: - Migrates all non-flashblocks integration tests to the new test harness framework - Fixes all build warnings - Adds few helper functions and types for testing - Few refactorings of the test infrastructure - Refactored the way the `tester` binary is linking to op-rbuilder dependencies - Moved all tests under `tests/` directory - Removed `integration` directory` now running `cargo test` will output ``` $ cargo test Finished `test` profile [unoptimized + debuginfo] target(s) in 0.36s Running unittests src/lib.rs (target/debug/deps/op_rbuilder-7bb461ec2888ee4b) running 8 tests test tx_signer::test::test_sign_transaction ... ok test tests::vanilla::smoke::get_payload_close_to_fcu ... ok test tests::vanilla::smoke::transaction_flood_no_sleep ... ok test tests::vanilla::ordering::fee_priority_ordering ... ok test tests::vanilla::revert::monitor_transaction_drops ... ok test tests::vanilla::revert::revert_protection ... ok test tests::vanilla::revert::revert_protection_disabled ... ok test tests::vanilla::smoke::chain_produces_blocks ... ok test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 23.67s Running unittests src/main.rs (target/debug/deps/op_rbuilder-87f69711ab7f0a5e) running 7 tests test generator::tests::test_block_cell_update_value ... ok test generator::tests::test_block_cell_immediate_value ... ok test generator::tests::test_job_deadline ... ok test tx_signer::test::test_sign_transaction ... ok test generator::tests::test_block_cell_wait_for_value ... ok test generator::tests::test_block_cell_multiple_waiters ... ok test generator::tests::test_payload_generator ... ok test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.70s Doc-tests op_rbuilder running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s ``` * lint * update github actions * github actions update * update github actions * update github actions * review feedback * Review feedback and build improvements - `make tester` now builds - Ability to run GH Actions locally through `act` * Fix withdrawals root (#56) * Bump reth to 1.4.1 (#54) * Bump reth to 1.4.1 * Fix integration * Fix test * Fix merge conflict * Add helper utility to check for block inclusion in e2e tests (#60) * Add helper utility to check for block inclusion in e2e tests * Fix lint * Fix * Add opt-in revert protection (#59) * Add revert protection endpoint * more stuff * Finish merge * A bit more stuff * Finish tests * Remove print * Fix lint * Fix test * Fix * Fix lint * Apply feedback * Bundle with more transactions + more safe checks * Rename bundle fields * Rename to a more appropiate bundle * Rename * Move TransactionConditional to Bundle file * Update test comments * Handle unwraps * Fix lint * Fix lint * Fix bundle result (#66) * Remove flashblocks conditional compilation (#67) * Use correct DA transaction compression (#61) * Added drop impl to clean up after tests Changed revert tests a bit fmt Add txpool test Fix DA config, set it via miner Extend tests Add op-alloy-flz dependency and update related configurations - Added `op-alloy-flz` as a dependency in `Cargo.toml` and `Cargo.lock`. - Configured `op-alloy-flz` to be part of the workspace in `op-rbuilder`'s `Cargo.toml`. - Updated the `payload_builder_vanilla.rs` to utilize `op-alloy-flz` for transaction size estimation. - Enhanced test framework to include new data availability tests ensuring block size limits are respected. Add max data availability transaction and block size configuration - Introduced `max_da_tx_size` and `max_da_block_size` fields in `TestHarnessBuilder` and `OpRbuilderConfig`. - Added builder methods `with_max_da_tx_size` and `with_max_da_block_size` for setting these values. - Implemented a new test to ensure transaction size limits are respected in data availability scenarios. - Updated test module to include the new data availability test. Add cumulative_da_bytes_used accur Add da config Use correct DA transaction compression * conflict changes * Modity flashblocks ws bind/port flags (#71) * Modity flashblocks ws bind/port flags * Update * Fix * Migrate e2e tests to Isthmus (#45) * Use isthmus * Update to payload v3 * Add total_block_built_duration metric back to vanilla builder (#77) * Feat/revert protection status endpoint (#76) * Add revert protection status endpoint * Add more changes * Change type * Fix compile error * More * Add test * Clean * Change comment * Fix lint * Remove print statement * Change to moka * Fix --------- Co-authored-by: Solar Mithril <[email protected]> * Fix da scaling (#81) * Add logs for da limits (#86) * Add logs for da limits * Add comments * Fix * Add log for the block building execution (#87) * Add log * Fix lint * Add builder txn to Flashblocks (#89) * Add changes * Remove print * Use original function with manual scaling (#96) * Use original function with manual scaling * Added comment * Add error log in case builder tx da size sets max_da_block_size to 0 (#97) * Add replacement for default reth version (#98) * Add replacement for default reth version Move VERSION to different crate * fmt * Added feature-gated interop (#93) Use derive_more for enum * Use Gauge for da size limits (#105) * Account for DA and gas limit in flashblocks (#104) * Account for DA and gas limit in flashblocks * Use fancy staff * thx karim * Use into_bytes * Upgrade to reth 1.4.7 and main rollup-boost branch (#112) * Add block number and DA used to logging (#107) * modify logging * more * structure logs * Add gas limit and DA transaction results for tracing (#110) * Add gas limit and DA transaction results for tracing * use result * Use block number as hex (#116) * Add another builder tx after the first flashblock (#121) * Add another builder tx after the first flashblock * Fix fb test * Add reverting hashes + min block number to Bundle (#115) * Implement bundle reverting hashes * Merge main * Fix * Add min_block_number * fix litn * Fix * Fix comment * Mark invalid * Rename reverting_hashes * Remove Option * Revert "Remove Option" This reverts commit 4087d35ac53c7bc97f05728bba6c2402a132262c. * feat: add a feature to activate otlp telemetry (#31) * Bundles: Ensure that the min block number is inside the MAX_BLOCK_RANGE_BLOCKS (#128) If a user only specifies the min block number, the max block number is set to the current block number + MAX_BLOCK_RANGE_BLOCKS; however, there is no check that the min block is less than the newly set max block number. * Fix bundle type reverting hashes optional param (#126) * Fix bundle type reverting hashes optional param * Fix * Remove toml and add feature gate (#117) Rebase Remove custom logic Custom Engine API support + engine call propagation * Move bundle validation to primitives folder (#129) * Move bundle validation to primitives folder * Add another check * Fix * Split op-rbuilder in lib and main (#138) * Make op-rbuilder a lib * Fix lint * Two more fixes * Move alloc --------- Co-authored-by: Solar Mithril <[email protected]> * In-process tests, optional dockerized validation node (#132) * Validation node works and tests are passing using the new test infra * revert_protection_monitor_transaction_gc passes * revert_protection_disabled passes * ordering tests are passing * all tests are passing * ready * lint * Github Action login to GHCR.io * testing Github Actions ghcr access * testing Github Actions ghcr access * lint * Closes issue 133 * review feedback * review feedback * Review feedback - ctrl-c * Review feedback * review feedback * Review feedback * review feedback * lint * macos compatibility * lint * lint * fmt (#142) Logic Add extended flashblocks tracing * Add minTimestamp and maxTimestamp as optional fields to bundle (#141) * Add minTimestamp and maxTimestamp as optional fields to bundle * Test that bundles with min timestamp wait aren't included until the block time exceeds it * Add metric for bundles received (#149) * Add metric to count reverted bundles (#151) * Remove extra generic param (#152) * Remove extra generic * Fix fmt * Add pingpong and closing frame handle (#154) * Supress infallible clippy error (#155) * Use tungstenite provided ping handling (#156) * Avoid boxing for the txlogging task (#153) * Fix regression tester command (#160) * Genesis command outputs genesis file (#159) * Account for flashblocks time drift (#123) * quick bugfix Account for dynamic lag in the beginning of building process * More improvements * More improvements * More improvements * More improvements * Wrap everything into the config * Review * Review * Run the vanilla tests using both the flashblocks builder and the vanilla builder (#145) * Applied 68 on top of latest main * Update crates/op-rbuilder/src/tests/smoke.rs Co-authored-by: Copilot <[email protected]> * lint * port new revert unit test * lint --------- Co-authored-by: Copilot <[email protected]> * fix: add default-run to the op-rbuilder's manifest (#162) * Flashtestions (#137) * wip flashtestations * add builder tx interface * add bootstrap on launch * transaction management * working bootstrap * fix github action * address comments * fix cli flags * make flashtestations service non-blocking --------- Co-authored-by: mophr <[email protected]> * Flashtestations flag (#165) * Add feature flag for flashtestations * fix fmt command * Add some telemetry for `eth_sendBundle` (#176) * measure eth_sendBundle latency * rename bundles_received metric to valid_bundles * log error messages * refactor to get rid of unnecessary mut * count all requests sent to eth_sendBundle * add failed_bundles counter * Review (#170) Co-authored-by: Solar Mithril <[email protected]> * Add cli flag for funding key (#168) * Add cli flag for funding key * add docs * Move builder tx right after deposits and put it into base flashblock (#178) * Implement correct flashblocks time cutoff (#172) * Implement dynamic flashblock time adjustment Add control flow with child cancel tokens, that control flashblock duration * Trying to make test non-flaky * Fix test * Rename config field to make it better * Remove extra db config * Remove extra db config * Change default leeway-time + add handing for block cancellation (#185) * Bump reth 1.5.0 (#186) * Use reth 1.5.0 * Bump reth to 1.5.0 --------- Co-authored-by: Solar Mithril <[email protected]> * Add simple logging to timer task (#191) * Improve metrics so we could better plot them (#193) * Bump reth to 1.5.1 (#192) * Reth 151 * Add debug bounds * Fix ordering issue by not including arriving txs into the best transaction iterator (#195) * Remove without_updates for flashblocks (#198) * Add a test to validate that no-tx-pool works (#199) * Add a test to validate that no-tx-pool works * Fix lint * Add TDX quote provider service (#200) * Add gauge metrics for block building steps (#205) * introduce gauge metrics and fix naming for histogram metrics * fix a couple of flashblocks metrics * add fn to set payload builder metrics * Remove redundant account initialization (#208) * Add flashblocks index to payload building context (#210) * Add flashblocks index to payload building context * refactor * fix index * gauge metrics to inspect flag settings (#207) * Bump reth to 1.6 (#215) * Less confusing naming, state is called db and db is called state (#219) * Less confusing naming, state is called db and db is called state * Use renaming destructuring * Add flashblock number filters to eth_sendBundle (#213) * add min and max flashblock number fields to bundle * add min and max flashblock number to FBPooledTransaction * filter based on flashblock number * wrap best txs iterator to consider flashblock number * fix map structure and wrap better * integration tests * Fix bundle state and produce executed block (#223) * WIP right now it has consensus error 2025-08-01T16:10:44.956046Z ERROR engine::persistence: Persistence service failed err=ProviderError(Database(Write(DatabaseWriteError { info: DatabaseErrorInfo { message: "the given key value is mismatched to the current cursor position", code: -30418 }, operation: CursorAppendDup, table_name: "AccountChangeSets", key: [0, 0, 0, 0, 0, 0, 0, 9] }))) * Hacky solution to mergin state * fmt * fmt * remove config.toml * Update crates/op-rbuilder/src/builders/flashblocks/payload.rs --------- Co-authored-by: shana <[email protected]> * Add caching to generator (#221) * WIP right now it has consensus error 2025-08-01T16:10:44.956046Z ERROR engine::persistence: Persistence service failed err=ProviderError(Database(Write(DatabaseWriteError { info: DatabaseErrorInfo { message: "the given key value is mismatched to the current cursor position", code: -30418 }, operation: CursorAppendDup, table_name: "AccountChangeSets", key: [0, 0, 0, 0, 0, 0, 0, 9] }))) * fmt * cache reth db reads in flashblocks payload generation * save tip to cache on new committed state --------- Co-authored-by: Solar Mithril <[email protected]> Co-authored-by: Ash Kunda <[email protected]> * fix: record missing flashblocks (#225) * record missing flashblocks in more places * code cleanup * edit log message * fix: record num txs built with flashblocks enabled (#227) * record num txs built correctly with flashblocks enabled * Fix metrics --------- Co-authored-by: Solar Mithril <[email protected]> * combine eth api modifications (#231) * Add correct metric value (#234) * feat: add transaction gas limit (#214) * feat: add transaction gas limit * fix: update default * fix: update best txns * chore: add test for max txn gas * fix: apply suggestions * fix: tests * chore: update tests * fix: failing tests * Add fix to preserve all executed blocks for flashblocks (#229) * Add ExecutedBlock push on every built flashblock * Update crates/op-rbuilder/src/builders/flashblocks/payload.rs * fix: override clap long version envs (#235) * Improve best tx wrapper (#245) * docs: eth_sendBundle (#243) * doc comments for bundle params * add check for flashblock number range * markdown doc * update rust edition to 2024 (#244) * feat: address gas limiter (#253) * cli args * core impl * metrics * use the gas limiter * don't use optional gas limiter uses an "inner" struct to handle checking if it's enabled or not * cleanup stale addresses only every 100 blocks * unit tests * integration test * feat: add commit message and author in version metrics (#236) * fix: gracefull cancellation on payload build failure (#239) * fix: flashblock contraints in bundle api (#259) * refactor BundleOpts to use with_ methods to set * print logs during tests * fix connecting to flashblocks ws url * fix propagating bundle params for flashblocks check * refactor flashblock ws listener in tests * test setting min=max flashblock param * bump reth to 1.7.0 (#258) * bump reth * Add comm * Fix the problem * flag to determine if calculating state root (#241) * calculate state root * fix tests * add no state root test * check no tx pool instead * comments * optimize * fix lint * use no tx pool * add condition * refactor: add `unreachable_pub` warning and autofix warnings (#263) * Refactor payload builder to accept generic builder tx (#217) * Refactor payload builder to accept generic builder tx * Update crates/op-rbuilder/src/builders/builder_tx.rs Co-authored-by: Solar Mithril <[email protected]> * Update crates/op-rbuilder/src/builders/builder_tx.rs Co-authored-by: Solar Mithril <[email protected]> * Update crates/op-rbuilder/src/builders/flashblocks/service.rs Co-authored-by: Solar Mithril <[email protected]> * Update crates/op-rbuilder/src/builders/builder_tx.rs Co-authored-by: Solar Mithril <[email protected]> * fix lint * fix tests --------- Co-authored-by: Solar Mithril <[email protected]> * refactor: clean up and improve flashblocks `build_payload` (#260) * fix: check per-address gas limit before checking if the tx reverted (#266) * Add support for flashblocks number contract builder tx (#256) * Refactor payload builder to accept generic builder tx * Update crates/op-rbuilder/src/builders/builder_tx.rs Co-authored-by: Solar Mithril <[email protected]> * Update crates/op-rbuilder/src/builders/builder_tx.rs Co-authored-by: Solar Mithril <[email protected]> * Update crates/op-rbuilder/src/builders/builder_tx.rs Co-authored-by: Solar Mithril <[email protected]> * Add support for flashblocks number contract builder tx * add docs * add builder tx to fallback block * fallback to legacy builder tx * allow top or bottom of block builder tx --------- Co-authored-by: Solar Mithril <[email protected]> * Bump reth to 1.8.1 (#274) * bump to 1.8.1 * bump rollup-boost v * bump tracing * feat: overwrite reth default cache directory (#238) * feat: overwrite reth default cache directory * doc: logs path * Add remote quote provider arg for flashtestations (#276) * add metrics to track gas used by reverting txs (#273) * Add flashblocks number integration tests (#277) * Add flashblocks number integration tests * comments * comments * Update flashtestation service with latest contracts (#281) * Flag to save tee key to local file (#286) * Flag to save tee key to lcoal file * fix error handling * lint * comments * atomic file creation and permission * Add flashtestation builder tx and registration in block (#282) * Add flashtestations integration tests (#283) * Add flashtestation builder tx and registration in block * copilot comments * Add flashtestations integration tests * logging improvements * Update crates/op-rbuilder/src/tests/flashtestations.rs Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Copilot <[email protected]> * chore: add unused_async lint, deny unreachable_pub (#299) * refactor: clean up flashblocks context in payload builder (#297) * Add permit flashtestations tx calls from builder (#285) * Add permit flashtestations tx calls from builder * move simumlation calls to builder tx * refactor contract simulation * refactor flashtestations builder tx * fix test comments * comments * Remove non permit flashtestation calls (#302) * feat: implement p2p layer and broadcast flashblocks (#275) * feat: implement flashblock sync over p2p (#288) * reth bump (#306) * feat: publish synced flashblocks to ws (#310) * Add permit functions for flashblocks number contract (#287) * Add permit flashtestations tx calls from builder * move simumlation calls to builder tx * Add permit functions for flashblocks number contract * refactor to simulate call * fix tests * remove ws publishing from synced flashblocks (#312) * [breaking-change] Fix arg for calculating state root (#314) * Fix arg for calculating state root * fix tests * feat: Integrate downstream changes (Jovian hardfork + miner_setGasLimit + reth 1.9.1) (#316) * chore: Rbuilder updates for jovian hardfork (#16) * Jovian ready op-rbuilder * Add factoring in da footprint scalar * Bump reth to 1.9.0 * feat: respect miner_setGasLimit (#18) * respect miner_setGasLimit * fmt * chore: bump to reth 1.9.1 (#20) * wip: telemetry resolution * done * fix: Add gas_limit_config field and make block_gas_limit() public - Added gas_limit_config initialization in flashblocks context - Changed block_gas_limit() visibility from pub(super) to pub for flashtestations access - Removed unused Events import Note: Tests currently fail due to rollup-boost dependency version mismatch (op-alloy 0.20.0 vs 0.22.0) * chore: Update rollup-boost to v0.7.8 for reth 1.9.1 compatibility - Updated rollup-boost dependency from rev dd12e8e to tag v0.7.8 - Resolves op-alloy version mismatch (0.20.0 -> 0.22.0) - All tests now pass (94/94 passing) * chore: apply nightly formatting fixes Applied formatting fixes from cargo +nightly fmt to ensure code passes lint checks. Changes include proper brace placement and line formatting in flashblocks builder_tx and payload_handler. --------- Co-authored-by: Danyal Prout <[email protected]> Co-authored-by: Haardik <[email protected]> * Add workload id as metric to builder (#315) * Add workload id as metric to builder * more tdx measurements * add address * add address to metric * remove rpc * extract constants * chore(deps/reth): bump reth to 1.9.2 (#318) * chore(deps): bump reth (#321) * fix: jovian hardfork tests & fixes (#320) * chore: fixes for jovian * blob fee fixes * Update tests to Jovian * run miner limit tests on both standard/flashblocks * Ensure builder transactions count towards DA usage * Increment DA usage for non-deposit sequencer transactions (e.g. via CL sync) * Add blob gas used to flashblocks delta (#325) * Add blob gas used to delta * update rollup-boost * update rollup-boost tag * feat: resoure metering rpc/lookup * update flashtestation logic to use new workload ID computation (#331) To account for a bug in the xfam and tdAttributes bitmasking logic, we changed the way the workload ID is calculated in the BlockBuilderPolicy. That PR is here: flashbots/flashtestations#53 This means the workload ID calculation needs to change in any upstream services, which includes op-rbuilder. I've made the same change that I made in the solidity contract here in the attestation.rs logic where op-rbuilder calculates the workload ID. The tests have been updated to use the new correct workload ID, which I obtained by running the BlockBuilderPolicy:workloadIdForTDRegistration function on the same TEE registration that is used in the tests. * Add cumulative da of builder tx da size (#322) * Fix builder tx cumulative da * fix builder gas and da calculation * add test * Fix deps (#336) * Fix deps * fix version * fix * bump release * builder backrun * replacement * fix fmt * add is empty * remove not needed logs * switch considering transaction to info * sort by priority fee; add backrun integration test * support all or nothing bundles * priority fee validation * add bundle sorting * use bundle total fee for validation * refactor * remove key by sender * skip checking bundles if failed validation * merge resrouce metering and backrun bundle into one * single buffer size; fix lint * fix DA estimation; use one getter * optimize gettor * use FBPooledTransaction * info logs * handle evm error gracefully * use different metric * check invalid err * chore: rename runner/primitives crates and move reth-rpc to shared * chore: unify extensions to be one per crate * chore: migrate generic node setup to client-primitives, remove client-runner * chore: unify test account logic * chore: removed dead code * chore: migrated test harness to support extensions * chore: update metering rpc tests to use the node harness * chore: code cleanup - Remove file structure sections from READMEs - Move build_node function body into LocalNode::new - Replace local TestHarness::signer methods with Account::signer_b256() * chore: migrate metering non-rpc tests * chore: chain spec loaders * chore: remove genesis file + build it in rust * chore: setup shared primitives and move accounts/contracts there under test utils * chore: move FB test harness to flashblocks crate * chore: delete test-utils, rename client-primites to node * chore: add GHA/script to check that shared crates dont depend on client/ * chore: format features and update lockfile * review feedback * chore: inline config extraction in extension constructors Move config extraction directly into extension constructor calls to reduce intermediate variables in main.rs. * migrate back to generic install_ext * minimal changes to integrate project * fix running tests locally (we have oltp env vars on macs * fix: add native dependencies to udeps CI job The tss-esapi-sys crate requires libtss2-dev to build, which was missing from the udeps job causing CI failures. --------- Co-authored-by: Ferran Borreguero <[email protected]> Co-authored-by: ZanCorDX <[email protected]> Co-authored-by: shana <[email protected]> Co-authored-by: Solar Mithril <[email protected]> Co-authored-by: Vitaly Drogan <[email protected]> Co-authored-by: Daniel Xifra <[email protected]> Co-authored-by: cody-wang-cb <[email protected]> Co-authored-by: Hopium <[email protected]> Co-authored-by: File Large <[email protected]> Co-authored-by: Daniel Xifra <[email protected]> Co-authored-by: Anton <[email protected]> Co-authored-by: Joe Parks <[email protected]> Co-authored-by: Denis Kolodin <[email protected]> Co-authored-by: Solar Mithril <[email protected]> Co-authored-by: Karim Agha <[email protected]> Co-authored-by: Joshua Gutow <[email protected]> Co-authored-by: Ash Kunda <[email protected]> Co-authored-by: Copilot <[email protected]> Co-authored-by: mophr <[email protected]> Co-authored-by: kristoffer <[email protected]> Co-authored-by: Varun Doshi <[email protected]> Co-authored-by: Julio <[email protected]> Co-authored-by: noot <[email protected]> Co-authored-by: Tobi Akerele <[email protected]> Co-authored-by: Haardik <[email protected]> Co-authored-by: theo <[email protected]> Co-authored-by: Alex Melville <[email protected]> Co-authored-by: Haardik <[email protected]>
github-merge-queue bot
pushed a commit
that referenced
this pull request
Jan 12, 2026
* Add metrics for reverted transactions and builder balance in exex (#451) ## 📝 Summary <!--- A general summary of your changes --> ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [x] Run `make lint` * [x] Run `make test` * [x] Added tests (if applicable) * Flashblocks with incremental blocks + support in tester (#454) ## 📝 Summary This PR changes uses the incremental format for Flashblocks and adds support for it on tester. Generate a genesis file: ``` $ cargo run -p op-rbuilder --bin tester --features optimism -- genesis --output genesis.json ``` Run op-rbuilder with flashblocks ``` $ cargo run -p op-rbuilder --bin op-rbuilder --features optimism,flashblocks node --authrpc.port 4444 --authrpc.jwtsecret ./crates/op-rbuilder/src/tester/fixtures/test-jwt-secret.txt --chain ./genesis.json --datadir /tmp/builder2 --disable-discovery --http --http.port 8545 ``` Run the tester with flashblocks enabled: ``` $ cargo run -p op-rbuilder --bin tester --features optimism -- run --flashblocks-endpoint ws://localhost:1111 ``` Now, there are two streams available, one from the builder (websocat ws://localhost:1111) and another one from the tester which mimicks the Rollup-boost preconfirmations (websocat ws://localhost:1112). ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [ ] Run `make lint` * [ ] Run `make test` * [ ] Added tests (if applicable) --------- Co-authored-by: Daniel Xifra <[email protected]> * Remove reverting transactions from pool in op-rbuilder (#456) ## 📝 Summary Marks reverting transactions as invalid in the payload building process and removed dependents. Also removes reverting hashes from the tx pool. This would result in transactions that revert not be considered for future blocks once it's simulated once. ## 💡 Motivation and Context Remove the need to resimulate reverting transactions for revert protection. --- ## ✅ I have completed the following steps: * [x] Run `make lint` * [x] Run `make test` * [x] Added tests (if applicable) * Fix deposit command to right address (#468) ## 📝 Summary Deposit command was not funding the address correctly ## 💡 Motivation and Context Tested deposits in integration tests --- ## ✅ I have completed the following steps: * [x] Run `make lint` * [x] Run `make test` * [x] Added tests (if applicable) * Add priority fee integration test (#463) ## 📝 Summary Add integration test to op-rbuilder that asserts that the block is built with priority fee ordering ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [x] Run `make lint` * [x] Run `make test` * [x] Added tests (if applicable) * Make flashblock ws url as a flag and add more data (#442) ## 📝 Summary Making flashblock websocket as flag so that it can be customizable. Also added receipts, account balance, block number into the metadata field, such that the RPC node can build the RPC response for `eth_transactionReceipt` and `eth_getBalance` for pending blocks. (#4) Added an integration test to test that the metadata field indeed has the new data. ## ✅ I have completed the following steps: * [x] Run `make lint` * [x] Run `make test` * [x] Added tests (if applicable) * Make block times dynamic in flashblock builder (#482) ## 📝 Summary Currently the block time is hard coded to assume the chain block time is 1s and flashblock time is 250ms. But for Base the chain block time is 2s. Thus fixing this by adding args to make it dynamic. <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [x] Run `make lint` * [x] Run `make test` * [x] Added tests (if applicable) * Fix flashblocks receipt index (#494) ## 📝 Summary The index for getting the receipt is incorrect as it's using an updated index, fix it. Added an additional assertion in integration test to test this. <!--- A general summary of your changes --> ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [ ] Run `make lint` * [ ] Run `make test` * [ ] Added tests (if applicable) * Refactor ExecutedPayload and ExecutionInfo (#477) ## 📝 Summary Moved ExecutionInfo and ExecutingPayload into primitives, combining them Now we could implement revert protection for Flashblocks too ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [ ] Run `make lint` * [ ] Run `make test` * [ ] Added tests (if applicable) * Remove prints in op-rbuilder (#502) ## 📝 Summary <!--- A general summary of your changes --> ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [ ] Run `make lint` * [ ] Run `make test` * [ ] Added tests (if applicable) * Add txn monitoring in op-rbuilder pool (#500) ## 📝 Summary This PR introduces a monitoring service that prints all the transactions that arrive to the transaction pool in op-rbuilder. ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [ ] Run `make lint` * [ ] Run `make test` * [ ] Added tests (if applicable) * Interop support (#462) Implement SupervisorValidator to be used in rbuilder Add additional primitives crate, that is used for storing external ## 📝 Summary <!--- A general summary of your changes --> ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [x] Run `make lint` * [x] Run `make test` * [x] Added tests (if applicable) * Fixed grammatical errors for improved readability (#511) Corrected grammar: "transactions events" → "transaction events" for proper noun-adjective agreement. Preposition correction: "on" → "at" for referring to a website link properly. Corrected article usage: "any" → "a" for clarity. * deps: reth v1.3.4 (#507) ## 📝 Summary <!--- A general summary of your changes --> Bump deps to reth `v1.3.3` ## ✅ I have completed the following steps: * [x] Run `make lint` * [x] Run `make test` * [ ] Added tests (if applicable) --------- Co-authored-by: Daniel Xifra <[email protected]> * Remove previous interop impl (#526) ## 📝 Summary I will remove previous interop version in favor of newly written reth implementation. After this PR i'll make a follow-up PR with dependency bump and additional logic for tx filtering. ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [ ] Run `make lint` * [ ] Run `make test` * [ ] Added tests (if applicable) * fix: don't miss blocks on batcher updates (#529) ## 📝 Summary When batcher's max channel duration is big enough (e.g. 10m), the batcher would be pushing its updates at specified intervals. This causes the sequencer to send an avalanche of FCUs (and getBlockByNumber) that push safe head step-by-step. As a consequence it can happen that the time b/w FCU and ensuing getPayload would be on the scale of ~2.5s. This means that we should "remember" the payloads long enough to accommodate that corner-case. --- ## ✅ I have completed the following steps: * [ ] Run `make lint` * [ ] Run `make test` * [ ] Added tests (if applicable) * Fix integration tests (#536) ## 📝 Summary Fix deposit and flashblocks integration tests. Resolves flashbots/rbuilder#533 and flashbots/rbuilder#521 ## ✅ I have completed the following steps: * [x] Run `make lint` * [x] Run `make test` * [x] Added tests (if applicable) * Add metrics for flashblock and message tracking in OpRBuilder (#543) Enhanced the OpRBuilderMetrics struct to include new metrics for tracking flashblocks, messages sent, and invalid blocks. Updated the OpPayloadBuilder to utilize these metrics during block building and transaction simulation processes. - Added `flashblock_count`, `messages_sent_count`, and `invalid_blocks_count` to OpRBuilderMetrics. - Integrated metrics tracking in OpPayloadBuilder for message sending, block building success, and transaction simulation. - Recorded durations for various operations to improve performance monitoring. ## 📝 Summary <!--- A general summary of your changes --> ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [ ] Run `make lint` * [ ] Run `make test` * [ ] Added tests (if applicable) * deps: reth v1.3.8 (#553) ## 📝 Summary Bumps reth dependencies to `1.3.8`. ## ✅ I have completed the following steps: * [x] Run `make lint` * [x] Run `make test` * [ ] Added tests (if applicable) * Fix Isthmus request hash; support reth 1.3.11 (#564) ## 📝 Summary Adding reth 1.3.11 for the upcoming op chain sepolia Isthmus hardfork for op-rbuilder flashblock builder Also fixing request hash for Isthmus validity rules https://specs.optimism.io/protocol/isthmus/exec-engine.html#header-validity-rules. Tested deploying on Base devnet, it's able to sync again ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [ ] Run `make lint` * [ ] Run `make test` * [ ] Added tests (if applicable) * chore: fix op-rbuilder devnet docs (#562) ## 📝 Summary Update the op-rbuilder devnet documentation: * Update it to use the builder-playground * Various fixes (e.g. remove optimism feature, use fully qualified docker image so it pulls automatically) ## ✅ I have completed the following steps: * [x] Run `make lint` * [x] Run `make test` * [x] Added tests (if applicable) * Use latest reth for op-rbuilder (#570) ## 📝 Summary <!--- A general summary of your changes --> ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [ ] Run `make lint` * [ ] Run `make test` * [ ] Added tests (if applicable) * Fix isthmus withdrawals hash on payload builder vanilla (#571) ## 📝 Summary Add isthmus withdrawal hash fix on the vanilla builder. Previously was added to the flashblocks builder. ## 💡 Motivation and Context Fix errors around invalid blocks due to incorrect withdrawals hash --- ## ✅ I have completed the following steps: * [x] Run `make lint` * [x] Run `make test` * [x] Added tests (if applicable) * Fix resource usage in monitoring task (#588) ## 📝 Summary Fixes unbounded mem growth in monitoring task ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [ ] Run `make lint` * [ ] Run `make test` * [ ] Added tests (if applicable) * fix: don't build flashblocks with more gas than block gas limit (#567) ## 📝 Summary Currently it's possible for the builder to make more Flashblocks than intended during a block (likely due to delays). If more flashblocks are made than desired (e.g. 11 flashblocks for a 2s block w/ 200ms Flashblocks), the 11th flashblock will have a gas limit that is over the blocks gas limit and will cause invalid blocks on the sequencer. ## 💡 Motivation and Context If the builder produces a full block that uses more gas than the gas limit, the local EL client will treat it as invalid. --- ## ✅ I have completed the following steps: * [ ] Run `make lint` * [x] Run `make test` * [x] Added tests (if applicable) * op-rbuilder: Update Documentation / CI Script (#575) ## 📝 Summary 1. Update the version of op-reth used by CI 2. Make the CI script work on macOS as well as linux 3. Update the instructions for running/testing op-rbuilder ## 💡 Motivation and Context 1. The CI script was handy for downloading Reth 2. The instructions didn't work for me (due to the optimism feature being removed etc). --- ## ✅ I have completed the following steps: * [x] Run `make lint` * [x] Run `make test` * [x] Added tests (if applicable) --------- Co-authored-by: shana <[email protected]> * Revert revert protection in op-rbuilder (#602) ## 📝 Summary The builder block building times always slowly increase to a very high number on Base Sepolia, suspecting revert protection is causing failed txs to get backed up, which causes slow down in op-rbuilder block building. ``` # HELP reth_op_rbuilder_payload_num_tx_simulated_fail Number of transactions in the payload that failed simulation # TYPE reth_op_rbuilder_payload_num_tx_simulated_fail summary reth_op_rbuilder_payload_num_tx_simulated_fail{quantile="0"} 77 reth_op_rbuilder_payload_num_tx_simulated_fail{quantile="0.5"} 3198.061173550786 reth_op_rbuilder_payload_num_tx_simulated_fail{quantile="0.9"} 3223.1035892442424 reth_op_rbuilder_payload_num_tx_simulated_fail{quantile="0.95"} 3223.748274430612 reth_op_rbuilder_payload_num_tx_simulated_fail{quantile="0.99"} 3226.973635127358 reth_op_rbuilder_payload_num_tx_simulated_fail{quantile="0.999"} 3226.973635127358 reth_op_rbuilder_payload_num_tx_simulated_fail{quantile="1"} 3228 reth_op_rbuilder_payload_num_tx_simulated_fail_sum 64118848 reth_op_rbuilder_payload_num_tx_simulated_fail_count 21069 # HELP reth_op_rbuilder_payload_tx_simulation_duration Duration of payload simulation of all transactions # TYPE reth_op_rbuilder_payload_tx_simulation_duration summary reth_op_rbuilder_payload_tx_simulation_duration{quantile="0"} 0.018329514 reth_op_rbuilder_payload_tx_simulation_duration{quantile="0.5"} 0.49002444205448686 reth_op_rbuilder_payload_tx_simulation_duration{quantile="0.9"} 0.5026304818952316 reth_op_rbuilder_payload_tx_simulation_duration{quantile="0.95"} 0.5079867028401951 reth_op_rbuilder_payload_tx_simulation_duration{quantile="0.99"} 0.553164415015488 reth_op_rbuilder_payload_tx_simulation_duration{quantile="0.999"} 0.553164415015488 reth_op_rbuilder_payload_tx_simulation_duration{quantile="1"} 0.555461782 reth_op_rbuilder_payload_tx_simulation_duration_sum 9654.159540928 reth_op_rbuilder_payload_tx_simulation_duration_count 25870 # HELP reth_op_rbuilder_flashblock_build_duration Flashblock build duration # TYPE reth_op_rbuilder_flashblock_build_duration summary reth_op_rbuilder_flashblock_build_duration{quantile="0"} 0.055144161 reth_op_rbuilder_flashblock_build_duration{quantile="0.5"} 0.5166962986266059 reth_op_rbuilder_flashblock_build_duration{quantile="0.9"} 0.5348868728374531 reth_op_rbuilder_flashblock_build_duration{quantile="0.95"} 0.5672812838109652 reth_op_rbuilder_flashblock_build_duration{quantile="0.99"} 0.583272957920482 reth_op_rbuilder_flashblock_build_duration{quantile="0.999"} 0.583272957920482 reth_op_rbuilder_flashblock_build_duration{quantile="1"} 0.60984729 reth_op_rbuilder_flashblock_build_duration_sum 9081.926654393968 reth_op_rbuilder_flashblock_build_duration_count 21065 # HELP reth_op_rbuilder_payload_num_tx_simulated_success Number of transactions in the payload that were successfully simulated # TYPE reth_op_rbuilder_payload_num_tx_simulated_success summary reth_op_rbuilder_payload_num_tx_simulated_success{quantile="0"} 1 reth_op_rbuilder_payload_num_tx_simulated_success{quantile="0.5"} 11.000052032263987 reth_op_rbuilder_payload_num_tx_simulated_success{quantile="0.9"} 20.999528921206892 reth_op_rbuilder_payload_num_tx_simulated_success{quantile="0.95"} 24.001108231483542 reth_op_rbuilder_payload_num_tx_simulated_success{quantile="0.99"} 29.00012111115082 reth_op_rbuilder_payload_num_tx_simulated_success{quantile="0.999"} 29.00012111115082 reth_op_rbuilder_payload_num_tx_simulated_success{quantile="1"} 60 reth_op_rbuilder_payload_num_tx_simulated_success_sum 136029 reth_op_rbuilder_payload_num_tx_simulated_success_count 21069 ``` <!--- A general summary of your changes --> ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [ ] Run `make lint` * [ ] Run `make test` * [ ] Added tests (if applicable) * Finish block building process even when cancel request is found (#606) ## 📝 Summary This PR introduces three changes: - It refactors some of the common utilities shared among the tests into a single `TestHarness` struct which spins the test framework with all the components. Note that it does not update the tests to use this new utility. - It fixes an issue with the block builder that would stop the block building process and not return any block if a cancel request was found. This happens when an FCU and a getPayload request are called to close to each other, the getPayload cancels the block building process, and getPayload waits forever for a block that will never be built. Now, the block building finishes. - It adds an integration test to cover this use case with the new utility. ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [ ] Run `make lint` * [ ] Run `make test` * [ ] Added tests (if applicable) * Add usage of jemalloc in op-rbuilder when feature is enabled + improve debug-fast profile (#617) ## 📝 Summary Adding `lto = "thin"` for debug fast profile sped up my build time from 5 min to 4 min Enabled jemalloc in op-rbuilder ## 💡 Motivation and Context <!--- (Optional) Why is this change required? What problem does it solve? Remove this section if not applicable. --> --- ## ✅ I have completed the following steps: * [ ] Run `make lint` * [ ] Run `make test` * [ ] Added tests (if applicable) * fix: set an address for authrpc to the op-rbuilder readme (#581) This PR fixes the launch instructions for `op-rbuilder`, making the AuthRPC accessible on all network interfaces. This is necessary to allow `op-rbuilder` to be reachable from the virtual network interface created by Docker. Additionally, the metrics port has been changed to `9011`, since `9001` is used by `builder-playground` for the `beacon`: ``` go run main.go cook opstack --external-builder http://host.docker.internal:4444 2025/04/23 20:21:02 Log level: info 2025/04/23 20:21:02 Genesis block hash: 0x301f9f301f868d587fec26c2a1b5f7d9896736842ab1787923722c3213b61e05 true ========= Services started ========= - el (authrpc: 8551/8551, http: 8545/8545, rpc: 30303/30303) - beacon (http: 3500/3500, p2p: 9000/9000/udp, p2p: 9000/9001, quic-p2p: 9100/9100) - validator () - rollup-boost (authrpc: 8551/8552) - op-node (http: 8549/8549, metrics: 7300/7300, p2p: 9003/9003, p2p: 9003/9004/udp) - op-geth (authrpc: 8551/8553, http: 8545/8546, metrics: 6061/6061, rpc: 30303/30304, ws: 8546/8547) - op-batcher () ========= Output ========= - op-geth-enode: enode://3479db4d9217fb5d7a8ed4d61ac36e120b05d36c2eefb795dc42ff2e971f251a2315f5649ea1833271e020b9adc98d5db9973c7ed92d6b2f1f2223088c3d852f@127.0.0.1:30304?discport=0 ``` Trailing spaces have also been removed in some places. * Clean up the repo * Add info log for reverting tx hashes * remove unecessary import * Remove monitoring tx task * Remove more things * Remove more stuff * Last clean * more cleaning * Use nightly clippy * Add variable builder deadline * Fix lint * Fix on FB * Remove dep * Change to info * Add flag to enable revert protection * Update * add metric * Fix * Fix lint * Remove print statement * Remove print * Add e2e test for monitor txn * Partial * Add test * Fix lint * Test new generator * More changes * add integration tet * Was using wrong static for jemalloc (#51) * Add version metric to op-rbuilder (#52) * Add a --playground flag on op-rbuilder to start with the flags required to run the builder on playground (#49) * Fix existing build warnings * Add a --playground flag on op-rbuilder to start with the flags required to run the builder on playground Issue: flashbots/op-rbuilder#9 This change adds the ability to autoconfigure op-rbuilder to run a locally deployed builder-playground. Follow the instructions on how to start a builder playground under this repo: https://github.com/SozinM/builder-playground/tree/msozin/feat/flashblocks Now we can use the following startup parameters for op-rbuilder: - `./op-rbuilder node --builder.playground` This will start using the default $HOME/.playground/devnet directory - `./op-rbuilder node --builder.playground=<PATH>` Will use the provided path as the working directory of the playground * Fixed build warning * added justfile recepe * Removing flashblocks and using vanilla builder for now * Updated readme * Integration test uses genesis file (#44) * Integration test uses genesis file * Fix lint * Revert * Issue #36: Migrate the rest of the test to the new test utility (#53) * Issue #36 flashbots/op-rbuilder#36 Migrate the rest of the test to the new test utility introduced in #606 --- This PR introduces the following changes: - Migrates all non-flashblocks integration tests to the new test harness framework - Fixes all build warnings - Adds few helper functions and types for testing - Few refactorings of the test infrastructure - Refactored the way the `tester` binary is linking to op-rbuilder dependencies - Moved all tests under `tests/` directory - Removed `integration` directory` now running `cargo test` will output ``` $ cargo test Finished `test` profile [unoptimized + debuginfo] target(s) in 0.36s Running unittests src/lib.rs (target/debug/deps/op_rbuilder-7bb461ec2888ee4b) running 8 tests test tx_signer::test::test_sign_transaction ... ok test tests::vanilla::smoke::get_payload_close_to_fcu ... ok test tests::vanilla::smoke::transaction_flood_no_sleep ... ok test tests::vanilla::ordering::fee_priority_ordering ... ok test tests::vanilla::revert::monitor_transaction_drops ... ok test tests::vanilla::revert::revert_protection ... ok test tests::vanilla::revert::revert_protection_disabled ... ok test tests::vanilla::smoke::chain_produces_blocks ... ok test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 23.67s Running unittests src/main.rs (target/debug/deps/op_rbuilder-87f69711ab7f0a5e) running 7 tests test generator::tests::test_block_cell_update_value ... ok test generator::tests::test_block_cell_immediate_value ... ok test generator::tests::test_job_deadline ... ok test tx_signer::test::test_sign_transaction ... ok test generator::tests::test_block_cell_wait_for_value ... ok test generator::tests::test_block_cell_multiple_waiters ... ok test generator::tests::test_payload_generator ... ok test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.70s Doc-tests op_rbuilder running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s ``` * lint * update github actions * github actions update * update github actions * update github actions * review feedback * Review feedback and build improvements - `make tester` now builds - Ability to run GH Actions locally through `act` * Fix withdrawals root (#56) * Bump reth to 1.4.1 (#54) * Bump reth to 1.4.1 * Fix integration * Fix test * Fix merge conflict * Add helper utility to check for block inclusion in e2e tests (#60) * Add helper utility to check for block inclusion in e2e tests * Fix lint * Fix * Add opt-in revert protection (#59) * Add revert protection endpoint * more stuff * Finish merge * A bit more stuff * Finish tests * Remove print * Fix lint * Fix test * Fix * Fix lint * Apply feedback * Bundle with more transactions + more safe checks * Rename bundle fields * Rename to a more appropiate bundle * Rename * Move TransactionConditional to Bundle file * Update test comments * Handle unwraps * Fix lint * Fix lint * Fix bundle result (#66) * Remove flashblocks conditional compilation (#67) * Use correct DA transaction compression (#61) * Added drop impl to clean up after tests Changed revert tests a bit fmt Add txpool test Fix DA config, set it via miner Extend tests Add op-alloy-flz dependency and update related configurations - Added `op-alloy-flz` as a dependency in `Cargo.toml` and `Cargo.lock`. - Configured `op-alloy-flz` to be part of the workspace in `op-rbuilder`'s `Cargo.toml`. - Updated the `payload_builder_vanilla.rs` to utilize `op-alloy-flz` for transaction size estimation. - Enhanced test framework to include new data availability tests ensuring block size limits are respected. Add max data availability transaction and block size configuration - Introduced `max_da_tx_size` and `max_da_block_size` fields in `TestHarnessBuilder` and `OpRbuilderConfig`. - Added builder methods `with_max_da_tx_size` and `with_max_da_block_size` for setting these values. - Implemented a new test to ensure transaction size limits are respected in data availability scenarios. - Updated test module to include the new data availability test. Add cumulative_da_bytes_used accur Add da config Use correct DA transaction compression * conflict changes * Modity flashblocks ws bind/port flags (#71) * Modity flashblocks ws bind/port flags * Update * Fix * Migrate e2e tests to Isthmus (#45) * Use isthmus * Update to payload v3 * Add total_block_built_duration metric back to vanilla builder (#77) * Feat/revert protection status endpoint (#76) * Add revert protection status endpoint * Add more changes * Change type * Fix compile error * More * Add test * Clean * Change comment * Fix lint * Remove print statement * Change to moka * Fix --------- Co-authored-by: Solar Mithril <[email protected]> * Fix da scaling (#81) * Add logs for da limits (#86) * Add logs for da limits * Add comments * Fix * Add log for the block building execution (#87) * Add log * Fix lint * Add builder txn to Flashblocks (#89) * Add changes * Remove print * Use original function with manual scaling (#96) * Use original function with manual scaling * Added comment * Add error log in case builder tx da size sets max_da_block_size to 0 (#97) * Add replacement for default reth version (#98) * Add replacement for default reth version Move VERSION to different crate * fmt * Added feature-gated interop (#93) Use derive_more for enum * Use Gauge for da size limits (#105) * Account for DA and gas limit in flashblocks (#104) * Account for DA and gas limit in flashblocks * Use fancy staff * thx karim * Use into_bytes * Upgrade to reth 1.4.7 and main rollup-boost branch (#112) * Add block number and DA used to logging (#107) * modify logging * more * structure logs * Add gas limit and DA transaction results for tracing (#110) * Add gas limit and DA transaction results for tracing * use result * Use block number as hex (#116) * Add another builder tx after the first flashblock (#121) * Add another builder tx after the first flashblock * Fix fb test * Add reverting hashes + min block number to Bundle (#115) * Implement bundle reverting hashes * Merge main * Fix * Add min_block_number * fix litn * Fix * Fix comment * Mark invalid * Rename reverting_hashes * Remove Option * Revert "Remove Option" This reverts commit 4087d35ac53c7bc97f05728bba6c2402a132262c. * feat: add a feature to activate otlp telemetry (#31) * Bundles: Ensure that the min block number is inside the MAX_BLOCK_RANGE_BLOCKS (#128) If a user only specifies the min block number, the max block number is set to the current block number + MAX_BLOCK_RANGE_BLOCKS; however, there is no check that the min block is less than the newly set max block number. * Fix bundle type reverting hashes optional param (#126) * Fix bundle type reverting hashes optional param * Fix * Remove toml and add feature gate (#117) Rebase Remove custom logic Custom Engine API support + engine call propagation * Move bundle validation to primitives folder (#129) * Move bundle validation to primitives folder * Add another check * Fix * Split op-rbuilder in lib and main (#138) * Make op-rbuilder a lib * Fix lint * Two more fixes * Move alloc --------- Co-authored-by: Solar Mithril <[email protected]> * In-process tests, optional dockerized validation node (#132) * Validation node works and tests are passing using the new test infra * revert_protection_monitor_transaction_gc passes * revert_protection_disabled passes * ordering tests are passing * all tests are passing * ready * lint * Github Action login to GHCR.io * testing Github Actions ghcr access * testing Github Actions ghcr access * lint * Closes issue 133 * review feedback * review feedback * Review feedback - ctrl-c * Review feedback * review feedback * Review feedback * review feedback * lint * macos compatibility * lint * lint * fmt (#142) Logic Add extended flashblocks tracing * Add minTimestamp and maxTimestamp as optional fields to bundle (#141) * Add minTimestamp and maxTimestamp as optional fields to bundle * Test that bundles with min timestamp wait aren't included until the block time exceeds it * Add metric for bundles received (#149) * Add metric to count reverted bundles (#151) * Remove extra generic param (#152) * Remove extra generic * Fix fmt * Add pingpong and closing frame handle (#154) * Supress infallible clippy error (#155) * Use tungstenite provided ping handling (#156) * Avoid boxing for the txlogging task (#153) * Fix regression tester command (#160) * Genesis command outputs genesis file (#159) * Account for flashblocks time drift (#123) * quick bugfix Account for dynamic lag in the beginning of building process * More improvements * More improvements * More improvements * More improvements * Wrap everything into the config * Review * Review * Run the vanilla tests using both the flashblocks builder and the vanilla builder (#145) * Applied 68 on top of latest main * Update crates/op-rbuilder/src/tests/smoke.rs Co-authored-by: Copilot <[email protected]> * lint * port new revert unit test * lint --------- Co-authored-by: Copilot <[email protected]> * fix: add default-run to the op-rbuilder's manifest (#162) * Flashtestions (#137) * wip flashtestations * add builder tx interface * add bootstrap on launch * transaction management * working bootstrap * fix github action * address comments * fix cli flags * make flashtestations service non-blocking --------- Co-authored-by: mophr <[email protected]> * Flashtestations flag (#165) * Add feature flag for flashtestations * fix fmt command * Add some telemetry for `eth_sendBundle` (#176) * measure eth_sendBundle latency * rename bundles_received metric to valid_bundles * log error messages * refactor to get rid of unnecessary mut * count all requests sent to eth_sendBundle * add failed_bundles counter * Review (#170) Co-authored-by: Solar Mithril <[email protected]> * Add cli flag for funding key (#168) * Add cli flag for funding key * add docs * Move builder tx right after deposits and put it into base flashblock (#178) * Implement correct flashblocks time cutoff (#172) * Implement dynamic flashblock time adjustment Add control flow with child cancel tokens, that control flashblock duration * Trying to make test non-flaky * Fix test * Rename config field to make it better * Remove extra db config * Remove extra db config * Change default leeway-time + add handing for block cancellation (#185) * Bump reth 1.5.0 (#186) * Use reth 1.5.0 * Bump reth to 1.5.0 --------- Co-authored-by: Solar Mithril <[email protected]> * Add simple logging to timer task (#191) * Improve metrics so we could better plot them (#193) * Bump reth to 1.5.1 (#192) * Reth 151 * Add debug bounds * Fix ordering issue by not including arriving txs into the best transaction iterator (#195) * Remove without_updates for flashblocks (#198) * Add a test to validate that no-tx-pool works (#199) * Add a test to validate that no-tx-pool works * Fix lint * Add TDX quote provider service (#200) * Add gauge metrics for block building steps (#205) * introduce gauge metrics and fix naming for histogram metrics * fix a couple of flashblocks metrics * add fn to set payload builder metrics * Remove redundant account initialization (#208) * Add flashblocks index to payload building context (#210) * Add flashblocks index to payload building context * refactor * fix index * gauge metrics to inspect flag settings (#207) * Bump reth to 1.6 (#215) * Less confusing naming, state is called db and db is called state (#219) * Less confusing naming, state is called db and db is called state * Use renaming destructuring * Add flashblock number filters to eth_sendBundle (#213) * add min and max flashblock number fields to bundle * add min and max flashblock number to FBPooledTransaction * filter based on flashblock number * wrap best txs iterator to consider flashblock number * fix map structure and wrap better * integration tests * Fix bundle state and produce executed block (#223) * WIP right now it has consensus error 2025-08-01T16:10:44.956046Z ERROR engine::persistence: Persistence service failed err=ProviderError(Database(Write(DatabaseWriteError { info: DatabaseErrorInfo { message: "the given key value is mismatched to the current cursor position", code: -30418 }, operation: CursorAppendDup, table_name: "AccountChangeSets", key: [0, 0, 0, 0, 0, 0, 0, 9] }))) * Hacky solution to mergin state * fmt * fmt * remove config.toml * Update crates/op-rbuilder/src/builders/flashblocks/payload.rs --------- Co-authored-by: shana <[email protected]> * Add caching to generator (#221) * WIP right now it has consensus error 2025-08-01T16:10:44.956046Z ERROR engine::persistence: Persistence service failed err=ProviderError(Database(Write(DatabaseWriteError { info: DatabaseErrorInfo { message: "the given key value is mismatched to the current cursor position", code: -30418 }, operation: CursorAppendDup, table_name: "AccountChangeSets", key: [0, 0, 0, 0, 0, 0, 0, 9] }))) * fmt * cache reth db reads in flashblocks payload generation * save tip to cache on new committed state --------- Co-authored-by: Solar Mithril <[email protected]> Co-authored-by: Ash Kunda <[email protected]> * fix: record missing flashblocks (#225) * record missing flashblocks in more places * code cleanup * edit log message * fix: record num txs built with flashblocks enabled (#227) * record num txs built correctly with flashblocks enabled * Fix metrics --------- Co-authored-by: Solar Mithril <[email protected]> * combine eth api modifications (#231) * Add correct metric value (#234) * feat: add transaction gas limit (#214) * feat: add transaction gas limit * fix: update default * fix: update best txns * chore: add test for max txn gas * fix: apply suggestions * fix: tests * chore: update tests * fix: failing tests * Add fix to preserve all executed blocks for flashblocks (#229) * Add ExecutedBlock push on every built flashblock * Update crates/op-rbuilder/src/builders/flashblocks/payload.rs * fix: override clap long version envs (#235) * Improve best tx wrapper (#245) * docs: eth_sendBundle (#243) * doc comments for bundle params * add check for flashblock number range * markdown doc * update rust edition to 2024 (#244) * feat: address gas limiter (#253) * cli args * core impl * metrics * use the gas limiter * don't use optional gas limiter uses an "inner" struct to handle checking if it's enabled or not * cleanup stale addresses only every 100 blocks * unit tests * integration test * feat: add commit message and author in version metrics (#236) * fix: gracefull cancellation on payload build failure (#239) * fix: flashblock contraints in bundle api (#259) * refactor BundleOpts to use with_ methods to set * print logs during tests * fix connecting to flashblocks ws url * fix propagating bundle params for flashblocks check * refactor flashblock ws listener in tests * test setting min=max flashblock param * bump reth to 1.7.0 (#258) * bump reth * Add comm * Fix the problem * flag to determine if calculating state root (#241) * calculate state root * fix tests * add no state root test * check no tx pool instead * comments * optimize * fix lint * use no tx pool * add condition * refactor: add `unreachable_pub` warning and autofix warnings (#263) * Refactor payload builder to accept generic builder tx (#217) * Refactor payload builder to accept generic builder tx * Update crates/op-rbuilder/src/builders/builder_tx.rs Co-authored-by: Solar Mithril <[email protected]> * Update crates/op-rbuilder/src/builders/builder_tx.rs Co-authored-by: Solar Mithril <[email protected]> * Update crates/op-rbuilder/src/builders/flashblocks/service.rs Co-authored-by: Solar Mithril <[email protected]> * Update crates/op-rbuilder/src/builders/builder_tx.rs Co-authored-by: Solar Mithril <[email protected]> * fix lint * fix tests --------- Co-authored-by: Solar Mithril <[email protected]> * refactor: clean up and improve flashblocks `build_payload` (#260) * fix: check per-address gas limit before checking if the tx reverted (#266) * Add support for flashblocks number contract builder tx (#256) * Refactor payload builder to accept generic builder tx * Update crates/op-rbuilder/src/builders/builder_tx.rs Co-authored-by: Solar Mithril <[email protected]> * Update crates/op-rbuilder/src/builders/builder_tx.rs Co-authored-by: Solar Mithril <[email protected]> * Update crates/op-rbuilder/src/builders/builder_tx.rs Co-authored-by: Solar Mithril <[email protected]> * Add support for flashblocks number contract builder tx * add docs * add builder tx to fallback block * fallback to legacy builder tx * allow top or bottom of block builder tx --------- Co-authored-by: Solar Mithril <[email protected]> * Bump reth to 1.8.1 (#274) * bump to 1.8.1 * bump rollup-boost v * bump tracing * feat: overwrite reth default cache directory (#238) * feat: overwrite reth default cache directory * doc: logs path * Add remote quote provider arg for flashtestations (#276) * add metrics to track gas used by reverting txs (#273) * Add flashblocks number integration tests (#277) * Add flashblocks number integration tests * comments * comments * Update flashtestation service with latest contracts (#281) * Flag to save tee key to local file (#286) * Flag to save tee key to lcoal file * fix error handling * lint * comments * atomic file creation and permission * Add flashtestation builder tx and registration in block (#282) * Add flashtestations integration tests (#283) * Add flashtestation builder tx and registration in block * copilot comments * Add flashtestations integration tests * logging improvements * Update crates/op-rbuilder/src/tests/flashtestations.rs Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Copilot <[email protected]> * chore: add unused_async lint, deny unreachable_pub (#299) * refactor: clean up flashblocks context in payload builder (#297) * Add permit flashtestations tx calls from builder (#285) * Add permit flashtestations tx calls from builder * move simumlation calls to builder tx * refactor contract simulation * refactor flashtestations builder tx * fix test comments * comments * Remove non permit flashtestation calls (#302) * feat: implement p2p layer and broadcast flashblocks (#275) * feat: implement flashblock sync over p2p (#288) * reth bump (#306) * feat: publish synced flashblocks to ws (#310) * Add permit functions for flashblocks number contract (#287) * Add permit flashtestations tx calls from builder * move simumlation calls to builder tx * Add permit functions for flashblocks number contract * refactor to simulate call * fix tests * remove ws publishing from synced flashblocks (#312) * [breaking-change] Fix arg for calculating state root (#314) * Fix arg for calculating state root * fix tests * feat: Integrate downstream changes (Jovian hardfork + miner_setGasLimit + reth 1.9.1) (#316) * chore: Rbuilder updates for jovian hardfork (#16) * Jovian ready op-rbuilder * Add factoring in da footprint scalar * Bump reth to 1.9.0 * feat: respect miner_setGasLimit (#18) * respect miner_setGasLimit * fmt * chore: bump to reth 1.9.1 (#20) * wip: telemetry resolution * done * fix: Add gas_limit_config field and make block_gas_limit() public - Added gas_limit_config initialization in flashblocks context - Changed block_gas_limit() visibility from pub(super) to pub for flashtestations access - Removed unused Events import Note: Tests currently fail due to rollup-boost dependency version mismatch (op-alloy 0.20.0 vs 0.22.0) * chore: Update rollup-boost to v0.7.8 for reth 1.9.1 compatibility - Updated rollup-boost dependency from rev dd12e8e to tag v0.7.8 - Resolves op-alloy version mismatch (0.20.0 -> 0.22.0) - All tests now pass (94/94 passing) * chore: apply nightly formatting fixes Applied formatting fixes from cargo +nightly fmt to ensure code passes lint checks. Changes include proper brace placement and line formatting in flashblocks builder_tx and payload_handler. --------- Co-authored-by: Danyal Prout <[email protected]> Co-authored-by: Haardik <[email protected]> * Add workload id as metric to builder (#315) * Add workload id as metric to builder * more tdx measurements * add address * add address to metric * remove rpc * extract constants * chore(deps/reth): bump reth to 1.9.2 (#318) * chore(deps): bump reth (#321) * fix: jovian hardfork tests & fixes (#320) * chore: fixes for jovian * blob fee fixes * Update tests to Jovian * run miner limit tests on both standard/flashblocks * Ensure builder transactions count towards DA usage * Increment DA usage for non-deposit sequencer transactions (e.g. via CL sync) * Add blob gas used to flashblocks delta (#325) * Add blob gas used to delta * update rollup-boost * update rollup-boost tag * feat: resoure metering rpc/lookup * update flashtestation logic to use new workload ID computation (#331) To account for a bug in the xfam and tdAttributes bitmasking logic, we changed the way the workload ID is calculated in the BlockBuilderPolicy. That PR is here: flashbots/flashtestations#53 This means the workload ID calculation needs to change in any upstream services, which includes op-rbuilder. I've made the same change that I made in the solidity contract here in the attestation.rs logic where op-rbuilder calculates the workload ID. The tests have been updated to use the new correct workload ID, which I obtained by running the BlockBuilderPolicy:workloadIdForTDRegistration function on the same TEE registration that is used in the tests. * Add cumulative da of builder tx da size (#322) * Fix builder tx cumulative da * fix builder gas and da calculation * add test * Fix deps (#336) * Fix deps * fix version * fix * bump release * builder backrun * replacement * fix fmt * add is empty * remove not needed logs * switch considering transaction to info * sort by priority fee; add backrun integration test * support all or nothing bundles * priority fee validation * add bundle sorting * use bundle total fee for validation * refactor * remove key by sender * skip checking bundles if failed validation * merge resrouce metering and backrun bundle into one * single buffer size; fix lint * fix DA estimation; use one getter * optimize gettor * use FBPooledTransaction * info logs * handle evm error gracefully * use different metric * check invalid err * chore: rename runner/primitives crates and move reth-rpc to shared * chore: unify extensions to be one per crate * chore: migrate generic node setup to client-primitives, remove client-runner * chore: unify test account logic * chore: removed dead code * chore: migrated test harness to support extensions * chore: update metering rpc tests to use the node harness * chore: code cleanup - Remove file structure sections from READMEs - Move build_node function body into LocalNode::new - Replace local TestHarness::signer methods with Account::signer_b256() * chore: migrate metering non-rpc tests * chore: chain spec loaders * chore: remove genesis file + build it in rust * chore: setup shared primitives and move accounts/contracts there under test utils * chore: move FB test harness to flashblocks crate * chore: delete test-utils, rename client-primites to node * chore: add GHA/script to check that shared crates dont depend on client/ * chore: format features and update lockfile * review feedback * chore: inline config extraction in extension constructors Move config extraction directly into extension constructor calls to reduce intermediate variables in main.rs. * migrate back to generic install_ext * minimal changes to integrate project * fix running tests locally (we have oltp env vars on macs * fix: add native dependencies to udeps CI job The tss-esapi-sys crate requires libtss2-dev to build, which was missing from the udeps job causing CI failures. * remove tips-core --------- Co-authored-by: shana <[email protected]> Co-authored-by: Ferran Borreguero <[email protected]> Co-authored-by: Daniel Xifra <[email protected]> Co-authored-by: cody-wang-cb <[email protected]> Co-authored-by: Solar Mithril <[email protected]> Co-authored-by: Hopium <[email protected]> Co-authored-by: File Large <[email protected]> Co-authored-by: Daniel Xifra <[email protected]> Co-authored-by: Anton <[email protected]> Co-authored-by: Joe Parks <[email protected]> Co-authored-by: Danyal Prout <[email protected]> Co-authored-by: Denis Kolodin <[email protected]> Co-authored-by: Solar Mithril <[email protected]> Co-authored-by: Karim Agha <[email protected]> Co-authored-by: Joshua Gutow <[email protected]> Co-authored-by: Ash Kunda <[email protected]> Co-authored-by: Copilot <[email protected]> Co-authored-by: mophr <[email protected]> Co-authored-by: kristoffer <[email protected]> Co-authored-by: Varun Doshi <[email protected]> Co-authored-by: Julio <[email protected]> Co-authored-by: noot <[email protected]> Co-authored-by: Tobi Akerele <[email protected]> Co-authored-by: theo <[email protected]> Co-authored-by: Alex Melville <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Warning
Stacked ontop of #257.
Wires up the
ProofExtensionon the node builder