zkSync Era 主网极简合约部署教程

作者:gm365来源:Twitter2023-05-21

Era 合约的部署目前只能通过命令行的方式实现,稍显复杂。

经过一番摸索,基本熟悉情况。这里帮大家梳理一下完整的部署和验证流程,同时以部署一个最简单的合约作为案例,便于大家上手

步骤:

1、环境准备

2、合约代码准备

3、部署验证合约

eth

环境三件套

参照 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…

eth

config 配置文件

当前目录下创建 hardhat.config.ts 文件,我使用的代码如下(可以在图片的 ALT 中完整复制) 注意:这里可能需要你额外安装一次 zksolc 包(我编译报错时就是这么解决的) 如果修改 zksolc 版本,比如修改为官方推荐版本 1.3.10,也会自动下载一次

这里需要你的命令行环境也可以正常访问外网!比如打开 Surge 的“增强模式”

eth

极简智能合约

问:一个最简单的智能合约是什么样子的?

答:只包含合约名字,除此外一无所有的合约 比如截图中的合约,仅仅定义了合约的版本、合约名称,但这确实是一个合法的智能合约(可以从图片 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…

eth

编译合约

理论上,编译应该是很简单的,仅需截图这一条命令。但实际上,这里报错的概率极大 。

如果报错,可以检查如下两个地方:

1、命令行环境能否访问外网 (检测方式: curl http://google.com)

2、重装 zksolc 一遍试试 (https://twitter.com/gm365/status/1644303144518848512…)

如果一切顺利,编译成功如图所示。

eth

etheth

etheth

部署合约

部署合约两个步骤:

1、创建 deploy/deploy.ts 文件并修改

2、`yarn hardhat deploy-zksync` 命令部署合约

deploy.ts 文件我做了修改,你可以从 ALT 中复制代码。请注意图中打了❗️的两处地方,是你需要自己根据情况修改之处。

1、部署合约的 EOA 钱包私钥。

2、前一步中你定义的合约名称(此处为 WTF) 。

执行部署命令,假如一切顺利,大约十几秒,即可看到部署成功后的合约地址

etheth

验证合约源码

部署完成后,还可以选择在区块链浏览器验证开源你的合约代码。

找到你合约地址后:

1、Zksolc 版本: 这里是 1.3.5 (根据你实际设置选择)

2、Solc版本: 这里是 0.8.17 ( hardhat.config.ts 文件中的设置项)

3、合约名称(这里是 WTF)

4、合约代码(复制粘贴)

验证完之后的效果:https://explorer.zksync.io/address/0xF627C6903616Bab95fE0B9C7ED27Cf95baf4e20e#contract…

eth

总结

假如一切顺利,那恭喜你完成了在 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 的团队继续努力,争取让合约部署这样的工作在未来更简单 。

既然可以部署一个极简的合约,那有没有极简的方式来部署合约呢?

这答案可能有点出乎你的意料,我不多说,留给那些有心的人自由探索吧 花点时间研究下官方文档吧,可谓宝藏多多。