hyperledger fabric nodejs SDK开发(一)------SDK管理员注册机制

Fabric实战(11)SDK编程接口 1 Fabric接口协议和功能 Fabric的Peer节点和Orderer节点都提供了基于Grpc协议的通信接口,通过这些接口可以和Peer以及Orderer节点进行交互。 1.1Grpc协议简介 Grpc是由Google开发的一款语言中立、平台中立、开源的远程过程调用RPC系统。目前Grpc支持JAVA、GO、C、C++、Node.js、Python、Ruby、Objective-C、PHP、C... 阅读详情

SDK开发

在确定了开发的智能合约,我们必须为合约开发搭建合适的API,实现应用调用API,实现区块链服务的成功调用。我曾经尝试使用Composer 进行开发搭建。Composer 目前支持的fabric版本在1.2,而组织demo支持运行的1.0版本。简单的说 , hyperledger composer 是一个集成工具,他能更快的开发区块链应用。它能定义资产,参与者,事务方法(智能合约),权限控制等 来编写自己的业务; 然后打包业务 再部署到fabric区块链网络上。

我认为composer最大的好处就是:对fabric node sdk的封装+对chaincode的封装+权限的灵活扩展。但其最大的缺点在于无法提供复杂的应用开发机制,现在还处于发展阶段,所以我们根据业务选择了fabric原生开发包进行开发。

 SDK管理员注册机制

'use strict';  //使用严格的模式

/*

 * Enroll the admin user  //注册管理员

 */

//引入fabric客户端包

var Fabric_Client = require('fabric-client');

//引入fabric CA服务端包

var Fabric_CA_Client = require('fabric-ca-client');

//引入文件包

var path = require('path');

//引入工具包

var util = require('util');

//引入系统包

var os = require('os');

//新建一个fabric客户端实例

var fabric_client = new Fabric_Client();

//设置一个空的CA服务

var fabric_ca_client = null;

//管理员为空

var admin_user = null;

//用户为空

var member_user = null;

//设置完整的证书和密匙文件存储路径

var store_path = path.join(__dirname, 'hfc-key-store');

//打印出文件存储路径

console.log(' Store path:'+store_path);

//创建一个新的默认的键值存储数据库,通过设置好的完整路径。

// create the key value store as defined in the fabric-client/config/default.json 'key-value-store' setting使用default.json 'key-value-store' setting规定的js文件完成设置

Fabric_Client.newDefaultKeyValueStore({ path: store_path   

}).then((state_store) => {      //异步执行,创建新数据库后,获得数据库路径执行下面方法

// assign the store to the fabric client

//设置客户端存储路径,使其具有可插拔特性(持久保存)。

fabric_client.setStateStore(state_store);

//获得一个加密模块的变量,一个加密模块打包了数字签名的算法和使用非对称密钥对的加密功能,使用对称密钥加密的消息,安全的hashing处理和MAC。

    var crypto_suite = Fabric_Client.newCryptoSuite();

// use the same location for the state store (where the users' certificate are kept)

//在同样的路径下,获得加密文件存储路径

    // and the crypto store (where the users' keys are kept)

var crypto_store = Fabric_Client.newCryptoKeyStore({path: store_path});

//设置加密模块生成的加密文件的路径

crypto_suite.setCryptoKeyStore(crypto_store);

//在客户端设置一个加密模块的实例

    fabric_client.setCryptoSuite(crypto_suite);

    var tlsOptions = {  //设置tls选项,可信任根和不进行验证

     trustedRoots: [],

     verify: false

    };

// be sure to change the http to https when the CA is running TLS enabled 当CA运行TLS时,请确保将HTTP更改为HTTPS。

//将设置好的IP端口、加密模块和存储路径,传输安全设置、设置域名,生成一个CA服务实例

    fabric_ca_client = new Fabric_CA_Client('http://localhost:7054', tlsOptions , 'ca.example.com', crypto_suite);

 

// first check to see if the admin is already enrolled

//首先检查管理员是否已经注册

    return fabric_client.getUserContext('admin', true);

}).then((user_from_store) => { //如果存在路径且已经注册,则输出成功注册

    if (user_from_store && user_from_store.isEnrolled()) {

        console.log('Successfully loaded admin from persistence');

        admin_user = user_from_store;

        return null;

    } else { //使用CA服务去注册用户,输入ID和密码

        // need to enroll it with CA server

        return fabric_ca_client.enroll({

          enrollmentID: 'admin',

          enrollmentSecret: 'adminpw'

        }).then((enrollment) => { //获得注册信息。打印出注册成功

          console.log('Successfully enrolled admin user "admin"');

          return fabric_client.createUser(  //生成用户,通过注册信息生成加密材料(私钥和签名证书)

              {username: 'admin',

                  mspid: 'Org1MSP',

                  cryptoContent: { privateKeyPEM: enrollment.key.toBytes(), signedCertPEM: enrollment.certificate }

              });

        }).then((user) => {  //获得用户,将该用户设置为管理员账户

          admin_user = user;

          return fabric_client.setUserContext(admin_user); //设置为当前客户端示例

        }).catch((err) => { //出错则打印错误

          console.error('Failed to enroll and persist admin. Error: ' + err.stack ? err.stack : err);

          throw new Error('Failed to enroll admin');

        });

    }

}).then(() => {   //打印出注册的账户名

    console.log('Assigned the admin user to the fabric client ::' + admin_user.toString());

}).catch((err) => { //打印出错误

    console.error('Failed to enroll admin: ' + err);

});

