npm 包 @0x/contracts-erc1155 使用教程

简介

@0x/contracts-erc1155 是一个提供 ERC1155 智能合约的 npm 包,由 0x Labs 开发并维护,是 0x 协议家族中的一员。此 npm 包可以帮助使用者快速创建符合 ERC1155 标准的智能合约,且具有高度可定制性。本篇文章将为大家详细介绍此 npm 包的使用方法。

前提条件

使用 @0x/contracts-erc1155 npm 包需要先安装 Node.js 并全局安装 truffle 和 ganache-cli。

--- ------- -- ------- -----------

具体安装过程可参考官方文档:https://nodejs.org/zh-cn/download/

安装

使用 npm 安装 @0x/contracts-erc1155:

--- ------- ---------------------

使用方式

编写合约代码

在项目文件夹中新建一个 contracts 文件夹,用于存放智能合约代码。在该文件夹下新建一个名为 MyERC1155.sol 的文件,并写入以下代码:

------ -------- -------

------ -------------------------------------------------------------

-------- --------- -- ------- -
    ------------- ------ -
        -----------------------------------------------------------
    -

    -------- ------------ ---- ------- --------- ------- ------- ------ -
        ---------- --------- ------- ----
    -
-
  • 首先,我们继承了 @0x/contracts-erc1155 中的 ERC1155 合约,使我们的合约能够符合 ERC1155 标准;
  • 其次,我们添加了一个名为 mint 的函数,用于在 MyERC1155.sol 合约中铸造新的代币;
  • 最后,我们在构造函数中通过 _registerInterface 函数注册了 "MINT_WITH_ADDRESS" 接口,使得我们可以通过 @0x/contracts-erc1155 npm 包的的一些其他功能,比如使用 Exchange 中的批量转移函数。

创建 truffle 项目

接下来,在项目文件夹中创建 truffle 项目:

------- ----

mudules.js 文件

在项目中添加 modules.js 文件,内容如下:

----- ---- - ----------------
----- ---------------- - --------------------------------------

----- ----------------- - ------------------------------
----- -------- - ---------------------

-------------- - -
  -------------------------- -------------------- -------------------

  --------- -
    ------------ -
      ----- ------------
      ----- -----
      ----------- ----
    --
    -------- -
      --------- -------- -- -
        ------ --- -----------------
          ---------
          ---------------------------------------------------
        --
      --
      ----------- --
    --
    -------- -
      --------- -------- -- -
        ------ --- -----------------
          ---------
          ---------------------------------------------------
        --
      --
      ----------- --
    --
  --
--

modules.js 文件指定了 truffle 编译合约时的输出目录,以及各个网络的连接配置。我们在编译合约时需要连接到本地的 Ganache 以及 Rinkeby 和主网 Infura 节点。

其中 MNEMONIC 和 INFURA_PROJECT_ID 参数需要与真实情况相符。MNEMONIC 是连接以太坊网络所需的助记词,可以从 Metamask 或其他以太坊钱包中获得。INFURA_PROJECT_ID 是 Infura 节点在连接时所需的项目 ID,需要在 https://infura.io/ 上创建并获取。

配置 truffle-config.js 文件

在 truffle 项目的根目录下,创建 truffle-config.js 文件,并在其中添加以下代码:

----- ---------------- - --------------------------------------

----- -- - ------------------------
----- ----------------- - ------------------------------
----- -------- - ---------------------

-------------- - -
  -------- - --------------------------- --

  --------- -
    -------- -
      --------- -- -- -
        ------ --- -----------------
          ---
          ---------------------------------------------------
        --
      --
      ----------- --
      --------- ----
    --
    -------- -
      --------- -- -- -
        ------ --- -----------------
          ---
          ---------------------------------------------------
        --
      --
      ----------- --
      --------- -----
    -
  --

  --------- -
    ---------- -----------------------------
  --

  ---------- -
    ----- -
      -------- ---------
      ---------- -
        -------- -----
        ----- ----
      --
    --
  --
--

truffle-config.js 文件与 modules.js 文件类似,也需要指定连接到各个链的信息。但这里我们还需要指定编译器版本以及安装到 verify 合约的插件。

其中,ETHEREUM_PRIVATE_KEY 和 INFURA_PROJECT_ID 与 MNEMONIC 参数同理,需要替换为真实值。ETHERSCAN_API_KEY 是调用 Etherscan API(验证合约)所需的 API key,在 https://etherscan.io/ 上申请并获取。

编译合约

------- -------

以上命令将会在 build/contracts 文件夹中生成合约的 ABI 与 bytecode。

部署合约

在项目根目录下创建一个名为 deploy.js 的文件,并复制以下代码:

----- ---- - ----------------
----- ---------------- - --------------------------------------
----- ---- - ----------------
----- -- - --------------

----- ----------------- - ------------------------------
----- -------- - ---------------------

----- ---- - --- -----
  --- -------------------------- ----------------------------------------------------
--

----- --------------------- - ----------
  ----------
  --------
  ------------
  ----------------
--
----- ----------------- - ---------------------------------------------------

------ -- -- -
  ----- -------- - ----- -----------------------

  ---------------------- --------------

  ----- --------------- - --- -----------------------------------------

  ----- ----------- - ------------------------
    ----- ---------------------------
  ---

  -----------
    -------
      ----- ------------
      ---- -------- -- ------- --- -----
      --------- ----
    --
    --------------- -- -
      ---------------------- -------- -------- -- - -----------------------------
    --
    -------------- -- -
      ---------------------
    ---
-----

以上代码定义了一个可以部署 MyERC1155 合约的脚本。在执行脚本前,需要先进行以下配置:

  • 将 INFURA_PROJECT_ID 和 MNEMONIC 替换为真实值。

运行部署脚本:

---- ---------

使用合约

在项目根目录下新建一个名为 useMyERC1155.js 的文件,在其中编写以下代码:

----- ---- - ----------------
----- ---------------- - --------------------------------------
----- ---- - ----------------
----- -- - --------------

----- ----------------- - ------------------------------
----- -------- - ---------------------

----- ---- - --- -----
  --- -------------------------- ----------------------------------------------------
--

----- --------------------- - ----------
  ----------
  --------
  ------------
  ----------------
--
----- ----------------- - ---------------------------------------------------

------ -- -- -
  ----- -------- - ----- -----------------------

  ---------------------- --------------

  ----- --------- - --- ---------------------------------------- ----------------------------------------------

  ----- ------- - ------------
  ----- ------- - --
  ----- ---------- - ---

  ----- ------------- - ----- ------------------------------------ ----------------
  ------------------- -------- -------------------

  ----- ------------------------------- -------- ----------------------- ----------

  ----- ------------ - ----- ------------------------------------ ----------------
  ------------------ -------- ------------------
-----

以上代码演示了如何从部署合约的地址中获取 MyERC1155 合约实例,并通过 mint 函数铸造代币。在执行脚本前需要先进行以下配置:

  • 将 INFURA_PROJECT_ID 和 MNEMONIC 替换为真实值;
  • 将 web3.eth.Contract 的第二个参数替换为部署的合约地址。

执行脚本:

---- ---------------

此时,控制台应该会输出两次代币数量,第一次为铸造代币前的数量,第二次为铸造代币后的数量。

总结

通过本文的介绍,我们了解了如何使用 npm 包 @0x/contracts-erc1155 在 truffle 中创建符合 ERC1155 标准的智能合约,并且介绍了如何在 truffle 中部署合约、获得合约实例以及使用合约。希望大家能够在自己的项目中体验 @0x/contracts-erc1155 包所带来的方便和便利。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/5eedac7db5cbfe1ea0610a3f


