update 3.9.4#45
Merged
Merged
Conversation
…ooks (OffchainLabs#3627) Co-authored-by: Pepper Lebeck-Jobe <pepper@offchainlabs.com>
…ata-streaming-receiver Extract streaming protocol (receiver)
…tely (OffchainLabs#3582) * Handle node.staker.strategy and node.bold.strategy appropriately * Update nitro-testnode
* update contracts for internal batch posting report fields * batch-gas-cost: check for floor-gas-cost in arbos-50 * replace calldataprice with parentGasFloorPerToken * internal_tx: use floorGasPerToken * update acts and support legacy feed * contracts: revert to version on master * precompiles: updates for parent-gas-floor * internal_tx: add per-batch-gas even if using floor * eth-config: update forkid * Add a test for gas floor * Enable delayed sequencer, satisfy finality requirements * internal_tx: use a constant instead of PerBatchGasCost * update gas floor price test * incomingmessage: fix comments * Remove leftover comment
…firm Make sure to retry fast confirmation on failure
fix: recreate-missing-state-from panic
…finitionoverload Fix redefining of staker related metrics
* Instrument multi-gas in account HostIOs * Review fixes: account multigas test the other hostios
fix: use RLock instead of Lock in CollectMachineHashes for concurrent…
Pre-stylus legacy validator was no longer needed, so was removed from split validator. Similar split validator functionality is desired for ArbOS50, so adding it back in.
Port - Fix parent chain reader bug in creating smart contract wallet [PR-4019]
Add legacy validator back for split validator
stop block metdata fetcher when node stops (OffchainLabs#4018)
…bs#4047) (OffchainLabs#4068) * l2pricing: add arbosVersion parameter * create free-storage and use for gas constraints * l2pricing-simulator: build fix * common test: test by default with multiple constraints * fix TestRetryableSubmissionAndRedeemFees * lint fixes * system_test: don't take ownership if no owner * fix more system tests * fix more tests * Add test proving issue with redeem and constraints * Refactor redeem gasPoolUpdateCost to a function * Revert "create free-storage and use for gas constraints" This reverts commit f48b38f. * Correct GasPoolUpdateCost for ArbOS 51 * Increase redeemAllAndCreateAddresses gas for retryable * recreate_rpc: do take ownership * l2pricingstate: restructure arbos version checking * l2pricingmodel: fixes * rework gas constraints * fix typo in test * Post-merge fix: use gasConstraintsMaxNum --------- Co-authored-by: Tsahi Zidenberg <65945052+tsahee@users.noreply.github.com>
Port - Add support for ArbOS51
…lassic-tx-by-hash Port: Fix searching for tx hash in block for ArbitrumLegacyTx
…ate-non-empty-genesis Modify validateGenesisAssertion to handle non-empty genesis (OffchainLabs#4031)
The Ethereum Fusaka fork introduced /eth/v1/beacon/blobs as a replacement
for the legacy /eth/v1/beacon/blob_sidecars endpoint. Nitro's getBlobs()
function fetches from the new endpoint but was not saving blobs to disk.
The legacy blobSidecars() function saves blobs in "Version 0" format with
full metadata (commitments, proofs, block roots). The new endpoint returns
only blob data, requiring a minimal storage format optimized for hash-based
lookups.
Additionally, there was no ReadBlobsFromDisk() function - blobs could be
saved but not read back. This commit adds the reader for testing and to
enable a future beacon endpoint emulator that we may add.
Storage Format V1 (new):
- Stores blobs as versioned hash -> blob map
- File: {blob-directory}/{slot}
- Format: {"version": 1, "data": {"0xHASH": "0xBLOB", ...}}
- Used by getBlobs() when fetching from /eth/v1/beacon/blobs
Storage Format V0 (legacy, backward compatible):
- Stores blob_sidecars array with full metadata
- Format: {"data": [{"blob": "0x...", "kzg_commitment": "0x...",
"kzg_proof": "0x...", ...}]}
- Used by blobSidecars() when fetching from legacy endpoint
- Still readable for backward compatibility
ReadBlobsFromDisk() (new):
- Reads blobs from disk, transparently handling V0 or V1 format
- Auto-detects version via presence of "version" field
- Validates blob integrity:
* V1: Computes commitment -> versioned hash, verifies match to key
* V0: Computes commitment from blob, verifies match to stored commitment
- No migration needed - both formats coexist
Renamed functions for clarity:
- saveBlobDataToDisk -> saveBlobsV0ToDisk (legacy format)
- Added saveBlobsV1ToDisk (new format)
Testing improvements:
- Updated createTestBlobs() to use production blobs.EncodeBlobs()
- All tests now use real KZG blobs with valid commitments
- Added TestReadBlobsV1ValidationFailure and TestReadBlobsV0ValidationFailure
- Renamed existing tests to indicate format (e.g., TestSaveBlobsV0ToDisk)
(cherry picked from commit 0ea5b8f)
…ched The Fusaka hard fork introduced the new /eth/v1/beacon/blobs endpoint which is now universally available. This removes all code related to the legacy blob_sidecars endpoint including the toggle logic that would switch between endpoints on errors. - Remove useLegacyEndpoint config field and --use-legacy-endpoint flag - Remove blobSidecars() function from blob_client.go - Simplify GetBlobsBySlot() to always use getBlobs() - Remove --compare-endpoints flag and compareEndpoints() from blobtool - Keep saveBlobsV0ToDisk() and V0 reading code for backwards compatibility with existing blob files saved to disk (cherry picked from commit 8299e50)
The Fusaka hard fork made cell proofs (Version1) universally required, so the legacy single-proof-per-blob (Version0) code path is no longer needed. - Remove enableCellProofs parameter from ComputeProofs(), always use cell proofs - Remove EnableCellProofs config field and --enable-cell-proofs flag - Remove shouldEnableCellProofs() function from data_poster.go - Remove SupportsCellProofs() function from parent.go - Remove Version0 tests (cherry picked from commit 3df0d2e)
…ob-ports v3.9.x post fusaka blob backports
# Conflicts: # .github/workflows/_arbitrator.yml # .github/workflows/_bold-legacy.yml # .github/workflows/_codecov.yml # .github/workflows/_fast.yml # .github/workflows/_go-tests.yml # .github/workflows/ci.yml # .github/workflows/docker.yml # .github/workflows/merge.yml # .github/workflows/shellcheck-ci.yml # .gitignore # Dockerfile # arbnode/batch_poster.go # arbnode/dataposter/data_poster.go # arbnode/node.go # arbnode/simple_redis_lock_test.go # arbos/addressSet/addressSet_test.go # arbos/arbosState/arbosstate.go # arbos/internal_tx.go # arbos/l2pricing/l2pricing.go # arbos/l2pricing/model.go # arbos/parse_l2.go # bold/state-commitments/history/history_commitment.go # broadcaster/backlog/backlog_test.go # cmd/blobtool/blobtool.go # cmd/chaininfo/arbitrum_chain_info.json # cmd/conf/init.go # cmd/datool/datool.go # cmd/el-proxy/main.go # cmd/genericconf/server.go # cmd/nitro/init.go # cmd/nitro/nitro.go # contracts-local/Makefile # contracts-local/src/mocks/ArbNativeTokenManagerTest.sol # contracts-local/src/osp/ReferenceDAProofValidator.sol # daprovider/daclient/daclient.go # daprovider/das/dasutil/dasutil.go # daprovider/das/rpc_client.go # daprovider/das/rpc_server.go # daprovider/data_streaming/protocol_test.go # daprovider/data_streaming/sender.go # daprovider/data_streaming/signing.go # daprovider/reader.go # daprovider/referenceda/certificate.go # daprovider/referenceda/reference_reader.go # daprovider/referenceda/reference_validator.go # execution/gethexec/blockchain.go # execution/gethexec/node.go # go.mod # go.sum # precompiles/ArbAggregator.go # precompiles/ArbOwner.go # precompiles/ArbRetryableTx.go # precompiles/constraints_test.go # scripts/check-build.sh # system_tests/batch_poster_test.go # system_tests/bold_l3_support_test.go # system_tests/common_test.go # system_tests/eth_config_test.go # system_tests/full_challenge_impl_test.go # system_tests/gas_limits_test.go # system_tests/multi_constraint_pricer_test.go # system_tests/precompile_test.go # system_tests/program_recursive_test.go # system_tests/program_test.go # system_tests/recreatestate_rpc_test.go # util/blobs/blobs.go # util/blobs/blobs_test.go # util/containers/promise.go # util/headerreader/blob_client.go # validator/server_api/json.go
svlachakis
approved these changes
Dec 29, 2025
svlachakis
left a comment
There was a problem hiding this comment.
Looks like Arbitrum One Mainnet boots and producing blocks fine
damian-orzechowski
approved these changes
Dec 31, 2025
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
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.
No description provided.