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

前言

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


猜你喜欢

  • npm 包 @types/webpack-chain 使用教程

    简介 webpack-chain 是一个专为 Webpack 设计的链式 API 帮助程序员更加方便、快捷的修改 webpack 的配置。而 @types/webpack-chain 则提供了对 we...

    5 年前
  • npm包 @alicloud/console-toolkit-shared-utils 使用教程

    在前端开发中,我们经常需要使用许多工具来加快开发效率,而npm是一个非常常用的工具,可以让我们轻松的管理和安装代码库。其中@alicloud/console-toolkit-shared-utils是...

    5 年前
  • npm 包 @types/i18next-xhr-backend 使用教程

    前言 i18next-xhr-backend 是 i18next 国际化库的一个插件,用于在浏览器中加载远程语言文件,支持 XMLHttpRequest 和 Fetch API。

    5 年前
  • npm 包 @types/i18next-node-fs-backend 使用教程

    在前端开发中,我们经常需要处理多语言问题。而 i18next 是一个常用的多语言库,可以帮助我们轻松实现多语言功能。而 i18next-node-fs-backend 则是 i18next 的一个文件...

    5 年前
  • npm 包 @types/i18next 使用教程

    前言 i18next 是一个支持多语言的 JavaScript 库,它支持国际化、本地化等功能。@types/i18next 就是 i18next 的 TypeScript 类型定义文件,为 Type...

    5 年前
  • npm 包 i18next-node-mongodb-backend 使用教程

    在国际化的开发中,对于多语言的支持是至关重要的。i18next 是一个前端的国际化库,它通过多个插件可以方便地管理多语言资源。其中之一是 i18next-node-mongodb-backend,它可...

    5 年前
  • npm 包 @gongt/ts-stl-server 使用教程

    在前端开发中,我们经常需要使用到数据结构和算法。如果我们能够使用 TypeScript 来编写这些模块,并且简单易用、高效稳定的话,那么我们将能够更轻松地完成我们的项目,并且代码也将更加优雅。

    5 年前
  • npm 包 @gongt/ts-stl-library 使用教程

    简介 在前端开发中,常常需要使用数据结构和算法来进行问题的解决。而 npm 包 @gongt/ts-stl-library 就提供了现代封装的标准库,为前端开发者提供了便捷和高效的算法和数据结构库,可...

    5 年前
  • npm 包 @gongt/ts-stl-client 使用教程

    简介 在前端开发中,我们常常需要处理各种数据类型的操作,如数组、字符串、对象等。ts-stl-client 是一个 TypeScript 前端库,提供了丰富的数据结构、算法以及工具类的封装,便于我们在...

    5 年前
  • npm 包 @gongt/jspm 使用教程

    简介 在前端开发中,我们经常需要引用第三方的库和框架。npm 包是其中一种最常用的方式。@gongt/jspm 就是一个基于 npm 的包管理工具,可以帮助我们更好地管理依赖和库。

    5 年前
  • npm 包 @gongt/jenv-data 使用教程

    简介 @gongt/jenv-data 是一款用于管理 Java 虚拟机版本的 npm 包。它通过读取 $PATH 环境变量,将 Java 版本命令行工具中的信息解析出来,提供了一些便捷的方法,帮助前...

    5 年前
  • npm 包 test-wait 使用教程

    test-wait 是一个非常有用的 npm 包,它可以帮助我们在测试代码中模拟异步操作。这篇文章将介绍如何使用 test-wait,并提供一些实用的例子。 安装 test-wait 首先,我们需要在...

    5 年前
  • npm包typescript-ioc使用教程

    在现代的前端开发中,TypeScript变得越来越流行。而在TypeScript开发中,使用依赖注入(DI)框架可以有效地提高开发效率和代码质量。typescript-ioc就是一款常用的DI框架,本...

    5 年前
  • npm 包 @types/yamljs 使用教程

    在前端开发中,我们常常需要处理 YAML 格式的文件,例如配置文件、数据文件等等。而 @types/yamljs 就是一个可以在 TypeScript 中使用的 YAML 解析库。

    5 年前
  • @types/passport-jwt 使用教程

    @types/passport-jwt 使用教程 前言 在 Web 开发中,身份验证是必不可少的一个环节。passport-jwt 是一个基于 JSON Web Token 的身份验证策略,并且可以在...

    5 年前
  • npm 包 swagger-ui-express 使用教程

    Swagger 是一种描述 RESTful 服务的工具,并且可以生成交互式文档。Swagger UI 是 Swagger 的一个前端界面,并且可以直接嵌入我们的网页中,以方便用户查看和调用我们的接口。

    5 年前
  • npm 包 require-glob 使用教程

    前端开发中,我们经常需要在代码中引入多个模块,每个模块都需要单独进行 require 引入,这时候就需要一个工具来辅助我们批量引入模块。require-glob 就是这样一个工具,它可以让我们方便地引...

    5 年前
  • npm包@types/connect-redis使用教程

    什么是@types/connect-redis? @types/connect-redis是一个npm包,它提供了TypeScript类型定义文件,用于在TypeScript项目中引入connect-...

    5 年前
  • NPM 包 Simple-Node-Logger 使用教程

    在前端开发中,日志记录是一项非常必要的技术。Simple-Node-Logger 是一款可轻松集成到 Node.js Web 应用程序中的日志记录器,同时拥有高度的可配置性和灵活性。

    5 年前
  • npm 包 format-date 使用教程

    在前端开发中,时间格式化是一项经常需要进行处理的任务。而 format-date 这个 npm 包提供了简单易用的时间格式化方法,可以方便地将时间数据以用户友好的方式显示出来。

    5 年前

相关推荐

    暂无文章