Scroll zkEVM 智能合约开发完整介绍
这篇文章是一篇关于Scroll zkEVM的技术介绍,面向希望尝试该网络的智能合约开发人员。
在这篇文章中,我们将:
1、了解Scroll zkEVM并如何开始使用它的Alpha测试网。
2、使用Foundry设置开发环境,并编写一个智能合约,根据伪随机数生成函数在Alpha测试网上分发ETH。
3、调整智能合约以符合Alpha测试网所需的确切规范。
4、使用Solidity脚本部署我们的智能合约。
5、直接从Foundry的命令行验证我们在Alpha测试网上的智能合约。
通过阅读这篇文章,您将学会如何使用Foundry将您的智能合约部署到Scroll的Alpha测试网。
什么是Scroll zkEVM?

Scroll zkEVM是一个即将推出的第二层区块链解决方案,专门设计用来作为提高以太坊可扩展性的工具。
Scroll和类似平台(如Polygon zkEVM)的区别在于它使用零知识证明(ZK证明),通过将大量交易捆绑在一起并一次性写入以太坊,显著降低了与在以太坊上单独处理每笔交易相比的交易费用。
像Scroll这样的zkEVM最好的地方在于:智能合约开发人员不需要了解底层ZK技术,就可以在更便宜、更可扩展的解决方案上部署EVM兼容的智能合约。
先决条件
- 确保您的钱包中有一些Goerli ETH。是的,我知道Goerli已经过时了,但现在您需要它。
- 对区块链有基本的了解,并且有一些Solidity经验。
- 如果您以前没有使用过Foundry,我建议您查看我之前为一个研讨会创建的这个Github仓库中的README。
- 无需观看整个视频;如果您以前从未使用过Foundry,只需快速浏览一下README文件即可。
第一件事:桥接它!
在不涉及太多ZK特定内容的情况下,请知道Scroll网络上的ETH与以太坊主网上的ETH相对应。镜像意味着Scroll团队已经在Scroll网络(目前是Alpha测试网)和相应的ETH网络(目前是Goerli测试网)上部署了桥接智能合约。
因此,要获得一些ETH来支付Alpha测试网上的燃气费,您需要将一些Goerli ETH存入Goerli上的桥接合约。
镜像也可以反过来使用。
要开始:
1、转到Scroll的UI界面,它允许您与桥接合约进行交互。
2、将您的Metamask钱包连接到网页。
3、确保您是将ETH发送到Scroll网络,而不是反过来。按照UI(真的很直观)并确认桥接。
确认后,您可能需要等待30-45分钟才能在Alpha测试网上收到ETH。所以你需要耐心等待一段时间。
一旦您在Alpha测试网上有了一些ETH,就可以开始了!
初始化一个Foundry项目
Foundry是最新的智能合约开发框架之一,越来越受欢迎。
要安装Foundry,请参考下面的命令或查看Foundry-book。
运行此命令下载foundryup
curl -L https://foundry.paradigm.xyz | bash
然后重新启动终端,然后通过运行以下命令安装 Foundry:
foundryup
安装完所有内容后,在新目录中打开一个新终端。您可以使用以下命令初始化新的Foundry项目:
forge init
一些注意事项:
- 默认情况下,所有智能合约都在目录中创建。
- 该命令可以将新包作为 git 子模块安装在目录中。forge install lib
- 默认情况下,所有的测试合约都定义在目录下,并且通常以Test.sol为后缀,这意味着一个名为Hello.sol的合约文件将有一个Hello.t.sol的文件。你可以用以下命令执行所有的测试文件:forge test。
- 你可以通过配置foundry.toml文件来控制Foundry的行为。我还编写了一个包含默认值列表的gist。foundry.toml toml。
- 该目录包含 Foundry 项目的所有部署和可执行脚本。script
每次对代码进行任何更改时,都可以使用以下方法编译所有智能合约:
forge build
操作码和字节码:速成课程
在撰写智能合约本身之前,让我们先了解一些概念,这些概念对于理解整个大局很有帮助。
对于不了解的人来说,EVM(以太坊虚拟机)不执行Solidity或任何其他智能合约开发语言。EVM甚至不知道这些语言的存在,也不关心。这一点同样适用于Scroll zkEVM。
实际上发生的情况是,任何智能合约代码都会被分解为EVM可执行的指令集,即字节码,这是EVM实际执行的内容。

好的,但是什么是操作码,为什么我们关心它们?还记得我说过字节码是一个“指令集”吗?
操作码是一条指令,结合其他操作码,组成了任何智能合约的字节码。作为区块链开发者,操作码是你必须处理的最底层计算级别。智能合约语言是在这些操作码之上构建的抽象。
例如,如果你在Solidity中使用了,你就调用了操作码。EVM支持的所有操作码的完整参考可以在以太坊基金会的网站上找到(不要与Scroll的zkEVM混淆)。
让我通过一个例子清楚地解释这整个概念的含义。看一下这个简单直观的智能合约:

