Scroll Alpha 测试网开发者指南

在 Scroll 上开发
欢迎
入门
为什么要在 Scroll 上开发?
感谢你与我们一起构建开发
开发者快速上手
获取测试网 ETH
网络配置
配置工具
合约部署教程
使用 Hardhat 部署合约
使用 Foundry 部署合约
问题和反馈
Alpha 测试网合约
Scroll 合约
协议
生态集成
以太坊和 Alpha 测试网的区别
EVM 操作码
State Account
Block Time
未来的 EIPs
在 Scroll 上开发
欢迎
欢迎使用 Scroll 开发者文档!
Scroll 是建立在以太坊上的 Layer 2 网络(更准确地说是“zkRollup”)。
如果你有以太坊上开发的经验,那么你的代码、依赖项和工具,可以在 Scroll 上开箱即用。这是因为我们的网络与 EVM 在字节码层面兼容,设计初衷就是让开发者拥有以太坊一样的开发体验。
!刚接触 zkRollup
Scroll 通过链下执行交易获得安全性和速度,并生成交易正确执行的加密证明。此加密证明在 Layer 1 的智能合约中得到验证,确保在 Scroll Layer 2 上执行的所有代码同在以太坊 Layer 1 上执行的一样。更多关于 Scroll 架构的信息
入门 希望在 Scroll 的 Pre-Alpha 测试网上开发? 关于要点:查看开发者快速上手 在 Scroll 上部署你的第一个智能合约,请阅读我们的合约部署教程 我们还有许多生态项目集成和已经部署的合约地址
我们还有许多生态项目集成和已经部署的合约地址
为什么要在 Scroll 上开发?
ZK Rollups 允许网络容纳更多交易,从而最大限度地减少链上拥堵。Scroll 通过使用零知识证明验证网络状态转换,继承了以太坊的安全性,可以在不影响去中心化的情况下处理更多交易。
感谢你与我们一起构建开发 我们正在努力为网络带来更多的集成和支持更多的基础设施,并为我们未来的主网版本感到兴奋。
开发者快速上手
在 Scroll 上,你最喜欢的智能合约开发测试工具都可以正常使用。
获取测试网 ETH 在 Scroll 上构建之前,您需要一些测试代币。查看我们的水龙头页面,在 Goerli 上获得 ETH 测试代币。然后,使用我们的跨链桥将 ETH 测试代币桥接到 Scroll Alpha 测试网(Layer 2)。
网络配置 使用下表将您的以太坊工具配置到 Scroll Alpha 测试网。
配置工具 Hardhat 修改你的 Hardhat 配置文件hardhat.config.ts以指向 Scroll Alpha 测试网公开 RPC。
hardhat.config.ts以指向 Scroll Alpha 测试网公开 RPC。...
const config: HardhatUserConfig = {
...
networks: {
scrollAlpha: {
url: "https://alpha-rpc.scroll.io/l2" || "",
accounts:
process.env.PRIVATE_KEY !== undefined ? [process.env.PRIVATE_KEY] : [],
},
},
};
...
forge create ... --rpc-url=https://alpha-rpc.scroll.io/l2


