zkSync Era 主网极简合约部署教程
Era 合约的部署目前只能通过命令行的方式实现,稍显复杂。
经过一番摸索,基本熟悉情况。这里帮大家梳理一下完整的部署和验证流程,同时以部署一个最简单的合约作为案例,便于大家上手
步骤:
1、环境准备
2、合约代码准备
3、部署验证合约
环境三件套
参照 Era 官方文档,安装环境三件套:
Node、NVM、Yarn 每个人的电脑环境复杂,如遇错误,可自行 Google 或者向 ChatGPT 提问:
https://era.zksync.io/docs/dev/building-on-zksync/hello-world.html#prerequisites
初始化与 SDK 安装
继续参考官方文档,进行如下操作:
1、新建专属文件夹 (mk & cd 命令)
2、初始化环境 (yarn init -y 命令)
3、安装 SDK、依赖(yarn add 命令)
https://era.zksync.io/docs/dev/building-on-zksync/hello-world.html#build-and-deploy-the-greeter-contract…
config 配置文件
当前目录下创建 hardhat.config.ts 文件,我使用的代码如下(可以在图片的 ALT 中完整复制) 注意:这里可能需要你额外安装一次 zksolc 包(我编译报错时就是这么解决的) 如果修改 zksolc 版本,比如修改为官方推荐版本 1.3.10,也会自动下载一次
这里需要你的命令行环境也可以正常访问外网!比如打开 Surge 的“增强模式”
极简智能合约
问:一个最简单的智能合约是什么样子的?
答:只包含合约名字,除此外一无所有的合约 比如截图中的合约,仅仅定义了合约的版本、合约名称,但这确实是一个合法的智能合约(可以从图片 ALT 中复制代码)
三个步骤:
1、新建合约文件夹(mkdir contracts deploy )
2、编辑合约文件(mini.sol)
3、编译合约
具体可参阅官方文档内容
https://era.zksync.io/docs/dev/building-on-zksync/hello-world.html#compile-and-deploy-the-greeter-contract…
编译合约
理论上,编译应该是很简单的,仅需截图这一条命令。但实际上,这里报错的概率极大 。
如果报错,可以检查如下两个地方:
1、命令行环境能否访问外网 (检测方式: curl http://google.com)
2、重装 zksolc 一遍试试 (https://twitter.com/gm365/status/1644303144518848512…)
如果一切顺利,编译成功如图所示。
部署合约
部署合约两个步骤:
1、创建 deploy/deploy.ts 文件并修改
2、`yarn hardhat deploy-zksync` 命令部署合约
deploy.ts 文件我做了修改,你可以从 ALT 中复制代码。请注意图中打了❗️的两处地方,是你需要自己根据情况修改之处。
1、部署合约的 EOA 钱包私钥。
2、前一步中你定义的合约名称(此处为 WTF) 。
执行部署命令,假如一切顺利,大约十几秒,即可看到部署成功后的合约地址
验证合约源码
部署完成后,还可以选择在区块链浏览器验证开源你的合约代码。
找到你合约地址后:
1、Zksolc 版本: 这里是 1.3.5 (根据你实际设置选择)
2、Solc版本: 这里是 0.8.17 ( hardhat.config.ts 文件中的设置项)
3、合约名称(这里是 WTF)
4、合约代码(复制粘贴)
验证完之后的效果:https://explorer.zksync.io/address/0xF627C6903616Bab95fE0B9C7ED27Cf95baf4e20e#contract…
总结
假如一切顺利,那恭喜你完成了在 Era 链上的第一个智能合约部署。
学会了这个基本功,那么未来要部署更复杂的合约,也是手到擒来的事了 。
由于我们编写了一个最最简单的合约,这个合约的部署费用也是极低的(我这里测试花了 $0.21)。
此外,罗列一些资源,可能对于有所帮助:
1、官方文档:https://era.zksync.io/docs/dev/building-on-zksync/hello-world.html…
2、第三方教程:https://mirror.xyz/catpad.eth/X8lq1Qci1qjyW6Fo-e64xJfY-LJZkScGD66AD4vcHmI…
3、我之前写的一个 Era 合约部署简介:https://twitter.com/gm365/status/1644299731236171778…
题外话
zkSync 并非完全 EVM 兼容,且其部署合约的不同机制导致无法使用 Remix 等方式在网页上直接操作部署合约( ThirdWeb 目前同样无法完成部署,虽然在网站上显示可以通过他们的模版合约部署于 Era 上,但实际并不可行,他们只在 DC 里承认了这点) 。
希望 zkSync 的团队继续努力,争取让合约部署这样的工作在未来更简单 。
既然可以部署一个极简的合约,那有没有极简的方式来部署合约呢?
这答案可能有点出乎你的意料,我不多说,留给那些有心的人自由探索吧 花点时间研究下官方文档吧,可谓宝藏多多。