流程:

设置文件路径,设置加密模块,将二者联系在一起,生成加密模块实例,然后与IP、域名、TLS设置结合在一起,生成CA服务实例,检查是否注册管理员,注册则将其绑定为管理员打印输出,否则通过输入ID和密码注册到CA服务,然后通过信息生成加密材料,通过加密材料生成用户,将用户设置为管理员,打印日志即可。

希望大家关注我的微信公众号,有疑问可以后台留言。

Hyperledger Fabric 开发——Node.js SDK与fabric链码交互1 Hyperledger Fabric Writing Your First Applicationcd fabric-samples/fabcar && lse 立即下载

相关推荐

hpm6750evk2开发板(一)菜鸟入门

hpm6750与我们平时常用的stm单片机在开发环境和开发方法上有很大的区别,所以上手还是需要花一点时间的,拿到板子先不要急着上电调试,我们先找资料学习一下了,免得多走冤枉路,以下是我整理的一些学习资源,包括开发板使用手册、芯片SDK、开发工具、视频资料等,建议先把使用手册和学习视频先看了,再取搭建环境测试。最近刚入手一块hpm6750evk2开发板,花了几天时间学习,算是菜鸟入门了,今天分享一下学习过程。看完资料后,把开发工具安装上,下一篇文章我们分享一下调试工程的过程和遇到的问题。

Silas1750的博客 3083

fabric的nodejs的sdk开发,官方balance-transfer部署及测试

开发环境 操作系统:Ubuntu 18.04.1 LTS 软件工具版本: root@ubuntu:/home/wjl/nodejs/sample2/fabric-samples-1.3.0/balance-transfer# node -v v8.9.4 root@ubuntu:/home/wjl/nodejs/sample2/fabric-samples-1.3.0/balance-transf...

战争迷雾的专栏 3828

简单概述人形机器人的“大脑、小脑”

原创 仲翔云人形机器人产业通2024年09月13日 19:41上海人形机器人的大脑和小脑是其控制系统的关键组成部分,它们模拟了人类大脑和小脑的功能,以实现复杂的运动控制和决策过程。

AI生成曾小健3 2069

Node.js SDK与fabric链码交互开发

  1、本篇背景 前面已经对链码开发作了比较详细的介绍,并且对官方提供的 fabcar 链码进行了解读,本篇将介绍如何使用 Node.js SDK 与区块链网络中的链码进行交互。 本篇内容基本来自官方 Hyperledger Fabric 文档中的 Writing Your First Application 章节,对文档进行翻译,原文网址如下: http://hyperledge...

weixin_34101784的博客 698

高动态范围结构光三维测量技术:从多曝光融合到深度学习的演进与应用

本文深入探讨了高动态范围结构光三维测量技术的演进与应用,从传统的多曝光融合技术到深度学习驱动的创新方案。通过工业案例展示了该技术在提升测量精度和效率方面的显著优势,特别是在处理高反光、复杂表面时的突破性表现。文章还提供了针对不同工业场景的技术选型指南,帮助工程师优化三维测量解决方案。

weixin_29063979的博客 293

手把手教你用运放搭建方波三角波发生器(附Multisim仿真文件)

