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 59a5cddac..10900bf27 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"; @@ -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/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/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 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 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). 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..6bc29e871 100644 --- a/public/tutorials/Greeter.sol +++ b/public/tutorials/Greeter.sol @@ -1,5 +1,5 @@ -//SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.33; contract Greeter { string greeting; diff --git a/public/tutorials/GreetingSender.sol b/public/tutorials/GreetingSender.sol index 7161228fa..05ff28efc 100644 --- a/public/tutorials/GreetingSender.sol +++ b/public/tutorials/GreetingSender.sol @@ -1,5 +1,5 @@ -//SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +// SPDX-License-Identifier: MIT +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";