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 立即下载

相关推荐

3GPP协议解读_NTN系列(一)_38.811_非地面网络(NTN)的背景、应用场景和信道建模

非地面网络覆盖广,对物理攻击和自然灾害有一定的抵抗性。本文根据3GPP协议对NTN网络的背景、应用场景和信道模型进行了整理。

JCMLSY的博客 4925

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

基于FPGA的工业相机项目大赏1——cmos线阵相机

●CMOS CL0402 作为图像传感芯片,曝光后产生一定格式的图像数据;●FPGA ZYNQ7020 作为主控芯片负责cmos驱动控制、图像像素的采集、cmos寄存器的配置、cameralink协议的实现、上位机串口通信的实现;●Cameralink端子实现图像数据的高速串行发送,将数据传送至采集卡PC端。系统工作流程如下: FPGA 上电加载配置程序,计算机通过异步串口向 FPGA 发送控制信息,FPGA对接收的控制信息进行分析判断。

weixin_41895751的博客 6399

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

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

weixin_34101784的博客 698

IMA知识库:从0到1的架构设计与实践

本文探讨了AI时代知识库系统的架构设计与演进路径。通过分析知识入库、知识管理和知识应用三大核心业务流程,提出了应对数据多样性、处理标准化、流量洪峰等挑战的解决方案。重点介绍了基于统一数据格式的解耦设计、异步处理架构、服务拆分策略以及权限安全体系,构建了一个稳定、高效且可扩展的知识库系统。文章强调优秀架构需要持续演进,通过识别薄弱点不断优化,最终实现技术方案与业务需求的平衡。

lovehu6686的博客 1736

kali攻防第2章 内网称霸之渗透安卓系统

Kali内网称霸之渗透安卓系统   准备工具   1、准备一部实体android手机 2、使用KALI系统     要用到强大的msf工具(metasplot)   流程步骤 1、启动msf命令是msfconsole 2、在安卓手机上安装一个自己生成的apk木马程序 3、利用msf工具来远程连接Android系统   1)启动msf(注意这里是链接msf就行了不需要进

安全参透之旅 1万+

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

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

weixin_30765505的博客 510

Linux ELF文件解析:从file到readelf的完整工具链指南

ELF(可执行与可链接格式)是Linux系统中二进制文件的标准格式,定义了程序加载、内存布局和元数据组织方式。其核心原理在于通过程序头表描述执行视图、节区头表描述链接视图,实现代码与数据的结构化存储。这一格式的技术价值在于为程序调试、安全审计和性能优化提供了底层支持,尤其在动态链接、符号解析和内存保护机制中发挥关键作用。在应用场景上,系统管理员依赖ELF分析工具解决库依赖问题,安全研究员通过检查安全属性评估漏洞风险,开发者则利用反汇编进行代码调试。本文聚焦于file、readelf、objdump等工具链的

weixin_42691065的博客 635

node 连接fabric网络

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

编程人生的博客 582

因时机器人-灵巧手配置方案(Ubuntu18.04)

因时机器人-灵巧手配置方案(Ubuntu18.04)

CH_monsy的博客 3847

2.4 提示词优化

我们在使用大模型的时候,同一任务使用不同表述的提示词,可能得到差异巨大的结果,因为模型的性能高度依赖输入提示词的质量。我们可以通过提示词优化来更高效地获取理想输出。

从0到1,突破自己 1010

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

RK3588 部署 YOLO26 目标检测:从环境搭建到 NPU 推理

采集图像(500+ 张,覆盖不同光照和角度)→ 筛选(删除模糊、无目标的图像)→ LabelImg 标注(选择 YOLO 格式)→ 划分 train:val:test = 7:2:1labelImg├── train/├── val/nc: 3类别顺序必须与 LabelImg 标注时一致。YOLO26 在 RK3588 上的部署流程是 PC 端训练 → ONNX 导出(opset=11)→ RKNN 转换(INT8 量化)→ 板端推理。

LXY_LOVE36的博客 418

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

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

dilv4062的博客 480

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

编写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

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

四、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

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

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、付费专栏及课程。

余额充值