Commit 01b9108c authored by mergify[bot]'s avatar mergify[bot] Committed by GitHub

Merge pull request #4425 from ethereum-optimism/feat/configurable-gov-token

op-chain-ops: configurable gov token
parents 8d8219f5 c0fc64ed
...@@ -88,9 +88,16 @@ type DeployConfig struct { ...@@ -88,9 +88,16 @@ type DeployConfig struct {
SystemConfigProxy common.Address `json:"systemConfigProxy"` SystemConfigProxy common.Address `json:"systemConfigProxy"`
// OptimismPortal proxy address on L1 // OptimismPortal proxy address on L1
OptimismPortalProxy common.Address `json:"optimismPortalProxy"` OptimismPortalProxy common.Address `json:"optimismPortalProxy"`
// The initial value of the gas overhead
GasPriceOracleOverhead uint64 `json:"gasPriceOracleOverhead"` GasPriceOracleOverhead uint64 `json:"gasPriceOracleOverhead"`
GasPriceOracleScalar uint64 `json:"gasPriceOracleScalar"` // The initial value of the gas scalar
GasPriceOracleScalar uint64 `json:"gasPriceOracleScalar"`
// The ERC20 symbol of the GovernanceToken
GovernanceTokenSymbol string `json:"governanceTokenSymbol"`
// The ERC20 name of the GovernanceToken
GovernanceTokenName string `json:"governanceTokenName"`
// The owner of the GovernanceToken
GovernanceTokenOwner common.Address `json:"governanceTokenOwner"`
DeploymentWaitConfirmations int `json:"deploymentWaitConfirmations"` DeploymentWaitConfirmations int `json:"deploymentWaitConfirmations"`
...@@ -192,6 +199,15 @@ func (d *DeployConfig) Check() error { ...@@ -192,6 +199,15 @@ func (d *DeployConfig) Check() error {
if d.L2GenesisBlockBaseFeePerGas == nil { if d.L2GenesisBlockBaseFeePerGas == nil {
return fmt.Errorf("%w: L2 genesis block base fee per gas cannot be nil", ErrInvalidDeployConfig) return fmt.Errorf("%w: L2 genesis block base fee per gas cannot be nil", ErrInvalidDeployConfig)
} }
if d.GovernanceTokenName == "" {
return fmt.Errorf("%w: GovernanceToken.name cannot be empty", ErrInvalidDeployConfig)
}
if d.GovernanceTokenSymbol == "" {
return fmt.Errorf("%w: GovernanceToken.symbol cannot be empty", ErrInvalidDeployConfig)
}
if d.GovernanceTokenOwner == (common.Address{}) {
return fmt.Errorf("%w: GovernanceToken owner cannot be address(0)", ErrInvalidDeployConfig)
}
return nil return nil
} }
...@@ -408,8 +424,9 @@ func NewL2StorageConfig(config *DeployConfig, block *types.Block) (state.Storage ...@@ -408,8 +424,9 @@ func NewL2StorageConfig(config *DeployConfig, block *types.Block) (state.Storage
"decimals": 18, "decimals": 18,
} }
storage["GovernanceToken"] = state.StorageValues{ storage["GovernanceToken"] = state.StorageValues{
"_name": "Optimism", "_name": config.GovernanceTokenName,
"_symbol": "OP", "_symbol": config.GovernanceTokenSymbol,
"_owner": config.GovernanceTokenOwner,
} }
storage["ProxyAdmin"] = state.StorageValues{ storage["ProxyAdmin"] = state.StorageValues{
"_owner": config.ProxyAdminOwner, "_owner": config.ProxyAdminOwner,
......
...@@ -48,6 +48,9 @@ ...@@ -48,6 +48,9 @@
"proxyAdminOwner": "0x0000000000000000000000000000000000000222", "proxyAdminOwner": "0x0000000000000000000000000000000000000222",
"gasPriceOracleOverhead": 2100, "gasPriceOracleOverhead": 2100,
"gasPriceOracleScalar": 1000000, "gasPriceOracleScalar": 1000000,
"governanceTokenSymbol": "OP",
"governanceTokenName": "Optimism",
"governanceTokenOwner": "0x0000000000000000000000000000000000000333",
"deploymentWaitConfirmations": 1, "deploymentWaitConfirmations": 1,
"eip1559Denominator": 8, "eip1559Denominator": 8,
"eip1559Elasticity": 2, "eip1559Elasticity": 2,
......
...@@ -28,6 +28,9 @@ ...@@ -28,6 +28,9 @@
"l2GenesisBlockBaseFeePerGas": "0x3B9ACA00", "l2GenesisBlockBaseFeePerGas": "0x3B9ACA00",
"gasPriceOracleOverhead": 2100, "gasPriceOracleOverhead": 2100,
"gasPriceOracleScalar": 1000000, "gasPriceOracleScalar": 1000000,
"governanceTokenSymbol": "OP",
"governanceTokenName": "Optimism",
"governanceTokenOwner": "0xBcd4042DE499D14e55001CcbB24a551F3b954096",
"eip1559Denominator": 8, "eip1559Denominator": 8,
"eip1559Elasticity": 2, "eip1559Elasticity": 2,
"l1GenesisBlockTimestamp": "0x638a4554", "l1GenesisBlockTimestamp": "0x638a4554",
......
...@@ -23,6 +23,10 @@ ...@@ -23,6 +23,10 @@
"proxyAdminOwner": "0x62790eFcB3a5f3A5D398F95B47930A9Addd83807", "proxyAdminOwner": "0x62790eFcB3a5f3A5D398F95B47930A9Addd83807",
"governanceTokenName": "Optimism",
"governanceTokenSymbol": "OP",
"governanceTokenOwner": "0x038a8825A3C3B0c08d52Cc76E5E361953Cf6Dc76",
"l2GenesisBlockGasLimit": "0x17D7840", "l2GenesisBlockGasLimit": "0x17D7840",
"l2GenesisBlockCoinbase": "0x4200000000000000000000000000000000000011", "l2GenesisBlockCoinbase": "0x4200000000000000000000000000000000000011",
"l2GenesisBlockBaseFeePerGas": "0x3b9aca00", "l2GenesisBlockBaseFeePerGas": "0x3b9aca00",
......
...@@ -26,6 +26,10 @@ ...@@ -26,6 +26,10 @@
"l2CrossDomainMessengerOwner": "DUMMY", "l2CrossDomainMessengerOwner": "DUMMY",
"governanceTokenName": "Optimism",
"governanceTokenSymbol": "OP",
"governanceTokenOwner": "0x038a8825A3C3B0c08d52Cc76E5E361953Cf6Dc76",
"gasPriceOracleOverhead": 2100, "gasPriceOracleOverhead": 2100,
"gasPriceOracleScalar": 1000000, "gasPriceOracleScalar": 1000000,
"eip1559Denominator": 50, "eip1559Denominator": 50,
......
...@@ -101,6 +101,21 @@ interface RequiredDeployConfig { ...@@ -101,6 +101,21 @@ interface RequiredDeployConfig {
*/ */
l2OutputOracleChallenger: string l2OutputOracleChallenger: string
/**
* ERC20 symbol used for the L2 GovernanceToken.
*/
governanceTokenSymbol: string
/**
* ERC20 name used for the L2 GovernanceToken.
*/
governanceTokenName: string
/**
* Owner of the L2 GovernanceToken. Has mint/burn capability.
*/
governanceTokenOwner: string
/** /**
* Output finalization period in seconds. * Output finalization period in seconds.
*/ */
...@@ -315,4 +330,15 @@ export const deployConfigSpec: { ...@@ -315,4 +330,15 @@ export const deployConfigSpec: {
type: 'number', type: 'number',
default: 6, default: 6,
}, },
governanceTokenSymbol: {
type: 'string',
default: 'OP',
},
governanceTokenName: {
type: 'string',
default: 'Optimism',
},
governanceTokenOwner: {
type: 'string',
},
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment