Fabric入门【00】简介

一、Hyperledger Fabric

1.IBM公司开发的联盟链:必须经过授权认证才能加入(优点:避免了PoW资源开销、提高交易处理速率。缺点:去中心化程度减低)

二、主要组成部分

1.Ledger:
(1)基于文件的存储:满足区块链不可篡改的特性,使用Merkle Tree(新版本不再使用),整个存储方式只能追加,不能删除和修改。
(2)基于数据库进行存储,world state 比如使用level、couchdb等KV数据库(键值对数据库),数据库只存储当前的最新值,便于业务拓展,很快查到当前的值,无需通过遍历的方式进行查询。
2.Channel:通道,私有的子网络,通道中的节点共同维护账本,实现数据的隔离和保密。其中每个channel对应一个账本,由加入该channel的peer进行维护,一个peer可以加入多个channel,维护多个账本。
3.Org:orginazation,管理一系列成员的组织,一个channel中可以有多个组织。
4.Chaincode:链码(智能合约),运行在节点内的程序,提供业务逻辑接口,对账本进行查询或者更新
5.Endorse:背书,指一个节点执行了一个交易并对结果进行签名后返回响应的过程。
6.Ordering Service:排序服务,将交易排序后放入区块中,并广播给网络各节点。
7.PKI:Public Key Infrastructure(公钥基础设施),一种遵循标准的利用公钥加密技术为电子商务的开展提供一套安全基础平台的技术和规范。
8.MSP:Membership Service Provider,成员管理服务,基于PKI实现,为网络成员生成证书,并管理身份。

三、共识算法

作用:保障各个节点以相同的顺序状态保存账本,达成一致性
过程:交易的共识包括3个阶段的处理:提议阶段、打包阶段和验证阶段。
(1)提议阶段:客户端向交易背书节点发送一个交易提案,背书节点通过交易模拟执行后返回给客户端背书结果及签名
(2)打包阶段:客户端将背书后的结果及签名交给排序节点排序
(3)验证阶段:排序节点生成区块向全网广播,记账节点收到这些区块后,先验证其正确性,验证通过后存入本地帐本中。
分类:fabric1.4版本中,存在三种共识机制,分别是solo,kafka,Raft
1.Solo 共识模式
只有一个排序节点,从Peer节点发送来的消息由一个排序节点进行排序和产生区块;由于排序服务只有一个排序节点为所有Peer节点服务,没有高可用性和可扩展性,不适合用于生产环境,通常用于开发和测试环境。
2.Kafka共识模式
3.Raft 共识模式
基于etcd的崩溃容错(CFT)排序服务。Raft 遵循 “领导者和追随者” 模型,其中每个通道都会选举一个 leader,而且它的决策会复制给follower。和基于 Kafka 的排序服务相比,基于 Raft 的排序服务将变得更容易设置和管理,并且它的设计允许遍布全球的组织成为分散的排序服务贡献节点。

