npm 包 web3-eth-contract 使用教程

阅读时长 5 分钟读完

在以太坊开发中,我们经常需要与以太坊智能合约进行交互。web3-eth-contract 是 web3.js 库的一部分,提供了方便的智能合约交互方法。本文将介绍 web3-eth-contract 的使用方法,包括如何部署合约、编写交互代码等内容。

web3-eth-contract 的安装

安装 web3-eth-contract 很简单,只需要在终端中运行以下代码即可:

部署智能合约

部署合约是与合约交互的第一步,下面是一个简单的合约,你可以根据自己的需要进行修改:

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

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

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

这是一个简单的智能合约,有一个公共的 myVariable 变量和一个 setVariable 函数,可以设置 myVariable 变量的值。现在我们使用 web3-eth-contract 部署这个合约:

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

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

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

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

我们首先连接了本地的以太坊节点,然后定义了部署合约的地址、合约 ABI 和合约字节码。使用 web3 生成了一个合约实例,然后调用了 deploy 方法部署合约。在 deploy 方法中,我们指定了合约字节码,并传递了 from、gas、gasPrice 参数。其中,from 参数表示谁来支付合约部署费用,gas 参数表示合约执行最大花费的 gas 数量,gasPrice 参数表示 gas 的价格。

send 方法会返回一个 Promise,我们可以使用 then 方法获取合约实例。在合约部署成功时,会触发 receipt 事件,我们在事件处理函数中获取智能合约地址。

与智能合约交互

使用 web3-eth-contract 与智能合约交互非常简单,下面我们来介绍一些交互的方法。

调用函数和获取变量值

假如我们已经有了部署成功的合约实例,我们可以使用如下方法来调用函数和获取变量值:

我们使用了 contract.methods 方法获取了合约上的 myVariable() 函数,使用 call 方法调用函数。同理,我们也可以使用 send 方法向合约发送交易的方式调用合约中的 setVariable 函数。

监听事件

除了调用函数和获取变量值,我们还可以监听合约中的事件,下面是一个简单的例子:

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

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

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

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

我们在合约中定义了一个 NewValue 事件,在 setVariable 函数中调用了该事件。下面是如何使用 web3-eth-contract 监听事件:

我们使用 contract.events 方法获取 NewValue 事件,然后可以使用 on 方法监听 data 和 error 事件,data 事件会在事件被触发时调用,我们打印出了 event.returnValues.newValue 的值。

总结

本文介绍了 web3-eth-contract 的使用方法,包括如何部署合约、调用函数与获取变量值以及监听事件。这些方法可以帮助我们轻松地与以太坊智能合约进行交互。希望本文对以太坊开发初学者有所帮助。

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

纠错
反馈