Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
N
nebula
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
exchain
nebula
Commits
6c4a9ac4
Unverified
Commit
6c4a9ac4
authored
Nov 08, 2023
by
Joshua Gutow
Committed by
GitHub
Nov 08, 2023
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #8092 from ethereum-optimism/jg/canyon_overview
specs: Specify full Canyon upgrade
parents
97cfa03b
f66d6a51
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
78 additions
and
2 deletions
+78
-2
derivation.md
specs/derivation.md
+1
-1
predeploys.md
specs/predeploys.md
+54
-1
superchain-upgrades.md
specs/superchain-upgrades.md
+23
-0
No files found.
specs/derivation.md
View file @
6c4a9ac4
...
@@ -946,7 +946,7 @@ follows:
...
@@ -946,7 +946,7 @@ follows:
encoded with
[
EIP-2718
]
.
encoded with
[
EIP-2718
]
.
-
`noTxPool`
is set to
`true`
, to use the exact above
`transactions`
list when constructing the block.
-
`noTxPool`
is set to
`true`
, to use the exact above
`transactions`
list when constructing the block.
-
`gasLimit`
is set to the current
`gasLimit`
value in the
[
system configuration
][
g-system-config
]
of this payload.
-
`gasLimit`
is set to the current
`gasLimit`
value in the
[
system configuration
][
g-system-config
]
of this payload.
-
'withdrawals'
is set to nil prior to Canyon and an empty array after Canyon
-
`withdrawals`
is set to nil prior to Canyon and an empty array after Canyon
[
extended-attributes
]:
exec-engine.md#extended-payloadattributesv1
[
extended-attributes
]:
exec-engine.md#extended-payloadattributesv1
[
Fee Vaults
]:
exec-engine.md#fee-vaults
[
Fee Vaults
]:
exec-engine.md#fee-vaults
specs/predeploys.md
View file @
6c4a9ac4
...
@@ -23,6 +23,7 @@
...
@@ -23,6 +23,7 @@
-
[
L1FeeVault
](
#l1feevault
)
-
[
L1FeeVault
](
#l1feevault
)
-
[
SchemaRegistry
](
#schemaregistry
)
-
[
SchemaRegistry
](
#schemaregistry
)
-
[
EAS
](
#eas
)
-
[
EAS
](
#eas
)
-
[
create2Deployer
](
#create2deployer
)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
...
@@ -45,7 +46,7 @@ and there is no proxy deployed at that account.
...
@@ -45,7 +46,7 @@ and there is no proxy deployed at that account.
The following table includes each of the predeploys. The system version
The following table includes each of the predeploys. The system version
indicates when the predeploy was introduced. The possible values are
`Legacy`
indicates when the predeploy was introduced. The possible values are
`Legacy`
or
`Bedrock`
. Deprecated contracts should not be used.
or
`Bedrock`
or
`Canyon`
. Deprecated contracts should not be used.
| Name | Address | Introduced | Deprecated | Proxied |
| Name | Address | Introduced | Deprecated | Proxied |
| ----------------------------- | ------------------------------------------ | ---------- | ---------- |---------|
| ----------------------------- | ------------------------------------------ | ---------- | ---------- |---------|
...
@@ -69,6 +70,7 @@ or `Bedrock`. Deprecated contracts should not be used.
...
@@ -69,6 +70,7 @@ or `Bedrock`. Deprecated contracts should not be used.
| L1FeeVault | 0x420000000000000000000000000000000000001a | Bedrock | No | Yes |
| L1FeeVault | 0x420000000000000000000000000000000000001a | Bedrock | No | Yes |
| SchemaRegistry | 0x4200000000000000000000000000000000000020 | Bedrock | No | Yes |
| SchemaRegistry | 0x4200000000000000000000000000000000000020 | Bedrock | No | Yes |
| EAS | 0x4200000000000000000000000000000000000021 | Bedrock | No | Yes |
| EAS | 0x4200000000000000000000000000000000000021 | Bedrock | No | Yes |
| create2Deployer | 0x13b0D85CcB8bf860b6b79AF3029fCA081AE9beF2 | Canyon | No | No |
## LegacyMessagePasser
## LegacyMessagePasser
...
@@ -332,3 +334,54 @@ protocol.
...
@@ -332,3 +334,54 @@ protocol.
Address:
`0x4200000000000000000000000000000000000021`
Address:
`0x4200000000000000000000000000000000000021`
The
`EAS`
predeploy implements the
`Ethereum Attestation Service`
protocol.
The
`EAS`
predeploy implements the
`Ethereum Attestation Service`
protocol.
## create2Deployer
[
Implementation
](
https://github.com/mdehoog/create2deployer/blob/69b9a8e112b15f9257ce8c62b70a09914e7be29c/contracts/Create2Deployer.sol
)
The create2Deployer is a nice Solidity wrapper around the CREATE2 opcode. It provides the following ABI.
```
solidity
/**
* @dev Deploys a contract using `CREATE2`. The address where the
* contract will be deployed can be known in advance via {computeAddress}.
*
* The bytecode for a contract can be obtained from Solidity with
* `type(contractName).creationCode`.
*
* Requirements:
* - `bytecode` must not be empty.
* - `salt` must have not been used for `bytecode` already.
* - the factory must have a balance of at least `value`.
* - if `value` is non-zero, `bytecode` must have a `payable` constructor.
*/
function deploy(uint256 value, bytes32 salt, bytes memory code) public
/**
* @dev Deployment of the {ERC1820Implementer}.
* Further information: https://eips.ethereum.org/EIPS/eip-1820
*/
function deployERC1820Implementer(uint256 value, bytes32 salt)
/**
* @dev Returns the address where a contract will be stored if deployed via {deploy}.
* Any change in the `bytecodeHash` or `salt` will result in a new destination address.
*/
function computeAddress(bytes32 salt, bytes32 codeHash) public view returns (address)
/**
* @dev Returns the address where a contract will be stored if deployed via {deploy} from a
* contract located at `deployer`. If `deployer` is this contract's address, returns the
* same value as {computeAddress}.
*/
function computeAddressWithDeployer(
bytes32 salt,
bytes32 codeHash,
address deployer
) public pure returns (address)
```
Address:
`0x13b0D85CcB8bf860b6b79AF3029fCA081AE9beF2`
When Canyon activates, the contract code at
`0x13b0D85CcB8bf860b6b79AF3029fCA081AE9beF2`
is set to
`0x6080604052600436106100435760003560e01c8063076c37b21461004f578063481286e61461007157806356299481146100ba57806366cfa057146100da57600080fd5b3661004a57005b600080fd5b34801561005b57600080fd5b5061006f61006a366004610327565b6100fa565b005b34801561007d57600080fd5b5061009161008c366004610327565b61014a565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100c657600080fd5b506100916100d5366004610349565b61015d565b3480156100e657600080fd5b5061006f6100f53660046103ca565b610172565b61014582826040518060200161010f9061031a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604052610183565b505050565b600061015683836102e7565b9392505050565b600061016a8484846102f0565b949350505050565b61017d838383610183565b50505050565b6000834710156101f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e636500000060448201526064015b60405180910390fd5b815160000361025f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f60448201526064016101eb565b8282516020840186f5905073ffffffffffffffffffffffffffffffffffffffff8116610156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f790000000000000060448201526064016101eb565b60006101568383305b6000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b61014e806104ad83390190565b6000806040838503121561033a57600080fd5b50508035926020909101359150565b60008060006060848603121561035e57600080fd5b8335925060208401359150604084013573ffffffffffffffffffffffffffffffffffffffff8116811461039057600080fd5b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000606084860312156103df57600080fd5b8335925060208401359150604084013567ffffffffffffffff8082111561040557600080fd5b818601915086601f83011261041957600080fd5b81358181111561042b5761042b61039b565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156104715761047161039b565b8160405282815289602084870101111561048a57600080fd5b826020860160208301376000602084830101528095505050505050925092509256fe608060405234801561001057600080fd5b5061012e806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063249cb3fa14602d575b600080fd5b603c603836600460b1565b604e565b60405190815260200160405180910390f35b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16608857600060aa565b7fa2ef4600d742022d532d4747cb3547474667d6f13804902513b2ec01c848f4b45b9392505050565b6000806040838503121560c357600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff8116811460ed57600080fd5b80915050925092905056fea26469706673582212205ffd4e6cede7d06a5daf93d48d0541fc68189eeb16608c1999a82063b666eb1164736f6c63430008130033a2646970667358221220fdc4a0fe96e3b21c108ca155438d37c9143fb01278a3c1d274948bad89c564ba64736f6c63430008130033`
.
specs/superchain-upgrades.md
View file @
6c4a9ac4
...
@@ -32,6 +32,7 @@ chains following the same Superchain Target upgrade synchronously.
...
@@ -32,6 +32,7 @@ chains following the same Superchain Target upgrade synchronously.
-
[
OP-Stack Protocol versions
](
#op-stack-protocol-versions
)
-
[
OP-Stack Protocol versions
](
#op-stack-protocol-versions
)
-
[
Post-Bedrock Network upgrades
](
#post-bedrock-network-upgrades
)
-
[
Post-Bedrock Network upgrades
](
#post-bedrock-network-upgrades
)
-
[
Regolith
](
#regolith
)
-
[
Regolith
](
#regolith
)
-
[
Canyon
](
#canyon
)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
...
@@ -245,6 +246,7 @@ but the matching L1-origin information may not be present at the time of activat
...
@@ -245,6 +246,7 @@ but the matching L1-origin information may not be present at the time of activat
(
[
announcement
](
https://optimism.mirror.xyz/gQWKlrDqHzdKPsB1iUnI-cVN3v0NvsWnazK7ajlt1fI
)
).
(
[
announcement
](
https://optimism.mirror.xyz/gQWKlrDqHzdKPsB1iUnI-cVN3v0NvsWnazK7ajlt1fI
)
).
-
`v3.0.0-1`
: 2023 Jan 13th - Bedrock pre-release, deployed on OP-Goerli, and later Base-Goerli.
-
`v3.0.0-1`
: 2023 Jan 13th - Bedrock pre-release, deployed on OP-Goerli, and later Base-Goerli.
-
`v3.0.0`
: 2023 Jun 6th - Bedrock, including the Regolith hardfork improvements, first deployed on OP-Mainnet.
-
`v3.0.0`
: 2023 Jun 6th - Bedrock, including the Regolith hardfork improvements, first deployed on OP-Mainnet.
-
`v4.0.0`
: TBD - Canyon
## Post-Bedrock Network upgrades
## Post-Bedrock Network upgrades
...
@@ -273,3 +275,24 @@ The [execution engine specification](./exec-engine.md) specifies the L1 cost fun
...
@@ -273,3 +275,24 @@ The [execution engine specification](./exec-engine.md) specifies the L1 cost fun
The Regolith upgrade uses a
*L2 block-timestamp*
activation-rule, and is specified in both the
The Regolith upgrade uses a
*L2 block-timestamp*
activation-rule, and is specified in both the
rollup-node (
`regolith_time`
) and execution engine (
`config.regolithTime`
).
rollup-node (
`regolith_time`
) and execution engine (
`config.regolithTime`
).
## Canyon
The Canyon upgrade contains the Shapella upgrade from L1 and some minor protocol fixes.
-
Shapella Upgrade
-
[
EIP-3651: Warm COINBASE
](
https://eips.ethereum.org/EIPS/eip-3651
)
-
[
EIP-3855: PUSH0 instruction
](
https://eips.ethereum.org/EIPS/eip-3855
)
-
[
EIP-3860: Limit and meter initcode
](
https://eips.ethereum.org/EIPS/eip-3860
)
-
[
EIP-4895: Beacon chain push withdrawals as operations
](
https://eips.ethereum.org/EIPS/eip-4895
)
-
[
Withdrawlas are prohibited in P2P Blocks
](
./rollup-node-p2p.md#block-validation
)
-
[
Withdrawals should be set to the empty array with Canyon
](
./derivation.md#building-individual-payload-attributes
)
-
[
EIP-6049: Deprecate SELFDESTRUCT
](
https://eips.ethereum.org/EIPS/eip-6049
)
-
[
Modifies the EIP-1559 Denominator
](
./exec-engine.md#1559-parameters
)
-
[
Channel Ordering Fix
](
./derivation.md#reading
)
-
[
Adds the deposit nonce & deposit nonce version to the deposit receipt hash
](
./deposits.md#deposit-receipt
)
-
[
Deploys the create2Deployer to `0x13b0D85CcB8bf860b6b79AF3029fCA081AE9beF2`
](
./predeploys.md#create2deployer
)
The Canyon upgrade uses a
*L2 block-timestamp*
activation-rule, and is specified in both the
rollup-node (
`canyon_time`
) and execution engine (
`config.canyonTime`
). Shanghai time in the
execution engine should be set to the same time as the Canyon time.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment