hyperledger fabric nodejs SDK开发(三)------SDK查询机制

Hyperledger Fabric java sdk 链码访问快速上手【无痛】 在超级账本Fabric区块链中,应用通过节点的RPC协议接口访问链码。Java应用可以使用官方提供的Fabric-sdk-java开发包来实现对链码的访问,开发包封装了Fabric区块链的GRPC链码访问协议,有利于开发人员聚焦于业务逻辑。不过Fabric-sdk-java的文档质量保持了Hyperledger Fabric产品一贯的不知所云,看起来实在是... 阅读详情

SDK查询机制

async indexPage ( ctx ) { //异步函数indexPage

        const title = 'admin page' //设置一个title的常量

        let result = ''       //设置一个块变量result

        const body = ctx.request.body;  //获取传入请求的内容

      console.log(`request`,body.k0)   //打印出请求的内容k0 

        var fabric_client = new Fabric_Client(); //新建一个客户端实例

                  var key = "name"     //变量key,初值name

                  // setup the fabric network  启动fabric网络

                  var channel = fabric_client.newChannel('mychannel');  //发送消息到order来构建一个新的channel,命名为mychannel,返回一个空对象

                  var peer = fabric_client.newPeer('grpc://localhost:7051'); //创建一个新的节点

                  channel.addPeer(peer);  //将节点添加到通道

                  //设置成员变量为空

                  var member_user = null;

                  var store_path = path.join(os.homedir(), '.hfc-key-store'); //设置文件存储路径

                  console.log('Store path:'+store_path);  //打印文件存储路径

                  var tx_id = null;  //设置交易id为空

                  // create the key value store as defined in the fabric-client/config/default.json 'key-value-store' setting

       //设置加密材料的默认存储路径

                  result = await Fabric_Client.newDefaultKeyValueStore({ path: store_path

                  }).then((state_store) => { 

                      // assign the store to the fabric client //客户端设置存储路径

                      fabric_client.setStateStore(state_store);

                      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);

            //检查用户1是否已经注册,这个用户信息从持久存储文件中获得,用户将签名所有的请求

                      // get the enrolled user from persistence, this user will sign all requests

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

                  }).then((user_from_store) => {  //如果用户已经注册,则将用户设置为成员用户

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

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

                          member_user = user_from_store;

                      } else {  //否则再次注册

                          throw new Error('Failed to get user1.... run registerUser.js');

                      }

            //构建查询请求对象,四个参数,包括链码名称、交易id,调用函数、参数。

                      // queryTuna - requires 1 argument, ex: args: ['4'],

                      const request = {

                          chaincodeId: 'dateContract10',

                          txId: tx_id,

                          fcn: 'query',

                          args: [body.k0,body.k1]

                      };

            //将请求发送到指定对等节点,并由其对应的chaincode返回结果,所有的调用发送到invoke方法,同时在chaincode实现该方法,用字节数组返回结果。

                      // send the query proposal to the peer

                      return channel.queryByChaincode(request);

                  }).then((query_responses) => {  //得到查询结果,打印日志

                      console.log("Query has completed, checking results");

             //如果使用多个对等点作为目标,query_responses可以具有多个结果

                      // query_responses could have more than one  results if there multiple peers were used as targets

            //如果查询结果为一个,则

                      if (query_responses && query_responses.length == 1) {

                          if (query_responses[0] instanceof Error) { //如果查询结果继承了错误,则打印错误日志,结果为未获得数据

                              console.error("error from query = ", query_responses[0]);

                              result = "Could not locate tuna"

                          } else {  //否则打印出成功响应,且以string形式返回返回结果

                              console.log("Response is ", query_responses[0].toString());

                    return query_responses[0].toString()

                          }

                      } else {  //没有从查询返回有效响应

                          console.log("No payloads were returned from query");

                result = "Could not locate tuna"

                      }

                  }).catch((err) => {  //打印出错误,结果未查询失败

            console.error('Failed to query successfully :: ' + err);

            result = 'Failed to query successfully :: ' + err

           

                  });  //使用查询结果result和title,渲染query模板。

await ctx.render('query', {

            title,result

        })

     

},

流程:

