Hyperledger Fabric 之 Channel ,创建channel链接几项注意点
好长时间没有更新博客,网上也有很多fabric的部署资料,而且也都很不错,也比较全面。我就再想重复的工作暂时就不用做了,后面抽时间在做细化和分类;
就将学习和工作中遇到和解决的问题经验,做一些分享。
而这部分的经验在网上也很难找到。如果过程中有什么问题,希望朋友们可以留言。谢谢!!
1,Channel长连接
在new出一个channel连接时候,在客户端中会以channel名称存储的链接,所以在此获取通道时候,需要使用get


2,添加事件机制,1.2和1.3的区别
这里我们需要知道的时候,在fabric1.3以上的版本,已经将7053这个事件逻辑删除,将时间通知移植到了channel上面,也就是说在1.3以后的版本不需要使用addEventHub为每个
节点增加事件。
所以要想在代码层动态切换,就需要判断目标节点的fabric的版本
(a)对新建channel链接,对1.3版本,则不需要增加事件
(b)对在channel链接中,已经存在的节点事件,则需要将其删除。

备注:如何获取fabric的版本信息,可以通过docker images查看节点的版本。我这里使用的是脚本读取版本的信息。
3,多组织增加事件注意点
也许你在实际使用fabric的过程中,会经常遇到希望接收到Org1MSP,但是接收到是Org2MSP,这样的错误。
主要原因是在做交易的时候,传的用户归属的组织MSP传的不正确。这个是现象问题,但根本原因是在注册事件的时候,当时的用户归属MSP一定要对应目标组织。
先来看一下sdk源码:


上述,是在增加事件的时候,会使用当前channel链接中用户信息,链接服务器。也就是说一旦建立了链接,那么在整个channel的生命周期中,对目标节点的事件MSP都是当初用户的MSP。
如何解决这个问题,那么我们就要在注册这个链接的时候想办法


换句话说,在注册时间的时候,要检查当前用户归属的MSP,是否可以你增加的节点同属一个MSP,如果不是,则不注册事件,如果是则注册时间。当再次获取channel连接的时候,在检查一下当前所有事件连接是否正确,或未增加的,为增加的,再更加情况增加组织事件:

Hyperledger Fabric 之 Channel ,创建channel链接几项注意点的更多相关文章
- 搭建基于hyperledger fabric的联盟社区(一) --前言
三个月前上面发了一个关于智群汇聚和问题求解研究的项目,我们公司做其中的一个子项目,就是基于区块链的科技信息联盟构建.利用区块链的去中心化特性,构建一个基于区块链的科技社区,以提供科技群智汇聚采集的基础 ...
- Hyperledger Fabric on SAP Cloud Platform
今天的文章来自Wen Aviva, 坐Jerry面对面的程序媛. Jerry在之前的公众号文章<在SAP UI中使用纯JavaScript显示产品主数据的3D模型视图>已经介绍过Aviva ...
- 浅析Hyperledger Fabric共识算法 摘自http://www.cocoachina.com/blockchain/20180829/24728.html
Hyperledger Fabric共识算法 区块链系统是一个分布式架构,交易账本信息由各个节点管理,组成一个庞大的分布式账本.在分布式系统中,各个节点收到的交易信息的顺序可能存在差异(例如,网络延迟 ...
- Hyperledger Fabric【区块链学习一】
Hyperledger Fabric 学习 什么是区块链 什么是区块链在我们没有接触的时候,只知道它是一个去中心化的存储方式.当我们发生交易,或者动作的时候我们会将记录通知给所有参与者共同维护,达到去 ...
- Hyperledger Fabric(v1.2.0)代码分析1——channel创建
Hyperledger Fabric(v1.2.0)代码分析1--channel创建 0. e2e_cli Hyperledger Fabric提供了一个e2e的例子,该例中创建了一个基础的区块链网络 ...
- Hyperledger Fabric——balance transfer(三)创建和加入Channel
详细解析blance transfer示例的创建通道(Channel)和加入节点到通道的过程. 创建Channel 1.首先看app.js的路由函数 var createChannel = requi ...
- Hyperledger Fabric 中channel配置相关数据结构
channel Configuration Transaction Hyperledger Fabric区块链网络中的配置存储在一个configuration-transaction的集合中,每个ch ...
- Hyperledger Fabric channel配置交易
一个超级账本区块链网络里每个channel的共享配置都是存储在一个配置交易里.每个配置交易通常被简称为configtx. Channel 配置有以下重要属性: 1.有版本标识:配置里的所有元素都有一个 ...
- Hyperledger Fabric 1.0 从零开始(六)——创建Fabric多节点集群
4:创建Fabric多节点集群 4.1.配置说明 首先可以根据官方Fabric自带的e2e_cli列子中的集群方案来生成我们自己的集群,与案例不同的是我们需要把容器都分配到不同的服务器上,彼此之间通过 ...
随机推荐
- 使用网盘(Dropbox/Google Drive)同步Git仓库
还在使用老掉牙的U盘搬运代码(文件)的方式,从一台机器上复制后,粘贴到另一台机器上?太Out了.使用Github 倒是一个非常不错的替代方法.但无论是基于什么理由都有可能不想把代码公开(毕竟Githu ...
- LFS Linux From Scratch 笔记2(经验非教程)BLFS
LFS 完了. 其实还没完,还要装一些其他的组件,系统才算是对人类有用的系统. 正好这里有个BLFS Beyound Linux From Scratch 的教程. 其实,按照现有的可运行的LFS系统 ...
- HTML连载10-details标签&summary标签&marquee标签
1.详情(details)与概要(summary)标签 (1)作用:我们希望用尽可能少的空间来表达更多的信息,利用summary标签来描述概要信息,用details标签来描述详情信息 (2)格式: ...
- ABP开发框架前后端开发系列---(10)Web API调用类的简化处理
在较早期的随笔<ABP开发框架前后端开发系列---(5)Web API调用类在Winform项目中的使用>已经介绍了Web API调用类的封装处理,虽然这些调用类我们可以使用代码生成工具快 ...
- NSCache缓存怎么来的
什么是NSCache NSCache主要用来存储临时数据(键值对),当内存资源不够时,系统会自动释放部分数据.它有三个特点: • NSCache为了保持不占用过多的系统内存,它有多种自动回收内存策略: ...
- 实战Java的反射机制
众所周知,Java要调用某个对象的方法首先需要对象实例化后才能调用. 而实例化对象常见的就是new执行和spring(DI)的依赖注入了. Spring的DI其实就是以反射作为最基础的技术手段. 一. ...
- Hyperledger Fabric1.4的多机部署
之前的文章深入解析Hyperledger Fabric启动的全过程主要讲解了Fabric的网络搭建,以及启动的整体流程,但是都是通过单机完成的.而区块链本身就是去中心化的,所以最终还是要完成Fabri ...
- Django之用户认证auth模块使用
Auth认证模块 执行数据库迁移的那两条命令时,即使我们没有建表,django是不是也会创建好多张表?我们创建之后去看一下里面的一个叫auth_user表,既然是表,那肯定应该有对应的操作改表的方法 ...
- 纯异步nodejs文件夹(目录)复制
思路: 1.callback 驱动 2.递归所有需要复制文件 3.在一定阀值下并发复制文件 4.运行需要安装 async.js npm install async 代码如下: var asyn ...
- 【JAVA8】Set排序四种写法
工作中遇到,写了很久以前的写法,师兄给了很多建议,于是整理了一下.孔子曰:"你知道茴香豆的茴字有几种写法吗?" 第一种,平常的写法: public class App { publ ...