npm 包 @gnosis.pm/util-contracts 使用教程

阅读时长 8 分钟读完

前言

在以太坊智能合约开发中,对智能合约进行测试、评估和部署都需要用到多个工具和辅助库。其中, @gnosis.pm/util-contracts 这个 npm 包提供了一组实用函数,可以大大简化智能合约开发、测试和部署的流程。

本篇文章将详细介绍如何使用该 npm 包,并给出一些实例代码。

安装

要使用 @gnosis.pm/util-contracts 包,需要首先在本地项目中安装它。使用 npm 命令进行安装:

使用方式

1. 合约部署和测试

在编写智能合约时,部署和测试是一个必须的步骤。对于 @gnosis.pm/util-contracts 包中的一些函数可以在这方面提供一些帮助。

首先,需要使用 truffle-hdwallet-provider 来链接到以太坊网络,然后可以使用以下代码来部署合约:

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

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

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

-------------------
展开代码

除部署外,还可以使用以下代码来测试合约:

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

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

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

-----------------
展开代码

请注意:使用部署和测试代码之前,请确保你拥有足够的测试以太币或者主网以太币。

2. ABI 解析

@gnosis.pm/util-contracts 包中还提供了一些函数,可以解析 ABI 以及为 ABI 对象生成 JS 绑定。以下代码演示了如何使用这些函数:

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

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

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

----- ---------- - ---------------------- -------------
------------------------
展开代码
  • parseAbi(abi) 返回整个 ABI 的解析结果。
  • getAbiEntry(parsedAbi, name) 根据函数名返回 ABI 对象。

3. ERC-20 相关操作

通过 @gnosis.pm/util-contracts 包,可以对 ERC-20 智能合约进行以下操作:

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

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

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

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

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

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

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

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

------------------------
-----------
展开代码
  • getERC20Balances(addresses, owner, abi, signer) 返回某个账户地址在多个 ERC-20 合约中的余额。
  • getERC20Allowances(tokenAddress, owner, abi, signer) 返回授权给某个账户地址在 ERC-20 合约中的代币数目。
  • approveERC20(tokenAddress, to, abi, signer, amount) 授权将 ERC-20 代币转移给某个账户地址。
  • transferERC20(tokenAddress, to, abi, signer, amount) 转移 ERC-20 代币给某个地址。

结语

@gnosis.pm/util-contracts 是一个可以简化以太坊智能合约开发流程的 npm 包。本篇文章详细介绍了如何使用其提供的函数,希望能够为大家带来帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/203977