与前端交互,获取前端输入内容,新建一个客户端实例,初始化网络,设置通道,节点,文件路径,加密材料存储路径,交易ID,构造请求参数,然后发送到背书节点,链码模拟执行,返回背书结果(字节数组),然后使用render渲染模板,实现前端更新。

编写你的第一个hyperledger fabric network程序 Writing Your First Application 编写你的第一个程序。 本文档的目标是使阅读本文档的人能基于HyperLedger Fabric Network编写自己的第一个程序。 在这个程序里,我们提供最基本的功能: 用户能在账本中查询一条数据或者用户更新账本中的一条数据。 我们的程序是使用JAVASCRIPT编写,运行在NODEJS平台上。 此文档将会指导你通过三步去 阅读详情

相关推荐

Hyperledge Fabric——SDK简介

Farbric的Peer节点和Orderer节点都提供了基于gRPC协议的接口,用于和Peer节点与Orderer节点进行命令/数据交互。为了简化开发,为开发人员开发应用程序提供操作Fabric区块链网络的API,Fabric官方提供了多种语言版本的SDK。 Fabric提供了三种语言版本的SDK,分别如下: A、Fabric Nodejs SDK B、Fabric Java SDK C、Fabric Go SDK Fabric区块链应用可以通过SDK访问Fabric区块链网络中的多种资源,包括账本、交易、

区块链领域填坑的java程序猿 914

基于hyperledger fabric 联盟链 + vue cli的项目搭建完整教程(五)

基于hyperledger fabric 联盟链 + vue cli的项目搭建完整教程五、基于fabric-node-sdk后端代码搭建1. fabric区块链查询nodejs代码2. fabric区块链修改(插入,删除)nodejs代码3. 配置路由3. Vue调用测试 五、基于fabric-node-sdk后端代码搭建 在完成了链码的撰写和部署安装实例化之后,我们开始koa后端搭建 1. fabric区块链查询nodejs代码 基础思路是调用node-sdk的queryChaincode方法 async

weixin_44062177的博客 3220

Hyperledger Fabric 开发——Node.js SDK与fabric链码交互1

Hyperledger Fabric Writing Your First Applicationcd fabric-samples/fabcar && lse

1、使用fabric node sdk1.4.8创建通道

