区块链架构与交易流程(fabric1.0)
区块链架构与交易流程区块链系统架构节点网络拓扑交易流程1、 提交交易提案2、 模拟执行提案并签名3、 返回模拟执行结果4、 提交交易5、 交易排序并结块6、 广播区块7、 保存区块状态并更新世界状态8、 同步区块9、 保存区块状态并更新世界状态上一篇:初识区块链----区块链入门术语区块链系统架构API,事件,SDK是fabric对应用层提交的接口服务APIgRPC接口事件...
区块链架构与交易流程
上一篇: 初识区块链----区块链入门术语
区块链系统架构
API,事件,SDK是fabric对应用层提交的接口服务
-
API
gRPC接口 -
事件
异步通信,链码定义事件,应用程序监听事件,触发动作 -
SDK
go-sdk
node.js-sdk
java-sdk -
身份
对请求的签名验证 -
账本
对区块的查询,
按照区块高度查询
区块hash查询
交易id 可以查询区块,一个区块包含n个交易 -
交易
交易模拟,交易排序,交易记账
后续会详细解释交易流程 -
智能合约
做智能合约的安装 初始化 升级
智能合约是 业务声明和定义 交易是对合约的调用 -
成员服务
准入控制,ca系统 交易加密,签名等
注册证书,交易证书 -
共识服务
cap原理
弱化一致性,满足可用性。共识算法保证一致性 -
链码服务
docker管理
每个链码都是独自容器,兼容多种语言,每个需要打包镜像,占用空间 不支持 k8s
节点
- 客户端节点(应用程序、sdk)需要与peer或者order链接才能生效
- peer(Anchor/Endorser/Committer)
-
Anchor 主节点,唯一初始化时候 制定主节点,下线后自动选举
-
Endorse 背书节点 为交易做担保 与智能合约结合,智能合约制定背书策略
-
Committer 所有peer都是记账节点,校验区块信息,记录交易
三者互不排斥,可以同时拥有
-
orderer 排序节点
打包交易,进行排序
将排序后交易打包成区块solo模式 仅一个orderer节点, 开发测试环境 单点故障 kafka 将交易排序转交给卡夫卡集群。
-
ca节点
鉴定区块链身份是否有效,通过后才能进行交易
网络拓扑
排序节点与组织的锚节点直接是 gRPC协议
组织内部是 gossip协议
交易流程
1、 提交交易提案
客户端节点将交易提交至背书节点,背书节点的选择与智能合约相关,智能合约在安装的时候指定背书节点,(某一背书节点因网络或者其他原因无返回时候,会再次提交至另外的背书节点,否则无效。)提交顺序无要求,正常情况下所有背书节点返回结果是一致的,签名不相同
2、 模拟执行提案并签名
背书节点收到交易提交先进行验证校验(格式是否正确,是否已经提交过,签名是否正确,该角色是否有权提交等),通过后由智能合约隔离执行,返回结果后签名并返回客户端(模拟执行,不会产生任何持久化操作。)
3、 返回模拟执行结果
收到结果,先验证,通过后在操作,可以分为查询和写交易:
- 查询:不会对账本状态产生影响,验证通过后,返回值可以作为下一步业务逻辑判断的依据,此时交易流程即可结束
- 写交易:客户收集到足够多的背书结果,然后将交易提案,背书结果,签名等生产交易,发送给排序节点进行排序。
4、 提交交易
发送给排序节点
5、 交易排序并结块
确保各背书节点的背书结果都一致(有不一致,排序节点不会发现),按照排序规则进行排序。区块打包。
6、 广播区块
区块广播至各组织的主节点
7、 保存区块状态并更新世界状态
主节点收到广播后,在记账的过程中会验证该交易是否有效,无效标记无效交易(在1.0版本中,无效交易会浪费磁盘空间,不会影响交易状态)
8、 同步区块
主节点将区块同步值其他各节点,记账过程同第7步完全一致
9、 保存区块状态并更新世界状态
同上
下一篇:区块链共识机制与账本存储
更多推荐
所有评论(0)