From 4cf02deb980d5092fcc11014aa7f691efe45dd0e Mon Sep 17 00:00:00 2001 From: trokhim03 Date: Sun, 11 Jan 2026 12:33:34 +0200 Subject: [PATCH 1/5] docs: fix grammar error in best practices guide Fix typo "This is will be" to "This will be" in chain operators best practices documentation. --- chain-operators/guides/management/best-practices.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chain-operators/guides/management/best-practices.mdx b/chain-operators/guides/management/best-practices.mdx index dc34998ac..00b06613a 100644 --- a/chain-operators/guides/management/best-practices.mdx +++ b/chain-operators/guides/management/best-practices.mdx @@ -31,7 +31,7 @@ Always consult release notes for additional details or upgrade instructions. ## Keep deployment artifacts After deploying your contracts on Ethereum, you should keep a record of all the deployment artifacts. -This is will be all the [op-deployer](/chain-operators/tools/op-deployer/overview.mdx) artifacts, as well as the release tag and commit hash of `op-deployer` and `op-contracts`. +This will be all the [op-deployer](/chain-operators/tools/op-deployer/overview.mdx) artifacts, as well as the release tag and commit hash of `op-deployer` and `op-contracts`. You will need these artifacts to add your chain to the [Superchain Registry](/superchain/superchain-information/superchain-registry.mdx). ## Incremental upgrade rollouts From 6d5dc55d69f87cc3db6579876185086fb858cd55 Mon Sep 17 00:00:00 2001 From: trokhim03 Date: Sun, 11 Jan 2026 12:33:51 +0200 Subject: [PATCH 2/5] docs: update Solidity pragma statements to 0.8.33 Update all Solidity pragma statements in tutorial contract files to use ^0.8.33, ensuring consistency with current best practices and latest compiler version recommendations. --- public/tutorials/CustomBridge.sol | 2 +- public/tutorials/CustomSuperchainToken.sol | 2 +- public/tutorials/Greeter.sol | 2 +- public/tutorials/GreetingSender.sol | 2 +- public/tutorials/InteropToken.sol | 2 +- public/tutorials/LockboxDeployer.s.sol | 2 +- public/tutorials/LockboxSuperchainERC20.sol | 2 +- public/tutorials/Verifier.sol | 2 +- public/tutorials/cross-dom-solidity.sol | 2 +- public/tutorials/first-contract.sol | 2 +- public/tutorials/standard-bridge-custom-token.sol | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/public/tutorials/CustomBridge.sol b/public/tutorials/CustomBridge.sol index a9c47996a..f0044cb8f 100644 --- a/public/tutorials/CustomBridge.sol +++ b/public/tutorials/CustomBridge.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.25; +pragma solidity ^0.8.33; // Libraries import { PredeployAddresses } from "interop-lib/src/libraries/PredeployAddresses.sol"; diff --git a/public/tutorials/CustomSuperchainToken.sol b/public/tutorials/CustomSuperchainToken.sol index 20bd72f62..3e73ce8b6 100644 --- a/public/tutorials/CustomSuperchainToken.sol +++ b/public/tutorials/CustomSuperchainToken.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.25; +pragma solidity ^0.8.33; import {SuperchainERC20} from "./SuperchainERC20.sol"; import {Ownable} from "@solady/auth/Ownable.sol"; diff --git a/public/tutorials/Greeter.sol b/public/tutorials/Greeter.sol index 2a4f16065..843d841a0 100644 --- a/public/tutorials/Greeter.sol +++ b/public/tutorials/Greeter.sol @@ -1,5 +1,5 @@ //SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity ^0.8.33; contract Greeter { string greeting; diff --git a/public/tutorials/GreetingSender.sol b/public/tutorials/GreetingSender.sol index 7161228fa..a65f6e6e6 100644 --- a/public/tutorials/GreetingSender.sol +++ b/public/tutorials/GreetingSender.sol @@ -1,5 +1,5 @@ //SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity ^0.8.33; import { Predeploys } from "@eth-optimism/contracts-bedrock/src/libraries/Predeploys.sol"; import { IL2ToL2CrossDomainMessenger } from "@eth-optimism/contracts-bedrock/src/L2/IL2ToL2CrossDomainMessenger.sol"; diff --git a/public/tutorials/InteropToken.sol b/public/tutorials/InteropToken.sol index 5d34ae636..3bd6f1c9e 100644 --- a/public/tutorials/InteropToken.sol +++ b/public/tutorials/InteropToken.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.8.28; +pragma solidity ^0.8.33; import "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol"; import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; diff --git a/public/tutorials/LockboxDeployer.s.sol b/public/tutorials/LockboxDeployer.s.sol index 1e16f6770..98433f36f 100644 --- a/public/tutorials/LockboxDeployer.s.sol +++ b/public/tutorials/LockboxDeployer.s.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.25; +pragma solidity ^0.8.33; import {Script, console} from "forge-std/Script.sol"; import {Vm} from "forge-std/Vm.sol"; diff --git a/public/tutorials/LockboxSuperchainERC20.sol b/public/tutorials/LockboxSuperchainERC20.sol index 8196946df..35e2fc959 100644 --- a/public/tutorials/LockboxSuperchainERC20.sol +++ b/public/tutorials/LockboxSuperchainERC20.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.25; +pragma solidity ^0.8.33; import {SuperchainERC20} from "./SuperchainERC20.sol"; import {IERC20} from "@openzeppelin/contracts/interfaces/IERC20.sol"; diff --git a/public/tutorials/Verifier.sol b/public/tutorials/Verifier.sol index ef805867b..29280aab8 100644 --- a/public/tutorials/Verifier.sol +++ b/public/tutorials/Verifier.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.13; +pragma solidity ^0.8.33; import {Attestation} from "@ethereum-attestation-service/eas-contracts/contracts/Common.sol"; diff --git a/public/tutorials/cross-dom-solidity.sol b/public/tutorials/cross-dom-solidity.sol index 25a44c94a..b5b26dd64 100644 --- a/public/tutorials/cross-dom-solidity.sol +++ b/public/tutorials/cross-dom-solidity.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity ^0.8.33; interface ICrossDomainMessenger { function xDomainMessageSender() external view returns (address); diff --git a/public/tutorials/first-contract.sol b/public/tutorials/first-contract.sol index 4114a904d..f0b1b78f2 100644 --- a/public/tutorials/first-contract.sol +++ b/public/tutorials/first-contract.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity ^0.8.33; contract MyFirstContract { string public message; diff --git a/public/tutorials/standard-bridge-custom-token.sol b/public/tutorials/standard-bridge-custom-token.sol index fbeef0142..ac812a606 100644 --- a/public/tutorials/standard-bridge-custom-token.sol +++ b/public/tutorials/standard-bridge-custom-token.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.20; +pragma solidity ^0.8.33; // Import the standard ERC20 implementation from OpenZeppelin import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; From 844e539f4bbf37d51b05fcc60381c8c69464e184 Mon Sep 17 00:00:00 2001 From: trokhim03 Date: Sun, 11 Jan 2026 12:34:09 +0200 Subject: [PATCH 3/5] docs: fix SPDX license identifier formatting Add missing space in SPDX license identifiers to match standard format (// SPDX-License-Identifier: MIT). --- public/tutorials/Greeter.sol | 2 +- public/tutorials/GreetingSender.sol | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/public/tutorials/Greeter.sol b/public/tutorials/Greeter.sol index 843d841a0..6bc29e871 100644 --- a/public/tutorials/Greeter.sol +++ b/public/tutorials/Greeter.sol @@ -1,4 +1,4 @@ -//SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT pragma solidity ^0.8.33; contract Greeter { diff --git a/public/tutorials/GreetingSender.sol b/public/tutorials/GreetingSender.sol index a65f6e6e6..05ff28efc 100644 --- a/public/tutorials/GreetingSender.sol +++ b/public/tutorials/GreetingSender.sol @@ -1,4 +1,4 @@ -//SPDX-License-Identifier: MIT +// SPDX-License-Identifier: MIT pragma solidity ^0.8.33; import { Predeploys } from "@eth-optimism/contracts-bedrock/src/libraries/Predeploys.sol"; From c22ebf77f4ca9d0ee6f8134f192caf624e601fcc Mon Sep 17 00:00:00 2001 From: trokhim03 Date: Sun, 11 Jan 2026 12:34:58 +0200 Subject: [PATCH 4/5] docs: update Solidity pragma statements in documentation to 0.8.33 Update all Solidity pragma statements in tutorial documentation (.mdx files) to use ^0.8.33 for consistency with contract files. --- .../tutorials/bridging/standard-bridge-custom-token.mdx | 2 +- .../tutorials/interoperability/message-passing.mdx | 6 +++--- app-developers/tutorials/tokens/custom-superchain-erc20.mdx | 2 +- chain-operators/tutorials/adding-derivation-attributes.mdx | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app-developers/tutorials/bridging/standard-bridge-custom-token.mdx b/app-developers/tutorials/bridging/standard-bridge-custom-token.mdx index 59a5cddac..d921d1462 100644 --- a/app-developers/tutorials/bridging/standard-bridge-custom-token.mdx +++ b/app-developers/tutorials/bridging/standard-bridge-custom-token.mdx @@ -76,7 +76,7 @@ This is just one example of the endless ways in which you could customize your L ```solidity // SPDX-License-Identifier: MIT -pragma solidity 0.8.20; +pragma solidity ^0.8.33; // Import the standard ERC20 implementation from OpenZeppelin import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; diff --git a/app-developers/tutorials/interoperability/message-passing.mdx b/app-developers/tutorials/interoperability/message-passing.mdx index 4d1ef76e1..0eb918a86 100644 --- a/app-developers/tutorials/interoperability/message-passing.mdx +++ b/app-developers/tutorials/interoperability/message-passing.mdx @@ -164,7 +164,7 @@ The implementation consists of three main components: ```solidity //SPDX-License-Identifier: MIT - pragma solidity ^0.8.0; + pragma solidity ^0.8.33; contract Greeter { string greeting; @@ -246,7 +246,7 @@ The implementation consists of three main components: ```solidity //SPDX-License-Identifier: MIT - pragma solidity ^0.8.0; + pragma solidity ^0.8.33; import { Predeploys } from "@eth-optimism/contracts-bedrock/src/libraries/Predeploys.sol"; import { IL2ToL2CrossDomainMessenger } from "@eth-optimism/contracts-bedrock/src/L2/IL2ToL2CrossDomainMessenger.sol"; @@ -335,7 +335,7 @@ In this section we change `Greeter.sol` to emit a separate event in it receives ```solidity //SPDX-License-Identifier: MIT - pragma solidity ^0.8.0; + pragma solidity ^0.8.33; import { Predeploys } from "@eth-optimism/contracts-bedrock/src/libraries/Predeploys.sol"; diff --git a/app-developers/tutorials/tokens/custom-superchain-erc20.mdx b/app-developers/tutorials/tokens/custom-superchain-erc20.mdx index 6f04ed52b..ece64aff2 100644 --- a/app-developers/tutorials/tokens/custom-superchain-erc20.mdx +++ b/app-developers/tutorials/tokens/custom-superchain-erc20.mdx @@ -125,7 +125,7 @@ Here we will use the [SuperchainERC20 Starter Kit](/app-developers/quickstarts/s ```solidity // SPDX-License-Identifier: MIT -pragma solidity ^0.8.25; +pragma solidity ^0.8.33; import {SuperchainERC20} from "./SuperchainERC20.sol"; import {Ownable} from "@solady/auth/Ownable.sol"; diff --git a/chain-operators/tutorials/adding-derivation-attributes.mdx b/chain-operators/tutorials/adding-derivation-attributes.mdx index 22f6aaaf4..03e079941 100644 --- a/chain-operators/tutorials/adding-derivation-attributes.mdx +++ b/chain-operators/tutorials/adding-derivation-attributes.mdx @@ -25,7 +25,7 @@ You're going to use a smart contract on your Rollup to store the reports that th ```solidity // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity ^0.8.33; /** * @title L1Burn From cae943269debdff31fcfff821a71c9b24036d512 Mon Sep 17 00:00:00 2001 From: trokhim03 Date: Sun, 11 Jan 2026 12:35:25 +0200 Subject: [PATCH 5/5] docs: update outdated Solidity documentation links and version references Update links to Solidity documentation from v0.8.19 and v0.8.23 to v0.8.33, and update tutorial mention of compiler version from 0.8.15 to 0.8.33 for accuracy. --- app-developers/guides/bridging/messaging.mdx | 4 ++-- .../tutorials/bridging/standard-bridge-custom-token.mdx | 2 +- op-stack/bridging/deposit-flow.mdx | 4 ++-- op-stack/bridging/withdrawal-flow.mdx | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app-developers/guides/bridging/messaging.mdx b/app-developers/guides/bridging/messaging.mdx index 330f2f272..aa435c78a 100644 --- a/app-developers/guides/bridging/messaging.mdx +++ b/app-developers/guides/bridging/messaging.mdx @@ -27,7 +27,7 @@ contract MyContract { ``` Here, `MyContract.doTheThing` triggers a call to `MyOtherContract.doSomething`. -Under the hood, Solidity is triggering the code for `MyOtherContract` by sending an [ABI encoded](https://docs.soliditylang.org/en/v0.8.23/abi-spec.html) call for the `doSomething` function. +Under the hood, Solidity is triggering the code for `MyOtherContract` by sending an [ABI encoded](https://docs.soliditylang.org/en/v0.8.33/abi-spec.html) call for the `doSomething` function. A lot of this complexity is abstracted away to simplify the developer experience. Solidity also has manual encoding tools that allow us to demonstrate the same process in a more verbose way. @@ -48,7 +48,7 @@ contract MyContract { } ``` -Here you're using the [low-level "call" function](https://docs.soliditylang.org/en/v0.8.23/units-and-global-variables.html#members-of-address-types) and one of the [ABI encoding functions built into Solidity](https://docs.soliditylang.org/en/v0.8.23/units-and-global-variables.html#abi-encoding-and-decoding-functions). +Here you're using the [low-level "call" function](https://docs.soliditylang.org/en/v0.8.33/units-and-global-variables.html#members-of-address-types) and one of the [ABI encoding functions built into Solidity](https://docs.soliditylang.org/en/v0.8.33/units-and-global-variables.html#abi-encoding-and-decoding-functions). Although these two code snippets look a bit different, they're doing the exact same thing. Because of limitations of Solidity, **the OP Stack's bridging interface is designed to look like the second code snippet**. diff --git a/app-developers/tutorials/bridging/standard-bridge-custom-token.mdx b/app-developers/tutorials/bridging/standard-bridge-custom-token.mdx index d921d1462..10900bf27 100644 --- a/app-developers/tutorials/bridging/standard-bridge-custom-token.mdx +++ b/app-developers/tutorials/bridging/standard-bridge-custom-token.mdx @@ -305,7 +305,7 @@ contract MyCustomL2Token is IOptimismMintableERC20, ILegacyMintableERC20, ERC20, Save the file to automatically compile the contract. If you've disabled auto-compile, you'll need to manually compile the contract by clicking the "Solidity Compiler" tab (this looks like the letter "S") and press the blue "Compile" button. - Make sure you're using Solidity compiler version 0.8.15 (the same version used in the official Optimism contracts). + Make sure you're using Solidity compiler version 0.8.33 (the same version used in the official Optimism contracts). diff --git a/op-stack/bridging/deposit-flow.mdx b/op-stack/bridging/deposit-flow.mdx index 0624ce93e..c6a8dbba3 100644 --- a/op-stack/bridging/deposit-flow.mdx +++ b/op-stack/bridging/deposit-flow.mdx @@ -15,7 +15,7 @@ Information is encapsulated in lower layer packets on the sending side and then This function accepts three parameters: * `_target`, target address on L2. - * `_message`, the L2 transaction's calldata, formatted as per the [ABI](https://docs.soliditylang.org/en/v0.8.19/abi-spec.html) of the target account. + * `_message`, the L2 transaction's calldata, formatted as per the [ABI](https://docs.soliditylang.org/en/v0.8.33/abi-spec.html) of the target account. * `_minGasLimit`, the minimum gas limit allowed for the transaction on L2. Note that this is a *minimum* and the actual amount provided on L2 may be higher (but never lower) than the specified gas limit. The actual amount provided on L2 is often higher because the portal contract on L2 performs some processing before submitting the call to `_target`. 2. The L1 cross domain messenger calls [its own `_sendMessage` function](https://github.com/ethereum-optimism/optimism/blob/62c7f3b05a70027b30054d4c8974f44000606fb7/packages/contracts-bedrock/contracts/L1/L1CrossDomainMessenger.sol#L42-L52). @@ -28,7 +28,7 @@ Information is encapsulated in lower layer packets on the sending side and then * `_value`, the ETH that is sent with the message. This amount is taken from the transaction value. * `_data`, the calldata for the call on L2 that is needed to relay the message. - This is an [ABI encoded](https://docs.soliditylang.org/en/v0.8.19/abi-spec.html) call to [`relayMessage`](https://github.com/ethereum-optimism/optimism/blob/62c7f3b05a70027b30054d4c8974f44000606fb7/packages/contracts-bedrock/contracts/universal/CrossDomainMessenger.sol#L291-L413). + This is an [ABI encoded](https://docs.soliditylang.org/en/v0.8.33/abi-spec.html) call to [`relayMessage`](https://github.com/ethereum-optimism/optimism/blob/62c7f3b05a70027b30054d4c8974f44000606fb7/packages/contracts-bedrock/contracts/universal/CrossDomainMessenger.sol#L291-L413). 3. [`_sendMessage`](https://github.com/ethereum-optimism/optimism/blob/62c7f3b05a70027b30054d4c8974f44000606fb7/packages/contracts-bedrock/contracts/L1/L1CrossDomainMessenger.sol#L42-L52) calls the portal's [`depositTransaction` function](https://github.com/ethereum-optimism/optimism/blob/62c7f3b05a70027b30054d4c8974f44000606fb7/packages/contracts-bedrock/contracts/L1/OptimismPortal.sol#L422-L483). diff --git a/op-stack/bridging/withdrawal-flow.mdx b/op-stack/bridging/withdrawal-flow.mdx index 9bd105a90..fd7f54e28 100644 --- a/op-stack/bridging/withdrawal-flow.mdx +++ b/op-stack/bridging/withdrawal-flow.mdx @@ -22,7 +22,7 @@ Withdrawals require the user to submit three transactions: This function accepts three parameters: * `_target`, target address on L1. - * `_message`, the L1 transaction's calldata, formatted as per the [ABI](https://docs.soliditylang.org/en/v0.8.19/abi-spec.html) of the target address. + * `_message`, the L1 transaction's calldata, formatted as per the [ABI](https://docs.soliditylang.org/en/v0.8.33/abi-spec.html) of the target address. * `_minGasLimit`, The minimum amount of gas that the withdrawal finalizing transaction can provide to the withdrawal transaction. This is enforced by the `SafeCall` library, and if the minimum amount of gas cannot be met at the time of the external call from the `OptimismPortal` -> `L1CrossDomainMessenger`, the finalization transaction will revert to allow for re-attempting with a higher gas limit. In order to account for the gas consumed in the `L1CrossDomainMessenger.relayMessage` function's execution, extra gas will be added on top of the `_minGasLimit` value by the `CrossDomainMessenger.baseGas` function when `sendMessage` is called on L2. 2. `sendMessage` is a generic function that is used in both cross domain messengers. It calls [`_sendMessage`](https://github.com/ethereum-optimism/optimism/blob/1a8fe18c4989bfd0852a8873f30422542ad4f44d/packages/contracts-bedrock/src/L2/L2CrossDomainMessenger.sol#L45), which is specific to [`L2CrossDomainMessenger`](https://github.com/ethereum-optimism/optimism/blob/1a8fe18c4989bfd0852a8873f30422542ad4f44d/packages/contracts-bedrock/src/L2/L2CrossDomainMessenger.sol#L21).