只是一个返回两个数字之和的函数而已。相应的操作码指令会是什么样子呢?你可以查看我制作的这个Gist。你也可以在Etherscan上查看这个合约,以验证字节码和操作码。
这一部分可能看起来像一个不受欢迎的弯路,但请相信我,在接下来的章节中它将变得更加清晰明了。
编写智能合约
最后,让我们把这件事情完成。进入目录并创建一个新文件。
将以下代码粘贴到文件中:

这是一个简单直观的智能合约。让我们快速理解一下代码:
1、我们希望每个地址只能提取0.5 ETH一次;该映射用来跟踪所有成功提取ETH的地址。hasWithdrawn
2、该函数是一个简单的可支付函数,允许我们的合约接收ETH。deposit
3、这个函数是一切发生的地方。withdraw
让我们更细致地研究该函数:withdraw
- 前两个要求在函数开头的语句,以确保每个地址只能提取一次,并且合约中有足够的ETH进行交易。
- 该变量是我们使用一些实时值生成的伪随机数。我们稍后将更详细地研究它们。randomNumber
- 该函数获取它收到的所有参数,并将它们连接成一个字节字符串。abi.encodePacked
- 该函数将生成它收到的任何输入的 Keccak-256 哈希。我们将此函数输出的任何内容取模 2 以检查生成的哈希值是否均匀。keccak256
- 接下来,如果哈希值是偶数,我们将支付 ETH 并更新映射。
要编译智能合约,请在终端中运行以下命令:
forgebuild
专业提示 #1:是一个相对较新的操作码,替代了旧的操作码,并且仅在Solidity版本0.8.18及以上版本中受支持。请确保相应地配置Solidity版本。
关于我们代码的问题
哦,这里有很多要解释的内容!
这段代码远远不能用于生产环境,但我们先讨论一个更基本的问题。
回想一下,我链接了一个列出了EVM支持的操作码的列表。不幸的是,截至目前,Scroll的zkEVM不支持所有这些操作码。它支持其中的大部分,但如果你正在为zkEVM(任何zkEVM)开发智能合约,你必须了解网络和EVM之间在操作码支持方面的差异。
请重新检查代码,并查看我们用于生成随机数的值。让我们看看在我们的智能合约中哪些部分无法正常工作:

因此,实际上,我们将三个值连接起来以获取我们的随机数时,在EVM上具有伪随机行为。然而,它们要么无法正常工作,要么返回一个固定的值,这使它们对我们的目的毫无用处。
但老实说,即使Scroll支持所有这些操作码,这仍然不是一个适合生产的合约。没有严肃的智能合约会依赖于将区块值哈希在一起生成随机数。要部署一个利用随机性的智能合约,请查看Chainlink的VRF服务。
调整智能合约
由于Chainlink不支持Scroll,我们将回退到伪随机性。
这次,我们将以两种方式略微改变函数:
1、现在,当调用提取函数时,我们允许用户传入一个参数。我们将使用该参数作为的哈希的一部分,因此用户对生成的哈希有一定的控制力。randomNumber
2、我们将另外两个值替换为上一个区块的区块哈希和当前区块的时间戳。它们并不是一个很好的随机性来源,但目前,这是我所知道的最好的解决方案。如果你有更好的解决方案,请随时告诉我。

部署和验证我们的智能合约
我们需要将一些值传递给Foundry以部署我们的智能合约。我们可以在部署合约时直接在命令行中进行,但在dotenv文件中进行更方便。在你的项目目录中创建一个新的文件。
我们需要将两个值传递到env文件中:
1、RPC_URL:Foundry需要一个RPC URL来连接Alpha测试网络。我们可以从Scroll的文档中获取Alpha测试网的公共RPC URL。
2、PRIVATE_KEY:我们需要一个在Alpha测试网上有一些ETH的钱包的私钥来签署交易。你的env文件应该看起来像这样:
RPC_URL=https://alpha-rpc.scroll.io/l2
PRIVATE_KEY=1dh12j1XXXXXXXXXXXXXh1pqdfjnma91k
保存您的env文件。运行以下命令将这些变量加载到终端:
source .env
现在,我们已经安全地设置了所有敏感信息,让我们编写一个脚本来部署我们的合约。你也可以使用命令直接从命令行部署,但我觉得脚本更加优雅。
在目录内创建一个文件。在文件中,粘贴以下代码:

