前言
在以太坊智能合约开发中,Web3.js 是个很重要的库,用于和以太坊节点进行交互,通过它我们可以创建智能合约的实例并进行调用。然而在以太坊 DApp 开发中使用 Web3.js 还需要依赖于脚手架工具 Buidler。
Buidler 是一个基于 Node.js 的智能合约开发框架。它具有良好的拓展性以及高效性,是一个优秀的 ETH 智能合约开发框架。Buidler 运行在 Node.js 上,它能够集成 Web3.js 与 Truffle 工具集并解决各种问题。
在本文中,我们将介绍一个非常有用的 npm 包 @nomiclabs/buidler-web3 ,它将帮助我们轻松地集成 Web3.js 和 Buidler ,并提供了一些实用的标准任务和插件,从而方便我们进行以太坊智能合约开发。
正文
1. 安装
使用 npm 来安装最新版本的 @nomiclabs/buidler-web3:
npm install --save-dev @nomiclabs/buidler-web3
2. 配置
在使用 Buidler 时,我们需要在项目的根目录下创建一个配置文件 buidler.config.js ,并在其中配置插件。首先需要创建一个 Web3 对象,以下是配置文件示例代码:
-- -------------------- ---- ------- ----------------------------------- -------------- - - --------------- ------------- --------- - ----------- - -------- ------ -- -------- - ---- ----------------------------------------------- --------- - --------- ----- -------- ------ ------ -- -- -- --展开代码
配置中,我们首先引入了 @nomiclabs/buidler-web3 插件,然后定义了两个 network,一个是 buidlerevm,另一个是 rinkeby。
其中,默认的 network 是 buidlerevm,Buidler 会使用 geth-client 启动本地的节点,默认的 chainId 是 31337。如果你不设置该值,则默认使用Buidler使用的网络。除此之外,还可以定义 rinkeby 等其他测试网络及其连接信息。
3. 与 Web3.js 集成
@nomiclabs/buidler-web3 提供了 Web3 对象,我们可以通过该对象进行一系列操作。以下是 @nomiclabs/buidler-web3 实例化示例代码:
-- -------------------- ---- ------- ----- - ----------- - - ---------------------------- ----- - ----------- - - ------------------------- ----- - ---------------- - - --------------------------------- ----- ---- - ---------------- ----- - ---------------------- - - -------------------------- ----- -------- - ------------------------------------------------------ ------- ----- ----------- - --- ---------------------- ----- ---------------- - --- -------------------------- - ---------- --------展开代码
我们使用 Web3Wrapper 来实例化 web3,此外还引入了 @0x/contract-wrappers 和 @0x/migrations,前者用于与智能合约进行交互,后者用于在 Ethereum node 上部署智能合约。使用 Chai 进行断言。
4. 实例
Web3.js 对象可以用来创建智能合约实例,以下是示例代码:
-- -------------------- ---- ------- ----- --------------- - --------------------------------------------- ----- --- - - - ----------- ------ --------- - - ------- ----------- ------- -------- - -- ------- ------ ---------- --- ---------- ------ ------------------ ------------- ------- ---------- -- - ----------- ----- --------- --- ------- ------ ---------- - - ------- --- ------- -------- - -- ---------- ------ ------------------ ------- ------- ---------- - -- ----- -------- - --- ---------------------- -----------------展开代码
如上代码所示,我们首先定义了一个智能合约地址 contractAddress,以及合约的 abi ,然后通过 Web3.js 创建一个实例 contract。
5. 任务
@nomiclabs/buidler-web3 提供了许多任务(task),以下是其中的一些:
buidler node 启动本地 Geth 节点,便于测试智能合约
buidler console 启动一个控制台让你与环境交互,可以在这个 console 中直接使用以太坊的 API,并将当前部署的合约实例化,从而快速的开发和测试合约
buidler test 执行测试
buidler evm 启动一个本地的以太坊虚拟机(Ethereum Virtual Machine),可以模拟以太坊网络的交互,从而进行 Gas 花费等方面的分析,从而优化智能合约的性能
结语
本文简单介绍了如何使用 @nomiclabs/buidler-web3 集成 Web3.js 和 Buidler 进行以太坊智能合约开发,提供了详细的示例代码,希望能对开发者有所帮助。在使用中如有疑问请查阅 @nomiclabs/buidler-web3 文档或在社区寻求帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/203962