|
| 1 | +--- |
| 2 | +section: technology |
| 3 | +date: Last Modified |
| 4 | +title: "Feynman Upgrade" |
| 5 | +lang: "en" |
| 6 | +permalink: "technology/overview/scroll-upgrades/feynman-upgrade" |
| 7 | +whatsnext: { "Euclid Upgrade": "/en/technology/overview/scroll-upgrades/euclid-upgrade" } |
| 8 | +--- |
| 9 | + |
| 10 | +### Overview |
| 11 | +This upgrade contains changes such as: |
| 12 | +- Improve compatibility with EVM: |
| 13 | + - The blockhash opcode will now return the actual block hash, instead of a pseudo-random hash derived from the chain ID and block number. |
| 14 | + - The ecPairing precompile will now be fully compatible with Ethereum’s version, we remove the previous input limits. |
| 15 | + - Adopt [EIP-2935](https://eips.ethereum.org/EIPS/eip-2935): Serve historical block hashes from state from Pectra. This system contract will allow smart contract devs to access to most recent 8191 block hashes. This EIP also plays a key role in restoring the blockhash opcode’s original behavior. |
| 16 | + - Adopt [EIP-7623](https://eips.ethereum.org/EIPS/eip-7623): Increase calldata cost from Pectra. |
| 17 | +- Gas fee parameter redesign |
| 18 | +- Post Euclid clean-ups |
| 19 | + |
| 20 | +Please note that [EIP-7702](https://eips.ethereum.org/EIPS/eip-7702) from Pectra has been supported since the Euclid upgrade. |
| 21 | + |
| 22 | +#### Simplified Smart Contracts |
| 23 | +Migrating from halo2 to OpenVM allowed us to remove some previous limitations of the protocol, including transaction skipping. |
| 24 | +In Feynman, we remove skipping, as well as old codec versions from our deployed smart contracts. |
| 25 | + |
| 26 | +### Timeline |
| 27 | + |
| 28 | +- **Scroll Sepolia** : Jul 22nd, 2025 |
| 29 | +- **Scroll Mainnet** : Aug 19th, 2025 |
| 30 | + |
| 31 | +### Compatibility |
| 32 | + |
| 33 | +This release updates the embedded hard fork block timestamp for Scroll mainnet. |
| 34 | +**Nodes that are not upgraded will be unable to follow the network after the hard fork block.** |
| 35 | + |
| 36 | +To follow the Feynman upgrade, simply run your node with the `--scroll` flag for mainnet (and `--scroll-sepolia` for testnet). |
| 37 | + |
| 38 | +If you do not use the `--scroll` flag, then you must update and reimport `genesis.json`. |
| 39 | + |
| 40 | +Genesis.json difference : |
| 41 | +```json |
| 42 | +{ |
| 43 | + "config": { |
| 44 | + "chainId": 534352, |
| 45 | +... |
| 46 | + "euclidTime": 1744815600, |
| 47 | + "euclidV2Time": 1745305200, |
| 48 | + "feynmanTime": 1755576000, |
| 49 | +... |
| 50 | +"scroll": { |
| 51 | +... |
| 52 | + "genesisStateRoot": "0x08d535cc60f40af5dd3b31e0998d7567c2d568b224bed2ba26070aeb078d1339", |
| 53 | + "missingHeaderFieldsSHA256": "0xfa2746026ec9590e37e495cb20046e20a38fd0e7099abd2012640dddf6c88b25" |
| 54 | +... |
| 55 | +``` |
| 56 | + |
| 57 | +#### Node Operators |
| 58 | + |
| 59 | +**Mandatory changes:** |
| 60 | +- `--gpo.congestionthreshold` is deprecated and should be removed. |
| 61 | + |
| 62 | +**Recommended changes:** |
| 63 | + |
| 64 | +- Enable the direct-to-sequencer endpoint using `--gossip.sequencerhttp <sequencer-url>`. This reduces latency for transaction submission. |
| 65 | + |
| 66 | + - Scroll mainnet: `--gossip.sequencerhttp https://mainnet-sequencer-proxy.scroll.io` |
| 67 | + - Scroll Sepolia: `--gossip.sequencerhttp https://sepolia-sequencer-proxy.scroll.io` |
| 68 | + |
| 69 | +For nodes running with `--rollup.verify` or `--da.sync`: |
| 70 | + |
| 71 | +- Enable the AWS S3 blob data source using `--da.blob.awss3 <s3-bucket-url>`. |
| 72 | +This can be used alongside other blob data sources (`da.blob.beaconnode`, `da.blob.blobscan`, `da.blob.blocknative`). |
| 73 | + |
| 74 | + - Scroll mainnet: `--da.blob.awss3 https://scroll-mainnet-blob-data.s3.us-west-2.amazonaws.com` |
| 75 | + - Scroll Sepolia: `--da.blob.awss3 https://scroll-sepolia-blob-data.s3.us-west-2.amazonaws.com` |
| 76 | + |
| 77 | +See more details in the [testnet release notes](https://github.com/scroll-tech/go-ethereum/releases/tag/scroll-v5.8.72). |
| 78 | + |
| 79 | +#### Dapps and Indexers |
| 80 | + |
| 81 | +While Feynman introduces several [contract changes](https://github.com/scroll-tech/scroll-contracts/compare/v2.0.0...feat-feynman-contract-changes), most of them are internal. Projects that decode batches can continue using the current EuclidV2 codec, however the batch version will become v8. |
| 82 | + |
| 83 | +Maintainers of smart contracts that rely on the blockhash opcode must carefully consider the impact of the change in this opcode’s behavior on their dapp. |
| 84 | + |
| 85 | +Finally, any projects that do off-chain fee computation (instead of relying on RPC queries) should review the new fee formula [1](https://github.com/scroll-tech/go-ethereum/pull/1199) [2](https://github.com/scroll-tech/go-ethereum/pull/1217) and update their system accordingly. |
| 86 | + |
| 87 | +Projects requiring additional guidance should open a [ticket on Discord](https://discord.com/channels/853955156100907018/1280768286124146732). |
0 commit comments