让我们来看看这里发生了什么:
1、在前两行中,我们从forge标准库和我们的智能合约中导入了脚本工具。
2、forge-std库为我们提供了使用宝贵作弊代码的接口。函数可以用于访问我们在env文件中的私钥。
3、startBroadcast和stopBroadcast之间的任何交易都可以在链上发送。在我们的情况下,我们需要创建一个新的智能合约实例。
保存脚本文件。现在我们已经准备好部署了。在终端中运行以下命令:
forgescriptscript/ScrollTutorial.s.sol:MyScript--rpc-url$RPC_URL--broadcast--legacy-vvvv
专业提示 #2: Foundry允许我们通过使用“-v”标志来配置命令行的冗长程度。我通常喜欢使用最大冗长度。你可以在这里了解更多信息。
专业提示 #3: 对于像Scroll和zkSync这样的zkEVM,由于它们通常不支持EIP-1559,你可能需要通过Foundry传递“--legacy”标志来部署合约。
Scroll的文档提供了一个Blockscout资源管理器的API URL,可以用来验证我们的合约。在终端中运行以下命令来验证你的合约:
forgeverify-contract<CONTRACT_ADDRESS>src/ScrollTutorial.sol:Dispenser--chain-id534353--verifier-urlhttps://blockscout.scroll.io/api/--verifierblockscout
注意:Blockscout API似乎已经出现问题,并且Scroll文档指出其行为不一致。我无法通过命令行验证我的合约,你可能也会遇到同样的问题。不过你可以通过Blockscout的用户界面进行验证。
一旦您的合约被验证,您就可以从Blockscout的UI与之交互。
结论
在这篇文章中,我们讨论了Scroll zkEVM以及作为智能合约开发者如何在此网络上进行智能合约部署而只需进行最少的配置。Scroll主网的发布即将到来,现在是开始使用这一令人激动的新技术的最佳时机。
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
您可能感兴趣
-
加密概念股每日观察:参议院优先审议其他法案,《Clarity Act》通过概率骤降至 37% 引发机构隐忧议程边缘化与谈判僵局:通过率骤降至 37% 原本被市场寄予厚望、旨在为美国数字资产确立清晰监管边界的《Clarity Act》,正陷入国会立法程序的泥潭。 根据最新的华尔街分析报告与预测市场实时数据,
-
Bitget UEX 日报|特朗普称哈马斯同意解除武装以色列将撤军;亚马逊绩后大涨9%上调资本支出;微软大涨超15%带动科技反弹 (2026年07月31日)一、热点要闻 美联储动态 沃什关注更广泛通胀指标,近端加息概率受评估花旗经济学家指出,沃什暗示除PCE外,其他通胀指标将发挥更大作用,这可能降低近期加息可能性。6月核心PCE降至3.3%,核心CPI为
-
MEXC Ventures 支持 Alpha Arena 首次登陆亚太地区,亮相 Coinfest BaliMEXC Ventures 今日宣布支持全球电竞风格实盘交易赛事 Alpha Arena 拓展至亚太地区。作为此次合作的一部分, MEXC Ventures 将担任 Alpha Arena S03 的
-
早报|前 OpenAI 研究员旗下对冲基金 Situational Awareness 被迫清仓全部公开股票持仓;币安研究:2026 年上半年链上市场普遍收缩,DeFi TVL 下滑 38%整理:ChainCatcher过去 24 小时发生了哪些重要的事? SEC 主席:若《清晰法案》未获通过,SEC 将自行制定加密规则 ChainCatcher 消息,据 Decrypt 报道,SEC
-
事到如今最对不起家人,币圈高手们在股票市场栽了个跟头作者:Zhou,ChainCatcher“事到如今,最对不起的就是家人”。 最近听到这句话的频率,不亚于两个月前的“你相信光吗”、“你要站在光里,而不是光站在那里”。 简短两句话道出了180°反转的行
-
Castle Labs:六大协议今年赚了 74 亿美元,为何币价还在跌?作者:Castle Labs 编译:佳欢,ChainCatcher 今年以来,加密协议累计创造了 74.2 亿美元收入。即便交出了如此亮眼的数字,大多数加密代币的价格依然没有反映出协议本身的成功。 原
-
深度复盘币印(Poolin)破产:从 1.63 亿美元欠条危机,看为何平台钱包并非安全2026 年 7 月 22 日,总部位于新加坡的加密矿池巨头 Poolin(币印)及其关联公司正式在美国新泽西州破产法院申请了 Chapter 11 破产保护。[1] 根据最新披露的法庭文件,Pool
-
欢迎来到新币圈:只不过这次,亏钱的地方叫股市撰文:豆丸了2026 年 7 月 13 日,首尔。 韩国综合指数 KOSPI 单日暴跌 8.95%,年内第 7 次熔断。SK 海力士,韩国人眼里的"国运股",单日重挫 15.37%,近二十年没见过这么
- 成交量排行
- 币种热搜榜
World Liberty Financial USDv
泰达币
比特币
以太坊
USD Coin
Solana
瑞波币
Ronin Network
币安币
莱特币
艾达币
狗狗币
大零币
Wormhole
比特现金
SHIB
UNI
OKB
AR
ICP
DOT
LUNC
YGG
DYDX
LPT
ETC