深度探索区块链/实现数据隔离的多链和多通道(7)

一。数据存储对多链的支持

这个目录下面有两个目录:businesschannel和pocchannel。它们代表的是两个通道,也就是两个链的数据,每个链现在只有一个区块文件,blockfile_是文件名中固定的前缀,000000是固定的6位占位符,下一个文件名会依次递增。从这个目录结构可以看到,记账节点在底层账本数据存储的时候就对不同链的数据进行了隔离

排序节点会存储所有链的账本数据,排序节点除了可以选择序列化区块文件的格式外,还支持JSON文件格式和内存数据结构的账本数据,后面两种都只在测试环境下使用。序列化区块文件和JSON文件格式区块文件的存储目录一般是/var/hyperledger/production/orderer/chains。其中,orderer/chain是固定的目录后缀。同样地,不同链的账本数据存储在以通道名称为目录名称的目录中,以实现不同链账本数据的物理隔离内存数据的账本数据没有持久化的存储,不同链的账本数据存储在不同的数据结构中

7.1.2索引数据

记账节点和排序节点都会给账本数据建立索引,不同的是排序节点只会建立以BlockNum为属性的索引。

索引文件存储的目录是/var/hyperledger/production/ledgersData/chains/index,其中,ldegersData/chains/index是记账节点上固定的目录后缀,排序节点上的目录后缀是orderer/index。

下面是一个记账节点上的索引数据的目录:

[email protected]:/var/hyperledger/production/ledgersData/chains/index# tree

|--000002.1db

|--000007.log

|--CURRENT

|--LOCK

|--LOG

--MANIFEST-000008

0 directories,6 files

索引数据是存储在LevelDB数据库里的,数据库的类型目前是不可选的。LevelDB是持久化的K-V数据库,在保存索引的时候会加上ledgerid作为前缀,当然生成的组合键在构造的时候是要先转换成[]byte数组的。由于索引数据存储在同一个数据库中,所以对于不同链的数据,索引数据的实现是逻辑隔离的,并非是物理隔离的。

7.1.3状态数据

7.1.4历史数据

二。链码对多链的支持

三。多通道对多链的支持

四。命令行和SDK对多链的支持

五。关于系统链

六。本章小结

原文地址:https://www.cnblogs.com/kaixinyufeng/p/9463621.html

时间: 2024-10-04 23:06:30

深度探索区块链/实现数据隔离的多链和多通道(7)的相关文章

深度探索区块链/基于数字证书的成员管理服务(8)

基于数字证书的成员管理服务 hyperledger Fabric 1.0基于PKI体系,生成数字证书以标识用户的身份.每个身份和成员管理服务提供商(Membership Service Provider,MSP)的编号进行关联. 一.实现成员管理的MSP MSP(Membership Service Provider):成员管理服务提供商,是Hyperledger Fabric1.0中引入的一个组件.目的:抽象化各成员之间的控制结构关系. MSP将证书颁发,用户认证,后台的加密机制和协议都进行了

黑客专家深度分析区块链技术主要用途

区块链的缺陷及其面临的技术挑战,黑客教父郭盛华试图警示大家:该技术还处于非常早期的阶段,企业应做足信息安全措施,以防泄露信息. 区块链技术可以集成到多个领域.目前,区块链的主要用途是作为加密货币的分布式账本,最值得注意的是比特币.虽然在印度,中国,美国,瑞典,新加坡,南非和英国等国家的几个中央银行正在研究发行中央银行颁布的加密货币(CICC),但迄今为止没有这样做. 一般潜力 区块链技术在长期转变商业运营模式方面具有巨大潜力.区块链分布式分类账技术更像是一种基础技术 - 具有为全球经济和社会系统

[转帖]深度解析区块链POW和POS的区别

深度解析区块链POW和POS的区别 Proof of Work 还有Proof of Stake 之前理解程了 state ... 股权的意思 还有 delegated proof of Stake 能够部分解决 浪费电力的问题. 来源 http://blockchain.51cto.com/art/201904/595846.htm 简单而言,PoW 和 PoS 是 2 种不同的对记账权利的分配方式. PoW POW(Proof of Work)直译过来即是工作证明,也叫工作量证明.(例子:B

成为自己区块链应用数据价值的主人

通过CBD生态构建供应链的生态新玩法,我们给Dapp开发者带来了什么样新的体验和新的玩法?我从五个方面对比了我们(yunbao)区块链应用上开发的Dapp和其它公链上开发的Dapp: 第一,区块链数字身份.其实我们在之前的链上开发,每个人或者匿名,或者没有身份,或者只有一个钱包的帐户.通过这个帐户和其它应用做一个交互.但是在我们区块链应用上,我们给用户做了KYC,这些用户在KYC之后获得一个通用的数字身份,我们称之为GID,通用数字身份.有了这个身份之后,你可以在链上证明你自己是谁,接下来很多应

[读书系列] 深度探索C++对象模型 初读

2012年底-2014年初这段时间主要用C++做手游开发,时隔3年,重新拿起<深度探索C++对象模型>这本书,感觉生疏了很多,如果按前阵子的生疏度来说,现在不借助Visual Studio之类的工具的话,写C++代码感觉要比较费劲,最近重读了这本书后,感觉要写点东西下来(因为懒得用笔作笔记,太慢了-_-!)加深下印象. 以前还是新手的时候,总是认为: 1.class如果没有定义任何constructor的话,编译器会自动合成一个default constructor(我习惯叫缺省的构造函数)出

《深度探索c++对象模型》chapter1关于对象对象模型

在c++中,有2种class data member:static和nostatic,以及3钟class member function:static,nostatic和virtual.已知下面这个class Point声明: class Point { public: Point(float xval); virtual ~Point(); float x() const; static int PointCount(); protected: virtual ostream& print(o

《深度探索c++对象模型》chapter3 Data语意学

一个空的class:如 class X{} ; sizeof(X)==1; sizeof为什么为1,他有一个隐晦的1 byte,那是被编译器安插进去的一个char,这使得class2的两个objects得以在内存中配置独一无二的地址: X a,b; if(&a==&b) cerr<<"yipes!"<<endl; class X{}; class Y:public virtual X{}; class Z:public virtual X{};

【深度探索C++对象模型】第二章 构造函数语意学(上)

第二章 构造函数语意学(The Semantics of Constructors) -- 本书作者:Stanley B.Lippman 一.前言 首先让我们来梳理一个概念: 默认构造函数(Default Constructor) : 是在没有显示提供初始化式时调用的构造函数.它由不带任何参数的构造函数,或是为所有形参提供默认实参的构造函数定义.如果定义的某个类的成员变量没有提供显示的初始化式时,就会调用默认构造函数(Default Contructor). 如果用户的类里面,没有显示的定义任何

《Android深度探索》第十章心得体会

<Android深度探索>第十章讲的是嵌入式Linux的调试技术.对于复杂的Linux驱动及HAL等程序库,需要使用各种方法对其进行测试.printk函数的用法和printf函数类似,只不过printk函数运行在内核空间,printf函数运行在用户空间.也就是说,像Linux驱动这样的Linux内核程序只能使用printk函数输出调试信息.在Linux文件系统中,/proc经常用来作为内核空间和用户空间进行数据交互的工具./proc文件系统的行为方式和设备文件系统(/dev)类似./proc是