Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -302,7 +302,7 @@ require (
lukechampine.com/blake3 v1.3.0 // indirect
)

replace github.com/ethereum/go-ethereum => github.com/ethereum-optimism/op-geth v1.101602.1-rc.1
replace github.com/ethereum/go-ethereum => github.com/ethereum-optimism/op-geth v1.101602.1-rc.1.0.20250905173340-c920f56ee245

// replace github.com/ethereum/go-ethereum => ../op-geth

Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -228,8 +228,8 @@ github.com/emicklei/dot v1.6.2 h1:08GN+DD79cy/tzN6uLCT84+2Wk9u+wvqP+Hkx/dIR8A=
github.com/emicklei/dot v1.6.2/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s=
github.com/ethereum-optimism/go-ethereum-hdwallet v0.1.3 h1:RWHKLhCrQThMfch+QJ1Z8veEq5ZO3DfIhZ7xgRP9WTc=
github.com/ethereum-optimism/go-ethereum-hdwallet v0.1.3/go.mod h1:QziizLAiF0KqyLdNJYD7O5cpDlaFMNZzlxYNcWsJUxs=
github.com/ethereum-optimism/op-geth v1.101602.1-rc.1 h1:gt96/7JhVw4bEk4i0URyOKTaAoA3v+Pa+ms868IaoaY=
github.com/ethereum-optimism/op-geth v1.101602.1-rc.1/go.mod h1:rOTZfq3JrsY8ktvTnS6XT9X+t4WQQ42zFb+hzXua2EU=
github.com/ethereum-optimism/op-geth v1.101602.1-rc.1.0.20250905173340-c920f56ee245 h1:ijOLAPhYEXstrTKd9kobg1+dQfjNUSpvAo4wSIXzWMw=
github.com/ethereum-optimism/op-geth v1.101602.1-rc.1.0.20250905173340-c920f56ee245/go.mod h1:rOTZfq3JrsY8ktvTnS6XT9X+t4WQQ42zFb+hzXua2EU=
github.com/ethereum-optimism/superchain-registry/validation v0.0.0-20250603144016-9c45ca7d4508 h1:A/3QVFt+Aa9ozpPVXxUTLui8honBjSusAaiCVRbafgs=
github.com/ethereum-optimism/superchain-registry/validation v0.0.0-20250603144016-9c45ca7d4508/go.mod h1:NZ816PzLU1TLv1RdAvYAb6KWOj4Zm5aInT0YpDVml2Y=
github.com/ethereum/c-kzg-4844/v2 v2.1.0 h1:gQropX9YFBhl3g4HYhwE70zq3IHFRgbbNPw0Shwzf5w=
Expand Down
12 changes: 7 additions & 5 deletions op-chain-ops/genesis/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -718,6 +718,7 @@ type L2InitializationConfig struct {
UpgradeScheduleDeployConfig
L2CoreDeployConfig
AltDADeployConfig
DAFootprintGasScalar uint16 `json:"daFootprintGasScalar"`
}

func (d *L2InitializationConfig) Check(log log.Logger) error {
Expand Down Expand Up @@ -1105,11 +1106,12 @@ func (d *DeployConfig) RollupConfig(l1StartBlock *eth.BlockRef, l2GenesisBlockHa
// Overhead value is considered a noop.
func (d *DeployConfig) GenesisSystemConfig() eth.SystemConfig {
return eth.SystemConfig{
BatcherAddr: d.BatchSenderAddress,
Overhead: eth.Bytes32(common.BigToHash(new(big.Int).SetUint64(d.GasPriceOracleOverhead))),
Scalar: d.FeeScalar(),
GasLimit: uint64(d.L2GenesisBlockGasLimit),
OperatorFeeParams: d.OperatorFeeParams(),
BatcherAddr: d.BatchSenderAddress,
Overhead: eth.Bytes32(common.BigToHash(new(big.Int).SetUint64(d.GasPriceOracleOverhead))),
Scalar: d.FeeScalar(),
GasLimit: uint64(d.L2GenesisBlockGasLimit),
OperatorFeeParams: d.OperatorFeeParams(),
DAFootprintGasScalar: d.DAFootprintGasScalar,
}
}

Expand Down
2 changes: 1 addition & 1 deletion op-chain-ops/genesis/layer_two.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ const (
L2AllocsGranite L2AllocsMode = "granite"
L2AllocsHolocene L2AllocsMode = "holocene"
L2AllocsIsthmus L2AllocsMode = "isthmus"
L2AllocsInterop L2AllocsMode = "interop"
L2AllocsJovian L2AllocsMode = "jovian"
L2AllocsInterop L2AllocsMode = "interop"
)

var (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
"gasPriceOracleOperatorFeeConstant": 0,
"gasPriceOracleOverhead": 2100,
"gasPriceOracleScalar": 1000000,
"daFootprintGasScalar": 400,
"enableGovernance": true,
"governanceTokenSymbol": "OP",
"governanceTokenName": "Optimism",
Expand Down
1 change: 1 addition & 0 deletions op-chain-ops/interopgen/deploy.go
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,7 @@ func DeployL2ToL1(l1Host *script.Host, superCfg *SuperchainConfig, superDeployme
AllowCustomDisputeParameters: true,
OperatorFeeScalar: cfg.GasPriceOracleOperatorFeeScalar,
OperatorFeeConstant: cfg.GasPriceOracleOperatorFeeConstant,
DAFootprintGasScalar: cfg.DAFootprintGasScalar,
})
if err != nil {
return nil, fmt.Errorf("failed to deploy L2 OP chain: %w", err)
Expand Down
2 changes: 2 additions & 0 deletions op-deployer/pkg/deployer/opcm/opchain.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ type DeployOPChainInput struct {

OperatorFeeScalar uint32
OperatorFeeConstant uint64

DAFootprintGasScalar uint16
}

func (input *DeployOPChainInput) InputSet() bool {
Expand Down
1 change: 1 addition & 0 deletions op-deployer/pkg/deployer/pipeline/opchain.go
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@ func makeDCI(intent *state.Intent, thisIntent *state.ChainIntent, chainID common
AllowCustomDisputeParameters: proofParams.DangerouslyAllowCustomDisputeParameters,
OperatorFeeScalar: thisIntent.OperatorFeeScalar,
OperatorFeeConstant: thisIntent.OperatorFeeConstant,
DAFootprintGasScalar: thisIntent.DAFootprintGasScalar,
}, nil
}

Expand Down
1 change: 1 addition & 0 deletions op-deployer/pkg/deployer/state/chain_intent.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ type ChainIntent struct {
AdditionalDisputeGames []AdditionalDisputeGame `json:"dangerousAdditionalDisputeGames" toml:"dangerousAdditionalDisputeGames,omitempty"`
OperatorFeeScalar uint32 `json:"operatorFeeScalar,omitempty" toml:"operatorFeeScalar,omitempty"`
OperatorFeeConstant uint64 `json:"operatorFeeConstant,omitempty" toml:"operatorFeeConstant,omitempty"`
DAFootprintGasScalar uint16 `json:"daFootprintGasScalar,omitempty" toml:"daFootprintGasScalar,omitempty"`
L1StartBlockHash *common.Hash `json:"l1StartBlockHash,omitempty" toml:"l1StartBlockHash,omitempty"`
MinBaseFee uint64 `json:"minBaseFee,omitempty" toml:"minBaseFee,omitempty"`

Expand Down
1 change: 1 addition & 0 deletions op-deployer/pkg/deployer/state/deploy_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ func CombineDeployConfig(intent *Intent, chainIntent *ChainIntent, state *State,
ProxyAdminOwner: chainIntent.Roles.L2ProxyAdminOwner,
FinalSystemOwner: chainIntent.Roles.L1ProxyAdminOwner,
},
DAFootprintGasScalar: chainIntent.DAFootprintGasScalar,
},
FaultProofDeployConfig: genesis.FaultProofDeployConfig{
UseFaultProofs: true,
Expand Down
3 changes: 2 additions & 1 deletion op-e2e/actions/proofs/helpers/matrix.go
Original file line number Diff line number Diff line change
Expand Up @@ -125,10 +125,11 @@ var (
Granite = &Hardfork{Name: string(rollup.Granite), Precedence: 6}
Holocene = &Hardfork{Name: string(rollup.Holocene), Precedence: 7}
Isthmus = &Hardfork{Name: string(rollup.Isthmus), Precedence: 8}
Jovian = &Hardfork{Name: string(rollup.Jovian), Precedence: 9}
)

var (
Hardforks = ForkMatrix{Regolith, Canyon, Delta, Ecotone, Fjord, Granite, Holocene, Isthmus}
Hardforks = ForkMatrix{Regolith, Canyon, Delta, Ecotone, Fjord, Granite, Holocene, Isthmus, Jovian}
LatestFork = Hardforks[len(Hardforks)-1]
LatestForkOnly = ForkMatrix{LatestFork}
)
Expand Down
359 changes: 309 additions & 50 deletions op-e2e/bindings/systemconfig.go

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions op-e2e/e2eutils/setup.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,12 +109,12 @@ func Ether(v uint64) *big.Int {
}

func GetL2AllocsMode(dc *genesis.DeployConfig, t uint64) genesis.L2AllocsMode {
if fork := dc.JovianTime(t); fork != nil && *fork <= 0 {
return genesis.L2AllocsJovian
}
if fork := dc.InteropTime(t); fork != nil && *fork <= 0 {
return genesis.L2AllocsInterop
}
if fork := dc.JovianTime(t); fork != nil && *fork <= 0 {
return genesis.L2AllocsJovian
}
if fork := dc.IsthmusTime(t); fork != nil && *fork <= 0 {
return genesis.L2AllocsIsthmus
}
Expand Down
55 changes: 55 additions & 0 deletions op-node/rollup/derive/jovian_upgrade_transactions.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package derive

import (
"fmt"
"math/big"

"github.com/ethereum-optimism/optimism/op-service/predeploys"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/hexutil"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/crypto"
)

var (
// L1Block Parameters
deployJovianL1BlockSource = UpgradeDepositSource{Intent: "Jovian: L1 Block Deployment"}
updateJovianL1BlockProxySource = UpgradeDepositSource{Intent: "Jovian: L1 Block Proxy Update"}
L1BlockJovianDeployerAddress = common.HexToAddress("0x4210000000000000000000000000000000000004")
jovianL1BlockAddress = crypto.CreateAddress(L1BlockJovianDeployerAddress, 0)

// Bytecodes
l1BlockJovianDeploymentBytecode = common.FromHex("0x608060405234801561001057600080fd5b5061073f806100206000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806364ca23ef116100e3578063c59859181161008c578063e81b2c6d11610066578063e81b2c6d146103f0578063f8206140146103f9578063fe3d57101461040257600080fd5b8063c598591814610375578063d844471514610395578063e591b282146103ce57600080fd5b80638b239f73116100bd5780638b239f73146103435780639e8c49661461034c578063b80777ea1461035557600080fd5b806364ca23ef146102ff57806368d5dca6146103135780638381f58a1461032f57600080fd5b80634397dfef1161014557806354fd4d501161011f57806354fd4d501461027b578063550fcdc9146102bd5780635cf24969146102f657600080fd5b80634397dfef1461021a578063440a5e20146102425780634d5d9a2a1461024a57600080fd5b806316d3bc7f1161017657806316d3bc7f146101d657806321326849146102035780633db6be2b1461021257600080fd5b8063015d8eb91461019d578063098999be146101b257806309bd5a60146101ba575b600080fd5b6101b06101ab36600461064d565b610422565b005b6101b0610561565b6101c360025481565b6040519081526020015b60405180910390f35b6008546101ea9067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101cd565b604051600081526020016101cd565b6101b061056b565b6040805173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee815260126020820152016101cd565b6101b0610573565b6008546102669068010000000000000000900463ffffffff1681565b60405163ffffffff90911681526020016101cd565b60408051808201909152600581527f312e372e3000000000000000000000000000000000000000000000000000000060208201525b6040516101cd91906106bf565b60408051808201909152600381527f455448000000000000000000000000000000000000000000000000000000000060208201526102b0565b6101c360015481565b6003546101ea9067ffffffffffffffff1681565b6003546102669068010000000000000000900463ffffffff1681565b6000546101ea9067ffffffffffffffff1681565b6101c360055481565b6101c360065481565b6000546101ea9068010000000000000000900467ffffffffffffffff1681565b600354610266906c01000000000000000000000000900463ffffffff1681565b60408051808201909152600581527f457468657200000000000000000000000000000000000000000000000000000060208201526102b0565b60405173deaddeaddeaddeaddeaddeaddeaddeaddead000181526020016101cd565b6101c360045481565b6101c360075481565b600854610266906c01000000000000000000000000900463ffffffff1681565b3373deaddeaddeaddeaddeaddeaddeaddeaddead0001146104c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f4c31426c6f636b3a206f6e6c7920746865206465706f7369746f72206163636f60448201527f756e742063616e20736574204c3120626c6f636b2076616c7565730000000000606482015260840160405180910390fd5b6000805467ffffffffffffffff98891668010000000000000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116998916999099179890981790975560019490945560029290925560038054919094167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009190911617909255600491909155600555600655565b61056961057b565b565b61056961058e565b6105696105d9565b6105836105d9565b60a43560a01c600855565b61059661057b565b600880547fffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffff166fffffffff00000000000000000000000060b03560801c16179055565b73deaddeaddeaddeaddeaddeaddeaddeaddead000133811461060357633cc50b456000526004601cfd5b60043560801c60035560143560801c60005560243560015560443560075560643560025560843560045550565b803567ffffffffffffffff8116811461064857600080fd5b919050565b600080600080600080600080610100898b03121561066a57600080fd5b61067389610630565b975061068160208a01610630565b9650604089013595506060890135945061069d60808a01610630565b979a969950949793969560a0850135955060c08501359460e001359350915050565b600060208083528351808285015260005b818110156106ec578581018301518582016040015282016106d0565b818111156106fe576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01692909201604001939250505056fea164736f6c634300080f000a")
)

func JovianNetworkUpgradeTransactions() ([]hexutil.Bytes, error) {
deployL1Block, err := types.NewTx(&types.DepositTx{
SourceHash: deployJovianL1BlockSource.SourceHash(),
From: L1BlockJovianDeployerAddress,
To: nil,
Mint: big.NewInt(0),
Value: big.NewInt(0),
Gas: 425_000,
IsSystemTransaction: false,
Data: l1BlockJovianDeploymentBytecode,
}).MarshalBinary()
if err != nil {
return nil, fmt.Errorf("build tx to deploy L1 block transaction: %w", err)
}

updateL1BlockProxy, err := types.NewTx(&types.DepositTx{
SourceHash: updateJovianL1BlockProxySource.SourceHash(),
From: common.Address{},
To: &predeploys.L1BlockAddr,
Mint: big.NewInt(0),
Value: big.NewInt(0),
Gas: 50_000,
IsSystemTransaction: false,
Data: upgradeToCalldata(jovianL1BlockAddress),
}).MarshalBinary()
if err != nil {
return nil, fmt.Errorf("build tx to the update L1 block proxy: %w", err)
}

return []hexutil.Bytes{deployL1Block, updateL1BlockProxy}, nil
}
Loading