diff --git a/.github/ISSUE_TEMPLATE/general_docs_request.md b/.github/ISSUE_TEMPLATE/general_docs_request.md index 46b840393..2e979177f 100644 --- a/.github/ISSUE_TEMPLATE/general_docs_request.md +++ b/.github/ISSUE_TEMPLATE/general_docs_request.md @@ -1,6 +1,6 @@ --- name: General docs request -about: Template for general documentation requests from the Optimism Collective +about: Template for general documentation requests for the Metal L2 docs title: "[DOCS] Add PR title" labels: 'community-request,documentation' @@ -20,4 +20,4 @@ Provide links to any related content pages for this documentation request. This ## Additional Context Provide any additional context about this documentation request. What problems did you run into that caused you to make this request? -Which existing documentation pages did you already try as a solution to your problem? Why do you think the requested page(s) will be beneficial to developers in the Optimism Collective? +Which existing documentation pages did you already try as a solution to your problem? Why do you think the requested page(s) will be beneficial to developers working with Metal L2? diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 56b8aabcf..d97c98c33 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -6,7 +6,7 @@ Metal L2's documentation is open-source, hosted on GitHub in the `MetalPay/metal The Metal L2 Documentation team reviews pull requests and either merges, requests changes, or comments and closes the pull request. You can open a documentation pull request by: -- forking the `docs` repository and working locally, +- forking the `metal-l2-docs` repository and working locally, - or, for smaller updates, clicking the `Edit this page` link on the right side of any documentation page to directly edit in GitHub. Contributing to the Metal L2 documentation implies 2 steps: diff --git a/lychee.toml b/lychee.toml index f889061c4..f1b82587c 100644 --- a/lychee.toml +++ b/lychee.toml @@ -11,12 +11,13 @@ no_progress = true # URL remapping rules. remap = [ "file:///(.*?)/pages/img/(.*) file:///$1/public/img/$2", + "file:///(.*?)/pages/resources/(.*) file:///$1/public/resources/$2", "file:///([^#.?]+)(#.*)?$ file:///$1.mdx$2", "\\\\& &" ] # Base URL or website root directory to check relative URLs. -base = "./pages" +# base = "./pages" ############################# Exclusions ########################## @@ -28,12 +29,14 @@ exclude_mail = true # Exclude RPC URLs from checking. exclude = [ - 'https://mainnet.optimism.io', - 'https://mainnet-sequencer.optimism.io', - 'https://sepolia.optimism.io', - 'https://sepolia-sequencer.optimism.io', + 'https://rpc.metall2.com/', + 'https://testnet.rpc.metall2.com/', + 'https://mainnet-sequencer.metall2.com/', + 'https://testnet-sequencer.metall2.com/', 'https://archive.org', 'https://web.archive.org', + 'https://mainnet.optimism.io', + 'https://sepolia.optimism.io', 'https://mainnet.base.org', 'https://sepolia.base.org' ] diff --git a/notes/README.md b/notes/README.md index 7747bd9da..2ddcd5382 100644 --- a/notes/README.md +++ b/notes/README.md @@ -1,7 +1,7 @@ -# Optimism Docs Docs +# Metal L2 Docs -The Optimism Docs Docs are internal docs to help you understand how the Optimism Docs are built and maintained. +The Metal L2 Docs are internal docs to help you understand how the Metal L2 Docs are built and maintained. -- [How the Optimism Docs Use Nextra](./nextra.md) -- [How the Optimism Docs Use Remark](./remark.md) +- [How the Metal L2 Docs Use Nextra](./nextra.md) +- [How the Metal L2 Docs Use Remark](./remark.md) - [GitHub Actions](./actions.md) diff --git a/notes/nextra.md b/notes/nextra.md index 0dc35797b..356df3e25 100644 --- a/notes/nextra.md +++ b/notes/nextra.md @@ -1,6 +1,6 @@ -# How the Optimism Docs Use Nextra +# How the Metal L2 Docs Use Nextra -The Optimism Docs use the [Nextra](https://nextra.site/) documentation framework. +The Metal L2 Docs use the [Nextra](https://nextra.site/) documentation framework. Nextra is essentially a combination of [Next.js](https://nextjs.org/) + [MDX](https://mdxjs.com/) and allows you to write React components that can be used within Markdown pages. Nextra documentation is decent and can explain the basics of how to do most of the things you might want to do. This page documents all of the things that we do that are currently not made obvious by Nextra's docs. diff --git a/pages/builders/app-developers/overview.mdx b/pages/builders/app-developers/overview.mdx index afa96dcaf..28445dcb8 100644 --- a/pages/builders/app-developers/overview.mdx +++ b/pages/builders/app-developers/overview.mdx @@ -51,18 +51,18 @@ The Standard Token Bridge for Metal L2 even uses this same message-passing infra If you're a bit more familiar with Metal L2 and Ethereum, you can try walking through one of the tutorials put together by the Optimism community. They'll help you get a head start when building your first Optimistic project. -| Tutorial Name | Description | Difficulty Level | -| --------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ---------------- | -| [Deploying Your First Contract on Metal L2](tutorials/first-contract) | Learn how to deploy your first contract to Metal L2 with Remix and MetaMask. | 🟢 Easy | -| [Deploying Your Contracts for Free on the Superchain](tutorials/deploy-for-free) | Learn how to deploy your contracts for free on the Superchain using the Superchain Developer Console | 🟢 Easy | +| Tutorial Name | Description | Difficulty Level | +| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- | +| [Deploying Your First Contract on Metal L2](tutorials/first-contract) | Learn how to deploy your first contract to Metal L2 with Remix and MetaMask. | 🟢 Easy | +| [Deploying Your Contracts for Free on the Superchain](tutorials/deploy-for-free) | Learn how to deploy your contracts for free on the Superchain using the Superchain Developer Console | 🟢 Easy | | [Bridging ETH With the Optimism SDK](tutorials/cross-dom-bridge-eth) | Learn how to use the Optimism SDK to transfer ETH between Layer 1 (Ethereum or Sepolia) and Layer 2 (Metal L2 or Metal L2 Testnet). | 🟢 Easy | | [Bridging ERC-20 Tokens With the Optimism SDK](tutorials/cross-dom-bridge-erc20) | Learn how to use the Optimism SDK to transfer ERC-20 tokens between Layer 1 (Ethereum or Sepolia) and Layer 2 (Metal L2 or Metal L2 Testnet). | 🟢 Easy | -| [Bridging your Standard ERC-20 token using the Standard Bridge](tutorials/standard-bridge-standard-token) | Learn how to bridge your standard ERC-20 token to layer 2 using the standard bridge. | 🟡 Medium | -| [Bridging your Custom ERC-20 token using the Standard Bridge](tutorials/standard-bridge-custom-token) | Learn how to bridge your custom ERC-20 token to layer 2 using the standard bridge. | 🟡 Medium | -| [Tracing Deposits and Withdrawals With the Optimism SDK](tutorials/sdk-trace-txns) | Learn how to use the Optimism SDK to trace deposits and withdrawals. | 🟢 Easy | -| [Viewing Deposits and Withdrawals by Address With the Optimism SDK](tutorials/sdk-view-txns) | Learn how to use the Optimism SDK to view deposits and withdrawals by address. | 🟢 Easy | -| [Estimating Transaction Costs With the Optimism SDK](tutorials/sdk-view-txns) | Learn how to use the Optimism SDK to estimate the cost of a transaction on Metal L2. | 🟢 Easy | -| [Sending Metal L2 Transactions from Ethereum](tutorials/send-tx-from-eth) | Learn how to send transactions to Metal L2 from Ethereum. | 🟢 Easy | +| [Bridging your Standard ERC-20 token using the Standard Bridge](tutorials/standard-bridge-standard-token) | Learn how to bridge your standard ERC-20 token to layer 2 using the standard bridge. | 🟡 Medium | +| [Bridging your Custom ERC-20 token using the Standard Bridge](tutorials/standard-bridge-custom-token) | Learn how to bridge your custom ERC-20 token to layer 2 using the standard bridge. | 🟡 Medium | +| [Tracing Deposits and Withdrawals With the Optimism SDK](tutorials/sdk-trace-txns) | Learn how to use the Optimism SDK to trace deposits and withdrawals. | 🟢 Easy | +| [Viewing Deposits and Withdrawals by Address With the Optimism SDK](tutorials/sdk-view-txns) | Learn how to use the Optimism SDK to view deposits and withdrawals by address. | 🟢 Easy | +| [Estimating Transaction Costs With the Optimism SDK](tutorials/sdk-view-txns) | Learn how to use the Optimism SDK to estimate the cost of a transaction on Metal L2. | 🟢 Easy | +| [Sending Metal L2 Transactions from Ethereum](tutorials/send-tx-from-eth) | Learn how to send transactions to Metal L2 from Ethereum. | 🟢 Easy | You can also [suggest a new tutorial](https://github.com/ethereum-optimism/docs/issues/new?assignees=\&labels=tutorial%2Cdocumentation%2Ccommunity-request\&projects=\&template=suggest_tutorial.yaml\&title=%5BTUTORIAL%5D+Add+PR+title) if you have something specific in mind. We'd love to grow this list! diff --git a/pages/builders/chain-operators/architecture.mdx b/pages/builders/chain-operators/architecture.mdx index 306cbb170..d5798e04d 100644 --- a/pages/builders/chain-operators/architecture.mdx +++ b/pages/builders/chain-operators/architecture.mdx @@ -56,7 +56,7 @@ requests from your users. The Sequencer node has the important job of working wi the batcher to handle block creation. To allow the Sequencer to focus on that job, you can peer replica nodes to handle the rest of the work. -An example of this would be to configure [proxyd](https://github.com/ethereum-optimism/optimism/tree/develop/proxyd) +An example of this would be to configure [proxyd](https://docs.optimism.io/builders/chain-operators/tools/proxyd) to route RPC methods, retry failed requests, load balance, etc. Users sending `eth_sendRawTransaction` requests can have their requests forwarded directly to the Sequencer. All other RPC requests can be forwarded to replica nodes. diff --git a/pages/builders/chain-operators/features/alt-da-mode.mdx b/pages/builders/chain-operators/features/alt-da-mode.mdx index 14143aa1b..e1abfd03e 100644 --- a/pages/builders/chain-operators/features/alt-da-mode.mdx +++ b/pages/builders/chain-operators/features/alt-da-mode.mdx @@ -110,11 +110,11 @@ For deploying your contracts, use the latest release. ## Inclusion Criteria -Alt DA teams who want to be featured on this page must meet the following criteria: +Developer teams who want to feature products/tools on this page must meet the following criteria: -* Functional [DA Server](https://specs.optimism.io/experimental/alt-da.html#da-server), maintained in your own repo -* Supporting detailed documentation, to be referenced [here](#setup-your-da-server) -* Functioning OP Stack devnet using your DA server with linked configuration, contract addresses, and RPC address +1. **ongoing partnership** with Metal L2 whether formal agreement, RPGF, RFP, collaborated on specific initiatives, etc.; +2. **established user base** and Metal L2 ecosystem engagement such as governance participation, homegrown TG or Discord participation, etc.; and +3. **actively maintained developer tool** that aligns with Metal L2's commitment to a magical developer experience (e.g., easy-to-use, easy-to-integrate, great DevX, highly rated by community, etc.) ## Next Steps diff --git a/pages/builders/chain-operators/tutorials/integrating-da-layer.mdx b/pages/builders/chain-operators/tutorials/integrating-da-layer.mdx index a2f629751..dfce82288 100644 --- a/pages/builders/chain-operators/tutorials/integrating-da-layer.mdx +++ b/pages/builders/chain-operators/tutorials/integrating-da-layer.mdx @@ -45,5 +45,4 @@ Follow our guide on [how to operate an Alt-DA Mode chain](/builders/chain-operat ## Next Steps -* Want to explore more? See an [example DA server](https://github.com/ethereum-optimism/optimism/blob/develop/op-plasma/daserver.go) * For more detail on implementing the DA Server, [see the specification](https://specs.optimism.io/experimental/alt-da.html#da-server). diff --git a/pages/builders/node-operators/management/snapshots.mdx b/pages/builders/node-operators/management/snapshots.mdx index 123751fd5..575420fb9 100644 --- a/pages/builders/node-operators/management/snapshots.mdx +++ b/pages/builders/node-operators/management/snapshots.mdx @@ -32,7 +32,11 @@ Migrated OP Mainnet databases can be generated manually or pre-migrated database Using [aria2](https://aria2.github.io/) to download snapshots can significantly speed up the download process. -### OP Mainnet (Full Node) + + Please reach out to the Metal L2 team on Telegram for assistance with Node Snapshots + + +{/* ### Metal L2 (Full Node) [Fastnode.io](https://fastnode.io/) provides more recent full node snapshots for OP Mainnet. You can find them [here](https://datapoint.fastnode.io/). @@ -41,9 +45,8 @@ Migrated OP Mainnet databases can be generated manually or pre-migrated database | Snapshot Date | Size | Download Link | sha256sum | | ------------- | ----- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| 2023-06-06 | 325GB | [Mirror 1](https://datadirs.optimism.io/mainnet-bedrock.tar.zst)
[Mirror 2](https://op.datadirs.xyz/mainnet-bedrock.tar.zst)
[Mirror 3 (torrent)](magnet:?xt=urn:btih:0eea90fa3da8cd88bfa34c70ccef64f5e643c4c1\&dn=mainnet-bedrock.tar.zst) | `ec4baf47e309a14ffbd586dc85376833de640c0f2a8d7355cb8a9e64c38bfcd1` | -### OP Mainnet (Archive Node) +### Metal L2 (Archive Node) You can also download access the [Optimism Foundation datadir explorer](https://datadirs.optimism.io/) to find other snapshots. @@ -51,10 +54,8 @@ Migrated OP Mainnet databases can be generated manually or pre-migrated database | Snapshot Date | Size | Download Link | sha256sum | | ----------------------------- | ---- | ------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------- | -| Latest by Optimism Foundation | >4TB | [Mirror 1](https://datadirs.optimism.io/latest)
[Mirror 2 (torrent)](https://datadirs.optimism.io/latest.torrent) | [sha256sum](https://datadirs.optimism.io/latest.sha256sum/) | -### OP Mainnet (Legacy) +### Metal L2 (Legacy) | Snapshot Date | Size | Download Link | sha256sum | -| ------------- | ----- | ------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------- | -| 2023-06-06 | 2.9TB | [Mirror 1](https://datadirs.optimism.io/mainnet-legacy-archival.tar.zst) | `4adedb61125b81b55f9bdccc2e85092050c65ef2253c86e2b79569732b772829` | +| ------------- | ----- | ------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------- |*/} diff --git a/pages/builders/node-operators/network-upgrades.mdx b/pages/builders/node-operators/network-upgrades.mdx index 5574cc91f..e82206f6a 100644 --- a/pages/builders/node-operators/network-upgrades.mdx +++ b/pages/builders/node-operators/network-upgrades.mdx @@ -1,114 +1,33 @@ --- -title: Network Upgrades +title: Network upgrades lang: en-US -description: Learn more about how network upgrades work and how to keep your nodes up to date. +description: Learn more about Superchain network activations. --- import Image from 'next/image' import { Steps, Callout } from 'nextra/components' -# Network Upgrade Overview +# Network upgrade overview - - Read this [notice](/builders/notices/fjord-changes.mdx) to prepare for Fjord. - - -This section has information on how to upgrade your Mainnet and Testnet nodes -for new network upgrades. The network upgrade naming scheme after the Bedrock -upgrade has a geology themed name based on the next letter in the english -alphabet. +This page provides hardfork activation timestamps and links to detailed specifications. +The documentation outlines the hardfork release process. +The network upgrade naming scheme after the Bedrock upgrade follows a geology theme based on the next letter in the English alphabet. ## Activations -Network upgrades are activated by timestamps. Failing to upgrade your node -before the timestamp will cause a chain divergence. You will need to resync -your node to reconcile the chain. Optimistic activation times refer to times -that are pending governance approval. - -| Upgrade | Governance Approval | [OP Mainnet Activations](https://github.com/ethereum-optimism/superchain-registry/blob/main/superchain/configs/mainnet/superchain.yaml) | [OP Sepolia Activations](https://github.com/ethereum-optimism/superchain-registry/blob/main/superchain/configs/sepolia/superchain.yaml) | -| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | -| [Fjord](https://specs.optimism.io/protocol/superchain-upgrades.html#fjord) | [TBD](https://gov.optimism.io/t/upgrade-proposal-9-fjord-network-upgrade/8236) | Optimistically Wed Jul 10 16:00:01 UTC 2024 (`1720627201`) | Wed May 29 16:00:00 UTC 2024 (`1716998400`) | -| [Ecotone](https://specs.optimism.io/protocol/superchain-upgrades.html#ecotone) | [approved](https://gov.optimism.io/t/upgrade-proposal-5-ecotone-network-upgrade/7669) | Thu Mar 14 00:00:01 UTC 2024 (`1710374401`) | Wed Feb 21 17:00:00 UTC 2024 (`1708534800`) | -| [Delta](https://specs.optimism.io/protocol/superchain-upgrades.html#delta) | [approved](https://gov.optimism.io/t/final-upgrade-proposal-3-delta-network-upgrade/7310) | Thu Feb 22 00:00:00 UTC 2024 (`1708560000`) | Fri Dec 22 00:00:00 UTC 2023 (`1703203200`) | -| [Canyon](https://specs.optimism.io/protocol/superchain-upgrades.html#canyon) | [approved](https://gov.optimism.io/t/final-upgrade-proposal-2-canyon-network-upgrade/7088) | Thu Jan 11 17:00:01 UTC 2024 (`1704992401`) | Tue Nov 14 17:00:00 UTC 2023 (`1699981200`) | - -## Summary of Changes - -These are the summary of each network upgrade changes order by the most recent -activation. These are a reflection of the [Superchain Upgrades Specifications](https://specs.optimism.io/protocol/superchain-upgrades.html) - -### [Fjord](https://specs.optimism.io/protocol/superchain-upgrades.html#fjord) - -The Fjord upgrade includes the RIP-7212 precompile, FastLZ gas pricing, Brotli channel compression, and several protocol parameter changes. - -* [RIP-7212: Precompile for secp256r1](https://specs.optimism.io/protocol/precompiles.html#P256VERIFY) -* [Brotli channel compression](https://specs.optimism.io/fjord/exec-engine.html#fees) -* FastLZ gas pricing - * [FastLZ L1 fee cost calculation](https://specs.optimism.io/fjord/exec-engine.html#fees) - * [Upgraded GasPriceOracle to compute FastLZ](https://specs.optimism.io/fjord/derivation.html#gaspriceoracle-deployment) - * [L1 gas cost changes](https://specs.optimism.io/fjord/predeploys.html#l1-gas-usage-estimation) -* Protocol parameter changes - * [Max sequencer drift becomes constant](https://specs.optimism.io/fjord/derivation.html#constant-maximum-sequencer-drift) - * [Channel constant increases](https://specs.optimism.io/fjord/derivation.html#increasing-max_rlp_bytes_per_channel-and-max_channel_bank_size) -* [Fjord hardfork activation block](https://specs.optimism.io/fjord/derivation.html#network-upgrade-automation-transactions) - -### [Ecotone](https://specs.optimism.io/protocol/superchain-upgrades.html#ecotone) - -The Ecotone upgrade contains the Dencun upgrade from L1, and adopts EIP-4844 blobs for data-availability. - -Cancun (Execution Layer): - -* [EIP-1153: Transient storage opcodes](https://eips.ethereum.org/EIPS/eip-1153) -* [EIP-4844: Shard Blob Transactions](https://eips.ethereum.org/EIPS/eip-4844) -* [Blob transactions are disabled](https://specs.optimism.io/protocol/exec-engine.html#ecotone-disable-blob-transactions) -* [EIP-4788: Beacon block root in the EVM](https://eips.ethereum.org/EIPS/eip-4788) -* [The L1 beacon block root is embedded into L2](https://specs.optimism.io/protocol/exec-engine.html#ecotone-beacon-block-root) -* [The Beacon roots contract deployment is automated](https://specs.optimism.io/protocol/derivation.html#ecotone-beacon-block-roots-contract-deployment-eip-4788) -* [EIP-5656: MCOPY - Memory copying instruction](https://eips.ethereum.org/EIPS/eip-5656) -* [EIP-6780: SELFDESTRUCT only in same transaction](https://eips.ethereum.org/EIPS/eip-6780) -* [EIP-7516: BLOBBASEFEE opcode](https://eips.ethereum.org/EIPS/eip-7516) -* [BLOBBASEFEE always pushes 1 onto the stack](https://specs.optimism.io/protocol/exec-engine.html#ecotone-disable-blob-transactions) - -Deneb (Consensus Layer): *not applicable to L2* - -* [EIP-7044: Perpetually Valid Signed Voluntary Exits](https://eips.ethereum.org/EIPS/eip-7044) -* [EIP-7045: Increase Max Attestation Inclusion Slot](https://eips.ethereum.org/EIPS/eip-7045) -* [EIP-7514: Add Max Epoch Churn Limit](https://eips.ethereum.org/EIPS/eip-7514) - -Data Availability (DA) upgrade: - -* Blobs Data Availability: support blobs DA the [L1 Data-retrieval stage](https://specs.optimism.io/protocol/derivation.html#ecotone-blob-retrieval). -* Rollup fee update: support blobs DA in [L1 Data Fee computation](https://specs.optimism.io/protocol/exec-engine.html#ecotone-l1-cost-fee-changes-eip-4844-da) -* Auto-upgrading and extension of the [L1 Attributes Predeployed Contract](https://specs.optimism.io/protocol/deposits.html#ecotone-l1block-upgrade) - (also known as `L1Block` predeploy) - -### [Delta](https://specs.optimism.io/protocol/superchain-upgrades.html#delta) - -The Delta upgrade consists of a single consensus-layer feature: [Span Batches](https://specs.optimism.io/protocol/delta/span-batches.html). - -The Delta upgrade uses a *L2 block-timestamp* activation-rule, and is specified only in the rollup-node (`delta_time`). - -### [Canyon](https://specs.optimism.io/protocol/superchain-upgrades.html#canyon) - -The Canyon upgrade contains the Shapella upgrade from L1 and some minor protocol fixes. - -* [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) -* [Withdrawals are prohibited in P2P Blocks](https://specs.optimism.io/protocol/rollup-node-p2p.html#block-validation) -* [Withdrawals should be set to the empty array with Canyon](https://specs.optimism.io/protocol/derivation.html#building-individual-payload-attributes) -* [EIP-6049: Deprecate SELFDESTRUCT](https://eips.ethereum.org/EIPS/eip-6049) -* [Modifies the EIP-1559 Denominator](https://specs.optimism.io/protocol/exec-engine.html#1559-parameters) -* [Channel Ordering Fix](https://specs.optimism.io/protocol/derivation.html#reading) -* [Adds the deposit nonce & deposit nonce version to the deposit receipt hash](https://specs.optimism.io/protocol/deposits.html#deposit-receipt) -* [Deploys the create2Deployer to `0x13b0D85CcB8bf860b6b79AF3029fCA081AE9beF2`](https://specs.optimism.io/protocol/predeploys.html#create2deployer) +Network upgrades are activated by timestamps. Failing to upgrade your OP Stack software before the timestamp will cause a chain divergence and you will need to resync the chain. Optimistic activation times refer to times that are pending governance approval. -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. +| Upgrade | Governance Approval | [Mainnet Activations](https://github.com/ethereum-optimism/superchain-registry/blob/main/superchain/configs/mainnet/superchain.toml) | [Sepolia Activations](https://github.com/ethereum-optimism/superchain-registry/blob/main/superchain/configs/sepolia/superchain.toml) | +| --------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| [Holocene](https://specs.optimism.io/protocol/holocene/overview.html) | TBD | TBD | Tue Nov 26 15:00:00 UTC 2024 (`1732633200`) | +| [Granite](https://specs.optimism.io/protocol/granite/overview.html) | [approved](https://gov.optimism.io/t/upgrade-proposal-10-granite-network-upgrade/8733) | Wed Sep 11 16:00:01 UTC 2024 (`1726070401`) around block `125235812` | Mon Aug 12 16:00:00 UTC 2024 (`1723478400`) around block `15837930` | +| [Fjord](https://specs.optimism.io/protocol/fjord/overview.html) | [approved](https://gov.optimism.io/t/upgrade-proposal-9-fjord-network-upgrade/8236) | Wed Jul 10 16:00:01 UTC 2024 (`1720627201`) around block `122514212` | Wed May 29 16:00:00 UTC 2024 (`1716998400`) around block `12597930` | +| [Ecotone](https://specs.optimism.io/protocol/ecotone/overview.html) | [approved](https://gov.optimism.io/t/upgrade-proposal-5-ecotone-network-upgrade/7669) | Thu Mar 14 00:00:01 UTC 2024 (`1710374401`) around block `117387812` | Wed Feb 21 17:00:00 UTC 2024 (`1708534800`) around block `8366130` | +| [Delta](https://specs.optimism.io/protocol/delta/overview.html) | [approved](https://gov.optimism.io/t/final-upgrade-proposal-3-delta-network-upgrade/7310) | Thu Feb 22 00:00:00 UTC 2024 (`1708560000`) around block `116480612` | Fri Dec 22 00:00:00 UTC 2023 (`1703203200`) around block `5700330` | +| [Canyon](https://specs.optimism.io/protocol/canyon/overview.html) | [approved](https://gov.optimism.io/t/final-upgrade-proposal-2-canyon-network-upgrade/7088) | Thu Jan 11 17:00:01 UTC 2024 (`1704992401`) around block `114696812` | Tue Nov 14 17:00:00 UTC 2023 (`1699981200`) around block `4089330` | +| Bedrock | [approved](https://gov.optimism.io/t/final-upgrade-1-bedrock-protocol-upgrade-v2/5548) | Tue Jun 06 2023 16:28:23 UTC (`1686079703`) at block `105235063` | N/A | -## Upgrade Process +## Upgrade process Network upgrades follow this general process in which the features included in the upgrade are put into a release version cut from the `develop` branch and @@ -151,7 +70,7 @@ then the software is deployed on production networks. * `Upgrade Activated` -## More Information +## More information * To check for the latest node software, see the [Software Releases](/builders/node-operators/releases). * For more information on the governance process see the [governance documentation](https://community.optimism.io/docs/governance/). diff --git a/pages/builders/node-operators/releases.mdx b/pages/builders/node-operators/releases.mdx index 1edc492c4..0075b4c1b 100644 --- a/pages/builders/node-operators/releases.mdx +++ b/pages/builders/node-operators/releases.mdx @@ -11,7 +11,7 @@ import { Callout } from 'nextra/components' This page gives information on the off chain node software release information. - Our latest releases, notes, and changelogs can be found on GitHub. `op-node` releases can be found [here](https://github.com/ethereum-optimism/optimism/releases) + Our latest releases, notes, and changelogs can be found on GitHub. `op-node` releases can be found [here](https://github.com/MetalLayer2/ethereum-optimism.github.io/releases) and `op-geth` releases can be found [here](https://github.com/ethereum-optimism/op-geth/releases). diff --git a/pages/builders/notices/_meta.json b/pages/builders/notices/_meta.json index 769064261..88db5df64 100644 --- a/pages/builders/notices/_meta.json +++ b/pages/builders/notices/_meta.json @@ -1,4 +1,3 @@ { - "fp-changes": "Preparing for Fault Proofs Breaking Changes", - "fjord-changes": "Preparing for Fjord Breaking Changes" + "holocene-changes": "Preparing for Holocene breaking changes" } diff --git a/pages/builders/notices/fjord-changes.mdx b/pages/builders/notices/fjord-changes.mdx deleted file mode 100644 index 354ae0d1e..000000000 --- a/pages/builders/notices/fjord-changes.mdx +++ /dev/null @@ -1,137 +0,0 @@ ---- -title: Preparing for Fjord Breaking Changes -lang: en-US -description: Learn how to prepare for Fjord upgrade breaking changes. ---- - -import { Steps, Callout } from 'nextra/components' - -# Preparing for Fjord Breaking Changes - -This page outlines breaking changes related to the Fjord network upgrade for wallets and front-end developers, chain operators, and node operators. -If you experience difficulty at any stage of this process, please reach out to [developer support](https://github.com/ethereum-optimism/developers/discussions). - - - The Fjord upgrade for OP Sepolia was activated on **1716998400 Wed May 29 16:00:00 UTC 2024**. The Fjord OP Mainnet upgrade will be optimistically activated **1720627201 Thu July 10 16:00:01 UTC 2024**, pending [governance approval](https://gov.optimism.io/t/upgrade-proposal-9-fjord-network-upgrade/8236). - - -## What's Included in Fjord - -The [Fjord network upgrade](https://specs.optimism.io/fjord/overview.html) includes the following: - -* [RIP-7212](https://specs.optimism.io/protocol/precompiles.html#P256VERIFY): Precompile for secp256r1 Curve Support, to reduce gas costs of many smart wallet applications. -* [Brotli](https://specs.optimism.io/fjord/derivation.html#brotli-channel-compression) as a channel compression option, for \~5-15% lower data availability costs. -* Parameter changes: - * [Max sequencer drift](https://specs.optimism.io/fjord/derivation.html#constant-maximum-sequencer-drift) becomes a constant with value increased to 1800 seconds - * 10x increased values for `MAX_RLP_BYTES_PER_CHANNEL` and `MAX_CHANNEL_BANK_SIZE` ([spec](https://specs.optimism.io/fjord/derivation.html#increasing-max_rlp_bytes_per_channel-and-max_channel_bank_size)) -* The [Fjord hardfork activation block](https://specs.optimism.io/fjord/derivation.html#network-upgrade-automation-transactions) includes several transactions to perform all L2 contract deployments, upgrades, enablements, and proxy updates. -* L1 Gas Cost changes: - * [FastLZ](https://specs.optimism.io/fjord/exec-engine.html#fees) based L1 fee [cost calculation](https://specs.optimism.io/fjord/exec-engine.html#fees) with an upgraded [`GasPriceOracle` L2 predeploy](https://specs.optimism.io/fjord/derivation.html#gaspriceoracle-deployment) to compute it - * `GasPriceOracle` gets a new function `getL1FeeUpperBound` as a cheap new way to calculate an upper bound for the max fee of a new transaction - * `getL1GasUsed` method of the `GasPriceOracle` contract ([spec](https://specs.optimism.io/fjord/predeploys.html#l1-gas-usage-estimation)) is being deprecated - * `L1GasUsed` field of the transaction receipt ([spec](https://specs.optimism.io/fjord/exec-engine.html)) is being deprecated - -## For Wallets and Front-End Developers - -The proposed Fjord upgrade to the OP Stack and OP Mainnet changes the formula for estimating the [L1 Data Fee](/stack/transactions/fees#l1-data-fee) component of the [OP Stack Transaction Fee](/stack/transactions/fees). - -* `getL1Fee` on the [GasPriceOracle contract](https://github.com/ethereum-optimism/optimism/blob/0dcb1b2c7dadec98a24f47e2e2d781a25800d9e1/packages/contracts-bedrock/src/L2/GasPriceOracle.sol#L54) has been updated. It now performs FastLZ compression on-chain, which is a better approximation of the compressibility of a transaction. Combined with a linear regression model, this gives a more accurate prediction of L1 data fees. -* `getL1GasUsed` and the corresponding `L1GasUsed` field of transaction receipts are being deprecated as they no longer accurately reflect gas usage as of Ecotone. The function and field will remain; however, their usefulness is limited as they still assume calldata batching. `getL1Fee` should be used when trying to predict L1 Data fees. -* `getL1FeeUpperBound` is a new method to estimate fee upper bounds when sending transactions. It is much cheaper, in gas costs, than previous methods. This is what wallets and front-ends should use in practice in most cases. -* Read the [Fjord Formula section](/stack/transactions/fees#fjord) of the [Transaction Fees](/stack/transactions/fees) page for more information about the new formula. - -Your application may need to be updated to account for this change. Read below to learn how specific changes in the Fjord upgrade require updates to your application. - -### Preparing Your Wallet or Front-End - -Changes to the L1 Data Fee formula may affect your application if you are computing this fee component on your own. It's strongly recommended that you use [existing tooling](/builders/app-developers/transactions/estimates#tooling) to estimate transaction fees instead of computing them yourself. - -* If you cannot use existing tooling, use the `getL1Fee` function on the `GasPriceOracle` smart contract to compute the L1 Data Fee component of the transaction fee. Avoid implementing the formula yourself, as it may change in the future. -* Alternatively, you should consider using `getL1FeeUpperBound` if you only need to estimate an upper bound of the L1 fee for the purpose of transaction sending. - -## For Chain Operators - -The proposed Fjord upgrade impacts OP chains and requires chain operators to upgrade their chain and configure the sequencer for Fjord. - -* [Max sequencer drift](https://specs.optimism.io/fjord/derivation.html#constant-maximum-sequencer-drift) becomes a constant with value increased to 1800 seconds. This gives chain operators more time to respond to L1 node issues without facing a potential L2 chain halt. -* [Brotli](https://specs.optimism.io/fjord/derivation.html#brotli-channel-compression) is now supported as a channel compression option, for \~5-15% lower data availability costs. -* An update of the fee scalars on the `SystemConfig` is necessary, similar to Ecotone. - - - ### Prepare `SystemConfig` Transaction - - An onchain transaction will be required to update the scalar for Fjord. This needs to be prepared days in advance before the activation to ensure chain operators don't operate at a loss when Fjord activates. - - * Encode the scalar value using the [ecotone scalar encoding tool](https://github.com/ethereum-optimism/optimism/tree/develop/op-chain-ops/cmd/ecotone-scalar) - * Send a `setGasConfig` transaction to `SystemConfig` - * Set `BaseFeeScalar` and `BlobBaseFeeScalar` values based on the [Fjord calculator](https://docs.google.com/spreadsheets/d/1V3CWpeUzXv5Iopw8lBSS8tWoSzyR4PDDwV9cu2kKOrs/edit#gid=186414307) - - ### Prepare Sequencer Node - - - If you are operating an OP Chain that has an entry in the [`superchain-registry`](https://github.com/ethereum-optimism/superchain-registry/blob/main/chainList.json), the Fjord activation date is part of the `op-node` and `op-geth` nodes, and are using the [--network](/builders/node-operators/configuration/consensus-config#network) and [--op-network](/builders/node-operators/configuration/execution-config#op-network-betaop-network) flags. No action is needed for the sequencer after preparing the `SystemConfig` transaction. Please skip to [Step 3: Prepare Batcher](#prepare-batcher). - - - For custom chains not included in the [`superchain-registry`](https://github.com/ethereum-optimism/superchain-registry/blob/main/chainList.json), you will need to manually configure the [activation timestamp](https://github.com/ethereum-optimism/superchain-registry/blob/main/superchain/configs/mainnet/superchain.yaml). You have two configuration options for your sequencer node: - - * **Option 1:** Set the Fjord activation date in your `rollup.json` config file. You will still need to set the `override.fjord` flag in `op-geth` with the UNIX timestamp. - * **Option 2:** Alternatively, chain operators can use the override flags to configure your sequencer node by specifying a time in the future when Fjord will activate. - * Set `override.fjord` in both `op-node` and `op-geth` to the UNIX timestamp of the block you want to activate the Fjord hardfork or corresponding env vars for this. - * In general, run `op-node --help` or `op-geth --help` to see flags, their descriptions and environment variables. - - ### Prepare Batcher - - Preparing your batcher to activate Brotli compression is optional but recommended to achieve better channel compression. - - * You can activate Brotli compression for your batcher by setting the `compression-algo` flag. - * `brotli-10` is the recommended Brotli level and works fine for most chain configurations. - * However, chain operators can experiment with `brotli-11` if it gives them better compression and their batcher can still keep up with the increased compression computation needs. - - - `brotli` defaults to `brotli-10`. If the flag is unset, it still defaults to `zlib`. - - - * You can also run the batcher help to see available options: `go run ./op-batcher/cmd --help |less` - - ```jsx - --compression-algo value (default: zlib) ($OP_BATCHER_COMPRESSION_ALGO) - The compression algorithm to use. Valid options: zlib, brotli, brotli-9, - brotli-10, brotli-11 - ``` - - - - To verify proper configuration, chain operators should confirm in the startup logs of their `op-node` and `op-geth` that the correct Fjord activation timestamps are set. - - -## For Node Operators - -Node operators will need to upgrade to Fjord before the activation date. For Sepolia, the op-node release [v1.7.7](https://github.com/ethereum-optimism/optimism/releases/tag/v1.7.7) and op-geth release [v1.101315.2](https://github.com/ethereum-optimism/op-geth/releases/tag/v1.101315.2) contain these changes. - -These following steps are necessary for EVERY node operator: - - - ### Update to the Latest Release - - * [`op-geth`](https://github.com/ethereum-optimism/op-geth/releases/tag/v1.101315.2) - * [`op-node`](https://github.com/ethereum-optimism/optimism/releases/tag/v1.7.7) - - ### Configure the Fjord Activation Date - - - If you are operating a node for an OP Chain that has an entry in the [`superchain-registry`](https://github.com/ethereum-optimism/superchain-registry/blob/main/chainList.json), the Fjord activation date is part of the `op-node` and `op-geth` nodes. So, no action is needed for the sequencer after upgrading to the latest release. Please skip to [Step 3: Verify Your Configuration](#verify-your-configuration). - - - For node operators of custom chains not included in the [`superchain-registry`](https://github.com/ethereum-optimism/superchain-registry/blob/main/chainList.json), you will need to manually configure the [activation timestamp](https://github.com/ethereum-optimism/superchain-registry/blob/main/superchain/configs/mainnet/superchain.yaml). This can be done one of two ways: - - * **Option 1:** Set the activation time in the `rollup.json` for `op-node`. You will still need to set the `override.fjord` flag in `op-geth` if you use this option. - * **Option 2:** Set the activation time via overrides (CLI) in both `op-node` and `op-geth`. These will need to be set on `op-node` and `op-geth` for the sequencer and all other nodes. - - ### Verify Your Configuration - - Make the following checks to verify that your node is properly configured. - - * `op-node` and `op-geth` will log their configurations at startup - * Check that the Fjord time is set to `activation-timestamp` in the op-node startup logs - * Check that the Fjord time is set to `activation-timestamp` in the op-geth startup logs - diff --git a/pages/builders/notices/fp-changes.mdx b/pages/builders/notices/fp-changes.mdx deleted file mode 100644 index b889db0e7..000000000 --- a/pages/builders/notices/fp-changes.mdx +++ /dev/null @@ -1,100 +0,0 @@ ---- -title: Preparing for Fault Proofs Breaking Changes -lang: en-US -description: Learn how to prepare for Fault Proofs changes. ---- - -import { Steps, Callout } from 'nextra/components' - -# Preparing for Fault Proofs Breaking Changes - -OP Labs has submitted a [proposal to governance](https://gov.optimism.io/t/upgrade-proposal-fault-proofs/8161) to upgrade OP Mainnet to support Fault Proofs. If this proposal passes, fault proofs would launch on OP Mainnet approximately June 2024. This document details changes that apply to users, bridges, and centralized exchanges, as well as any custom solutions that use withdrawals. This page outlines changes for OP Mainnet and OP Sepolia only. Details for other OP Chains are forthcoming. - -If you experience difficulty at any stage of this process, please reach out to [OP Labs Developer Support](https://github.com/ethereum-optimism/developers/discussions). - - - **Important Notice for Bridges and Users** - -**ALL** withdrawals that are not finalized before the Fault Proofs upgrade executes will need to be reproven after the upgrade is complete. - - * Reproving simply requires that you execute the [withdrawal proving flow](https://docs.metall2.com/stack/protocol/rollup/withdrawal-flow) again. - * Withdrawals prior to the Fault Proofs upgrade must wait a 7-day challenge period before finalization. As a result, any withdrawal initiated less than 7 days before the upgrade cannot be finalized before the upgrade is executed. You may want to consider waiting until after the upgrade is complete to begin a withdrawal during this 7-day window. - - - - **Important Notice for Bridges and Users** - - Maximum withdrawal delay times are increasing with the Fault Proofs upgrade. - * Withdrawals will generally take 7 days to finalize (unchanged from before Fault Proofs). - * Withdrawals that are proven against an output proposal that receives a validity challenge are delayed by an additional 3.5 days. Valid proposals that are challenged maliciously can be delayed by up to an additional 9 days at a very high cost to the malicious actor. Additional delays of this type are expected to be infrequent. - - - - As of the Fault Proofs update to OP Sepolia in March 2024, **OP Sepolia withdrawals are no longer instant.** This is because the Fault Proof mechanism now applies to OP Sepolia transactions. - - -## Overview of Changes - -If you are operating a custom bridge, review this section for changes you need to make. If you are using Optimism SDK or Viem for your bridging, you can [skip to the next section](#for-bridges-and-centralized-exchanges). - -The `L2OutputOracle` is being entirely removed and replaced by the `OptimismPortal` and `DisputeGameFactory`. The `L2OutputOracle` smart contract is currently used by the trusted Proposer role to store L2 state output proposals. -Presently, developers use these outputs to prove that their withdrawals actually happened on L2. But with fault proofs, developers will have to change how their client software proves withdrawals in the first step of the two-step withdrawal process. - -### `L2OutputOracle` - -The `OptimismPortal` is changing slightly with Fault Proof Mainnet because it now points to the `DisputeGameFactory` contract instead of the `L2OutputOracle` contract. -Most notable change for developers is that withdrawals will have to be proven against the `rootClaim` of some dispute game rather than referencing an output in the `L2OutputOracle` contract. - -### `OptimismPortal` - -The `OptimismPortal` smart contract is the low-level contract on L1 used to execute deposits and withdrawals. -Previously, developers would look at the `L2OutputOracle` to find the exact next output that included their withdrawal. -Now, developers must look at the `OptimismPortal` contract to determine the `respectedGameType` and then use this information to query the `DisputeGameFactory` for a list of recent `DisputeGame` contracts with the correct game type. - -### `DisputeGameFactory` - -It is recommended that developers search for a reasonable number of recent games, say 100 games, and pick the first proposal with a sufficient block number. -Developers should then verify this proposal locally as the default game type will allow for permissionless proposals and there is no longer a strong guarantee that proposals will be valid. - -## For Bridges and Centralized Exchanges - -The proposed Fault Proof upgrade requires developers to enable Fault Proof changes before the Op Mainnet release. This impacts bridges, centralized exchanges, and custom solutions that use withdrawals. - - - Withdrawals that haven't finalized before the upgrade occurs will be unable to be finalized post-upgrade without reproving. This means these withdrawals will need to go through a new 7-day period. The time accrued before the upgrade will not count. - This means the withdrawal time could be as long as 13-14 days during the upgrade window. (If you submit it \~6 days before the upgrade, then must re-prove after the upgrade, you will have to wait a new seven days.) - - - - ### Update Logic to Support Fault Proofs - - - Most teams use the Optimism SDK or Viem to handle this logic under the hood and will simply need to update their software version ahead of the upgrade. However, any project performing withdrawals programmatically will need to update their client code (see [`OptimismPortal`](#optimismportal) for details). - - - * **Option 1: Optimism SDK Update.** If you use OptimismSDK for bridging, simply update to version 3.2.0 or higher. - The Optimism SDK changes do not break the API and require no changes other than updating to the correct software version to support the new `OptimismPortal` logic. The Optimism SDK will automatically begin to use the new logic once it detects that the FPM update has gone live. - * **Option 2: Viem Update.** Update to the latest version of Viem (version of >=2.9.0). Viem will automatically begin to use the new logic once it detects that the FPM update has gone live. - - ### Update Withdrawal Monitor - - The Withdrawal Monitor service is an important part of the two-step withdrawal system that checks if anyone has been able to prove withdrawals that do not actually appear on L2. - The Withdrawal Monitor is now slightly slower at startup time but is more reliable, simpler, and compatible with more infrastructure to more easily support any OP Stack chain. - Changes to the Withdrawal Monitor are entirely backwards compatible. - - * **Option 1: Withdrawal from source.** If building or using withdrawal-monitor from source, make sure that you are using the latest develop branch. All withdrawal monitor changes are fully backwards compatible. - * **Option 2: Docker image.** If using docker, use the latest chain-mon docker image. - - ### Update Dispute Monitor - - The Dispute Monitor service detects when invalid outputs have been proposed. Given the large number of changes to the output proposal system, the current Fault Monitor is being replaced in favor of a new Dispute Monitor purposely built for the fault proof monitor system. - - - Any team running the current Fault Monitor will see the monitor stop functioning when the Fault Proof Monitor upgrade goes live. These teams should run the new service and update their alerting accordingly. - - - -## Next Steps - -* See the [Fault Proofs Explainer](/stack/protocol/fault-proofs/explainer) to learn more about the three main components of the Fault Proof System. -* You can also read more about [Cannon FPVM](/stack/protocol/fault-proofs/cannon) and [Mips.sol](/stack/protocol/fault-proofs/mips), the onchain smart contract implementation of Cannon. diff --git a/pages/builders/notices/holocene-changes.mdx b/pages/builders/notices/holocene-changes.mdx new file mode 100644 index 000000000..b3a0d93c9 --- /dev/null +++ b/pages/builders/notices/holocene-changes.mdx @@ -0,0 +1,86 @@ +--- +title: Preparing for Holocene Breaking Changes +lang: en-US +description: Learn how to prepare for Holocene upgrade breaking changes. +--- + +import { Steps, Callout } from 'nextra/components' + +# Preparing for Holocene breaking changes + +This page outlines breaking changes related to the Holocene network upgrade for chain operators, and node operators. +If you experience difficulty at any stage of this process, please reach out to [developer support](https://github.com/ethereum-optimism/developers/discussions). + + + The Holocene upgrade for the Sepolia Superchain was activated at **Tue Nov 26 at 15:00:00 UTC** (`1732633200`). + + The Holocene upgrade for the Mainnet Superchain is optimistically scheduled for **Thu 9 Jan 2025 18:00:01 UTC**, pending governance approval. + + +## What's included in Holocene + +Holocene contains three changes: + +* **Holocene block derivation**: a set of changes that render the derivation pipeline stricter and simpler, improving worst-case scenarios for the Fault Proof System and Interoperability. +* **EIP-1559 configurability**: The elasticity and denominator EIP-1559 parameters become configurable via the `SystemConfig` L1 contract, allowing the gas target and gas limit to be configured independently. +* **MIPS contract upgrade**: Updates to support additional calls made by the new `op-program` version. + +For more information on the Holocene implementation details, please review [Holocene specification](https://specs.optimism.io/protocol/holocene/overview.html). + +## For chain operators + +Chain operators should upgrade their nodes ahead of the activation times to a release that contains the Holocene changes and has the activation times for their chains baked in, or set the activation times manually via overrides. + +Besides this, several L1 contract updates must be performed, some before and some after Holocene activation. We have prepared an [upgrade script](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts-bedrock/scripts/upgrades/holocene) to automate most of the deployments and superchain-ops task generation or Safe multi-sig input bundle generation. + +Chain operators must upgrade their chain's `SystemConfig` to the latest OP Contracts [v1.8.0-rc.2 release](https://github.com/ethereum-optimism/optimism/releases/tag/op-contracts%2Fv1.8.0-rc.2) to utilize the EIP-1559 configurability. The updated `SystemConfig` implementations are deployed at addresses: + +* Sepolia: `0x29d06Ed7105c7552EFD9f29f3e0d250e5df412CD` +* Mainnet: TBD + +Chain operators need to update their proxy contracts to point to these new implementations. The upgrade script in the monorepo can be used to facilitate the upgrade, please follow the instructions in this [README](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts-bedrock/scripts/upgrades/holocene/README.md). Note that it is recommended to upgrade the `SystemConfig` after the Holocene activation. You need to upgrade if you want to reconfigure your EIP-1559 parameters. + +### For fault proof enabled chains + +Since the Holocene upgrade changes the execution and derivation rules, the version of `op-program` used in the fault proof system has to be upgraded to a version that includes the Holocene activation date for the chain. The `op-program` version used is specified via the `faultGameAbsolutePrestate` setting, deployed as part of `FaultDisputeGame` and `PermissionedDisputeGame` contracts. Additionally, the `MIPS` contract must be upgraded to support additional calls made by the new `op-program`. + +The `FaultDisputeGame` and `PermissionedDisputeGame` contracts must be deployed separately for each chain. The `MIPS` contract implementation can be shared by all chains and is deployed at: + +* Sepolia: `0x62254B31DBC258aD27472aB08A7920B410734791` +* Mainnet: TBD + +Chain operators need to update the `DisputeGameFactory` to use the new `FaultDisputeGame` and `PermissionedDisputeGame` contracts by calling `DisputeGameFactory.setImplementation`. The same upgrade script in the monorepo can be used to facilitate the upgrade, please follow the instructions in this [README](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts-bedrock/scripts/upgrades/holocene/README.md). + +## For node operators + +Node operators will need to upgrade to the respective Holocene releases before the activation dates. + +These following steps are necessary for every node operator: + + + ### Update to the latest release + + * [`op-node` at `v1.10.0`](https://github.com/ethereum-optimism/optimism/releases/tag/op-node%2Fv1.10.0) + * [`op-geth` at `v1.101411.2`](https://github.com/ethereum-optimism/op-geth/releases/tag/v1.101411.2) + + ### Configure the Holocene activation date + + + If you are operating a node for an OP Chain that have opted into the [hardfork activation inheritance behavior](https://github.com/ethereum-optimism/superchain-registry/blob/main/docs/hardfork-activation-inheritance.md), the Holocene activation date is part of the `op-node` and `op-geth` nodes. So, no action is needed for the sequencer after upgrading to the latest release. Please skip to [Step 3: Verify Your Configuration](#verify-your-configuration). + + For Sepolia that is: `OP Sepolia`, `Base Sepolia`, `Mode Sepolia`, `Zora Sepolia`, and `Metal Sepolia`. + + + For node operators of not included in the [hardfork activation inheritance behavior](https://github.com/ethereum-optimism/superchain-registry/blob/main/docs/hardfork-activation-inheritance.md), you will need to manually configure the activation. This can be done one of two ways: + + * **Option 1:** Set the activation time in the `rollup.json` for `op-node`. You will still need to set the `override.holocene` flag in `op-geth` if you use this option. + * **Option 2:** Set the activation time via overrides (CLI) in both `op-node` and `op-geth`. These will need to be set on `op-node` and `op-geth` for the sequencer and all other nodes. + + ### Verify Your Configuration + + Make the following checks to verify that your node is properly configured. + + * `op-node` and `op-geth` will log their configurations at startup + * Check that the Holocene time is set to `activation-timestamp` in the op-node startup logs + * Check that the Holocene time is set to `activation-timestamp` in the op-geth startup logs + diff --git a/pages/builders/tools/build/account-abstraction.mdx b/pages/builders/tools/build/account-abstraction.mdx index 1d8e4acaf..7af778a89 100644 --- a/pages/builders/tools/build/account-abstraction.mdx +++ b/pages/builders/tools/build/account-abstraction.mdx @@ -9,7 +9,7 @@ import { Callout } from 'nextra/components' # Account Abstraction - This page includes providers that meet specific [inclusion criteria](#inclusion-criteria), as outlined below. Please visit the [community account abstractions page](https://github.com/ethereum-optimism/developers/blob/main/community/tools/account-abstraction) for an additional listing of third-party account abstraction tools. + This page includes providers that meet specific [inclusion criteria](#inclusion-criteria), as outlined below. [ERC-4337](https://www.erc4337.io/docs/paymasters/introduction), also known as Account Abstraction, enables more opportunities for apps and wallet developers to innovate on user experiences, including the ability to: @@ -21,24 +21,13 @@ import { Callout } from 'nextra/components' ## Superchain Paymaster -The Superchain paymaster is an ERC-4337 verifying paymaster that sponsors transactions for smart accounts on the Superchain. Use the Superchain Paymaster to get your transactions sponsored to remove friction from your app experience. [View the implementation guide and tutorials here.](https://github.com/ethereum-optimism/ecosystem/tree/main/docs/superchain-paymaster) +The Superchain paymaster is an ERC-4337 verifying paymaster that sponsors transactions for smart accounts on the Superchain. Use the Superchain Paymaster to get your transactions sponsored to remove friction from your app experience. ## Account Abstraction Tools -Ready to enable account abstraction experiences in your app? Here's some helpful information on account abstraction infrastructure like ERC-4337 bundler and gas manager APIs that are available on OP Mainnet: +Ready to enable account abstraction experiences in your app? Here's some helpful information on account abstraction infrastructure like ERC-4337 bundler and gas manager APIs that are available on Metal L2: -* [Alchemy](https://www.alchemy.com/account-abstraction): - Account Kit is a complete solution for account abstraction. Using Account Kit, you can create a smart contract wallet for every user that leverages account abstraction to simplify every step of your app's onboarding experience. It also offers Gas Manager and Bundler APIs for sponsoring gas and batching transactions. - -* [Biconomy](https://docs.biconomy.io/): is an Account Abstraction toolkit that enables you to provide the simplest UX for your app or wallet. It offers modular smart accounts, as well as paymasters and bundlers as a service for sponsoring gas and executing transactions at scale. - -* [GroupOS](https://docs.groupos.xyz/introduction/group-os): provides Smart Wallets that are ERC-4337 compliant smart wallets, offering full flexibility, programmability and extensibility as well as out-of-the-box toolkit groups need to gaslessly onboard and activate wallets to games, applications, and/or protocols. - -* [Pimlico](https://docs.pimlico.io/): provides an infrastructure platform that makes building smart accounts simpler. If you are developing, an ERC-4337 smart account, they provide bundlers, verifying paymasters, ERC-20 paymasters, and much more. - -* [Safe](https://docs.safe.global/home/what-is-safe): provides modular smart account infrastructure and account abstraction stack via their Safe\{Core\} Account Abstraction SDK, API, and Protocol. - -* [Stackup](https://docs.stackup.sh/docs): provides smart account tooling for building account abstraction within your apps. They offer Paymaster and Bundler APIs for sponsoring gas and sending account abstraction transactions. +* [Biconomy](https://docs.biconomy.io/): is an Account Abstraction toolkit that enables you to provide the simplest UX for your app or wallet. It offers modular smart accounts, as well as paymasters and bundlers as a service for sponsoring gas and executing transactions at scale. See this [tutorial](/chain/biconomy) for trying Biconomy on the Metal L2 Testnet. ## Helpful Tips @@ -50,8 +39,6 @@ Ready to enable account abstraction experiences in your app? Here's some helpful Developer teams who want to feature products/tools on this page must meet the following criteria: -1. **ongoing partnership** with Optimism whether formal agreement, RPGF, RFP, collaborated on specific initiatives, etc.; -2. **established user base** and OP ecosystem engagement such as governance participation, homegrown TG or Discord participation, etc.; and -3. **actively maintained developer tool** that aligns with OP's commitment to a magical developer experience (e.g., easy-to-use, easy-to-integrate, great DevX, highly rated by community, etc.) - -For teams that are supporting but still establishing a user base, we encourage you to share your tool in the [developer forum](https://github.com/ethereum-optimism/developers/discussions/categories/show-and-tell) and signup to share your tool at the next [demo day](https://community.optimism.io/docs/contribute/demo-day/). +1. **ongoing partnership** with Metal L2 whether formal agreement, RPGF, RFP, collaborated on specific initiatives, etc.; +2. **established user base** and Metal L2 ecosystem engagement such as governance participation, homegrown TG or Discord participation, etc.; and +3. **actively maintained developer tool** that aligns with Metal L2's commitment to a magical developer experience (e.g., easy-to-use, easy-to-integrate, great DevX, highly rated by community, etc.) diff --git a/pages/builders/tools/build/block-explorers.mdx b/pages/builders/tools/build/block-explorers.mdx index e72e8da6e..f58e4ede2 100644 --- a/pages/builders/tools/build/block-explorers.mdx +++ b/pages/builders/tools/build/block-explorers.mdx @@ -74,12 +74,9 @@ However, you **can** access transaction history between 23 June 2021 and the fin Developer teams who want to feature products/tools on this page must meet the following criteria: -1. **ongoing partnership** with Optimism whether formal agreement, RPGF, RFP, collaborated on specific initiatives, etc.; -2. **established user base** and OP ecosystem engagement such as governance participation, homegrown TG or Discord participation, etc.; and -3. **actively maintained developer tool** that aligns with OP's commitment to a magical developer experience (e.g., easy-to-use, easy-to-integrate, great DevX, highly-rated by community, etc.) - -For teams that are supporting but still establishing a user base, we encourage you to share your tool on the [community block explorers page](https://github.com/ethereum-optimism/developers/blob/main/community/tools/block-explorers.md). -You can also promote your tool in the [developer forum](https://github.com/ethereum-optimism/developers/discussions/categories/show-and-tell) and signup to share your tool at the next [demo day](https://community.optimism.io/docs/contribute/demo-day/). +1. **ongoing partnership** with Metal L2 whether formal agreement, RPGF, RFP, collaborated on specific initiatives, etc.; +2. **established user base** and Metal L2 ecosystem engagement such as governance participation, homegrown TG or Discord participation, etc.; and +3. **actively maintained developer tool** that aligns with Metal L2's commitment to a magical developer experience (e.g., easy-to-use, easy-to-integrate, great DevX, highly rated by community, etc.) ## Next Steps diff --git a/pages/builders/tools/build/faucets.mdx b/pages/builders/tools/build/faucets.mdx index 7384de1b3..75a0b618e 100644 --- a/pages/builders/tools/build/faucets.mdx +++ b/pages/builders/tools/build/faucets.mdx @@ -19,7 +19,7 @@ Faucets can occasionally also run out of ETH, so if you're having trouble gettin Tokens on test networks like Sepolia or OP Sepolia have no value and are only meant for testing. - Optimists only take what they need so that others can use faucets too! + Metal L2 contributors only take what they need so that others can use faucets too! ## Superchain Faucet @@ -29,16 +29,15 @@ The Superchain Faucet is a great place to start if you're looking for testnet ET ## Additional Faucets -| Faucet Name | Supported Networks | -| -------------------------------------------------------------------------------- | -------------------------------------------------------- | -| [Alchemy Faucet](https://sepoliafaucet.com) | Sepolia | -| [Infura Faucet](https://www.infura.io/faucet/sepolia) | Sepolia | -| [QuickNode Faucet](https://faucet.quicknode.com/optimism/) | Sepolia, OP Sepolia | -| [Farcaster Frame Faucet by LearnWeb3](https://warpcast.com/haardikkk/0x28f4237d) | Sepolia, OP Sepolia | -| [LearnWeb3 Web App Faucet](https://learnweb3.io/faucets) | Sepolia, OP Sepolia | -| [Native USDC Faucet](https://faucet.circle.com/) | Sepolia, OP Sepolia | -| [ETHGlobal Testnet Faucet](https://ethglobal.com/faucet) | Sepolia, OP Sepolia, Base Sepolia, Zora Sepolia, Holesky | -| [Ethereum Ecosystem Faucets](https://www.ethereum-ecosystem.com/faucets) | Sepolia, OP Sepolia, Base Sepolia | +| Faucet Name | Supported Networks | +| -------------------------------------------------------------------------------- | --------------------------------- | +| [Alchemy Faucet](https://sepoliafaucet.com) | Sepolia | +| [Infura Faucet](https://www.infura.io/faucet/sepolia) | Sepolia | +| [QuickNode Faucet](https://faucet.quicknode.com/optimism/) | Sepolia, OP Sepolia | +| [Farcaster Frame Faucet by LearnWeb3](https://warpcast.com/haardikkk/0x28f4237d) | Sepolia, OP Sepolia | +| [LearnWeb3 Web App Faucet](https://learnweb3.io/faucets) | Sepolia, OP Sepolia | +| [Native USDC Faucet](https://faucet.circle.com/) | Sepolia, OP Sepolia | +| [Ethereum Ecosystem Faucets](https://www.ethereum-ecosystem.com/faucets) | Sepolia, OP Sepolia, Base Sepolia | ## Bridge from Sepolia @@ -48,12 +47,9 @@ If you have testnet ETH on Sepolia, you can bridge it to OP Sepolia (and vice ve Developer teams who want to feature products/tools on this page must meet the following criteria: -1. **ongoing partnership** with Optimism whether formal agreement, RPGF, RFP, collaborated on specific initiatives, etc.; -2. **established user base** and OP ecosystem engagement such as governance participation, homegrown TG or Discord participation, etc.; and -3. **actively maintained developer tool** that aligns with OP's commitment to a magical developer experience (e.g., easy-to-use, easy-to-integrate, great DevX, highly-rated by community, etc.) - -For teams that are supporting but still establishing a user base, we encourage you to share your tool on the [community faucets page](https://github.com/ethereum-optimism/developers/blob/main/community/tools/faucets.md). -You can also promote your tool in the [developer forum](https://github.com/ethereum-optimism/developers/discussions/categories/show-and-tell) and signup to share your tool at the next [demo day](https://community.optimism.io/docs/contribute/demo-day/). +1. **ongoing partnership** with Metal L2 whether formal agreement, RPGF, RFP, collaborated on specific initiatives, etc.; +2. **established user base** and Metal L2 ecosystem engagement such as governance participation, homegrown TG or Discord participation, etc.; and +3. **actively maintained developer tool** that aligns with Metal L2's commitment to a magical developer experience (e.g., easy-to-use, easy-to-integrate, great DevX, highly rated by community, etc.) ## Next Steps diff --git a/pages/builders/tools/build/nft-tools.mdx b/pages/builders/tools/build/nft-tools.mdx index 270f3f636..2291d6a0f 100644 --- a/pages/builders/tools/build/nft-tools.mdx +++ b/pages/builders/tools/build/nft-tools.mdx @@ -1,65 +1,24 @@ --- -title: OP Mainnet NFT Tools +title: Metal L2 NFT Tools lang: en-US -description: Learn the basics of creating an NFT on OP Mainnet. +description: Learn the basics of creating an NFT on Metal L2. --- import { Callout } from 'nextra/components' -# OP Mainnet NFT Tools +# Metal L2 NFT Tools -## The OP Mainnet NFT ecosystem - -![The OP Mainnet NFT ecosystem page.](/img/guides/app-developers/OP-NFT-Ecosystem.jpg) - -## Statistics - -[Click here for statistics about NFTs on OP Mainnet](https://dune.com/oplabspbc/optimism-nft-secondary-marketplaces) ## Creator tools -These tools are available on OP Mainnet: +Coming soon on Metal L2: -* [NiftyKit](https://niftykit.com/) -* [nft-inator](https://nft-inator.com/) -* [Unlock](https://unlock-protocol.com/) (time-bound NFTs for membership) * [ThirdWeb](https://thirdweb.com/) -* [Crossmint](https://crossmint.com/?utm_source=backlinks\&utm_medium=docs\&utm_campaign=optimism) - -## Feature comparison - - - This list was last updated early February 2024, but new features are implemented all the time. - - -| | NiftyKit | NFT-Inator | Mintplex | Zero Code NFT | ThirdWeb | Crossmint | -| ------------------ | -------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------- | -------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Multi-chain | 3 | 5 | 6 | 11 | 1100+ [(all EVM chains)](https://thirdweb.com/dashboard/infrastructure/rpc-edge) | 9 | -| Generator | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | -| ERC-20 support | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | -| ERC-721A support | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | -| ERC-1155 support | ❌ | ❌ | ✅ | ❌ | ✅ | ✅ | -| DAO support | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | -| No Code deployment | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | -| Pricing / Fee | [Flat membership fee plus 2.5%-10% of the sales](https://app.niftykit.com) | 2% commission on primary sales | Paywall for premium features | Test for free, $499 for OpenSea setup | See the [pricing page](https://thirdweb.com/pricing) for more details | [Mint API Pricing](https://docs.crossmint.com/docs/pricing?utm_source=backlinks\&utm_medium=docs\&utm_campaign=optimism). NFT Checkouts free for seller (Unlimited transactions). | -| Image Hosting | [NFT storage](https://nft.storage/) / [Pinata](https://www.pinata.cloud/) | [NFT storage](https://nft.storage/) / [Pinata](https://www.pinata.cloud/) | Up to creators. Recommend [Pinata](https://www.pinata.cloud/) | [IPFS](https://ipfs.tech/) | [IPFS](https://ipfs.tech/) | [IPFS](https://ipfs.tech/) and [Arweave](https://www.arweave.org/). | - -## NFT data APIs - -* [Moralis](https://docs.moralis.io/web3-data-api/evm/reference/nft-api?utm_source=op-docs&utm_medium=partner-docs) -* [Alchemy](https://docs.alchemy.com/reference/nft-api-quickstart) -* [SimpleHash](https://simplehash.com/) -* [QuickNode](https://www.quicknode.com/nft-api) -* [Reservoir](https://docs.reservoir.tools/reference/optimism) -* [NFTScan](https://docs.nftscan.com/reference/evm/get-nfts-by-account) - -## Marketplaces -* [OpenSea](https://opensea.io/rankings?chain=optimism) -* [Tofu](https://tofunft.com/optimism) -* [OptiMarket](https://optimarket.io/) -* [Circular Art](https://www.circularart.xyz/) +## Inclusion Criteria -## Marketplace aggregators +Developer teams who want to feature products/tools on this page must meet the following criteria: -* [Bluesweep](https://www.bluesweep.xyz/) +1. **ongoing partnership** with Metal L2 whether formal agreement, RPGF, RFP, collaborated on specific initiatives, etc.; +2. **established user base** and Metal L2 ecosystem engagement such as governance participation, homegrown TG or Discord participation, etc.; and +3. **actively maintained developer tool** that aligns with Metal L2's commitment to a magical developer experience (e.g., easy-to-use, easy-to-integrate, great DevX, highly-rated by community, etc.) diff --git a/pages/builders/tools/build/oracles.mdx b/pages/builders/tools/build/oracles.mdx index 10c7b7042..3deeac65b 100644 --- a/pages/builders/tools/build/oracles.mdx +++ b/pages/builders/tools/build/oracles.mdx @@ -9,10 +9,10 @@ import { Callout } from 'nextra/components' # Oracles - This page includes providers that meet specific [inclusion criteria](#inclusion-criteria), as outlined below. Please visit the [community oracles page](https://github.com/ethereum-optimism/developers/blob/main/community/tools/oracles.md) for an additional listing of third-party Oracles. + This page includes providers that meet specific [inclusion criteria](#inclusion-criteria), as outlined below. -This reference guide lists different Oracles you can use when building on Optimism. [Oracles](https://ethereum.org/en/developers/docs/oracles/) provide offchain data onchain. This allows code running on a blockchain to access a wide variety of information. +This reference guide lists different Oracles you can use when building on Metal Layer 2. [Oracles](https://ethereum.org/en/developers/docs/oracles/) provide offchain data onchain. This allows code running on a blockchain to access a wide variety of information. For example, a [stablecoin](https://ethereum.org/en/stablecoins/) that accepts ETH as collateral needs to know the ETH/USD exchange rate: * How many stablecoins can we give a user for a given amount of ETH? @@ -43,45 +43,10 @@ Random number generation in blockchain applications ensures that smart contracts ## List of Oracles -### Gas Oracle - -OP Mainnet provides a [Gas Price Oracle](https://github.com/ethereum-optimism/optimism/blob/233ede59d16cb01bdd8e7ff662a153a4c3178bdd/packages/contracts/contracts/L2/predeploys/OVM_GasPriceOracle.sol) that provides information about [gas prices and related parameters](/stack/transactions/fees). -It can also calculate the total cost of a transaction for you before you send it. - -This contract is a predeploy at address `0x420000000000000000000000000000000000000F`: - -* [On OP Mainnet](https://explorer.optimism.io/address/0x420000000000000000000000000000000000000F#readContract) -* [On OP Sepolia](https://sepolia-optimistic.etherscan.io/address/0x420000000000000000000000000000000000000F) - -This is a push Oracle. -OP Mainnet (and the testnets) updates the gas price parameters onchain whenever those parameters change. -The L1 gas price, which can be volatile, is only pushed once every 5 minutes, and each time can change only by up to 20%. - ### API3 -The [API3 Market](https://market.api3.org/optimism) provides access to 200+ price feeds on [Optimism Mainnet](https://market.api3.org/optimism) and [Testnet](https://market.api3.org/optimism-sepolia-testnet). The price feeds operate as a native push oracle and can be activated instantly via the Market UI. - -The price feeds are delivered by an aggregate of [first-party oracles](https://docs.api3.org/explore/airnode/why-first-party-oracles.html) using signed data and support [OEV recapture](https://docs.api3.org/explore/introduction/oracle-extractable-value.html). - -Unlike traditional data feeds, reading [API3 price feeds](https://docs.api3.org/guides/dapis/) enables dApps to auction off the right to update the price feeds to searcher bots which facilitates more efficient liquidation processes for users and LPs of DeFi money markets. The OEV recaptured is returned to the dApp. +The [API3 Market](https://market.api3.org/metal) provides access to 200+ price feeds on [Metal L2 Mainnet](https://market.api3.org/metal). The price feeds operate as a native push oracle and can be activated instantly via the Market UI. -API3's QRNG provides dApps with truly random numbers based on quantum mechanics at no charge. More details [here](https://api3.org/qrng/) - -### Chainlink - -[Chainlink](https://chain.link/) is the industry-standard decentralized computing platform powering the verifiable web. -Chainlink powers verifiable applications and high-integrity markets for banking, DeFi, global trade, gaming, and other major sectors. - -Chainlink provides a number of [price feeds](https://docs.chain.link/docs/optimism-price-feeds/). -Those feeds are available on the production network @ [Op Mainnet](https://docs.chain.link/data-feeds/price-feeds/addresses?network=optimism\&page=1#optimism-mainnet). - -* Data Feeds: Chainlink Data Feeds provide a secure, reliable, and decentralized source of off-chain data to power unique smart contract use cases for DeFi and beyond. -* Automation: Chainlink Automation is an ultra-reliable and performant smart contract automation solution enabling developers to quickly scale their operations in a verifiable, decentralized, and cost-efficient manner, to build next-generation apps. -* CCIP: Chainlink CCIP provides a secure interoperability protocol for powering token transfers and sending arbitrary messages cross-chain. - -This is a push Oracle. See the [Using Data Feeds guide](https://docs.chain.link/docs/get-the-latest-price/) to learn how to use the Chainlink feeds. - -* Chainlink VRF provides cryptographically secure randomness for blockchain-based applications. More details [here](https://chain.link/vrf) ### Chronicle @@ -93,55 +58,16 @@ The first Oracle on Ethereum, Chronicle's decentralized Oracle network was origi Every Oracle implementation is customized to fit your needs. Implement one of our existing data models or contact Chronicle to develop custom Oracle data feeds via [Discord](https://discord.gg/CjgvJ9EspJ) or [Email](mailto:gm@chroniclelabs.org). Developers can dive deeper into Chronicle Protocol's architecture and unique design choices [via the docs](https://docs.chroniclelabs.org/). -### Gelato - -[Gelato VRF](https://www.gelato.network/) enables smart contracts on Optimism to access verifiable randomness. Gelato VRF offers real randomness for blockchain applications by leveraging Drand, a trusted decentralized source for random numbers. - -Gelato VRF (Verifiable Random Function) provides trustable randomness on EVM-compatible blockchains. Here's a brief overview: - -* Contract Deployment: Use GelatoVRFConsumerBase.sol as an interface for requesting random numbers. -* Requesting Randomness: Emit the RequestedRandomness event to signal the need for a random number. -* Processing: Gelato VRF fetches the random number from Drand. -* Delivery: The fulfillRandomness function delivers the random number to the requesting contract. - -Ready to integrate? Head over to the [Gelato VRF Quick Start Guide](https://docs.gelato.network/web3-services/vrf/quick-start). - -### Pyth Network - -The Pyth Network is a financial oracle network which delivers over 400 low-latency, high-fidelity price feeds across cryptocurrencies, FX pairs, equities, ETFs, and commodities. - -* Pyth's price data is sourced from over [95 first-party sources](https://pyth.network/publishers) including exchanges, market makers, and financial services providers. -* Pyth [Price Feeds](https://pyth.network/price-feeds) offer both the real-time spot price of the asset as well as an accompanying confidence interval band around that price -* The Pyth [TradingView](https://docs.pyth.network/guides/how-to-create-tradingview-charts) integration allows users to view and display Pyth prices on their own website and UI. - -You can explore the full catalog of Pyth Price Feed IDs for [OP Mainnet and Sepolia (EVM Stable)](https://pyth.network/developers/price-feed-ids#pyth-evm-stable). - -* Pyth Entropy allows developers to quickly and easily generate secure random numbers on the blockchain. More details [here](https://pyth.network/blog/secure-random-numbers-for-blockchains) - -### RedStone - -[RedStone](https://redstone.finance/) offers flexible Data Feeds for Lending Markets, Perpetuals, Options, Stablecoins, Yield Aggregators and other types of novel DeFi protocols. The infrastructure is well battle-tested and secures hundreds of millions of USD across mainnet. - -Builders can choose how they want to consume the data among 3 dedicated models: - -* [RedStone Core](https://docs.redstone.finance/docs/smart-contract-devs/get-started/redstone-core) (pull oracle) - less than 10s update time, broad spectrum of feeds, best for most use cases. All [Core Price Feeds](https://app.redstone.finance/#/app/tokens) are available on OP Mainnet & OP Sepolia. -* [RedStone Classic](https://docs.redstone.finance/docs/smart-contract-devs/get-started/redstone-classic) (push oracle) - for protocols designed for the traditional oracle interface, customizable heartbeat and deviation threshold. -* [RedStone X](https://docs.redstone.finance/docs/smart-contract-devs/get-started/redstone-x) - specifically for Perps and Options, highest update frequency and front-running protection. - -Interested in integration? [Get in contact](https://discord.com/invite/PVxBZKFr46) with the RedStone team! ## Inclusion Criteria Developer teams who want to feature products/tools on this page must meet the following criteria: -1. **ongoing partnership** with Optimism whether formal agreement, RPGF, RFP, collaborated on specific initiatives, etc.; -2. **established user base** and OP ecosystem engagement such as governance participation, homegrown TG or Discord participation, etc.; and -3. **actively maintained developer tool** that aligns with OP's commitment to a magical developer experience (e.g., easy-to-use, easy-to-integrate, great DevX, highly-rated by community, etc.) +1. **ongoing partnership** with Metal L2 whether formal agreement, RPGF, RFP, collaborated on specific initiatives, etc.; +2. **established user base** and Metal L2 ecosystem engagement such as governance participation, homegrown TG or Discord participation, etc.; and +3. **actively maintained developer tool** that aligns with Metal L2's commitment to a magical developer experience (e.g., easy-to-use, easy-to-integrate, great DevX, highly-rated by community, etc.) -For teams that are supporting but still establishing a user base, we encourage you to share your tool on the [community oracles page](https://github.com/ethereum-optimism/developers/blob/main/community/tools/oracles.md). -You can also promote your tool in the [developer forum](https://github.com/ethereum-optimism/developers/discussions/categories/show-and-tell) and signup to share your tool at the next [demo day](https://community.optimism.io/docs/contribute/demo-day/). ## Next Steps -* Please visit the [community oracles page](https://github.com/ethereum-optimism/developers/blob/main/community/tools/oracles.md) for a listing of third-party Oracles used by the Optimism developer community. * Looking for other developer tools? See [developer tools overview](/builders/tools/overview) to explore more options! diff --git a/pages/builders/tools/connect/rpc-providers.mdx b/pages/builders/tools/connect/rpc-providers.mdx index 52dfbaa39..f552727ce 100644 --- a/pages/builders/tools/connect/rpc-providers.mdx +++ b/pages/builders/tools/connect/rpc-providers.mdx @@ -32,12 +32,9 @@ Metal L2 Sepolia Developer teams who want to feature products/tools on this page must meet the following criteria: -1. **ongoing partnership** with Optimism whether formal agreement, RPGF, RFP, collaborated on specific initiatives, etc.; -2. **established user base** and OP ecosystem engagement such as governance participation, homegrown TG or Discord participation, etc.; and -3. **actively maintained developer tool** that aligns with OP's commitment to a magical developer experience (e.g., easy-to-use, easy-to-integrate, great DevX, highly-rated by community, etc.) - -For teams that are supporting but still establishing a user base, we encourage you to share your tool on the [community node providers page](https://github.com/ethereum-optimism/developers/blob/main/community/tools/node-providers.md). -You can also promote your tool in the [developer forum](https://github.com/ethereum-optimism/developers/discussions/categories/show-and-tell) and signup to share your tool at the next [demo day](https://community.optimism.io/docs/contribute/demo-day/). +1. **ongoing partnership** with Metal L2 whether formal agreement, RPGF, RFP, collaborated on specific initiatives, etc.; +2. **established user base** and Metal L2 ecosystem engagement such as governance participation, homegrown TG or Discord participation, etc.; and +3. **actively maintained developer tool** that aligns with Metal L2's commitment to a magical developer experience (e.g., easy-to-use, easy-to-integrate, great DevX, highly rated by community, etc.) ## Next Steps diff --git a/pages/builders/tools/overview.mdx b/pages/builders/tools/overview.mdx index 596be82ad..a8658ec1c 100644 --- a/pages/builders/tools/overview.mdx +++ b/pages/builders/tools/overview.mdx @@ -1,16 +1,16 @@ --- title: Developer Tools lang: en-US -description: Learn about different developer tools you can use to help you build on Optimism. +description: Learn about different developer tools you can use to help you build on Metal L2. --- import { Cards, Card } from 'nextra/components' # Developer Tools -Welcome to the Optimism developer tools! +Welcome to the Metal L2 developer tools! -If you are already familiar with [building on OP Mainnet](/chain/getting-started) and just need the tools to get cracking, you are in the right place! +If you are already familiar with [building on Metal L2](/chain/getting-started) and just need the tools to get cracking, you are in the right place! ## Connecting @@ -43,10 +43,10 @@ If you are already familiar with [building on OP Mainnet](/chain/getting-started } /> -## OP Tools +## Metal L2 Tools - } /> + } /> } /> diff --git a/pages/chain/biconomy.mdx b/pages/chain/biconomy.mdx index 18a5f9ee1..39d53b537 100644 --- a/pages/chain/biconomy.mdx +++ b/pages/chain/biconomy.mdx @@ -4,34 +4,34 @@ lang: en-US description: Learn about sending a gasless txn on Metal L2 testnet using Biconomy --- -# Biconomy Integration with Metal L2 Testnet +# Biconomy Integration with Metal L2 Testnet -In this tutorial, we'll walk through the process of integrating Biconomy with Metal L2 Testnet chain to enable gasless transactions. +In this tutorial, we'll walk through the process of integrating Biconomy with Metal L2 Testnet chain to enable gasless transactions. The tutorial covers the entire process from setting up the Biconomy paymaster to actually sending a gasless transaction on the Metal L2 Testnet chain. ## Prerequisites -- A wallet with some testnet tokens for Metal L2 Testnet +* A wallet with some testnet tokens for Metal L2 Testnet ## Step 1: Create a Biconomy Paymaster -1. Go to the [Biconomy Dashboard](https://dashboard.biconomy.io/). -2. Sign up or log in to your account. -3. Click on "Create New Paymaster." -4. Select "Metal L2 Testnet" as the network. -5. Choose a name for your paymaster and click "Create." -6. Once created, you'll see your Paymaster API Key. Save this for later use. +1. Go to the [Biconomy Dashboard](https://dashboard.biconomy.io/). +2. Sign up or log in to your account. +3. Click on "Create New Paymaster." +4. Select "Metal L2 Testnet" as the network. +5. Choose a name for your paymaster and click "Create." +6. Once created, you'll see your Paymaster API Key. Save this for later use. ## Step 2: Create a Smart Account -1. Install the necessary dependencies: +1. Install the necessary dependencies: ```bash npm install @biconomy/account viem ``` -2. Set up your account and biconomy configuration: +2. Set up your account and biconomy configuration: ```typescript import { createWalletClient, http, parseEther } from "viem"; @@ -46,7 +46,7 @@ const config = { }; ``` -3. Create a Biconomy Smart Account: +3. Create a Biconomy Smart Account: ```typescript const account = privateKeyToAccount(`0x${config.privateKey}`); @@ -73,7 +73,7 @@ console.log("Smart Account Address", saAddress); ## Step 3: Send a Gasless Transaction -1. Prepare the transaction data: +1. Prepare the transaction data: ```typescript const tx = { @@ -82,7 +82,8 @@ const tx = { }; console.log("Transaction sent:", tx); ``` -2. Send the transaction and wait for the result: + +2. Send the transaction and wait for the result: ```typescript const userOpResponse = await smartWallet.sendTransaction(tx, { @@ -103,4 +104,4 @@ You have now successfully integrated Biconomy with Metal L2 Testnet chain and se Remember to handle errors appropriately and consider implementing additional features like transaction status updates or retry mechanisms for failed transactions. -For more advanced use cases and detailed documentation, refer to the [Biconomy documentation](https://docs.biconomy.io/). \ No newline at end of file +For more advanced use cases and detailed documentation, refer to the [Biconomy documentation](https://docs.biconomy.io/). diff --git a/pages/chain/differences.mdx b/pages/chain/differences.mdx index c066bb902..7dddb38c7 100644 --- a/pages/chain/differences.mdx +++ b/pages/chain/differences.mdx @@ -61,14 +61,14 @@ The base fee on Metal L2 is, like Ethereum, computed via the [EIP-1559](https:// The EIP-1559 parameters used by Metal L2 differ from those used by Ethereum as follows. | Parameter | Metal L2 value | Ethereum value (for reference) | -| ------------------------------------- | ---------------: | -----------------------------: | -| Block gas limit | 30,000,000 gas | 30,000,000 gas | -| Block gas target | 5,000,000 gas | 15,000,000 gas | -| EIP-1559 elasticity multiplier | 6 | 2 | -| EIP-1559 denominator | 250 | 8 | -| Maximum base fee increase (per block) | 2% | 12.5% | -| Maximum base fee decrease (per block) | 0.4% | 12.5% | -| Block time in seconds | 2 | 12 | +| ------------------------------------- | -------------: | -----------------------------: | +| Block gas limit | 30,000,000 gas | 30,000,000 gas | +| Block gas target | 5,000,000 gas | 15,000,000 gas | +| EIP-1559 elasticity multiplier | 6 | 2 | +| EIP-1559 denominator | 250 | 8 | +| Maximum base fee increase (per block) | 2% | 12.5% | +| Maximum base fee decrease (per block) | 0.4% | 12.5% | +| Block time in seconds | 2 | 12 | ### Mempool Rules diff --git a/pages/chain/getting-started.mdx b/pages/chain/getting-started.mdx index 6b88ea67f..f1e07e18a 100644 --- a/pages/chain/getting-started.mdx +++ b/pages/chain/getting-started.mdx @@ -62,4 +62,4 @@ You don't have to upload your source code to [block explorers](/builders/tools/b On the test network, it lets you issue queries and transactions from the explorer's user interface. On the production network, it lets users know exactly what your contract does, which is conducive to trust. -You can find the explorer API for testnet here: https://testnet.explorer.metall2.com/api-docs +You can find the explorer API for testnet here: [https://testnet.explorer.metall2.com/api-docs](https://testnet.explorer.metall2.com/api-docs) diff --git a/pages/chain/networks.mdx b/pages/chain/networks.mdx index 4a118085a..6a2ab76e7 100644 --- a/pages/chain/networks.mdx +++ b/pages/chain/networks.mdx @@ -17,30 +17,29 @@ This reference guide provides a listing of the different Metal L2 Networks and p ## Metal L2 Mainnet -| Parameter | Value | -| --------------------------- | ---------------------------------------------------------------------------------------- | -| Network Name | `Metal L2` | -| Chain ID | `1750` | -| Currency Symbol1 | ETH | -| Explorer | [https://explorer.metall2.com](https://explorer.metall2.com) | -| Public RPC URL | [https://rpc.metall2.com](https://rpc.metall2.com) | -| Sequencer URL2 | [https://mainnet-sequencer.metall2.com/](https://mainnet-sequencer.metall2.com/) | -| Contract Addresses | Refer to the [Contract Addresses page](/chain/addresses#mainnet) | -| Connect Wallet | [Click here to connect your wallet to Metal L2 Mainnet](https://metall2.com/connect) | +| Parameter | Value | +| --------------------------- | ----------------------------------------------------------------------------------------------- | +| Network Name | `Metal L2` | +| Chain ID | `1750` | +| Currency Symbol1 | ETH | +| Explorer | [https://explorer.metall2.com](https://explorer.metall2.com) | +| Public RPC URL | [https://rpc.metall2.com](https://rpc.metall2.com) | +| Sequencer URL2 | [https://mainnet-sequencer.metall2.com/](https://mainnet-sequencer.metall2.com/) | +| Contract Addresses | Refer to the [Contract Addresses page](/chain/addresses#mainnet) | +| Connect Wallet | [Click here to connect your wallet to Metal L2 Mainnet](https://chainlist.org/?search=metal+l2) | ## Metal L2 Testnet -| Parameter | Value | -| --------------------------- | ---------------------------------------------------------------------------------------- | -| Network Name | `Metal L2 Testnet` | -| Chain ID | `1740` | -| Currency Symbol1 | ETH | -| Explorer | [https://testnet.explorer.metall2.com/](https://testnet.explorer.metall2.com/) | -| Public RPC URL | [https://testnet.rpc.metall2.com/](https://testnet.rpc.metall2.com/) | -| Sequencer URL2 | [https://testnet-sequencer.metall2.com/](https://testnet-sequencer.metall2.com/) | -| Contract Addresses | Refer to the [Contract Addresses page](/chain/addresses#testnet) | -| Connect Wallet | [Click here to connect your wallet to Metal L2 Testnet](https://metall2.com/connect) | +| Parameter | Value | +| --------------------------- | -------------------------------------------------------------------------------- | +| Network Name | `Metal L2 Testnet` | +| Chain ID | `1740` | +| Currency Symbol1 | ETH | +| Explorer | [https://testnet.explorer.metall2.com/](https://testnet.explorer.metall2.com/) | +| Public RPC URL | [https://testnet.rpc.metall2.com/](https://testnet.rpc.metall2.com/) | +| Sequencer URL2 | [https://testnet-sequencer.metall2.com/](https://testnet-sequencer.metall2.com/) | +| Contract Addresses | Refer to the [Contract Addresses page](/chain/addresses#testnet) | +| Connect Wallet | | 1. The "currency symbol" is required by some wallets like MetaMask. 2. The sequencer URL is write only. - diff --git a/pages/chain/security/_meta.json b/pages/chain/security/_meta.json index 7ffeab759..5fa6f564a 100644 --- a/pages/chain/security/_meta.json +++ b/pages/chain/security/_meta.json @@ -1,10 +1,5 @@ { "faq": "Security Model & FAQ", "privileged-roles": "Privileged Roles", - "security-policy": "Security Policy", - "bug-bounty": { - "title": "Bug Bounty Program", - "href": "https://immunefi.com/bounty/optimism/", - "newWindow": true - } + "security-policy": "Security Policy" } diff --git a/pages/chain/security/faq.mdx b/pages/chain/security/faq.mdx index 59da94f59..edf2a9e25 100644 --- a/pages/chain/security/faq.mdx +++ b/pages/chain/security/faq.mdx @@ -1,12 +1,12 @@ --- -title: OP Mainnet Security Model +title: Metal L2 Security Model lang: en-US -description: Learn about the OP Mainnet security model and answers to common questions. +description: Learn about the Metal L2 security model and answers to common questions. --- import { Callout } from 'nextra/components' -# OP Mainnet Security Model +{/* # OP Mainnet Security Model OP Mainnet is a work in progress. Constant, iterative improvement of the security mechanisms that safeguard OP Mainnet users is a top priority for the entire [Optimism Collective](https://community.optimism.io/docs/governance/). @@ -79,4 +79,4 @@ You can also run your own verifier node to detect network faults. ### Where do I report bugs? -For details about reporting vulnerabilities and available bug bounty programs, see the [Security Policy](/chain/security/security-policy). +For details about reporting vulnerabilities and available bug bounty programs, see the [Security Policy](/chain/security/security-policy). */} diff --git a/pages/chain/security/privileged-roles.mdx b/pages/chain/security/privileged-roles.mdx index 040d2b940..89a9e04d1 100644 --- a/pages/chain/security/privileged-roles.mdx +++ b/pages/chain/security/privileged-roles.mdx @@ -1,20 +1,20 @@ --- -title: Privileged Roles in OP Mainnet +title: Privileged Roles in Metal L2 lang: en-US -description: Learn about the privileged roles in OP Mainnet. +description: Learn about the privileged roles in Metal L2. --- import { Callout } from 'nextra/components' -# Privileged Roles in OP Mainnet +# Privileged Roles in Metal L2 -OP Mainnet is on a [Pragmatic Path to Decentralization](https://blog.oplabs.co/decentralization-roadmap/). -In its current state, OP Mainnet still includes some "privileged" roles that give certain addresses the ability to carry out specific actions. +Metal L2 is on a [Pragmatic Path to Decentralization](https://blog.oplabs.co/decentralization-roadmap/). +In its current state, Metal L2 still includes some "privileged" roles that give certain addresses the ability to carry out specific actions. Read this page to understand these roles, why they exist, and what risks they pose. -## L1 Proxy Admin +{/* ## L1 Proxy Admin -The L1 Proxy Admin is an address that can be used to upgrade most OP Mainnet system contracts. +The L1 Proxy Admin is an address that can be used to upgrade most Metal L2 system contracts. ### Risks @@ -29,9 +29,9 @@ The L1 Proxy Admin is an address that can be used to upgrade most OP Mainnet sys ### Addresses * **Ethereum**: [`0x5a0Aae59D09fccBdDb6C6CcEB07B7279367C3d2A`](https://etherscan.io/address/0x5a0Aae59D09fccBdDb6C6CcEB07B7279367C3d2A) -* **Sepolia:** [`0x1Eb2fFc903729a0F03966B917003800b145F56E2`](https://sepolia.etherscan.io/address/0x1Eb2fFc903729a0F03966B917003800b145F56E2) +* **Sepolia:** [`0x1Eb2fFc903729a0F03966B917003800b145F56E2`](https://sepolia.etherscan.io/address/0x1Eb2fFc903729a0F03966B917003800b145F56E2) */} -## L2 Proxy Admin +{/* ## L2 Proxy Admin The L2 Proxy Admin is an address that can be used to upgrade most OP Mainnet system contracts on L2. The L2 Proxy Admin owner is the [aliased address](/chain/differences#address-aliasing) of the L1ProxyAdmin owner, which means the L2 ProxyAdmin Owner is equal to the L1 ProxyAdmin Owner, but due to aliasing it's a different address. Here's how that works: @@ -59,10 +59,10 @@ The L2 Proxy Admin is an address that can be used to upgrade most OP Mainnet sys
* **OP Mainnet**: [`0x6B1BAE59D09fCcbdDB6C6cceb07B7279367C4E3b`](https://optimistic.etherscan.io/address/0x6B1BAE59D09fCcbdDB6C6cceb07B7279367C4E3b) -* **OP Sepolia:** [`0x2FC3ffc903729a0f03966b917003800B145F67F3`](https://sepolia-optimism.etherscan.io/address/0x2FC3ffc903729a0f03966b917003800B145F67F3) +* **OP Sepolia:** [`0x2FC3ffc903729a0f03966b917003800B145F67F3`](https://sepolia-optimism.etherscan.io/address/0x2FC3ffc903729a0f03966b917003800B145F67F3) */} -## System Config Owner +{/* ## System Config Owner The System Config Owner is an address that can be used to change the values within the [`SystemConfig`](https://github.com/ethereum-optimism/optimism/blob/62c7f3b05a70027b30054d4c8974f44000606fb7/packages/contracts-bedrock/contracts/L1/SystemConfig.sol) contract on Ethereum. @@ -80,9 +80,9 @@ The System Config Owner is an address that can be used to change the values with ### Addresses * **Ethereum**: [`0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A`](https://etherscan.io/address/0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A) -* **Sepolia**: [`0xfd1D2e729aE8eEe2E146c033bf4400fE75284301`](https://sepolia.etherscan.io/address/0xfd1D2e729aE8eEe2E146c033bf4400fE75284301) +* **Sepolia**: [`0xfd1D2e729aE8eEe2E146c033bf4400fE75284301`](https://sepolia.etherscan.io/address/0xfd1D2e729aE8eEe2E146c033bf4400fE75284301) */} -## Batcher +{/* ## Batcher ### Description @@ -102,9 +102,9 @@ OP Mainnet nodes will look for transactions from this address to find new batche ### Addresses * **Ethereum**: [`0x6887246668a3b87F54DeB3b94Ba47a6f63F32985`](https://etherscan.io/address/0x6887246668a3b87F54DeB3b94Ba47a6f63F32985) -* **Sepolia**: [`0x8F23BB38F531600e5d8FDDaAEC41F13FaB46E98c`](https://sepolia.etherscan.io/address/0x8F23BB38F531600e5d8FDDaAEC41F13FaB46E98c) +* **Sepolia**: [`0x8F23BB38F531600e5d8FDDaAEC41F13FaB46E98c`](https://sepolia.etherscan.io/address/0x8F23BB38F531600e5d8FDDaAEC41F13FaB46E98c) */} -## Proposer +{/* ## Proposer ### Description @@ -131,9 +131,9 @@ The Guardian role is responsible for changing the respected dispute game type if ### Addresses * **Ethereum**: [`0x473300df21D047806A082244b417f96b32f13A33`](https://etherscan.io/address/0x473300df21D047806A082244b417f96b32f13A33) -* **Sepolia**: [`0x49277EE36A024120Ee218127354c4a3591dc90A9`](https://sepolia.etherscan.io/address/0x49277EE36A024120Ee218127354c4a3591dc90A9) +* **Sepolia**: [`0x49277EE36A024120Ee218127354c4a3591dc90A9`](https://sepolia.etherscan.io/address/0x49277EE36A024120Ee218127354c4a3591dc90A9) */} -## Challenger +{/* ## Challenger ### Description @@ -156,9 +156,9 @@ The Challenger is an address that can participate in and challenge `Permissioned ### Addresses * **Ethereum**: [`0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A`](https://etherscan.io/address/0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A) -* **Sepolia**: [`0xfd1D2e729aE8eEe2E146c033bf4400fE75284301`](https://sepolia.etherscan.io/address/0xfd1D2e729aE8eEe2E146c033bf4400fE75284301) +* **Sepolia**: [`0xfd1D2e729aE8eEe2E146c033bf4400fE75284301`](https://sepolia.etherscan.io/address/0xfd1D2e729aE8eEe2E146c033bf4400fE75284301) */} -## Guardian +{/* ## Guardian ### Description @@ -184,9 +184,9 @@ The Guardian can also manage various aspects of the `OptimismPortal` contract to ### Addresses * **Ethereum**: [`0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2`](https://etherscan.io/address/0x09f7150D8c019BeF34450d6920f6B3608ceFdAf2) -* **Sepolia**: [`0xf64bc17485f0B4Ea5F06A96514182FC4cB561977`](https://sepolia.etherscan.io/address/0xf64bc17485f0B4Ea5F06A96514182FC4cB561977) +* **Sepolia**: [`0xf64bc17485f0B4Ea5F06A96514182FC4cB561977`](https://sepolia.etherscan.io/address/0xf64bc17485f0B4Ea5F06A96514182FC4cB561977) */} -## Mint Manager Owner +{/* ## Mint Manager Owner The Mint Manager Owner is an address that controls the [`MintManager`](https://github.com/ethereum-optimism/optimism/blob/62c7f3b05a70027b30054d4c8974f44000606fb7/packages/contracts-bedrock/contracts/governance/MintManager.sol) contract that can be used to mint new OP tokens on OP Mainnet. @@ -202,4 +202,4 @@ The Mint Manager Owner is an address that controls the [`MintManager`](https://g ### Addresses * **Ethereum**: [`0x2a82ae142b2e62cb7d10b55e323acb1cab663a26`](https://optimistic.etherscan.io/address/0x2a82ae142b2e62cb7d10b55e323acb1cab663a26) -* **Sepolia**: [`0x5c4e7ba1e219e47948e6e3f55019a647ba501005`](https://optimistic.etherscan.io/address/0x5c4e7ba1e219e47948e6e3f55019a647ba501005) +* **Sepolia**: [`0x5c4e7ba1e219e47948e6e3f55019a647ba501005`](https://optimistic.etherscan.io/address/0x5c4e7ba1e219e47948e6e3f55019a647ba501005) */} diff --git a/pages/chain/security/security-policy.mdx b/pages/chain/security/security-policy.mdx index 3434d8664..81643aa95 100644 --- a/pages/chain/security/security-policy.mdx +++ b/pages/chain/security/security-policy.mdx @@ -1,56 +1,7 @@ --- -title: Security Policy and Bug Bounty Program +title: Security Policy lang: en-US -description: Learn about the bug bounty program and best practices for reporting bugs in OP Stack and OP Mainnet codebase. +description: Learn about best practices for reporting bugs in the Metal L2 codebase. --- import { Callout } from 'nextra/components' - -# Security Policy and Bug Bounty Program - -This page describes general best practices for reporting bugs and provides specific reporting guidelines for OP Stack and OP Mainnet code contained within the [ethereum-optimism](https://github.com/ethereum-optimism) GitHub organization. - - - **Do not** disclose vulnerabilities publicly or by executing them against a production network. If you do, will you not only be putting users at risk, but you will forfeit your right to a reward. Always follow the appropriate reporting pathways as described below. - - * **Do not** disclose the vulnerability publicly, for example by filing a public ticket. - * **Do not** test the vulnerability on a publicly available network, either the testnet or the mainnet. - - -## Optimism Bug Bounty Program - -The Optimism Bug Bounty Program offers up to [$2,000,042](https://immunefi.com/bounty/optimism/) for critical vulnerabilities found in the OP Mainnet codebase. -Below you can find information about the various available bug bounty programs and how to report bugs that are not covered by an existing bounty. - -### Main Bounty Page - -Optimism has a very detailed [Bug Bounty Page on Immunefi](https://immunefi.com/bounty/optimism/). In the listing you can find all the information relating to components in scope, reporting, and the payout process. - -### Unscoped Bugs - -If you think you have found a significant bug or vulnerabilities in OP Stack smart contracts, infrastructure, etc., even if that component is not covered by an existing bug bounty, please report it to via the [OP Mainnet Immunefi program](https://immunefi.com/bounty/optimism/). The impact of any and all reported issues will be considered and the program has previously rewarded security researchers for bugs not within its stated scope. - -## Reporting Other Vulnerabilities - -For vulnerabilities in any websites, email servers, or other non-critical infrastructure within the OP Stack, please contact the Foundation's service provider at [security@oplabs.co](mailto:security@oplabs.co) and include detailed instructions for confirming and reproducing the vulnerability. - -### Vulnerability Disclosure - -Each OP Stack component maintainer may determine its own process for vulnerability disclosure. However, the following describes a recommended process for disclosure. - -In the event that an OP Stack component maintainer learns of a critical security vulnerability, the maintainer reserves the right to silently fix it without immediately publicly disclosing the existence or nature of the vulnerability. - -In such a scenario, the disclosure process used is as follows: - -1. Silently fix the vulnerability and include the fix in release X. -2. After 4-8 weeks, disclose that release X contained a security fix. -3. After an additional 4-8 weeks, publish details of the vulnerability, along with credit to the reporter (with express permission from the reporter). - -### Rights of Maintainers - -Alongside this policy, maintainers also reserve the right to: - -* Bypass this policy and publish details on a shorter timeline. -* Directly notify a subset of downstream users prior to making a public announcement. - -This policy is based the [Geth](https://geth.ethereum.org/) team's [silent patch policy](https://geth.ethereum.org/docs/developers/geth-developer/disclosures#why-silent-patches). diff --git a/pages/connect/_meta.json b/pages/connect/_meta.json index 3efad2c2d..8e149c32a 100644 --- a/pages/connect/_meta.json +++ b/pages/connect/_meta.json @@ -1,14 +1,4 @@ { "contribute": "Contribute", - "resources": "Resources", - "live-support": { - "title": "Get Launch Support", - "href": "https://share.hsforms.com/1yENj8CV9TzGYBASD0JC8_gqoshb", - "newWindow": true -}, - "governance": { - "title": "Optimism Governance", - "href": "https://community.optimism.io/docs/governance/", - "newWindow": true - } + "resources": "Resources" } diff --git a/pages/connect/contribute/_meta.json b/pages/connect/contribute/_meta.json index 39ebe0e09..108b94efa 100644 --- a/pages/connect/contribute/_meta.json +++ b/pages/connect/contribute/_meta.json @@ -1,5 +1,4 @@ { - "docs-contribute": "Contribute to Optimism Docs", - "stack-contribute": "Contribute to OP Stack", + "docs-contribute": "Contribute to Metal L2 Docs", "style-guide": "Docs Style Guide" } \ No newline at end of file diff --git a/pages/connect/contribute/docs-contribute.mdx b/pages/connect/contribute/docs-contribute.mdx index 21b49de75..9e7e529ec 100644 --- a/pages/connect/contribute/docs-contribute.mdx +++ b/pages/connect/contribute/docs-contribute.mdx @@ -1,30 +1,25 @@ --- -title: Ways to Contribute to Optimism Docs +title: Ways to Contribute to Metal L2 Docs lang: en-US -description: Learn about the different ways you can contribute to Optimism Docs. +description: Learn about the different ways you can contribute to Metal L2 Docs. --- import { Callout } from 'nextra/components' -# Contribute to Optimism Docs +# Contribute to Metal L2 Docs -Optimism Docs (docs.metall2.com) is an open-source project, and we welcome your contributions. Here's how you can help grow and support the Optimism Collective. - - - We recently migrated our technical docs from community.optimism.io --> docs.metall2.com. - So, if you contributed to either repo in 2023, don't forget to claim your [POAP token](#claim-your-gitpoap)! - +Metal L2 Docs(docs.metall2.com) is an open-source project, and we welcome your contributions. Here's how you can help grow and support Metal L2 and the Optimism SuperChain. ## Ways to contribute -* [Work on a good first issue](https://github.com/ethereum-optimism/docs/labels/good%20first%20issue): make the greatest and most immediate impact with a quick-start or tutorial. These special issues are clearly labeled for new contributors to Optimism. +* [Work on a good first issue](https://github.com/MetalPay/metal-l2-docs/labels/good%20first%20issue): make the greatest and most immediate impact with a quick-start or tutorial. These special issues are clearly labeled for new contributors to Metal L2. * [Edit existing content](#how-to-work-on-docsoptimismio): make tweaks to existing content using the ✏️ **Edit this page on GitHub** or ❤️ **Share general feedback** links on the right-side of any page. -* [Add or update an FAQ item](https://github.com/ethereum-optimism/docs/issues/new?assignees=\&labels=documentation%2Cfaq%2Ccommunity-request\&projects=\&template=suggest_faq_item.yaml\&title=Suggest+an+FAQ+item): +* [Add or update an FAQ item](https://github.com/MetalPay/metal-l2-docs/issues/new?assignees=\&labels=documentation%2Cfaq%2Ccommunity-request\&projects=\&template=suggest_faq_item.yaml\&title=Suggest+an+FAQ+item): add a new FAQ (question+answer set) to an [existing page](/chain/security/faq#security-model-faq), create a new FAQ page, or update an existing FAQ question/answer set. -* [Add or update a troubleshooting item](https://github.com/ethereum-optimism/docs/issues/new?assignees=\&labels=documentation%2Ctroubleshooting%2Ccommunity-request\&projects=\&template=suggest_troubleshooting_item.yaml\&title=Suggest+a+troubleshooting+item): +* [Add or update a troubleshooting item](https://github.com/MetalPay/metal-l2-docs/issues/new?assignees=\&labels=documentation%2Ctroubleshooting%2Ccommunity-request\&projects=\&template=suggest_troubleshooting_item.yaml\&title=Suggest+a+troubleshooting+item): add a new troubleshooting item (problem+solution set) to an [existing page](/builders/chain-operators/management/troubleshooting), create a new troubleshooting page, or update an existing troubleshooting problem/solution set. -* [Add a glossary term](https://github.com/ethereum-optimism/docs/issues/new?assignees=\&labels=glossary%2Cdocumentation%2Ccommunity-request\&projects=\&template=suggest_glossary_term.yaml\&title=Suggest+a+glossary+term): - help us continue to expand the Optimism [glossary](/connect/resources/glossary). +* [Add a glossary term](https://github.com/MetalPay/metal-l2-docs/issues/new?assignees=\&labels=glossary%2Cdocumentation%2Ccommunity-request\&projects=\&template=suggest_glossary_term.yaml\&title=Suggest+a+glossary+term): + help us continue to expand the Metal L2 [glossary](/connect/resources/glossary). * [Add a faucet to the developer community](https://github.com/ethereum-optimism/developers/tree/main/community): add a new faucet to the [Faucets page](https://github.com/ethereum-optimism/developers/blob/main/community/tools/faucets.md) or update an existing faucet. * [Add an oracle to the developer community](https://github.com/ethereum-optimism/developers/tree/main/community): @@ -35,60 +30,33 @@ Optimism Docs (docs.metall2.com) is an open-source project, and we welcome your add a new block explorer to the [Block Explorers page](https://github.com/ethereum-optimism/developers/blob/main/community/tools/block-explorers.md) or update an existing block explorer. * [Add a blockchain indexer to the developer community](https://github.com/ethereum-optimism/developers/tree/main/community): add a new blockchain indexer to the [Blockchain Indexers page](https://github.com/ethereum-optimism/developers/blob/main/community/tools/blockchain-indexers.md) or update an existing blockchain indexer. -* [Work on an open issue](https://github.com/ethereum-optimism/docs/issues): start with items we've already identified as needing attention, which range from general guides to tutorials and quickstarts. -* [Create new content](https://github.com/ethereum-optimism/docs/issues/new): create new content to add to the technical docs. - Review the [style guide](style-guide) and follow the PR process outlined in the [contributor guidelines](https://github.com/ethereum-optimism/docs/blob/main/CONTRIBUTING.md) to get started. +* [Work on an open issue](https://github.com/MetalPay/metal-l2-docs/issues): start with items we've already identified as needing attention, which range from general guides to tutorials and quickstarts. +* [Create new content](https://github.com/MetalPay/metal-l2-docs/issues/new): create new content to add to the technical docs. + Review the [style guide](style-guide) and follow the PR process outlined in the [contributor guidelines](https://github.com/MetalPay/metal-l2-docs/blob/main/CONTRIBUTING.md) to get started. * [Submit a bug report](https://immunefi.com/bounty/optimism/): create a report to help us improve our products and developer tooling. For more information, please read our [Security Policy](/chain/security/security-policy). -* [Contribute to the Optimism Collective](https://github.com/ethereum-optimism/ecosystem-contributions): select from several different categories where you can make an impact such as - [foundation missions](https://github.com/ethereum-optimism/ecosystem-contributions/issues?q=is%3Aissue+is%3Aopen+label%3A%22Foundation+Mission+%28RFP%29%22) or general [contributor opportunities](https://github.com/ethereum-optimism/ecosystem-contributions/issues?q=is%3Aissue+is%3Aopen+label%3A%22Contribution+Opportunity%22). ## How to work on docs.metall2.com Whether you're adding to the site, creating content, or working on open issues, you'll need a [GitHub](https://github.com) account. All updates are made via the GitHub PR process. This means you create a local copy of the website, make your changes and request to merge your changes. -Please see the [contributor guidelines](https://github.com/ethereum-optimism/docs/blob/main/CONTRIBUTING.md) for more details. +Please see the [contributor guidelines](https://github.com/MetalPay/metal-l2-docs/blob/main/CONTRIBUTING.md) for more details. You don't need permission to work on anything, but it's always best to let us know what you're planning to do, so we don't duplicate efforts. You can do this by: -* Commenting on an issue or PR in [GitHub](https://github.com/ethereum-optimism/docs/) -* Messaging us in the [developer support channel](https://github.com/ethereum-optimism/developers/) +* Commenting on an issue or PR in [GitHub](https://github.com/MetalPay/metal-l2-docs/) Before contributing, make sure you're familiar with: -* the [Optimism vision and values](https://www.optimism.io/about) -* our [contributor guidelines](https://github.com/ethereum-optimism/docs/blob/main/CONTRIBUTING.md) +* our [contributor guidelines](https://github.com/MetalPay/metal-l2-docs/blob/main/CONTRIBUTING.md) * our [style guide](style-guide) -* our [code of conduct](https://github.com/ethereum-optimism/.github/blob/master/CODE_OF_CONDUCT.md) ## How decisions about the site are made Decisions about individual PRs, tutorials, and major docs updates are made by the Developer Relations team. -We want to transition to a more community-informed and community-generated approach for the Optimism Docs, so please raise questions in issues, submit PRs, or contact the team: - -* Please contact the Foundation's service provider at [devrel@oplabs.co](mailto:devrel@oplabs.co). -* Raise questions or contact the [developer support channel](https://github.com/ethereum-optimism/developers/). +We want to transition to a more community-informed and community-generated approach for the Metal L2 Docs, so please raise questions in issues, submit PRs, or contact the team: ### A note on plagiarism Only use your original work or content that you have permission to use when contributing any content or artifact to docs.metall2.com. Many projects use open-source licensing that allows for the free sharing of information. However, if you cannot find this information, do not attempt to add it to docs.metall2.com. Any pull requests deemed as plagiarism will get rejected. - -## Claim your GitPOAP - -We use GitPOAPs to recognize our contributors! GitPOAP automatically recognizes your merged contribution and lets you mint a unique contributors POAP directly on their platform. - -### How to claim - -1. Visit [Optimism's GitPOAP page](https://www.gitpoap.io/gh/ethereum-optimism). -2. Connect with your wallet or your email through sign in option. -3. Search for your GitHub username, ETH address, ENS names or any GitPOAP to check if you're eligible. -4. If your GitHub account is eligible, then you are able to mint a GitPOAP! - - - You should only use self-custody wallets to claim POAPs. Do not use exchange accounts or other accounts you do not hold the private keys to, as these will not allow you to access and manage your POAPs. - - -## Still Have Questions? - -You can reach us in our developer support [forum](https://github.com/ethereum-optimism/developers/discussions). We look forward to growing the Collective with you! diff --git a/pages/connect/contribute/stack-contribute.mdx b/pages/connect/contribute/stack-contribute.mdx index 159cdc5aa..a1693b258 100644 --- a/pages/connect/contribute/stack-contribute.mdx +++ b/pages/connect/contribute/stack-contribute.mdx @@ -39,7 +39,7 @@ The OP Stack needs YOU (yes you!) to help review the codebase for bugs and vulne ## Docs Contributions -Want a new tutorial? See something that could be a little clearer? Check out the [Optimism Docs Contribution page](docs-contribute) for more information on how to help. No contribution is too small! +Want a new tutorial? See something that could be a little clearer? Check out the [Metal L2 DocsContribution page](docs-contribute) for more information on how to help. No contribution is too small! ## Community Contributions diff --git a/pages/connect/contribute/style-guide.mdx b/pages/connect/contribute/style-guide.mdx index fab02134b..92a55d33c 100644 --- a/pages/connect/contribute/style-guide.mdx +++ b/pages/connect/contribute/style-guide.mdx @@ -1,17 +1,16 @@ --- -title: Optimism Docs Style Guide +title: Metal L2 Docs Style Guide lang: en-US -description: This guide explains how to write technical content for Optimism Docs using a consistent voice, tone, and style. +description: This guide explains how to write technical content for Metal L2 Docs using a consistent voice, tone, and style. --- import { Callout } from 'nextra/components' # Docs Style Guide -This Style Guide aims to assist Optimists in writing technical content with a consistent voice, tone, and style. See the [glossary](/connect/resources/glossary) for an alphabetical listing of commonly used words, terms, and concepts used throughout the technical docs and across the OP Collective. +This Style Guide aims to assist Metal L2 contributors in writing technical content with a consistent voice, tone, and style. See the [glossary](/connect/resources/glossary) for an alphabetical listing of commonly used words, terms, and concepts used throughout the technical docs and across the OP Collective. * For docs-related questions or comments, create an issue in the [docs repo](https://github.com/ethereum-optimism/docs/issues). -* For support-related questions or comments, create an issue in the [developers repo](https://github.com/ethereum-optimism/developers/issues). **Table of Contents** @@ -51,7 +50,7 @@ File paths, when mentioned **within** a docs page, should be formatted as code s ### Voice and Tone -Write in a friendly, yet professional tone. We are upbeat, knowledgeable, and **optimistic** about the development of the Optimism Collective, which we try our best to convey in our technical documentation. +Write in a friendly, yet professional tone. We are upbeat, knowledgeable, and **optimistic** about the development of Metal Layer 2, which we try our best to convey in our technical documentation. ### Clear and Concise Language @@ -431,7 +430,7 @@ The heading level for FAQs will vary based on if it's an FAQ-only doc or if FAQs 4. Enter the information, and click **Save**.
-Include a category heading when you need to group related FAQ content (e.g., See the Optimism Glossary for a detailed example). Category headings are optional, but helpful, for longer FAQs. +Include a category heading when you need to group related FAQ content (e.g., See the our glossary for a detailed example). Category headings are optional, but helpful, for longer FAQs. ### Troubleshooting Guides @@ -503,7 +502,7 @@ Please use `*` instead of `-` for items in a list. This maintains consistency ac * **Commas (,)** Use a serial comma in lists of three or more items and use the oxford comma preceding the "and" before the last element in a list. - **Example**: The developer built a node, social app, and DeFi app for the Optimism Collective. + **Example**: The developer built a node, social app, and DeFi app for Metal Layer 2. * **Em dash (—)** Use to indicate a break in thought or a parenthetical comment. Do not add spaces around the em dash. diff --git a/pages/connect/resources/glossary.mdx b/pages/connect/resources/glossary.mdx index 51ed26994..e12b74f0e 100644 --- a/pages/connect/resources/glossary.mdx +++ b/pages/connect/resources/glossary.mdx @@ -1,14 +1,14 @@ --- title: Glossary lang: en-US -description: Learn the meaning of important terminology used throughout the Optimism Developer Documentation. +description: Learn the meaning of important terminology used throughout the Developer Documentation. --- import { Callout } from 'nextra/components' # Glossary -The glossary provides definitions of important terminology used throughout the Optimism Developer Documentation. To make revisions to this page, please [submit an issue](https://github.com/ethereum-optimism/docs/issues/new?assignees=\&labels=glossary%2Cdocumentation%2Ccommunity-request\&projects=\&template=suggest_glossary_term.yaml\&title=%5BGLOSSARY%5D+Add+PR+title). +The glossary provides definitions of important terminology used throughout the Developer Documentation. To make revisions to this page, please [submit an issue](https://github.com/ethereum-optimism/docs/issues/new?assignees=\&labels=glossary%2Cdocumentation%2Ccommunity-request\&projects=\&template=suggest_glossary_term.yaml\&title=%5BGLOSSARY%5D+Add+PR+title). ## Table of Contents @@ -48,24 +48,18 @@ come from L1 block synchronization or from a block freshly minted by the executi at the request of the L1 consensus layer. On L2, the executed blocks are freshly minted by the execution engine at the request of the [rollup node](#rollup-node), using transactions [derived from L1 blocks](#l2-chain-derivation). -#### Optimism Collective -The Optimism Collective is a band of people, projects, and companies working together to build a better economy for everyone, -united by a mutually beneficial pact to adhere to the axiom of impact=profit — the principle that positive impact to the collective should be rewarded with profit to the individual. -New model of digital democratic governance optimized to drive rapid and sustained growth of a decentralized ecosystem. +#### MTL Token - -#### OP Token - -A governance token, referred to as "OP." Content should not discuss the token price or speculate on the price, and content that refers to OP incorrectly will be removed from Optimism platforms and will not be eligible for promotion. +A governance token, referred to as "MTL." Content should not discuss the token price or speculate on the price. #### Layer 1 (L1) -Refers the Ethereum blockchain, used in contrast to [layer 2](#layer-2-l2), which refers to Optimism. +Refers to the Ethereum blockchain, used in contrast to [layer 2](#layer-2-l2), which refers to Metal L2. #### Layer 2 (L2) -Refers to the Optimism blockchain and is used in contrast to [layer 1](#layer-1-l1), which refers to the Ethereum blockchain. +Refers to the Metal L2 blockchain and is used in contrast to [layer 1](#layer-1-l1), which refers to the Ethereum blockchain. #### L2 Output Root @@ -351,7 +345,7 @@ of the channel are seen, or else these frames are ignored.) #### Data Availability Guarantee that some data will be "available" (i.e. *retrievable*) during a reasonably long time -window. In Optimism's case, the data in question are [sequencer batches](#sequencer-batch) that [validators](#validator) +window. In Metal L2's case, the data in question are [sequencer batches](#sequencer-batch) that [validators](#validator) needs in order to verify the sequencer's work and validate the L2 chain. The [finalization period](#finalization-period) should be taken as the lower bound on the availability window, since that is when data availability is the most crucial, as it is needed to perform a [fault proof](#fault-proof). "Availability" **does not** mean guaranteed long-term storage of the data. diff --git a/pages/stack/protocol/fault-proofs/cannon.mdx b/pages/stack/protocol/fault-proofs/cannon.mdx index 315bbb774..4ad45ea78 100644 --- a/pages/stack/protocol/fault-proofs/cannon.mdx +++ b/pages/stack/protocol/fault-proofs/cannon.mdx @@ -1,5 +1,5 @@ --- -title: Fault Proof VM - Cannon +title: Fault proof VM - Cannon lang: en-US description: Learn about Cannon and its default operation as part of Optimism's Fault Proof Virtual Machine. --- @@ -7,7 +7,7 @@ description: Learn about Cannon and its default operation as part of Optimism's import Image from 'next/image' import { Callout } from 'nextra/components' -# Fault Proof VM: Cannon +# Fault proof VM: Cannon Cannon is an instance of a Fault Proof Virtual Machine (FPVM) that can be used as part of the Dispute Game for any OP Stack Blockchain. The Dispute Game itself is modular, allowing for any FPVM to be used in a dispute. @@ -23,7 +23,7 @@ Additionally, we will explore the differences between Cannon and the onchain `MI implementation, please refer to [MIPS reference](mips). Now for simplicity, when referring to Cannon in this documentation, we are referring to the offchain implementation. -## Control Flow +## Control flow ![Fault Proof Control Flow.](/img/op-stack/protocol/fault-proof-control-flow.svg) @@ -35,7 +35,7 @@ single L2 block state transition that they disagree on. ### OP-Challenger \<> Cannon -Once an active fault dispute game reaches a depth below attacking / defending L2 block state transitions, [OP-Challenger](/stack/protocol/fault-proofs/challenger) will run +Once an active fault dispute game reaches a depth below attacking / defending L2 block state transitions, [OP-Challenger](/stack/fault-proofs/challenger) will run Cannon to begin processing MIPS instructions within the FPVM. As part of processing MIPS instructions, Cannon will generate state witness hashes, which are the commitment to the results of the MIPS instructions' computation within the FPVM. Now, in the bisection game, OP-Challenger will provide the generated hashes until a single MIPS instruction is identified as the root disagreement between participants in the active dispute. Cannon will then @@ -55,7 +55,7 @@ same inputs will produce not only the same outputs, but the same execution trace OP-Program such that, given the same L2 output root state transition, can generate the same execution traces. This in turn generates the same witness proof for the exact same MIPS instruction that will be run onchain. -## Overview of Offchain Cannon components +## Overview of offchain Cannon components Now, we will go over each major component that makes up Cannon. Components are grouped by what functionality is being performed for Cannon, and may be correlated to one or more Go files. For brevity, each Go file will be explained at a high level, with the @@ -63,7 +63,7 @@ most important features / considerations highlighted. ![Cannon Components Overview.](/img/op-stack/protocol/cannon-internal-overview.svg) -### `mipsevm` State and Memory +### `mipsevm` state and memory As mentioned previously, the `mipsevm` is 32-bit, which means the full addressable address range is `[0, 2^32-1]`. The memory layout uses the typical monolithic memory structure, and the VM operates as though it were interacting directly with physical memory. @@ -72,8 +72,8 @@ For the `mipsevm`, how memory is stored isn't important, as it can hold the enti In this way, how memory is represented is abstracted away from the VM itself. However, it is important for memory to be represented such that only small portions are needed in order to run a MIPS instruction onchain. This is because it is infeasible to represent the entire 32-bit memory space onchain due to cost. Therefore, memory is stored in a binary Merkle tree data structure, with the implementation -spread across [`memory.go`](https://github.com/ethereum-optimism/optimism/blob/develop/cannon/mipsevm/memory.go) and -[`page.go`](https://github.com/ethereum-optimism/optimism/blob/develop/cannon/mipsevm/page.go). +spread across [`memory.go`](https://github.com/ethereum-optimism/optimism/blob/develop/cannon/mipsevm/memory/memory.go) and +[`page.go`](https://github.com/ethereum-optimism/optimism/blob/develop/cannon/mipsevm/memory/page.go). The tree has a fixed-depth of 27 levels, with leaf values of 32 bytes each. This spans the full 32-bit address space: `2**27 * 32 = 2**32`. Each leaf contains the memory for that part of the tree. @@ -114,7 +114,7 @@ The information stored is largely identical to the [VM execution state](mips#pac * Instead of storing just the memory Merkle root, there is a `Memory` Struct pointer for the binary Merkle tree representation of the entire 32-bit memory space. * There is an optional `LastHint` bytes variable, which can be used to communicate a Pre-image hint to avoid having to load in multiple prior Pre-images. -#### Generating the Witness Proof +#### Generating the witness proof Cannon handles two major components in the dispute game: generating state witness hashes for OP-Challenger to post during the execution trace bisection game, and generating the witness proof once a single MIPS instruction is reached as the root of disagreement in the fault dispute game. @@ -141,7 +141,7 @@ witness proof is generated after running the instruction offchain, the state tha Once the execution trace portion of the bisection game begins, the ELF file containing OP-Program compiled into MIPS instructions will be run within Cannon. However, getting OP-Program into Cannon so that it can be run requires a binary loader. The binary loader is composed of [`load_elf.go`](https://github.com/ethereum-optimism/optimism/blob/develop/cannon/cmd/load_elf.go) -and [`patch.go`](https://github.com/ethereum-optimism/optimism/blob/develop/cannon/mipsevm/patch.go). `load_elf.go` parses +and [`patch.go`](https://github.com/ethereum-optimism/optimism/blob/develop/cannon/mipsevm/program/patch.go). `load_elf.go` parses the top-level arguments and reads, loads, and patches the ELF binary such that it can be run by Cannon. `patch.go` is responsible for actually parsing the headers of the ELF file, which among other information specifies what programs @@ -150,7 +150,7 @@ for the `mipsevm` and load each program into memory at the expected location. Ad state, `patch.go` sets the values of `PC`, `NextPC`, the initial Heap location of `0x20000000`, the initial stack location of `0x7fffd000`, and also sets the arguments required for the Go runtime above the stack pointer location. -While loading the ELF file into Cannon, [`metadata.go`](https://github.com/ethereum-optimism/optimism/blob/develop/cannon/mipsevm/metadata.go) +While loading the ELF file into Cannon, [`metadata.go`](https://github.com/ethereum-optimism/optimism/blob/develop/cannon/mipsevm/program/metadata.go) is used to parse all the symbols stored in the ELF file. Understanding which ELF symbols exist and at which regions of memory they are located is important for other functionality, such as understanding if the current `PC` is running within a specific function. @@ -164,7 +164,7 @@ unimplemented functionality, any function within the ELF file that would require Patching the binary of these functions involves identifying problematic functions, searching for their corresponding symbols within the ELF file, and effectively stubbing out the function by returning immediately, and adding a `nop` to the delay slot. -### Instruction Stepping +### Instruction stepping Once the MIPS binary is loaded into Cannon, we can then begin to run MIPS instructions one at a time. [`run.go`](https://github.com/ethereum-optimism/optimism/blob/develop/cannon/cmd/run.go) contains the top-level @@ -175,13 +175,13 @@ Actions to be performed are instantiated and checked by [`matcher.go`](https://g which generates a match function that triggers when the configured regular expression is true. Within `run.go`, the `StepFn` is the wrapper that initiates the MIPS instruction to be run. -[`instrumented.go`](https://github.com/ethereum-optimism/optimism/blob/develop/cannon/mipsevm/instrumented.go) implements `Step` as the +[`instrumented.go`](https://github.com/ethereum-optimism/optimism/blob/develop/cannon/mipsevm/singlethreaded/instrumented.go) implements `Step` as the interface to be initiated for each MIPS instruction. Additionally, `instrumented.go` handles encoding information for the witness proof and Pre-image information (if required for the MIPS instruction). ### `mips.go` -[`mips.go`](https://github.com/ethereum-optimism/optimism/blob/develop/cannon/mipsevm/mips.go) implements all the required MIPS +[`mips.go`](https://github.com/ethereum-optimism/optimism/blob/develop/cannon/mipsevm/singlethreaded/mips.go) implements all the required MIPS instructions, and also tracks additional memory access for the instruction currently being run. This is important to make sure that the second memory proof is encoded correctly for instructions that use it, such as loads, stores, and certain syscalls. The full list of instructions supported can be found [here](mips#table-of-supported-mips-instructions). @@ -197,7 +197,7 @@ However, there are differences between the two: 2. The `mipsevm` contains the entire 32-bit monolithic memory space, is responsible for maintaining the memory state based on the results of MIPS instructions, and generates the memory binary Merkle tree, Merkle root, and memory Merkle proofs. `MIPS.sol` is mostly stateless, and does not maintain the full memory space. Instead, it only requires the memory Merkle root, and up to two memory Merkle proofs: 1 for the instruction and 1 for potential load, store, or certain syscall instructions. 3. Unlike `MIPS.sol`, `mips.go` is responsible for writing Pre-images to the PreimageOracle Server, and optionally writing hints to the Server. -### PreimageOracle Interaction +### PreimageOracle interaction As mentioned previously, Cannon is responsible for setting up all state that may be required to run an instruction in `MIPS.sol`. Cannon is also responsible for interacting with the PreimageOracle Server, and directing OP-Challenger to provide Pre-images to diff --git a/words.txt b/words.txt index 8a2afb7de..64ab2cbc4 100644 --- a/words.txt +++ b/words.txt @@ -10,7 +10,6 @@ Allocs allocs ANDI Apeworx -Arweave authrpc Badgeholder's Badgeholders @@ -18,9 +17,9 @@ basefee BGEZ BGTZ Biconomy +biconomy birthdate BLEZ -BLOBBASEFEE BLOBPOOL blobpool blobspace @@ -35,7 +34,6 @@ blocktime BLOOMFILTER bloomfilter BLTZ -Bluesweep Bootcamp BOOTNODES Bootnodes @@ -45,12 +43,9 @@ Brotli brotli Callouts callouts -CCIP Celestia Celestia's -Chainlink chainlist -Chainstack chaosnet Clabby codebases @@ -61,12 +56,10 @@ computependingblock confs corsdomain counterfactually -Crossmint DATACAP datacap DATADIR datadir -Dencun derviation Devnet devnet @@ -77,11 +70,9 @@ disabletxpoolgossip Discv discv DIVU -Drand Eigen ENABLEDEPRECATEDPERSONAL enabledeprecatedpersonal -enablements Erigon erigon ETHERBASE @@ -109,10 +100,8 @@ Fraxtal Funct GASCAP gascap -gaslessly GCMODE gcmode -Gelato gifs GLOBALQUEUE globalqueue @@ -130,22 +119,17 @@ historicalrpc HISTORICALRPCTIMEOUT historicalrpctimeout HOLESKY -Holesky holesky IGNOREPRICE ignoreprice implicity -Inator -inator INFLUXDBV influxdbv -initcode IPCDISABLE ipcdisable ipcfile IPCPATH ipcpath -IPFS ipfs JALR JOURNALREMOTES @@ -168,11 +152,11 @@ MAXPENDPEERS maxpendpeers MAXPRICE maxprice -MCOPY MEMPROFILERATE memprofilerate Merkle merkle +metall MFHI MFLO MINFREEDISK @@ -180,9 +164,7 @@ minfreedisk MINSUGGESTEDPRIORITYFEE minsuggestedpriorityfee Mintable -Mintplex MIPSEVM -Moralis Mordor mountpoint MOVN @@ -223,7 +205,6 @@ Offchain offchain oplabs opnode's -Opti pausable pcscdpath Peerstore @@ -234,11 +215,7 @@ permissioned Permissionless permissionless permissionlessly -Perps personhood -Pimlico -POAP -POAPs PPROF pprof preconfigured @@ -264,7 +241,6 @@ productionized Protip proxyd pseudorandomly -QRNG Quicknode quicknode quickstarts @@ -276,7 +252,6 @@ rejournal REMOTEDB remotedb replayability -reproven REQUIREDBLOCKS requiredblocks Rollouts @@ -292,14 +267,10 @@ Rpgf rpgf RWAs Schnorr -secp -SELFDESTRUCT seqnr SEQUENCERHTTP sequencerhttp serv -Shapella -signup SLLV SLTI SLTIU @@ -311,7 +282,6 @@ soyboy spacebar SRAV SRLV -Stablecoins stablecoins subcomponents subgame