猜你喜欢

  • npm 包 libnested 使用教程

    前言 libnested 是一个可以轻松解析任意嵌套对象的 JavaScript 库。它允许您对嵌套对象进行深度克隆,合并和路径查找操作。 在本文中,我们将介绍如何安装和使用 libnested。

    4 年前
  • npm 包 urify 使用教程

    前言 在开发 Web 应用时,我们经常需要对 URL 进行处理,比如拼接参数、解析参数等。虽然这些操作看起来简单,但在代码实现上还是比较繁琐的。幸好,有许多优秀的 npm 包可以帮助我们快速地实现这些...

    4 年前
  • npm 包 ssb-conn-db 使用教程

    概述 ssb-conn-db 是 Secure Scuttlebutt(SSB)软件的一个 npm 包,它是一个可用于在 SSB 网络中建立连接的工具包。本教程将详细介绍如何使用 ssb-conn-d...

    4 年前
  • npm 包 scuttle-inject 使用教程

    在前端开发中,经常需要实现依赖注入功能来保证代码的可维护性和可扩展性。scuttle-inject 是一个轻量级、可配置的依赖注入工具,本文将为大家介绍如何使用它。

    4 年前
  • npm 包 run-default 使用教程

    基于 npm 存在的众多包,我们经常会遇到需要无需参数传入时自动运行的需求。例如,我们要运行一个简单的 TypeScript 编译脚本,但面对用户进入命令行时缺少参数的情况,我们该怎么处理呢?这时就可...

    4 年前
  • npm包ssb-conn-hub 使用教程

    前言 我们都知道,Secure Scuttlebutt (SSB) 是一个点对点的数据库,它提供了去中心化的社交网络。在进行 SSB 应用的开发过程中,通过使用 ssb-conn-hub 这个 npm...

    4 年前
  • npm 包 ssb-msg-content 使用教程

    在编写基于 Secure Scuttlebutt 协议的应用时,需要利用 ssb-msg-content 这个 npm 包来创建和解析消息内容。本文将介绍 ssb-msg-content 的基本功能和...

    4 年前
  • 使用 ssb-conn-query npm 包教程

    简介 ssb-conn-query 是Secure Scuttlebutt 应用的一个 npm 包,该应用是一种去中心化的社交媒体平台,同样也是一个 P2P 网络的协议。

    4 年前
  • npm 包 ssb-conn-staging 使用教程

    ssb-conn-staging 是一个用于安全地创建可靠的连接的 npm 包,它为远程 ssb 服务器提供了一组 API,使得连接更容易、更可靠,同时还能保障连接的安全性。

    4 年前
  • npm 包 ssb-typescript 使用教程

    简介 如果你是一名前端开发者,你一定经常需要使用一些 npm 包来加速你的项目开发。其中,ssb-typescript 是一个非常有用的 npm 包,它能够帮助你快速地开发 TypeScript 应用...

    4 年前
  • npm 包 default-shell 使用教程

    概述 npm 包 default-shell 是一个用于获取当前用户的系统默认 shell 的 JavaScript 库。通过这个库可以方便的获取系统环境变量并且可以在不同的操作系统间做到兼容性。

    4 年前
  • npm 包 shell-env 使用教程

    在前端开发过程中,我们经常需要在命令行中使用各种工具来进行项目构建、调试等操作。而在项目中使用 npm 包 shell-env,能够方便地在命令行中获取 Node、npm、git、操作系统等环境变量,...

    4 年前
  • npm 包 shell-path 使用教程

    在前端开发中,我们经常需要使用 shell 命令进行一些操作,比如编译、构建、打包等等。但是不同操作系统的 shell 命令也不尽相同,这就带来了不少的麻烦。为了解决这个问题,我们可以使用 npm 包...

    4 年前
  • npm 包 zii 使用教程

    1. 什么是 zii? zii 是一个可以用于前端开发的 npm 包。它提供了许多实用的功能和组件,可以帮助开发者更快地构建 Web 应用程序。zii 支持多种框架,如 React,Vue 和 Ang...

    4 年前
  • npm 包 async-single 使用教程

    介绍 async-single 是一个 NPM 包,它可以帮助开发人员将异步函数转换为支持类 Node.js 单线程环境的异步执行器,避免了常见的 Node.js 异步执行回调地狱问题。

    4 年前
  • npm 包 electron-compile 使用教程

    前言 随着互联网时代的到来,前端技术逐渐成为人们关注的焦点。越来越多的前端技术被开发出来,为开发者提供更好的开发体验。其中一个值得关注的技术是 electron-compile。

    4 年前
  • npm 包 @paulcbetts/mime-db 使用教程

    在前端开发中,经常需要处理文件的 MIME 类型,例如判断文件类型、渲染文件等。@paulcbetts/mime-db 是一个实用的 NPM 包,可以方便地获取文件的 MIME 类型信息。

    4 年前
  • npm 包 @paulcbetts/mime-types 使用教程

    在前端开发中,我们会经常遇到处理文件类型的情况。@paulcbetts/mime-types 是一个 NPM 包,可以方便地解析不同的文件类型。本文将介绍如何使用 @paulcbetts/mime-t...

    4 年前
  • npm 包 @paulcbetts/vueify 使用教程

    什么是 @paulcbetts/vueify @paulcbetts/vueify 是一个基于 Vue.js 的预处理器,它将 Vue.js 的单文件组件(.vue)转化为 JavaScript 模块...

    4 年前
  • npm 包 toutsuite 使用教程

    什么是 toutsuite? toutsuite 是一个方便的工具,可以帮助前端开发人员快速创建出精美的网站导航栏。它提供了丰富的样式和主题,功能强大,易于使用和定制,是开发高质量网站的必备工具。

    4 年前

相关推荐

    暂无文章