超级帐本(Hyperledger)
1. Hyperledger 项目
Hyperledger 下有两类项目:第一类是区块链框架项目;第二类是支持这些区块链的相关工具或模块。
在 Hyperledger 框架下,目前有 5 个区块链框架项目:Fabric、Sawtooth Lake、Iroha、Burrow 和 Indy。
在模块类下,则有 Hyperledger Cello、Hyperledger Composer、Hyperledger Explorer 和 Hyperledger Quilt。
Hyperledger 项目目前有 200 多个成员组织,并且有许多非常活跃的贡献者,在全球范围内定期定期组织聚会和演讲。
1.1 Fabric
Fabric 是 IBM 和区块链创业公司 DAH(Digital Asset Holdings) 提出的一个区块链项目。该区块链框架旨在为开发具有模块化架构的区块链解决方案提供基础。它基于可插拔的架构,可以根据需要将各种组件 (例如共识引擎和成员资格服务) 插入系统。它还利用容器技术,该技术用于在隔离你的封闭环境中运行智能合约。目前,它的状态是活跃的,这是第一个经历从孵化到活跃状态的项目。
注意: Fabric 的源代码可从以下网址获得: https://github.com/hyperledger/fabric |
1.2 Sawtooth Lake
Sawtooth Lake (锯齿湖)是 Intel 公司于 2016 年 4 月提出的一个区块链项目,其一些关键创新着眼于帐本与交易的脱钩、跨多个业务领域的灵活使用,以及可插入的共识。
对于这里所谓的脱钩 (Decoupling,也称为解耦),更精确的解释是,通过使用称为交易族(Transaction Families) 的新概念将交易与共识层脱钩。
交易族不是使用单独的帐本来耦合交易,它提供了更大的灵活性、更丰富的语义以及业务逻辑的开放式设计。交易遵循交易族中定义的模式和结构。
Intel 公司推出的一些创新元素包括缩写为 PoET 的新颖共识算法,即消逝时间量证明(Proof of Elapsed Time), 该算法利用英特尔软件保护扩展(Intel Software Guard Extensions, Intel SGX) 提供的可信执行环境(Trusted Execution Environment,TEE) 来提供安全而随机的领导者选举处理。它还支持许可和无许可设置。
注意: 该项目的源代码可以从以下网址获得: https://github.com/hyperledger/sawtooth-core |
1.3 Iroha
Iroha 由 Soramitsu、Hitachi、NTT Data 和 Colu 于 2016 年 9 月 贡献。 Iroha 的目标是建立可重用组件的库,用户可以选择在基于 Hyperledger 的分布式帐本上运行它们。
Iroha 的主要目标是通过提供用 C++ 编写的可重用组件 (重点是移动开发) 来补充其他 Hyperledger 项目。该项目还提出了一种称为 Sumeragi 的新型共识算法,该算法是基于链的拜占庭容错共识算法。
注意: 该项目的源代码可以从以下网址获得: https://github.com/hyperledger/iroha |
Iroha 已提出和使用各种库,其中包括但不限于数字签名库(ed25519)、SHA-3 哈希库、交易序列化库、P2P 库、API 服务器库、iOS 库、Android 库 和 JavaScript 库。
1.4 Burrow
Burrow 项目当前处于孵化状态。Hyperledger Burrow 由 Monax 公司贡献,Monax 公司开发了一个业务的区块链开发和部署平台。
Hyperledger Burrow 引入了模块区区块链平台和基于以太坊虚拟机的智能合约执行环境。Burrow 使用权益证明、拜占庭容错 Tendermint 共识机制,其结果就是,Burrow 提供了高吞吐量和交易的不可改变性。
注意: 该项目的源代码可以从以下网址获得: https://github.com/hyperledger/burrow |
1.5 Indy
该项目正在 Hyperledger 下进行孵化。Indy 是为建立去中心化身份而开发的分布式帐本。它提供了可用于构建基于区块链的数字身份的工具、实用程序和模块。这些身份可以跨多个区块链、域和应用程序使用。
Indy 拥有自己的分布式帐本,并使用冗余拜占庭容错(Redundant Byzantine Fault Tolerance, RBFT) 达成共识。
注意: 该项目的源代码可以从以下网址获得: https://github.com/hyperledger/indy-node |
1.6 Explorer
该项目旨在为 Hyperledger Fabric 构建一个区块链浏览器,可用于查看和查询来自区块链的交易、区块和关联数据,它还提供网络信息以及与链代码进行交互的能力。
注意: 该项目的源代码可以从以下网址获得: https://github.com/hyperledger/blockchain-explorer |
当前还有若干正在 Hyperledger 下孵化的其他项目,这些项目旨在提供工具和实用程序来支持区块链网络。
1.7 Cello
Cello 的目的是允许轻松部署区块链,这将提供一种允许 “作为一种服务" 部署区块链服务的能力。目前,该项目处于孵化阶段。
注意: 该项目的源代码可以从以下网址获得: https://github.com/hyperledger/cello |
1.8 Composer
该实用程序允许以一种业务语言描述业务流程,同时抽象出低级智能合约开发的细节,从而使区块链解决方案的开发更加容易。
注意: 该项目的源代码可以从以下网址获得: https://hyperledger.github.io/composer/ |
1.9 Quit
该实用程序实现了 Interledger 协议,Interledger 协议促进了不同分布式和非分布式帐本网络之间的互操作性。
注意: 该项目的源代码可以从以下网址获得: https://github.com/hyperledger/quilt |
2. Hyperledger 即协议
Hyperledger 旨在构建由行业用例驱动的新区块链平台。由于社区对 Hyperledger 项目做出许多贡献,因此 Hyperledger 区块链平台正在演变为业务交易协议。
与仅解决特定类型的行业或要求的早期区块链解决方案相比,Hyperledger 也正在发展成为可以用作构建区块链平台的参考规范。
3. 参考架构
Hyperledger 发布了一份白皮书,该白皮书提供了一种参考架构,可以用作构建许可分布式帐本的指南。参考架构由形成业务区块链的各种组件组成,下图显示了这些高级组件。
在上图中,可以看到 5 个提供各种服务的顶级组件。现在我们就来探讨一下这些组件。
首先是 Identity (身份),它将在成员资格服务下提供授权、标识和身份验证服务。
其次是 Policy (策略)组件,它将提供策略服务。
再次是 Blockchain ( 区块链 )和 Transaction (交易),其中包括分布式帐本、排序服务、网络协议以及背书(Endorsement) 和验证服务。该帐本只能通过区块链网络参与者之间的共识来更新。
最后是 Smart Contract (智能合约)。该层可以在 Hyperledger 中提供链码(Chaincode) 服务,并利用安全容器技术托管智能合约。
一般来说,从组件的角度来看,Hyperledger 包含以下元素:
- 共识层:这些服务负责促进区块链网络上参与者之间的协议流程。需要达成共识以确保交易的顺序和状态在区块链网络中得到验证和同意。
- 智能合约层:这些服务负责根据用户要求实现业务逻辑。根据驻留在区块链上的智能合约中定义的逻辑来处理交易。
- 通信层:该层负责区块链网络上节点之间的消息传输和交换。
- 安全和加密层:这些服务负责提供一种功能,以允许各种加密算法或模块提供隐私、机密性和不可否认性服务。
- 数据存储:该层提供使用不同的数据存储来存储帐本状态的功能。这意味着数据存储也是可插入的,并允许使用任何数据库后端。
- 策略服务:这组服务提供了管理区块链网络所需的不同策略的能力,它包括背书政策和共识政策。
- API 和 SDK :该层允许客户端和应用程序与区块链进行交互。SDK 用于提供在链上部署和执行链码、查询区块和监视事件的机制。
4. Hyperledger Fabric 的要求和设计目标
区块链服务有一定的要求。上述参考架构将由 Hyperledger 项目参与者提出的需求和要求驱动,并且是在研究了行业用例之后的结果。从工业用例的研究中,可以得出若干需求分类,在以下各节中将分别进行讨论。
4.1 模块化方法
Hyperledger 的主要需求是模块化结构。作为跨行业结构(区块链),它将在许多业务场景中使用。因此,与存储、策略、链码、访问控制、共识和许多其他区块链服务相关的功能应模块化且可插入。该规范建议模块应即插即用,并且用户应该能够轻松地删除和添加满足业务要求的其他模块。
4.2 隐私性和机密性
隐私性和机密性要求是最关键的因素之一。由于传统的区块链是无须许可的,因此,在像 Hyperledger Fabric 这样的许可模型中,最重要的一点是:网络上的交易仅对那些被允许查看的人可见。
交易和合约的隐私性和机密性在商业区块链中至关重要。因此,Hyperledger 的愿景是为各种加密协议和算法提供支持。
用户预计能够根据其业务需求选择适当的模块。例如,如果业务区块链仅需要在已经受信任的各方之间运行并执行非常基本的业务操作,那么也许就不需要针结机密性和隐私性的高级加密支持。因此,用户应该能够删除该功能(模块)或将其替找为更适合其需求的模块。
如果用户需要运行跨行业的区块链,那么隐私性和机密性可能是至关重要的。在这种情况下,用户应该能够将高级加密和访问控制机制(模块)插入区块链(结构)中,甚至可以允许使用安全模块硬件(Hardware of Security Modules,HSM)。
同样,区块链应该能够处理复杂的密码算法而不会影响其性能。除了前面提到的方案之外,由于业务中的合规性要求,因此还应该有一条规定:允许根据监管和合规性要求实施隐私性和机密性策略。
4.3 可伸缩性
可伸缩性(Scalability,也称为可扩展性)是 Hyperledger 的一个要求,满足该要求意味着允许合理的交易吞吐量,这将满足所有业务需求以及大量用户的需求。
4.4 确定性交易
确定性交易(Deterministic Transaction) 是任何区块链都必须满足的核心要求。如果不能做到无论执行交易的人是谁、执行交易的地点在哪里,每次执行交易的结果者相同,那么就不可能达成共识。因此,确定性交易成为任何区块链网络中的关键要求。
4.5 身份识别
为了提供隐私性和机密性服务,还需要可用于处理访问控制功能的灵活 PKI 模型。密码机制的强义和类型应该能够根据用户的需求而变化。在某些情况下,可能需要用户隐藏其身份,因此 Hyperledger 也应该提供此功能。
4.6 可审核性
可审核性(Auditability)是 Hyperledger Fabric 的一个要求,应该保留所有身份、相关操作和任何更改的不可变记录,以便跟踪审核。
4.7 互通性
互通性(Interoperability)也称为互操作性。目前有许多可用的区块链平台,但是它们之间无法相互通信,这可能是基于区块链的全球商业生态系统增长的一种限制因素。可以预见,许多区块链网络将根据特定需求在商业环境中运行,但重要的是它们之间应该能够相互通信。所有区块链都应该遵循一套通用的标准,以允许不同帐本之间的通信。因此,有必要开发出一种协议,以允许在诸多结构之间交换信息。
4.8 可移植性
可移植性(Portability) 指的是能够跨多个平台和环境运行而无须在代码级别进行任何更改。Hyperledger Fabric 应该不仅在基础架构级别,而且在代码、库和 API 级别都是可移植的,因此它可以支持在 Hyperledger 各种实现之间的统一开发。
4.9 丰富的数据查询
区块链网络应允许在网络上运行丰富的查询,可以使用传统查询语言来查询帐本的当前状态,满足这一易用性要求将有助于区块链网络的广泛推展。
上述 9 项就是 Hyperledger Fabric 的要求,开发符合 Hyperledger 设计理念的区块链解决方案应满足这些要求。
相关文章:

