npm 包 truffle-contract-sources 使用教程

阅读时长 6 分钟读完

前言

在以太坊智能合约的开发中,有时需要在前端应用程序中调用智能合约函数。为了简化这一过程,我们可以使用 truffle-contract 包快速创建 JS 对象,并与智能合约进行交互。不过,当智能合约由多个源文件构成时,这一过程会变得更加复杂。

为了处理这一问题,truffle-contract-sources 包应运而生。此包提供了一种使用多个 Solidity 文件的方法,以便在前端代码中简单而直接地调用智能合约函数。本文将介绍如何使用 truffle-contract-sources 包,并提供一个详细的示例。

安装

我们可以使用 npm 即可安装 truffle-contract-sources 包:

同时,我们也需安装 truffle-contract 和 web3.js 包:

使用

在我们的前端应用程序中,我们首先需要导入服务提供商和 truffle-contract-sources 包:

然后,我们需要定义一些帮助函数来获取提供商和工件。这些函数将从应用程序的配置文件中获取应用程序的 Web3 提供商和智能合约工件:

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

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

现在我们已准备好使用 truffle-contract-sources 初始化我们的智能合约。这可以通过调用 normalizeContract 函数实现:

通过传入智能合约工件和提供商,我们创建了一个新的 truffle-contract-sources 实例。由于智能合约工件具有多个源文件,因此我们还需要指定主合约的名称。

接下来,我们可以简单地调用智能合约函数:

这里使用 TruffleContract 来包装我们的智能合约实例,并向其提供我们的提供商。然后,我们使用部署的智能合约实例来调用智能合约函数。

示例

让我们通过一个示例来演示如何使用 truffle-contract-sources。

假设我们有一个简单的智能合约,它由两个源文件组成。合约实现了加法运算:

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

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

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

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

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

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

我们需要将这些代码编译为智能合约工件,以便在前端应用程序中使用。为此,我们可以使用 Truffle 并提供以下 truffle.js 配置文件:

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

我们运行以下命令以编译智能合约代码:

现在,我们需要在前端应用程序中使用智能合约。我们可以创建一个配置文件来指定我们需要的提供商和工件路径:

接下来,我们使用前文提到的函数初始化智能合约:

最后,我们可以简单地调用智能合约函数:

结论

truffle-contract-sources 是一个非常有用的工具,可帮助我们在前端应用程序中轻松调用多个源文件组成的智能合约。虽然这对于智能合约开发者来说是一个非常便捷的工具,但我们应该记得,它仅是一个工具,而不应滥用。我们应该仔细思考我们的应用程序需要使用的智能合约,并谨慎使用这些包。

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

纠错
反馈