欢迎
入门
感谢你与我们一起构建开发
开发者快速上手
获取测试网 ETH
网络配置
配置工具
使用 Hardhat 部署合约
使用 Foundry 部署合约
问题和反馈
协议
生态集成
EVM 操作码
State Account
Block Time
未来的 EIPs
欢迎
欢迎使用 Scroll 开发者文档!
Scroll 是建立在以太坊上的 Layer 2 网络(更准确地说是“zkRollup”)。
如果你有以太坊上开发的经验,那么你的代码、依赖项和工具,可以在 Scroll 上开箱即用。这是因为我们的网络与 EVM 在字节码层面兼容,设计初衷就是让开发者拥有以太坊一样的开发体验。
!刚接触 zkRollup
ZK Rollups 允许网络容纳更多交易,从而最大限度地减少链上拥堵。Scroll 通过使用零知识证明验证网络状态转换,继承了以太坊的安全性,可以在不影响去中心化的情况下处理更多交易。
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.js
,并确保已经安装了 HDWalletProvider:npm install @truffle/hdwallet-provider@1.4.0
const 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'
);
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(),
},
},
}
...
}
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;
...
1. 如果你还没有安装 nodejs 和 yarn。
2. 克隆仓库并安装依赖项
git clone https://github.com/scroll-tech/scroll-contract-deploy-demo.git
cd scroll-contract-deploy-demo
yarn install
3. 在根目录下,按照示例 .env.example
创建文件.env
。更改 .env
中的 PRIVATE_KEY
为你自己的帐户私钥
4. 运行 yarn compile
编译合约。
5. 运行 yarn deploy:scrollTestnet
以在 Scroll Alpha Testnet 上部署合约。
6. 运行 yarn test
进行 hardhat 测试。
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
SELFDESTRUCT
操作码已被禁用,Scroll 中将不支持,因为它计划在之后从 EVM 中删除0x3C584eC7f0f2764CC715ac3180Ae9828465E9833
0x5260e38080BFe97e6C4925d9209eCc5f964373b6
0xe5E30E7c24e4dFcb281A682562E53154C15D3332
0xb75d7e84517e1504C151B270255B087Fd746D34C
0x6d79Aa2e4Fbf80CF8543Ad97e294861853fb0649
0x5300000000000000000000000000000000000000
0x5300000000000000000000000000000000000002
0x5300000000000000000000000000000000000003
0x5300000000000000000000000000000000000004
0x5300000000000000000000000000000000000005
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/)
对于开源贡献者和基础设施建设者,请联系我们的团队以获得更多支持。
对于一般的 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
}
【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。