超级帐本(Hyperledger)
1. Hyperledger 项目 Hyperledger 下有两类项目:第一类是区块链框架项目;第二类是支持这些区块链的相关工具或模块。 在 Hyperledger 框架下,目前有 5 个区块链框架项目:Fabric、Sawtooth Lake、Iroha、Burrow 和 Indy。 在模块类下,则有 Hyp…...

如何精细优化网站关键词排名:实战经验分享
在数字营销日益激烈的今天,我深知每一个关键词的排名都关乎着网站的流量与转化。凭借多年的实战经验,我深刻体会到,要想在浩如烟海的网络世界中脱颖而出,精细化的关键词优化策略至关重要。今天,我将从实战角度出发&…...

Ruoyi Cloud 本地启动
本文视频版本:https://www.bilibili.com/video/BV1SNtueBE9M 参考 http://doc.ruoyi.vip/ https://gitee.com/y_project/RuoYi-Cloud https://blog.csdn.net/cs_dnzk/article/details/135289966 https://doc.ruoyi.vip/ruoyi-cloud/cloud/seata.html#%E5%9F%BA%E6…...

Nginx解析:入门笔记
🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》《MYSQL》 💪🏻 制定明确可量化的目标,坚持默默的做事。 ✨欢迎加入探索nginx之旅✨ 👋 大家好!文本学习和探索Nginx配置。…...