文章目录声明使用的版本准备工作创建通道的思路开始用sdk实现参考网站 声明使用的版本 fabric版本如下:1.4.8 node-sdk版本:1.4.8 node版本:v8.11.1 ubuntu版本:16.04 准备工作 首先需要准备一个区块链的网络文件,我先贴一个下文用到的,可以参加我的来进行修改 { "name": "Network", "version": "1.0", "channels": { "mychannel": { "orderers":

孤独的糖三角 414

从CLIP到AnomalyCLIP:零样本异常检测的跨领域进化之路

本文探讨了从CLIP到AnomalyCLIP的技术演进,重点介绍了零样本异常检测在跨领域应用中的突破。AnomalyCLIP通过对象无关提示学习和多尺度特征提取,显著提升了工业质检、医疗影像等领域的检测精度,实现了高达96.4%的金属螺母划痕检测精度和85.7%的皮肤癌敏感度。这一技术为多模态模型在异常检测中的应用开辟了新路径。

r2s3t4的博客 111

重装系统后,恢复Oracle的.ORA文件

前几天,系统莫名奇妙产生很多宏病毒,进而感染整个C盘,不得已,格式化后重装了系统。 重装系统之后,突然想到D盘中的oracle中很多数据没导出来备份,安装文件下有很多有用的.ORA文件,抱着死马当活马医的态度,居然成功了。 1、将原来D盘(D:\oracle\product\10.2.0\oradata\orcl)下的数据文件备份下其他盘,将D盘的oracle目录名改成oracle1。安装数据

zhanggnol的blog 5551

Fabric 018 Nodejs-SDK query & invoke

运行express;安装npm install ---> fabric-client & fabric-ca-client & other express relations // invoke 'use strict'; var express = require('express'); var router = express.Router(); var ...

水野与小太郎的博客 507

一步一步搭建S32K14x的AutoSar项目----S32DS 代码工程的搭建

一步一步搭建S32K14X的AutoSar项目----S32DS代码工程的搭建

wo580231的博客 3487

node 连接fabric网络

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

编程人生的博客 582

UNet改进(12):融合小波变换与注意力机制的图像分割新方法

本文提出了一种改进的WaveletAttentionUNet架构,通过结合小波变换和注意力机制来增强传统UNet的多尺度特征提取能力。该网络使用分组卷积模拟小波分解,将输入通道扩展为4个子带(LL、LH、HL、HH),并通过通道注意力机制自适应加权各子带特征。网络保留了UNet的编码器-解码器结构,在关键位置集成了WaveletAttention模块。实验证明该方法在医学图像分割等任务中能更好地保持边缘细节和复杂纹理特征,同时保持计算效率。

2501_91516851的博客 758

如何离线环境下安装Dify插件 (可提供远程指导协助)

离线环境下安装Dify插件

litlit023的专栏 8100

Hyperledger Fabric 实战(1) fabric-sdk-node

Hyperledger Fabric 实战(1) fabric-sdk-node 关于Fabric SDK安装环境建node服务器invoke方法内容如下:query方法内容如下:注意 关于Fabric SDK 目前Fabric官方提供了四种语言版本的SDK,分别如下: 1 Fabric Nodejs SDK 2 Fabric Java SDK 3 Fabric Go SDK 4 Fabric P...

SoySauce_lm的博客 8211

LeRobot 入门教程(二)强化学习训练及 SmolVLA 模型微调

本文介绍了LeRobot框架中基于人类在环的样本高效强化学习(HIL-SERL)工作流,包含真实机器人训练和模拟环境训练两大模块。在真实机器人部分,详细说明了从配置设置、工作空间边界确定、演示数据收集、奖励分类器训练到演员-学习者架构部署的全流程,并强调了人类干预的关键作用。同时介绍了适用于模拟训练的gym_hil环境及其配置使用方法。最后,文章提供了微调SmolVLA基础模型的指南,包括数据集收集、微调步骤和模型评估方法。该工作流实现了人机协作的高效强化学习,适用于各类机器人操作任务。

2506_90492529的博客 3896

Hyperledger Fabric PHP SDK

Hyperledger Fabric PHP SDK是社区提供的用于Hyperledger Fabric区块链应用开发的软件包,其目的在于为PHP应用提供访问Hyperledger Farbic区块链的能力,例如:创建通道、安装链码、访问链码等等。 如果希望快速掌握Fabric区块链的链码及应用开发,建议访问汇智网的在线互动课程: Fabric区块链Java开发详解 Fabric区块链Node...

mongo_node的专栏 464

【Matlab】matlab代码实现sph溃坝模拟

本文介绍了一个基于MATLAB的SPH溃坝模拟实现。代码使用平滑粒子流体动力学方法,通过建立1000个随机分布的粒子,计算粒子间的相互作用力来模拟流体运动。模拟过程包括初始化参数、粒子创建、密度压力更新、速度位置计算以及可视化展示。核心算法采用poly6Kernel和spikyKernelGradient函数处理粒子间作用力。该示例为二维简化模型,仅包含基本物理参数和计算流程,实际应用需进一步优化扩展。

unber的博客 206

【报错解决】OpenClaw 报错 Unsupported engine: requires node >=22.0.0 —— Node.js 版本过低的完整排查与解决实录

在国产操作系统环境下部署OpenClaw时遇到"Unsupported engine: requires node >=22.0.0"报错,分析表明该工具要求Node.js 22+以支持fetch API等新特性。解决方案包括:1) 使用nvm升级Node至22+版本;2) Docker环境中改用node:22-alpine镜像;3) 不推荐强制忽略引擎检查。文章强调遵循引擎要求的重要性,指出环境版本是工程化体系稳定运行的关键,建议通过规范升级解决兼容性问题。(149字)

博客 607

hyperledger fabric nodejs SDK开发(五)------SDK其他功能

