Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ We try to keep a clean commit history, so we'll follow a standard process initia
- Start with a present-tense verb
- Keep your commit headline short but sufficient to understand the scope and focus of the change.
- Changes are often formatted like `add doc X`, `fix page Y`, `improve docs for Z`.
- Example: "`update contract addresses for USDC on Scroll Sepolia`".
- Example: "`update contract addresses for USDC on Scroll`".
- If you touch any infrastructure, make sure it builds with `yarn build`
- Trust the autoformatter (prettier)
- Make sure images are optimized and compressed
Expand Down
5 changes: 0 additions & 5 deletions public/locales/en/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@
"developers": "Developers",
"buildingOnScroll": "Building on Scroll",
"faq": "Frequently Asked Questions",
"faucet": "Testnet ETH Faucet",
"developerQuickstart": "Developer Quickstart",
"verifyingSmartContracts": "Verifying Smart Contracts",
"scrollContracts": "Scroll Contracts",
Expand All @@ -90,12 +89,8 @@
"estimatingGasAndTxFees": "Estimating Gas & Tx Fees",
"resources": "Resources",
"mainnetResources": "Mainnet Resources",
"sepoliaResources": "Sepolia Resources",
"scrollBlockExplorer": "Scrollscan Explorer",
"rollupExplorer": "Rollup Explorer",
"scrollSepoliaBlockExplorer": "Scroll Sepolia Explorer",
"sepoliaRollupExplorer": "Rollup Explorer",
"sepoliaBlockExplorer": "Scrollscan Explorer",
"transactionJourney": "Checking Transaction Journey"
},
"technology": {
Expand Down
2 changes: 1 addition & 1 deletion src/components/Header/Search/SearchModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ const recommendedArticles = [
url: "/en/developers/developer-quickstart",
},
{
title: "Sepolia Testnet Contracts",
title: "Scroll Contracts",
url: "/en/developers/scroll-contracts",
},
{
Expand Down
14 changes: 0 additions & 14 deletions src/components/Tabs/NetworkTabs.astro

This file was deleted.

1 change: 0 additions & 1 deletion src/components/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,4 @@
export { default as CodeSample } from "./CodeSample/CodeSample.astro"
export { default as Aside } from "./Aside.astro"
export { default as ClickToZoom } from "./ClickToZoom.astro"
export { default as NetworkTabs } from "./Tabs/NetworkTabs.astro"
export { default as PackageManagerTabs } from "./Tabs/PackageManagerTabs.astro"
8 changes: 0 additions & 8 deletions src/config/sidebar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ export const getSidebar = () => {
{ title: t("sidebar.developers.faq"), url: formatUrl("developers") },
{ title: t("sidebar.developers.buildingOnScroll"), url: formatUrl("developers/building-on-scroll") },
{ title: t("sidebar.developers.scrollContracts"), url: formatUrl("developers/scroll-contracts") },
{ title: t("sidebar.developers.faucet"), url: formatUrl("developers/faucet") },
{
title: t("sidebar.developers.ethereumAndScrollDifferences"),
url: formatUrl("developers/ethereum-and-scroll-differences"),
Expand Down Expand Up @@ -110,13 +109,6 @@ export const getSidebar = () => {
{ title: t("sidebar.developers.scrollBlockExplorer"), url: "https://scrollscan.com/" },
],
},
{
section: t("sidebar.developers.sepoliaResources"),
contents: [
{ title: t("sidebar.developers.sepoliaRollupExplorer"), url: "https://sepolia.scroll.io/rollupscan" },
{ title: t("sidebar.developers.scrollSepoliaBlockExplorer"), url: "https://sepolia.scrollscan.dev/" },
],
},
],
technology: [
{
Expand Down
14 changes: 7 additions & 7 deletions src/content/docs/en/article-components.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -68,23 +68,23 @@ We define the Square-Fibonacci sequence[^1], a variation of the Fibonacci sequen
const config: HardhatUserConfig = {
...
networks: {
scrollSepolia: {
url: 'https://sepolia-rpc.scroll.io' || '',
scroll: {
url: 'https://rpc.scroll.io' || '',
accounts:
process.env.PRIVATE_KEY !== undefined ? [process.env.PRIVATE_KEY] : [],
},
},
etherscan: {
apiKey: {
scrollSepolia: <YOUR API KEY>,
scroll: <YOUR API KEY>,
},
customChains: [
{
network: 'scrollSepolia',
chainId: 534351,
network: 'scroll',
chainId: 534352,
urls: {
apiURL: 'https://api-sepolia.scrollscan.com/api',
browserURL: 'https://sepolia.scrollscan.com/',
apiURL: 'https://api.scrollscan.com/api',
browserURL: 'https://scrollscan.com/',
},
},
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ excerpt: "There are a number of technical details that differ between Ethereum m

import Aside from "../../../../components/Aside.astro"

A number of technical details differ between Ethereum mainnet's EVM and Scroll's modified design for a zkEVM. Below you can see those differences as they exist on Scroll and Scroll Sepolia.
A number of technical details differ between Ethereum mainnet's EVM and Scroll's modified design for a zkEVM. Below you can see those differences as they exist on Scroll.

For open-source contributors and infrastructure builders, please contact our team for additional support.

Expand Down
43 changes: 0 additions & 43 deletions src/content/docs/en/developers/faucet.mdx

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ This guide will walk through how to use Scroll's bridge for ERC20s that need cus
Bridge](/developers/l1-and-l2-bridging/eth-and-erc20-token-bridge#deposit-eth-and-erc20-tokens-from-l1) for more info.
</Aside>

## Step 1: Launch a token on Sepolia
## Step 1: Launch a token on Ethereum

First, we need a token to bridge. There is no need for a particular ERC20 implementation in order for a token to be compatible with L2. If you already have a token, feel free to skip this step. If you want to deploy a new token, use the following contract of a simple ERC20 token that mints 1 million tokens to the deployer when launched.

Expand All @@ -35,16 +35,16 @@ contract L1Token is ERC20 {
}
```

## Step 2: Launch the counterpart token on Scroll Sepolia testnet
## Step 2: Launch the counterpart token on Scroll

Next, you'll launch a counterpart to this token on Scroll, which will represent the original token on Sepolia. This token can implement custom logic to match that of the L1 token or even add additional features beyond those of the L1 token.
Next, you'll launch a counterpart to this token on Scroll, which will represent the original token on Ethereum. This token can implement custom logic to match that of the L1 token or even add additional features beyond those of the L1 token.

For this to work:

- The token must implement the `IScrollStandardERC20` interface in order to be compatible with the bridge.
- The contract should provide the gateway address and the counterpart token addresses (the L1 token we just launched) under the `gateway()` and `counterpart()` functions. It should also allow the L2 gateway to call the token `mint()` and `burn()` functions, which are called when a token is deposited and withdrawn.

The following is a complete example of a token compatible with the bridge. To the constructor, you will pass the official Scroll Custom Gateway address (`0x058dec71E53079F9ED053F3a0bBca877F6f3eAcf`) and the address of the token launched on Sepolia.
The following is a complete example of a token compatible with the bridge. To the constructor, you will pass the official Scroll Custom Gateway address (`0x64CCBE37c9A82D85A1F2E74649b7A42923067988`) and the address of the token launched on Ethereum.

```solidity
// SPDX-License-Identifier: MIT
Expand Down Expand Up @@ -102,19 +102,19 @@ You need to contact the Scroll team to add the token to `L2CustomERC20Gateway` c

## Step 4: Deposit tokens

Once your token has been approved by the Scroll team, you should be able to deposit tokens from L1. To do so, you must first approve the `L1CustomGateway` contract address on Sepolia (`0x31C994F2017E71b82fd4D8118F140c81215bbb37`). Then, deposit tokens by calling the `depositERC20` function from the `L1CustomGateway` contract. This can be done using [our bridge UI](https://scroll.io/bridge), [Etherscan Sepolia](https://sepolia.etherscan.io/address/0x31C994F2017E71b82fd4D8118F140c81215bbb37#writeProxyContract), or a smart contract.
Once your token has been approved by the Scroll team, you should be able to deposit tokens from L1. To do so, you must first approve the `L1CustomGateway` contract address on Ethereum (`0xb2b10a289A229415a124EFDeF310C10cb004B6ff`). Then, deposit tokens by calling the `depositERC20` function from the `L1CustomGateway` contract. This can be done using [our bridge UI](https://scroll.io/bridge), [Etherscan](https://etherscan.io/address/0xb2b10a289A229415a124EFDeF310C10cb004B6ff#writeProxyContract), or a smart contract.

## Step 5: Withdraw tokens

You will follow similar steps to send tokens back from L2 to L1. First, approve the `L2CustomGateway` address (`0x058dec71E53079F9ED053F3a0bBca877F6f3eAcf`) and then withdraw the tokens calling the `withdrawERC20` from the `L2CustomGateway` contract.
You will follow similar steps to send tokens back from L2 to L1. First, approve the `L2CustomGateway` address (`0x64CCBE37c9A82D85A1F2E74649b7A42923067988`) and then withdraw the tokens calling the `withdrawERC20` from the `L2CustomGateway` contract.

## Alternative Approach: Launch and set up a custom L1 gateway contract

Adding your token to the Scroll official bridge (as described above) is the recommended method of bridging tokens to and from Scroll. This approach will make them easier to discover and safer for holders. However, it will require approval from the Scroll team. If you want to launch a custom token without the official approval process, you can launch a custom gateway yourself. To do so, you will need to deploy an `L1CustomERC20Gateway` contract on L1 and an `L2CustomERC20Gateway` on L2.

### Launch an L1 Custom Gateway

Let’s start by launching the following contract on Sepolia.
Let’s start by launching the following contract on Ethereum.

```solidity
// SPDX-License-Identifier: MIT
Expand Down Expand Up @@ -321,19 +321,19 @@ contract L2CustomERC20Gateway is L2ERC20Gateway, ScrollGatewayBase, Ownable {
}
```

### Setup your Gateway contract on Sepolia
### Setup your Gateway contract on Ethereum

Once the contracts are deployed, call the following functions to initialize the contracts and bind them to the corresponding tokens and the gateway on the other side of the bridge.

First, call the `initialize` function on the `MyL1Gateway` contract with the following parameters:

- `_counterpart`: The address of `MyL2Gateway` we just launched on Scroll.
- `_router`: Set it to `0x13FBE0D0e5552b8c9c4AE9e2435F38f37355998a`, the `L1GatewayRouter` contract on Sepolia.
- `_messenger`: Set it to `0x50c7d3e7f7c656493D1D76aaa1a836CedfCBB16A`, the `L1ScrollMessenger` contract on Sepolia.
- `_router`: Set it to `0xF8B1378579659D8F7EE5f3C929c2f3E332E41Fd6`, the `L1GatewayRouter` contract on Ethereum.
- `_messenger`: Set it to `0x6774Bcbd5ceCeF1336b5300fb5186a12DDD8b367`, the `L1ScrollMessenger` contract on Ethereum.

A custom gateway can host multiple token bridges. In this case, we will only be allowing bridging between L1Token and L2Token by calling the `updateTokenMapping` function on the `MyL1Gateway` contract with the following parameters:

- `_l1Token`: The address of the `L1Token` contract we previously launched on Sepolia.
- `_l1Token`: The address of the `L1Token` contract we previously launched on Ethereum.
- `_l2Token`: The address of the `L2Token` contract we previously launched on Scroll.

### Setup your Gateway contract on Scroll
Expand All @@ -342,14 +342,14 @@ Now let’s switch to the Scroll chain and initialize `MyL2Gateway`, following s

First, call the `initialize` function from `MyL2Gateway`:

- `_counterpart`: The address of `MyL1Gateway` we just launched on Sepolia.
- `_router`: Set it to `0x9aD3c5617eCAa556d6E166787A97081907171230`, the `L2GatewayRouter` contract on Scroll.
- `_messenger`: Set it `0xBa50f5340FB9F3Bd074bD638c9BE13eCB36E603d`, the `L2ScrollMessenger` contract on Scroll.
- `_counterpart`: The address of `MyL1Gateway` we just launched on Ethereum.
- `_router`: Set it to `0x4C0926FF5252A435FD19e10ED15e5a249Ba19d79`, the `L2GatewayRouter` contract on Scroll.
- `_messenger`: Set it `0x781e90f1c8Fc4611c9b7497C3B47F99Ef6969CbC`, the `L2ScrollMessenger` contract on Scroll.

Next, call `updateTokenMapping` on the `MyL2Gateway` contract:

- `_l2Token`: The address of the `L2Token` contract we previously launched on Scroll.
- `_l1Token`: The address of the `L1Token` contract we previously launched on Sepolia.
- `_l1Token`: The address of the `L1Token` contract we previously launched on Ethereum.

### Bridging tokens

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,8 @@ import Aside from "../../../../../components/Aside.astro"
import ClickToZoom from "../../../../../components/ClickToZoom.astro"
import txFeesProjectStructure from "../../../../../assets/images/developers/txFeesProjectStructure.png"

{/* TODO: Update for Sepolia, test and publish to sidebar. */}

:::warning[This article is out of date.]
This page has not been updated and tested against the latest Scroll Sepolia release. Please use with caution.
This page has not been updated and tested against the latest Scroll release. Please use with caution.
:::

Since Scroll is an L2 rollup, part of the transaction lifecycle is committing some data to L1 for security. To pay for this, all transaction incurs an additional fee called the _L1 fee_.
Expand Down
12 changes: 5 additions & 7 deletions src/content/docs/en/developers/guides/running-a-scroll-node.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@ import ToggleElement from "../../../../../components/ToggleElement.astro"

This guide will walk you through setting up your own Scroll node using Docker with snapshot.

## Key Differences from Scroll Sepolia
## Key Requirements

- Required binary version: **`scroll-v5.8.38`** or higher.
- Use `--scroll` instead of `--scroll-sepolia`.
- Use the `--scroll` flag to run against Scroll Mainnet.
- Mainnet requires a fully synced **Ethereum Mainnet RPC** for the `--l1.endpoint` flag.
- Bootnode setup differs (5 default + 2 optional dedicated ones).
- Bootnode setup: 5 default bootnodes + 2 optional dedicated ones.

---

Expand Down Expand Up @@ -132,9 +132,8 @@ Insert your config in the yaml file and save it, recommended config would be :
--l1.endpoint "${Your l1 endpoint}"
--da.blob.blobscan "${Your blobscan endpoint}"
--da.blob.beaconnode "${Your beaconnode endpoint}"
# Scroll provides aws s3 endpoints for both scroll-mainnet and scroll-sepolia
# scroll-mainnet : https://scroll-sepolia-blob-data.s3.us-west-2.amazonaws.com/
# scroll-sepolia: https://scroll-mainnet-blob-data.s3.us-west-2.amazonaws.com/
# Scroll provides an aws s3 endpoint for scroll-mainnet
# scroll-mainnet: https://scroll-mainnet-blob-data.s3.us-west-2.amazonaws.com/
--da.blob.awss3 "${Your aws s3 endpoint}"
--cache.snapshot=0
logging:
Expand Down Expand Up @@ -192,7 +191,6 @@ Genesis json file can be found [here](https://www.notion.so/genesis-json-f89ca24
### Troubleshooting
- The node (APIs, geth console, etc) will not be responsive until all the L1 messages have been synced.
- However, the derivation pipeline is already started during the initial sync phase, which can be seen through `L1 sync progress [...]` logs.
- For Scroll Sepolia it might take a little longer (10-20mins) for the first `L1 sync progress [...]` logs to appear as the L1 blocks are more sparse at the beginning.

You should see something like this shortly after starting:
```bash
Expand Down
Loading