npm 包 node-ledger-client 使用教程

阅读时长 8 分钟读完

介绍

node-ledger-client 是一个用于连接 Hyperledger Fabric 的 Node.js 客户端。它支持用户与 Fabric 网络上的链码进行交互,包括查询和执行事务。

在本教程中,我们将学习如何使用 node-ledger-client 引用 Fabric 网络中的智能合约,并撰写一个简单的应用程序来演示如何使用它。

前提条件

在开始之前,您需要首先满足以下条件:

  • 拥有一个 Hyperledger Fabric 网络
  • 安装 node-ledger-client(您可以通过运行 npm install node-ledger-client --save 来安装它)
  • 实现您的智能合约,并将其部署到您的 Fabric 网络

连接 Fabric 网络

在开始使用 node-ledger-client 之前,您需要使用它来连接您的 Fabric 网络。这可以通过以下步骤完成:

  1. 首先,您需要获取您的 Fabric 网络的连接文件。这包括了您的网络的 IP 地址,TLS 证书以及 CA 证书。

  2. 接下来,您需要使用 createConnectionProfile 函数来创建一个连接文件:

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

    在上述代码中,您需要将 walletDirectoryPath 替换为您的钱包目录路径,并将 connectionProfilePath 替换为您的 Fabric 网络的连接文件路径。如果您的网络配置文件位于文件系统中,则可以使用 createFileBasedConnectionProfile 函数,以避免使用 fs 模块来读取文件。

  3. 通过使用 Gateway 类,您可以打开一个 Fabric 网络的通道,以便与网络进行交互。下面是一个使用 Gateway 类连接 Fabric 网络的示例:

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

    在上述代码中,您需要将 identity 参数替换为您作为 Fabric 网络的一员的身份信息。

  4. 现在,您已经连接到 Fabric 网络以及一个通道(在上述示例中为 mychannel),您可以通过使用 getNetwork 函数从通道中获得网络对象:

交互与链码

一旦您已经连上 Fabric 网络,您可以使用 getContract 函数从网络中获取一个链码对象,以便与其进行交互。

在本例子中,我们使用了名为 basic 的链码,其中定义了一个名为 put 的函数,用于向账本中写入键值对。我们将会向账本中添加一个键为 “foo”、值为 “bar” 的键值对。

下面是一个使用 getContract 函数获取链码对象的示例:

使用 getContract 函数,您可以调用链码中的函数。在本例子中,我们可以通过以下步骤调用 put 函数:

  1. 首先,您需要使用 JSON 格式制定该函数的参数:

  2. 使用 submitTransaction 函数将函数的请求发送至链码:

    在上述示例中,我们使用 submitTransaction 函数将函数的请求发送至链码。您还可以使用 evaluateTransaction 函数查询链码,该函数返回一个只读的事务,因此它不会在账本上提交任何更改。

完整实例

下面是一个使用 node-ledger-client 连接 Fabric 网络并向账本中添加键值对的完整示例:

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

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

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

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

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

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

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

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

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

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

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

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

-------
展开代码

运行以上代码,您将向账本中添加键为 “foo”、值为 “bar” 的键值对。

结论

通过使用 node-ledger-client 客户端,您可以轻松地与 Fabric 网络进行交互。在本教程中,我们学习了如何连接 Fabric 网络,从中获得链码对象,并向账本中添加一个键值对。然而,这些仅仅是 node-ledger-client 所能实现的事情的一小部分。您可以使用它来查询、修改账本,以及查询区块链上的交易记录。

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

纠错
反馈

纠错反馈