SDK其他功能 Class:Channel 1, new Channel(name, clientContext)创建一个通道实例 Name 通道名 licentContext客户端实例 2, addOrderer(orderer, replace)添加排序节点 节点名 是否覆盖之前同名的节点(boolean) 3,addPeer(peer, mspid, mspid, roles...

Rcvisual的博客 813

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

ES8388音频Codec寄存器配置实战:从录音到播放的完整指南

音频Codec是嵌入式系统中连接数字音频处理器与模拟声音世界的桥梁,而寄存器配置则是掌控Codec行为的核心手段。在Linux音频驱动开发中,理解I2C/I2S总线上数据传输与寄存器映射关系,是定位无声、杂音、爆音等问题的关键。ES8388作为电视盒子、智能音箱等领域广泛应用的音频Codec,其寄存器布局规整,覆盖电源管理、时钟分频、ADC/DAC通路、混音输出等完整链路。通过掌握从软复位到电源时序、从接口格式到增益调节的配置顺序,工程师可以系统化地完成录音与播放通路的初始化。本文结合真实项目经验,详解ES

weixin_34348174的博客 409

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

hyperledger Fabric node sdk 1.4 简明教程

hyperledger fabric的node sdk最新版本为1.4,本文将介绍如何使用最新版本的fabric node sdk开发node.js应用,以实现与fabric区块链的交互,例如查询链码状态,或者提交链码交易。 本文分五个部分来介绍node.js开发人员如何快速上手fabric node sdk: 工作原理:介绍fabric node sdk的工作机制与实现原理 身份标识:介绍在f...

mongo_node的专栏 616

IDEA的使用指南

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

使用Hyperledger Fabric Java SDK 构建和部署区块链网络(windows下)

在区块链解决方案中,区块链网络作为后端与应用程序前端一起使用SDK与网络通信。为了建立前端和后端之间的通信,Hyperledger Fabric社区为各种编程语言提供了许多SDK,如NodeJS SDK和Java SDK。此代码模式解释了使用Hyperledger Fabric SDK Java创建,部署和测试区块链网络的方法。 此模式将提供由两个组织组成的Hyperledger Fabric 1...

weixin_43946212的博客 2328

Fabric 019 NodeJs-SDK

简介 此篇文章重点介绍Nodejs-SDK中部分常用的方法,为了便于理解方法的使用,故按照不同功能划分并释义;其中可能在一个功能中涉及到了很多个类方法的使用。 创建、更新Channel通道 client.extractChannelConfig(config_envelope) 从configtxgen工具生成的ConfigEnvelope对象中提取protobuf结构的ConfigUp...

水野与小太郎的博客 912

区块链在中国(1):IBM HyperLedger fabric

在我看来,比特币就是现实中的V字仇杀队,当然现实是更残酷的世界政府,这场博弈关乎着人类文明、政治、社会属性、经济和人权。 IBM HyperLeger 又叫 fabric,你可以把它想象成一个由全社会来共同维护的一个超级账本,没有中心机构拥揽权力,你的每一笔交易都是全网公开且安全的,信用由全社会共同见证。它与Bitcoin的关系就是,你可以利用fabric构建出一个叫Bitcoin的应用来帮助你

5万+

Hyperledger Fabric SDK

多个版本的SDK目前有5个版本的SDK 由官方在维护,其中node版本的SDK是最稳定,最全面的。官方关于SDK的实例就是使用的node版本的SDK,我们后面介绍的也是这个。 fabric-sdk-node fabric-sdk-java fabric-sdk-go fabric-sdk-py fabric-sdk-rest Fabric SDK for Node.js它提供了一个功能强大的API来

BigManing的博客 4878

fabric sdk php,Hyperledger Fabric PHP SDK

Hyperledger Fabric PHP SDK发布时间:2020-07-20 14:24:13来源:51CTO阅读:248作者:小智123Hyperledger Fabric PHP SDK是社区提供的用于Hyperledger Fabric区块链应用开发的软件包,其目的在于为PHP应用提供访问Hyperledger Farbic区块链的能力,例如:创建通道、安装链码、访问链码等等。如果希望...

weixin_35815036的博客 165
上一篇: hyperledger fabric nodejs SDK开发(二)------SDK用户注册机制
下一篇: hyperledger fabric nodejs SDK开发(四)------SDK修改账本机制
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值