npm 包 node-ledger-client 使用教程

介绍

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


猜你喜欢

  • npm 包 react-native-highlight-updates 使用教程

    在 React Native 应用中,我们经常需要关注组件状态及其变更。为了帮助开发者更加直观地理解组件状态的变化,我们可以使用 react-native-highlight-updates 这个 n...

    3 年前
  • npm包optical-js使用教程

    随着前端技术的更新迭代,我们需要日益高效地处理页面中的各种图片、视频等媒体资源,因此实现图片处理的工具也越来越受到前端工程师们的关注。其中一个 npm 包 optica-js ,就是一个提供了各种前端...

    3 年前
  • npm包 gold-iban-input 使用教程

    在现代的前端开发中,有许多优秀的 npm 包可以使用。其中,gold-iban-input 是一个非常实用的库,可以帮助开发者轻松地在网站上集成和管理国际银行账号。

    3 年前
  • npm 包 eslint-config-jm 使用教程

    在前端开发中,代码规范非常重要。而 eslint 是目前最受欢迎的代码规范工具之一。eslint-config-jm 是一款符合公司内部规范的 eslint 配置包,该包是基于 eslint-conf...

    3 年前
  • npm 包 redux-shape 使用教程

    前端开发中,状态管理对于应用程序的设计和复杂程度非常重要。在 React 应用程序中,Redux 是一个流行的状态管理工具。然而,Redux 自身不提供任何数据结构或核心结构。

    3 年前
  • npm 包 wct-headless 使用教程

    在前端开发中,我们经常需要进行单元测试来保证代码质量和稳定性。wct-headless 是一个 npm 包,它可以让我们在无界面的浏览器环境中进行 Web 组件测试。

    3 年前
  • NPM 包 Vuex2VueX 使用教程

    在前端开发中,我们经常使用各种工具来提高开发效率和代码可维护性。其中,状态管理工具是非常重要的一种。Vuex2VueX 是 Vue.js 的状态管理库,它提供了一种集中式存储管理应用程序所有组件的状态...

    3 年前
  • npm 包 bst-lib 使用教程

    什么是 npm 包 bst-lib npm (Node Package Manager)是世界上最大的软件仓库之一,其中包含了各种各样的包,用于前端和后端开发。在这个仓库中,有一个叫做 bst-lib...

    3 年前
  • npm包ppcase-widget使用教程

    什么是PPCase? PPCase是一个专业的码农社区,旨在为开发者提供最新的技术资讯、交流、分享和求助,并提供代码托管、应用市场等优质服务。PPCase致力于成为中文开发者的信仰。

    3 年前
  • npm 包 @babyeyefe/localstorage 使用教程

    前言 在前端开发中,我们经常需要使用浏览器本地存储,而 LocalStorage 是其中一种比较常用且方便的方式。然而,官方提供的 LocalStorage API 的使用方式有些繁琐和不便,因此一些...

    3 年前
  • npm 包 filstem 使用教程

    简介 filstem 是一个用于文件系统操作的 Node.js 模块,它提供了一系列非常方便的方法来处理文件和目录,比如读取、创建、修改、删除、重命名等。使用 filstem 可以帮助我们更加高效地编...

    3 年前
  • npm 包 @kingjs/descriptor.object.clone 使用教程

    在前端开发中,我们经常需要操作对象数据,例如复制一个对象。但是 JavaScript 中对象是引用类型,直接复制会导致原对象和复制后的对象共用同一块内存,修改一个对象会影响到另一个对象。

    3 年前
  • npm包@kingjs/descriptor.object.writable-symbol使用教程

    前言 随着前端技术的不断发展,越来越多的开发者开始使用各种工具和库来提高自己的工作效率,其中npm包@kingjs/descriptor.object.writable-symbol就是一款非常优秀的...

    3 年前
  • npm 包 @kingjs/descriptor.writable-symbol 使用教程

    简介 @kingjs/descriptor.writable-symbol 是一个 npm 包,它提供了一种方便的方法来创建可写的 Symbol。这可以非常有用,例如在创建对象时创建一个纯粹的数据描述...

    3 年前
  • npm 包 `generator-node-module-ts` 使用教程

    导语 当你在进行 Node.js 开发时,难免会涉及到创建 npm 包。而在创建的过程中,我们根据业务需求需要编写不同的代码,而这些代码可能会被用于多个项目中,因此,我们需要一种工具来帮助我们快速创建...

    3 年前
  • npm 包 @thematter_io/plasma.js 使用教程

    前言 随着前端技术的不断发展,现代前端开发越来越复杂,需要使用各种工具和框架来提高开发效率。其中,npm(Node Package Manager),是一个非常重要的工具,可以方便地下载并安装我们需要...

    3 年前
  • npm包 nvcli使用教程

    Nvcli 是一个基于命令行的工具,它可以对npm仓库进行查询,让我们能够更快捷地查询和安装npm包,而不需要去网页进行搜索和下载。 在本文中,我们将介绍如何安装和使用nvcli,并提供几个关于其实用...

    3 年前
  • npm 包 vue-co-dialog 使用教程

    在前端开发中,经常需要使用到弹窗功能。而 vue-co-dialog 是一个方便易用的 npm 包,可以帮助我们快速实现各种类型的弹窗。该 npm 包提供了丰富的选项和功能,可以满足大部分的业务需求。

    3 年前
  • npm 包 @kingjs/descriptor.is-frozen 使用教程

    如今前端开发中,我们经常需要用到对象。而对象可以包含若干个属性,这些属性都可以单独进行访问和修改。但是,由于 JavaScript 是一门动态语言,属性的新增和修改并没有受到限制,所以对象的属性会变得...

    3 年前
  • npm 包 elmish-ts 使用教程

    什么是 elmish-ts elmish-ts 是一个 JavaScript 库,它提供了一个用于构建在架构上工作的应用程序的模型,以及减少了在应用程序中出现的错误数量的 API。

    3 年前

相关推荐

    暂无文章