在 Mac 上安装双系统会影响性能吗,安装双系统会清除数据吗?
在 Mac 系统安装并使用双系统已经成为了许多用户办公的选择之一,双系统可以让用户在 Mac 上同时运行 Windows 或其他操作系统。然而,许多用户担心这样做会对 Mac 的性能产生影响。 接下来将给大家介绍 Mac 装双系统会影响性能吗,Mac装双系统…...

vue3提交按钮限制重复点击
下载lodash npm install lodash 引入并使用 <template><div click"submit()">提交</div> </template><script setup>import { debounce } from lodash;const submit debounce(() > {//业务代码},2000,{leading: true,trailing:…...

Java | Leetcode Java题解之第395题至少有K个重复字符的最长子串
题目: 题解: class Solution {public int longestSubstring(String s, int k) {int ret 0;int n s.length();for (int t 1; t < 26; t) {int l 0, r 0;int[] cnt new int[26];int tot 0;int less 0;while (r < n) {cnt[s.charAt(r) - a];…...

20240915 每日AI必读资讯
国家网信办发布《人工智能生成合成内容标识办法(征求意见稿)》 - 要求所有的AI生成内容都要打标,包括文字、图像、视频、音频… - 文本内容要插入标识符提醒,音频内容要在里面插入提示音 - 对创作者不太友好,对平台…...
量化交易需要注意的关于股票交易挂单排队规则的问题
炒股自动化:申请官方API接口,散户也可以 python炒股自动化(0),申请券商API接口 python炒股自动化(1),量化交易接口区别 Python炒股自动化(2):获取…...

应急响应实战---是谁修改了我的密码?
前言:此次应急响应为真实案例,客户反馈无法通过密码登录服务器,疑似服务器被入侵 0x01 如何找回密码? 客户服务器为windows server2019,运维平台为PVE平台;实际上无论是windows系统或者是linux系统&#…...
知识的通用性
概述 很久没有写文章了,因为集团公司当前在大刀阔斧的改革,人员精简,很多事情都合并到同一个人身上,同时将内部的沟通软件平台又做一次大的切换,很多资料都需要重新的整理。 所以,抱歉,很多内…...

36岁,大厂女程序员,中年失业后,我开始接受自己的平凡,并深耕自己
作为80后秦岭大山里面的穷苦农民工家的孩子,从小因为讨厌做家务,做农活,而且家里孩子众多,物质匮乏,从小就特别渴望走出大山。 上学的时候,通过刻苦努力,成绩也还算可以,经常受到老师…...

shader 案例学习笔记之mix函数
mix函数: 在两个值之间进行插值; 使用: #ifdef GL_ES precision mediump float; #endifuniform vec2 u_resolution; uniform float u_time;vec3 colorA vec3(0.149,0.141,0.912); vec3 colorB vec3(1.0,0.83,0.224);void main(){vec2 st…...

OpenAI草莓正式发布,命名o1
一、相关介绍 当地时间 9 月 12 日,OpenAI 推出全新模型 o1,它是该公司计划推出的一系列“推理”模型中的首个,也就是此前业内传闻许久的“Strawberry(草莓)”项目。 据悉,o1 模型在众多任务中能够比人类更…...

心觉:以终为始,帮你精准实现目标
Hi,我是心觉,与你一起玩转潜意识、脑波音乐和吸引力法则,轻松掌控自己的人生! 挑战每日一省写作169/1000天 假设你的目标是 一年内赚到150万。我们可以通过“以终为始”和“以始为终”的结合来帮助你实现这个目标 以下是完整的…...

【Kubernetes】linux centos安装部署Kubernetes集群
【Kubernetes】centos安装Kubernetes集群 1、环境准备 系统centos7 配置yum源参考文章 Centos系统换yum源 yum -y update 步骤1-3是所有主机都要配置,主机名和hosts配置完后可以使用工具命令同步 1.1 主机 一主二从 主机名ipk8smaster192.168.59.148k8snode11…...

canlog-vci can记录仪,速采仪如何用VBDSP进行解析曲线
如下图所示,VBDSP支持绘制解析曲线 添加解析曲线步骤 (1)在线播放DBC解析曲线 ① 添加要解析的规则,自定义规则/DBC解析规则、J1939协议、CANopen协议; ② 选中设备,点击“分析”栏中的“曲线”࿰…...

JCO|病理AI是精准医疗的未来吗?|个人观点·24-09-13
小罗碎碎念 今日顶刊:JCO 这篇文章于24-09-11发表于J Clin Oncol,目前IF42.1,但是注意,这篇文章是一篇观点类文章,而不是我们常规意义上的那种科研型文章。 我在原作者的基础上补充了很多精美插图,并且根据…...

idea一键自动化部署项目
文章目录 前言一、 IDEA插件安装1. 首先下载 Alibaba Cloud Toolkit 插件2. 插件下载完成后重启IDEA 二、SpringBoot项目准备1. pom.xml 文件2. controller3. 启动类 三、SpringBoot项目jar包部署1. Alibaba Cloud Toolkit 插件服务器配置2. 主机 IP、用户名、密码 点击测试链接…...
Mybatis-plus复习篇
文章目录 1.MyBatis-plus基础1.1.mybatis-plus简介1.2.基本使用1.3.注解映射主键生成策略 1.4.命名转换问题1.5.关闭命名转换功能 2.BaseMapper核心接口 1.MyBatis-plus基础 1.1.mybatis-plus简介 MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具&…...

接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权
摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题:安全。文章将详细阐述认证(Authentication) 与授权(Authorization的核心概念,对比传统 Session-Cookie 与现代 JWT(JS…...

ubuntu中安装conda的后遗症
缘由: 在编译rk3588的sdk时,遇到编译buildroot失败,提示如下: 提示缺失expect,但是实测相关工具是在的,如下显示: 然后查找借助各个ai工具,重新安装相关的工具,依然无解。 解决&am…...
2025年全国I卷数学压轴题解答
第19题第3问: b b b 使得存在 t t t, 对于任意的 x x x, 5 cos x − cos ( 5 x t ) < b 5\cos x-\cos(5xt)<b 5cosx−cos(5xt)<b, 求 b b b 的最小值. 解: b b b 的最小值 b m i n min t max x g ( x , t ) b_{min}\min_{t} \max_{x} g(x,t) bmi…...