npm 包 @nomiclabs/buidler-web3 使用教程

阅读时长 6 分钟读完

前言

在以太坊智能合约开发中,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:

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