四、节点设置
1.客户端节点:
客户端必须连接到某一个peer节点或排序服务节点上才能与区块链网络进行通信。客户端向背书节点(endorser)提交交易提案(transaction proposal),收集到足够背书(可理解为担保)后,向排序服务广播交易提案,进行排序,生成区块。
2.peer节点(Committer,Endorser,Leader,Anchor):
(1)记账节点(Committer):所有的peer节点都是记账节点(committer),负责验证排序服务节点区块里的交易,维护状态和Ledger的副本。记账节点使用基于Gossip的p2p数据分发,节点会定期跟其他节点交换信息。如果在这个过程中有节点发生故障,则会从存活的节点中删除这个节点的信息。对于故障节点,还会定时检查是否已经恢复,恢复存活的节点会更新到存活节点列表中。如果有新加入的节点,也能通过节点信息的交换获取到,添加到存活列表中,广播给其他节点。committer节点无法通过配置文件配置,需要在当前客户端或者命令行发起交易请求的时候手动指定相关的committer节点。记账节点可以有多个。
(2)背书节点(Endorser):部分节点还会执行交易并对结果进行签名背书,充当背书节点(endorser)的角色。背书节点是动态的角色,是与具体链码绑定的。每个链码在实例化的时候都会设置背书策略,指定哪些节点对交易背书后交易才是有效的。并且只有应用程序向它发起交易背书请求的时候才是背书节点,其他时候都是普通的记账节点,只负责验证交易并记账。背书节点也无法通过配置文件指定,而是由发起交易请求的客户端指定。背书节点可以有多个。
(3)主节点(Leader):peer节点还可以是主节点(leader peer),能与排序服务节点orderer通信,负责从排序服务节点获取最新的区块并在组织内部同步。主节点在整个组织中只能有一个。
(4)锚节点(Anchor):peer节点还可以是锚节点(anchor peer),锚节点主要负责代表组织和其他组织进行信息交换。每个组织都有一个锚节点,锚节点对于组织来说非常重要,如果锚节点出现问题,当前组织就会与其他组织失去联系。锚节点的配置信息是在configtxgen模块的配置文件configtx.yaml中配置的。
(5)排序服务节点orderer:
接收包含背书签名的交易,对未打包的交易进行排序生成区块,广播给peer节点。排序服务提供的是原子广播,保证同一个链上的节点接收到相同的信息,并且有相同的逻辑顺序。
(6)CA(Certificate Authority 证书颁发机构)节点:
CA节点接收客户端的注册申请,返回注册密码用于用户登录,以便获取身份证书。区块链上的所有操作都需要验证用户身份。

五、交易流程

1.发送交易提案
应用程序使用相应的SDK(Node,java,Python)提供的API构建交易提案提交给相应的背书节点。
在这里插入图片描述
2.背书节点模拟执行交易提案
在接收来自客户端的消息时,背书节点首先验证客户端的签名clientSig(使用MSP),然后模拟事务。背书节点会调用链码模拟执行交易提案,产生包括响应值、读写集的事务结果(读写集是交易中记录的主要内容)。这些执行不会更新账本。
3.返回提案响应:
背书节点会对读写集进行背书(Endorse)签名,生成提案响应(Proposal response)并返回给应用程序。
4.应用程序根据接收到的提案响应生成交易,并发送给排序服务节点(Orderer节点)。交易请求被提交到Ordering服务节点,该事务将包含读/写集,背书签名和通道ID;Orderer节点接收到事务请求之后,并不需要检查交易中的具体数据,它只是从网络中的所有通道接收交易,按时间顺序对它们进行排序,并创建交易区块。之后广播给同一通道内所有组织的leader节点
5.交易验证并提交:
记账节点对接收到的区块进行验证(交易消息结构是否正确、是否重复、是否有足够的背书、读写集版本),通过验证后将结果写入到本地的分类账本中。验证不通过的交易会被标记无效(Invalid)。
6.账本更新:每个peer节点都会将该块附加到通道链中,并且对于每个有效事务,写集都将提交到当前状态数据库。发出一个事件,以通知客户端应用程序交易(调用)已被不可变地附加到链上,并通知交易是否有效或无效。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/603926.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微机原理——绪论

本篇文章是我在观看网课时记录的笔记。如有错误欢迎批评指正。 微机原理————绪论 我们在使用计算机时,最重要最核心的就是计算机的CPU(中央处理器),决定了计算机的计算速度,但是CPU无法直接读取外界的温度、湿度、压力之类的物理量&…

前端html+css+js常用总结快速入门

🔥博客主页: A_SHOWY🎥系列专栏:力扣刷题总结录 数据结构 云计算 数字图像处理 力扣每日一题_ 学习前端全套所有技术性价比低下且容易忘记,先入门学会所有基础的语法(cssjsheml)&#xff…

用代码验证,esm 导出的是值的引用,commonjs导出的是值的拷贝