本文详细解析了使用运算放大器搭建方波和三角波发生器的核心原理与设计步骤。通过剖析迟滞比较器与积分器的联动机制,指导读者进行电路设计、元件选型,并借助Multisim仿真进行参数调优与波形优化。文章提供了从理论分析、虚拟仿真到实物焊接调试的完整实践指南,并附有仿真文件,帮助硬件爱好者与初学者深入掌握这一经典模拟电路设计。

weixin_29165725的博客 638

超级账本HyperLedger:Fabric nodejs SDK的使用(附视频讲解)

作者:李佶澳转载请保留:原文地址发布时间:2018/04/25 11:11:00 说明 准备合适的node版本 用npm管理依赖包 Example 参考 说明 这是“网易云课堂IT技术快速入门学院”使用的素材。 操作、配置文件和代码讲解视频在网易云课堂《HyperLeger Fabric进阶实战课》第五章中。 当前(2018-04-25 11:16:...

weixin_30765505的博客 510

决策规划算法四:Piecewise Jerk Path Optimizer

一,问题分析 路径规划的本质目的:规划出一条安全(无碰撞),舒适(平滑),符合车辆运动学的轨迹。 如下图所示,决策算法开辟凸空间后,路径规划算法用数值优化的方法搜索出一条最优路径,即将问题转化为二次规划的问题,采用二次规划的求解器进行求解。 二次规划问题的求解顺序: 1,确定优化变量 2,确定目标函数 3,确定约束条件 4,将目标函数和约束条件变形为二次规划的标准形式 5,用二次规划求解器进行求解,获得优化变量的序列,使得目标函数取得最小值。 注:路径的最终表达式为:,..

肥嘟嘟的左卫门 8560

node 连接fabric网络

本次搭建网络开启tls,此次通讯基于grpcs、https通讯,在此记录一下,以免后续翻错。

编程人生的博客 582

深度学习与西储大学轴承数据集(一)

西储大学数据集介绍

weixin_50642818的博客 1万+

【ComfyUI】Flux + ControlNet 边缘搭配深度、瓷砖、姿态引导图生图

本文介绍了一个基于 Wan 2.1 的 ComfyUI 文生视频工作流,通过 UNet、CLIP 和 VAE 三个核心模型,将文本提示转化为动态视频。工作流包含模型加载、提示词解析、潜空间采样等7个环节,支持分辨率、帧数等参数设置,最终输出高质量视频文件。该方案适用于创意设计、教育培训和多媒体制作等场景,能快速生成符合语义的动态内容。文章还提供了相关开发资源和学习链接,适合AI视频生成领域的研究者和实践者参考。

Mr数据杨 1632

hyperledger fabric nodejs SDK开发(二)------SDK用户注册机制

SDK用户注册机制 'use strict'; /* * Register and Enroll a user //注册用户 */ var Fabric_Client = require('fabric-client'); var Fabric_CA_Client = require('fabric-ca-client'); var path = require('pat...

Rcvisual的博客 1433

YOLOv11改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合

可扩展的高效物体检测BiFPN(加权双向特征金字塔网络)

Limiiiing的博客 5494

006-基于hyperledger fabric1.4( 官方文档)编写第一个应用【外部nodejs调用】

一、概述 官方原文地址Writing Your First Application如果对fabric网络的基本运行机制不熟悉的话,请看这里。 注意:本教程是对fabric应用以及如何使用智能合约的简单介绍,对fabric应用及智能合约的详细介绍请看应用开发部分和商业票据教程。 本教程将介绍一些示例程序以助于理解fabric应用是如何工作的。这些应用和所使用的智能合约被称为FabC...

dilv4062的博客 480

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

编写nodejs代码

这部分内容参考:https://www.jianshu.com/p/a671c3002b64并作为简化 先在github.com目录下创建一个项目目录,名叫xiaowei-app cd $GOPATH/src/github.com/ mkdir -p fabric-sdk/xiaowei-app cd fabric-sdk/xiaowei-app 然后在这个目录创建几个js文件 1、新建 package.json { "name": "fabcar", "version": .

水上铁的专栏 1166

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

四、hyperledger fabric node sdk调用链码(fabcar)

一、nodejs安装这里就不介绍了。需要注意的是fabric对nodejs版本有要求。 进入到fabcar目录 1、设置npm源 npm config set registry http://registry.npm.taobao.org/ 2、npm install 二、启动 1、清除docker进程:docker rm -f $(docker ps -aq) 2、启动fabric...

u010857052的专栏 1450

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

HyperLeger Fabric开发(六)——HyperLeger Fabric智能合约(链码)

HyperLeger Fabric开发(六)——HyperLeger Fabric智能合约(ChainCode) 一、链码(Chaincode)简介 1、链码简介 在Fabric中,智能合约也称为链码(chaincode),分为用户链码和系统链码。系统链码用来实现系统层面的功能,包括系统的配置,用户链码的部署、升级,用户交易的签名和验证策略等;用户链码用于实现用户的应用功能,开发者编写链码应用程序...

weixin_34130389的博客 927

基于链码的身份属性访问控制

什么是ABAC?大家可以先去看看这个文章,讲的还不错。 https://blog.youkuaiyun.com/zqc1106100200/article/details/83505230 这是 fabric-samples 中 链码 abac 的使用案例。本文从开发的角度对各个接口进行说明,搞清楚开发中是怎么用的。详细的 chaincode 可以看这个链接。 https://github.com/hyperledger/fabric-samples/blob/main/asset-transfer-abac/cha.

weixin_41946008的博客 750

FISCO BCOS+SpringBoot+Ubuntu国赛区块链后端实战指南

区块链后端开发是面向联盟链场景的工程实践能力,核心在于国产可控框架的快速集成与稳定交付。FISCO BCOS作为通过国家网信办备案的国产联盟链,提供完善的Java SDK和SM国密支持;SpringBoot凭借自动配置与REST API开箱能力,显著降低工程初始化成本;Ubuntu 22.04 LTS则以稳定的内核、丰富的apt源和清晰的错误提示,成为国赛指定的首选Linux环境。三者组合构成‘可验证、可部署、可评分’的闭环技术栈,广泛应用于技能大赛、政务链、金融存证等需自主可控与快速落地的领域。本文聚焦该

weixin_33768481的博客 513

Hyperledger Fabric 1.2系列fabcar: 4. query的执行过程

从上一篇内容我们可以看到,执行node query.js之后,返回了 CAR0~CAR9 的信息。那这整个流程都做了些什么操作? 解析 query.js 我们用编辑器打开query.js 'use strict'; /* * Copyright IBM Corp All Rights Reserved * * SPDX-License-Identifier: Apache-2.0 */ /...

予衡飞翔 908

Fabric node sdk交互测试

使用 Fabric 完成基础的网络配置和链码的编写和部署后,还需要我们进一步通过上层应用服务,完成对底层Fabric搭建的联盟链的调用。本文提供使用 nodejs 编写的上层 sdk 完成对链码的调用操作。当然,也可以使用 go 语言,异曲同工。enjoy! 1 基础 chaincode 编写 在 chaincode 文件夹中创建nodejs环境 # 1.进入 chaincode 目录 c...

攻城老湿的博客 458

Hyperledger Fabric 客户端开发三

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34197488的博客 1213

学习记录:fabric(10)- fabric本身编译(2)

分析 编译完成就是来分析一下代码,为了接下来的修改。 已经有很多对源码的分析,但是看日期都是18年左右,肯定都是1.x版本(甚至是0.8),2.x改变了链码的调用部分,我关注的恰恰是这部分,所以还是得自己动手看。 我看的版本是2.3。还是有一些不同,看的过程我也记下来,方便以后查看。 fabric编译:fabric的docker镜像,在make之后,会直接加入到docker的镜像列表里。 整体结构 fabric从网上git下来就是如下的结构: 我这里用goland打开了项目。文件和文件夹很多,build

ychyssss的专栏 8539

Hyperledger Fabric 2.2实战记录(二)

四、使用Fabric-SDK-Go调用链码 在Org1的peer上使用SDK 1.安装Fabric-SDK-GO go get github.com/hyperledger/fabric-sdk-go 2.复制Org2的tls证书 mkdir -p ~/work/example/organizations/peerOrganizations/org2.example.com/tlsca cd ~/work/example/organizations/peerOrganizations/org2

ling的专栏 3854

Fabric学习:Fabric源码

系统运行架构。 下图是上图简化版。 Orderer排序节点配置文件: orderer.yaml 通用配置文、账本配置、Kafka配置 ...

好好休息.. 1295
上一篇: hyperledger fabric 智能合约开发(六)------其他合约接口
下一篇: 商业公链源码解析(零)------目录
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值