秉承“非权威开发指南”系列的一贯宗旨,本系列不会去纠结 solidity 的语法细节,所有内容都是从实践中来,也服务于实际工作,同时不说废话。这也是为何个人觉得在第一篇先介绍整个开发过程更有意义,它有助于你了解典型的合约开发工作都有哪些,从而快速建立整体概念。
作为新坑的第一篇,让我们从了解 solidity 项目的端到端全开发过程开始。
秉承“非权威开发指南”系列的一贯宗旨,本系列不会去纠结 solidity 的语法细节,所有内容都是从实践中来,也服务于实际工作,同时不说废话。这也是为何个人觉得在第一篇先介绍整个开发过程更有意义,它有助于你了解典型的合约开发工作都有哪些,从而快速建立整体概念。
所谓端到端,其实指以下的工作内容:
以上便是典型合约项目涉及的内容,接下来让我们看看如何完成每一步。
软件开发,工具先行,对于合约项目也不例外。对于 solidity 项目,我们选择 hardhat
。创建工程的步骤:
npx hardhat
。此时会出现一个命令行向导,建议直接选择:Create an advanced sample project that uses TypeScript
。
虽然会装一堆东西,但是它有一个巨大的好处:具备典型项目的架子,且已经配置完好,大多数任务只需修改和调整即可。对于入门者可以大大降低门槛,将精力集中在合约开发之上而非折腾各种配置。即使对于老手,由此开始也能大大省力。
当然,另一种方法就是从 github 上搜寻各类事先配好的模板,直接 fork + clone 即可。
按上述步骤创建好工程之后,现在手头应该已经有:
不妨先快速浏览一下它们的内容和所在目录,做到心中有数。你所要进行的日常开发就是在对应目录下创建对应的文件,然后执行相关命令即可。鉴于合约和测试代码已经在工程中有示例,这里就不在赘述一个“hello world”了。
运行测试的命令很简单:npx hardhat test
。
当合约开发完成并通过测试,那么接下来的一个重点就是:优化。“优化”本身有很多含义,比如优化算法,但这里的优化特指:gas 优化。
任何优化,第一步所要做的就是“度量”,在此就是指:得到合约方法的 “gas report”:
npm install hardhat-gas-reporter --save-dev
hardhat.config.ts
自动引入。.env
(将示例文件 .env.example
重命名),在其中加上一行:REPORT_GAS=on
。npx hardhat test
。如此,在测试完毕之后,它会打印出所有合约方法消耗的 gas report
。据此,你就可以开始你的优化之旅了。
注意,hardhat-gas-reporter
会连接外部网络,若嫌它拖慢测试速度,可以在 .env
中关掉它即可。
开发和优化完毕,接下来就是部署:
.env
(同样,由 .env.example
重命名而来)中缺省的 rpc url
和 private key
。hardhat.config.ts
中的 networks
参数。scripts/deploy.ts
。npx hardhat run --network rinkeby scripts/deploy.ts
,请确保配置文件中有网络配置有 rinkeby
。配置到其他 chain(如 mumbai),无非就是:
.env
,添加相应的 rpc url
。hardhat.config.ts
中的 networks
参数,添加对应的网络参数,然后运行 deploy.ts
就行了。整个流程的最后一环是合约验证,这对于大多数初学者会比较陌生。但简单来讲,验证的作用就是:
用户可以直接在 etherscan 上调用合约:
一般来说,正规的合约项目都会需要用到这一步。验证的步骤:
npm install --save-dev @nomiclabs/hardhat-etherscan
.env
中的 ETHERSCAN_API_KEY
verify
命令,示例:npx hardhat verify --network rinkeby 合约地址 "参数"
。完成之后,进入 etherscan 查看效果
相关文章:
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!