首先需要学习一下 esm 和 commonjs 的区别,其中一条关于导出值我们可以手动验证一下,先记住结论 esm 导出的是值的引用commonjs导出的是值的拷贝 没错我又遇到这个问题了,面试官先问我 commonjs 和 esm 有啥区别? 然后问如果 com…

Docker仅需3步搭建免费私有化的AI搜索引擎-FreeAskInternet

简介 FreeAskInternet 是一个完全免费、私有且本地运行的搜索引擎,并使用 LLM 生成答案,无需 GPU。用户可以提出问题,系统会进行多引擎搜索,并将搜索结果合并到ChatGPT3.5 LLM中,并根据搜索结果生成答案。 什么是 Fr…

什么是多路复用器滤波器

本章将更深入地介绍多路复用器滤波器,以及它们如何用于各种应用中。您将了解到多路复用器如何帮助设计人员创造出更复杂的无线产品。 了解多路复用器 多路复用器是一组射频(RF)滤波器,它们组合在一起,但不会彼此加载,可以在输出之…

PostgreSQL入门到实战-第九弹

PostgreSQL入门到实战 PostgreSQL数据过滤(二)官网地址PostgreSQL概述PostgreSQL中and操作理论PostgreSQL中and操作实操更新计划 PostgreSQL数据过滤(二) 了解PostgreSQL AND逻辑运算符以及如何使用它来组合多个布尔表达式。 官网地址 声明: 由于操作系统, 版本更新等原因, …

LeetCode-322. 零钱兑换【广度优先搜索 数组 动态规划】

LeetCode-322. 零钱兑换【广度优先搜索 数组 动态规划】 题目描述:解题思路一:Python动态规划五部曲:定推初遍举【先遍历物品 后遍历背包】解题思路二:Python动态规划五部曲:定推初遍举【先遍历背包 后遍历物品】解题思…

查分约束学习

问题模型&#xff1a; 有n个变量&#xff1a;&#xff0c;有m个约束条件 令差分数组&#xff0c;可以知道如果x1x2<q&#xff0c;那么与j和i-1有关联 由画图可知&#xff0c;如果有在i-1至j建立的有向图中跑最短路&#xff0c;那么dis[n]即为最小的约束变量 另外&#x…

如何在ngc中找到跟物理机驱动版本匹配的docker镜像

如何在ngc中找到跟物理机驱动版本匹配的docker镜像 1.nvidia-smi查看CUDA版本2. [打开ngc官网](https://catalog.ngc.nvidia.com/orgs/nvidia/containers/pytorch/layers)3.直到找到CUDA版本对应的Tag【比如CUDA 12.1的tag是 23.07-py3】4.拉取镜像 [Tag&#xff1a;23.07-py3]…

【攻防世界】mfw(.git文件泄露)

首先进入题目环境&#xff0c;检查页面、页面源代码、以及URL&#xff1a; 发现页面无异常。 使用 dirsearch 扫描网站&#xff0c;检查是否存在可访问的文件或者文件泄露&#xff1a; 发现 可访问界面/templates/ 以及 .git文件泄露&#xff0c;故使用 GItHack 来查看泄露的 …

提示词专场:从调整提示改善与LLMs的沟通,到利用LLMs优化提示效果

编者按&#xff1a;欢迎阅读“科研上新”栏目&#xff01;“科研上新”汇聚了微软亚洲研究院最新的创新成果与科研动态。在这里&#xff0c;你可以快速浏览研究院的亮点资讯&#xff0c;保持对前沿领域的敏锐嗅觉&#xff0c;同时也能找到先进实用的开源工具。 提示词的好坏决…

leetcode.45题:跳跃游戏II

Leetcode.45题&#xff1a;跳跃游戏II /* 题意的理解&#xff1a; nums[0] 只能跳 1 ~ nums[0]步 依次类推&#xff1a;从nums[0] - nums[n - 1] 最少需要多少步数 nums 2 3 1 1 4 nums[0] 2,初始只能跳 1/2步&#xff0c;如跳1步&#xff0c;达到nums[1] 而nums[1] 3,顾第二…