Truffle 假设你已经设置了 truffle 环境,请到 Truffle 配置文件truffle.js,并确保已经安装了 HDWalletProvider:npm install @truffle/hdwallet-provider@1.4.0
truffle.js,并确保已经安装了 HDWalletProvider:npm install @truffle/hdwallet-provider@1.4.0const HDWalletProvider = require("@truffle/hdwallet-provider")
...
module.exports = {
networks: {
scrollAlpha: {
provider: () =>
new HDWalletProvider(process.env.PRIVATE_KEY, "https://alpha-rpc.scroll.io/l2"),
network_id: '*',
},
}
}
brownie networks add Ethereum scrollAlpha host=https://alpha-rpc.scroll.io/l2 chainid=534353
networks:
default: scrollAlpha
ethers脚本中设置 Scroll Alpha Testnet Provider。import { ethers } from 'ethers';
const provider = new ethers.providers.JsonRpcProvider(
'https://alpha-rpc.scroll.io/l2'
);
配置 Hardhat 在packages/hardhat/hardhat.config.js文件中,你需要添加网络并选择其为默认网络。
packages/hardhat/hardhat.config.js文件中,你需要添加网络并选择其为默认网络。...
//
// Select the network you want to deploy to here:
//
const defaultNetwork = "scrollAlpha";
...
module.exports = {
...
networks: {
...
scrollAlpha: {
url: "https://alpha-rpc.scroll.io/l2",
accounts: {
mnemonic: mnemonic(),
},
},
}
...
}
配置前端 要配置你的前端,你需要添加 Scroll Alpha Testnet 作为网络,然后选择它为默认设置。
packages/react-app/src/constants.js....
export const NETWORKS = {
...
scrollAlpha: {
name: "scrollAlpha",
color: "#e9d0b8",
chainId: 534353,
rpcUrl: "https://alpha-rpc.scroll.io/l2",
blockExplorer: "https://blockscout.scroll.io",
},
...
}
packages/react-app/src/App.jsx...
/// 📡 What chain are your contracts deployed to?
const initialNetwork = NETWORKS.scrollAlpha;
...
合约部署教程
使用 Hardhat 部署合约
1. 如果你还没有安装 nodejs 和 yarn。
2. 克隆仓库并安装依赖项
git clone https://github.com/scroll-tech/scroll-contract-deploy-demo.git
cd scroll-contract-deploy-demo
yarn install3. 在根目录下,按照示例 .env.example 创建文件.env。更改 .env 中的 PRIVATE_KEY 为你自己的帐户私钥
4. 运行 yarn compile 编译合约。
5. 运行 yarn deploy:scrollTestnet 以在 Scroll Alpha Testnet 上部署合约。
6. 运行 yarn test 进行 hardhat 测试。
使用 Foundry 部署合约 1. 克隆仓库
git clone https://github.com/scroll-tech/scroll-contract-deploy-demo.git
cd scroll-contract-deploy-demo
curl -L https://foundry.paradigm.xyz | bash
foundryup
forge create --rpc-url https://alpha-rpc.scroll.io/l2 \
--value <lock_amount> \
--constructor-args <unlock_time> \
--private-key <your_private_key> \
--legacy \
contracts/Lock.sol:Lock
- <lock_amount>是合约中要锁定的ETH的金额。尝试将其设置为少量,例如0.0000001ether.
- <unlock_time>是 Unix 时间戳,在这之后锁定在合约中的资金将可以提取。尝试将其设置为将来的某个 Unix 时间戳,例如1696118400(此 Unix 时间戳对应于 2023 年 10 月 1 日)。
forge create --rpc-url https://alpha-rpc.scroll.io/l2 \
--value 0.00000000002ether \
--constructor-args 1696118400 \
--private-key 0xabc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc1 \
--legacy contracts/Lock.sol:Lock
问题和反馈
感谢参与和开发 Scroll Alpha 测试网。如果遇到任何问题,可以加入我们的 Discord 并在 developers 频道中询问我们。
感谢参与和开发 Scroll Alpha 测试网。如果遇到任何问题,可以加入我们的 Discord 并在 developers 频道中询问我们。
开发人员说明 1. SELFDESTRUCT 操作码已被禁用,Scroll 中将不支持,因为它计划在之后从 EVM 中删除 2. 目前,我们将 Layer 2 的 Gas 价格设置为与以太坊 Layer1 相同。但是,这些 Gas 价格未来可能会发生变化,根据证明成本进行匹配。我们将尽量努力减少这些更改,主要将在有安全需要的情况,对 ZK 不友好的预编译进行变更。
SELFDESTRUCT 操作码已被禁用,Scroll 中将不支持,因为它计划在之后从 EVM 中删除Alpha 测试网合约
Scroll 合约
Rollup
L1 Rollup:
0x3C584eC7f0f2764CC715ac3180Ae9828465E9833
跨链桥 L1 Messenger: 0x5260e38080BFe97e6C4925d9209eCc5f964373b6L1 Gateway Router: 0xe5E30E7c24e4dFcb281A682562E53154C15D3332L2 Messenger:
0xb75d7e84517e1504C151B270255B087Fd746D34CL2 Gateway Router:
0x6d79Aa2e4Fbf80CF8543Ad97e294861853fb0649
0x5260e38080BFe97e6C4925d9209eCc5f964373b60xe5E30E7c24e4dFcb281A682562E53154C15D33320xb75d7e84517e1504C151B270255B087Fd746D34CL2 Gateway Router:
0x6d79Aa2e4Fbf80CF8543Ad97e294861853fb0649
0x6d79Aa2e4Fbf80CF8543Ad97e294861853fb0649L2 预部署合约 Message Queue: 0x5300000000000000000000000000000000000000
Block Container:
0x5300000000000000000000000000000000000001
Gas Price Oracle:
0x5300000000000000000000000000000000000002Whitelist: 0x5300000000000000000000000000000000000003WETH L2: 0x5300000000000000000000000000000000000004Transaction Fee Vault:
0x5300000000000000000000000000000000000005
0x53000000000000000000000000000000000000000x53000000000000000000000000000000000000020x53000000000000000000000000000000000000030x5300000000000000000000000000000000000004Transaction Fee Vault:
0x5300000000000000000000000000000000000005协议 Uniswap V3 前端网页: https://uniswap-v3.scroll.io/ 核心合约:
https://guide.scroll.io/developers/alpha-testnet-contracts
RPC Providers
Unifra(https://unifra.io/)
BlockPI(https://blockpi.io/)
Indexers
Covalent(https://www.covalenthq.com/)
Transpose(https://www.transpose.io/)
Wallets
Keystone(https://keyst.one/)
BlockWallet(https://blockwallet.io/)
Ledger(https://www.ledger.com/)
MPC Vault(https://mpcvault.com/)
SoulWallet(https://www.soulwallets.me/)
Open Block(https://openblock.com/)
Unipass(https://unipass.id/)
Identity
zCloak(https://zcloak.network/)
Ecosystem
Questbook(https://www.questbook.app/)
Infra
Empiric(https://empiric.network/)
Unifra(https://unifra.io/)
Social
Lens(https://www.lens.xyz/)
Atem(https://www.atem.io/)
Defi
Loanshark(https://loanshark.tech/)
Oracle
Redstone(https://redstone.finance/)
以太坊和 Alpha 测试网的区别
以太坊主网的 EVM 和 Scroll 修改设计的 zkEVM 之间存在许多技术细节差异。你可以在如下看到现在存在的这些差异。
对于开源贡献者和基础设施建设者,请联系我们的团队以获得更多支持。
对于一般的 Solidity 开发者来说,这些细节不会影响你的开发体验。
EVM 操作码
| 操作码 | Solidity Equivalent | Ethereum | Scroll |
| BLOCKHASH | block.blockhash | 输入: 从栈顶开始的blocknumber,有效范围[NUMBER -256, NUMBER-1] 输出: 给定区块的哈希,如果不在有效范围内,返回 0 | 匹配以太坊,但限制输入范围的blocknumber为NUMBER -1 |
| COINBASE |
| 在以太坊 Clique 中,是签名者的以太坊地址 | 返回一个预部署的费用池合约,查看 Alpha 测试网合约 |
DIFFICULTY/ PREVRANDAO | block.difficulty | PoS 后,为前一个区块的 random 值 | 返回 0 |
| SELFDESTRUCT | selfdestruct | 计划作废,并用 SENDALL 替换 | 在排序器中禁用,未来会采用以太坊的方案 |
State Account
Additional Fields
我们将在当前StateAccount对象中添加两个字段:PoseidonCodehash和CodeSize。
type StateAccount struct {
Nonce uint64
Balance *big.Int
Root common.Hash // merkle root of the storage trie
KeccakCodeHash []byte // still the Keccak codehash
// added fields
PoseidonCodeHash []byte // the Poseidon codehash
CodeSize uint64
}与此相关,我们为每个合约字节码维护两种类型的代码哈希:Keccak 哈希和 Poseidon 哈希。
Code Size 验证时 EXTCODESIZE,将整个合约数据加载到 zkEVM 中是代价很大。相反,我们在合约创建期间将合约大小存储在存储中。这样,我们就不需要加载代码——存储证明足以验证这个操作码。 Block Time
Alpha 测试网的目标是恒定的 3 秒出块时间。这比理想情况下以太坊的 12 秒更短且更一致。
更快、更稳定的出块时间可以带来更快的反馈和更好的用户体验 当我们优化测试网中的 zkEVM 电路时,即使我们保持每个区块或 batch 的较小的 Gas 上限时,我们仍然可以达到比以太坊更高的吞吐量。
我们密切关注所有以太坊采用的新 EIP,并将在合适的时候采用它们。如果你对更多细节感兴趣,请访问我们的社区论坛或 Discord

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。
来源链接

