最近几个月去试着找区块链的工作,发现一些大公司都是使用HyperLeger Fabric。所以,这里学习一下。从HyperLeger Fabric中文文档看起。
术语学习与理解
Anchor Peer - 锚节点
个人理解:像一些公链中的节点,如比特币中的全节点,EOS中的中心节点。
Block - 区块
个人理解:区块链中的区块,记录交易。不确定联盟链中的交易是什么?公链中的交易是比特币中的转账记录,以太坊中的智能合约调用等等。而联盟链没有代币,猜测应该是一些企业内部的业务往来。
Chain - 链
个人理解:通过哈希来串联起来的链。比特币是通过区块头中引用父区块哈希值的数据来进行串联。如果父区块内容更改,则父区块哈希会变化,从而该区块的区块头发生变化,进而该区块整体发生变化。形成连锁反应,从而达到区块链的不可篡改的特性。猜测联盟链的实现应该类似。
[疑问] peer从order service接收交易block。这里的order service是什么?
[猜测] 比特币的节点会收集未打包的交易,从而形成一个交易池。联盟链是许可链,各节点之间相互认可,可能会设计一个服务器来对未打包的区块对这些节点进行分发。
Chaincode - 链码
个人理解:先简单粗暴的理解为智能合约。继续学习来挖掘它们的不同点吧。
Channel - 通道
通道是构建在“Fabric”网络上的私有区块链,实现了数据的隔离和保密。
Commitment - 提交
个人理解:验证区块后的发布区块
Concurrency Control Version Check - 并发控制版本检查(CCVC)
CCVC是保持通道中各对等节点间状态同步的一种方法。如果读取的数据在执行和提交之间被改变,就会引发CCVC冲突,该交易就会在账本中被标记为无效。
比特币是哪个节点的链长,则认可哪个节点的,从而达成共识。所以,这里的CCVC算个人理解为共识机制的一种算法来保证共识。
Configuration Block - 配置区块
包含为系统链(排序服务)或通道定义成员和策略的配置数据。
个人理解:因为联盟连有通道(自己的私链),因此,私链的配置通过这个配置区块来实现。
Consensus - 共识
用于产生一个对于排序的同意书和确认构成区块的交易集的正确性。
个人理解:之前对共识的理解更偏公链一些:共识是一套获取区块记账权的方法。因为公链中的记账权是有收益的。而联盟链中的记账感觉没有公链中那么有激励性。所以,这里理解应该更广泛一些:确定区块的顺序和正确的方法
Current State - 当前状态
ledger的current state表示其chain交易log中所有key的最新值。
个人理解:不是很理解
Dynamic Membership - 动态成员
Fabric支持动态添加-移除members、peers和ordering服务节点
[疑问] 这里的这一项是指一个功能,还是一个实体?公链中基本都默认包含这个动态成员的。
Endorsement - 背书
指一个peer执行一个交易并返回YES-NO给生成交易proposal的client app 的过程。
比特币中是选择这条链来继续延长(或者说挖矿),一种算力的选择。而联盟连中不必使用这种低效的策略。而是感觉像投票的方法来表示自身的认可与否。不确定是否和POS和DPOS相像。不过POS或DPOS会有惩罚措施,来惩罚作恶者。但在许可链中理论上不存在作恶者。
Endorsement policy - 背书策略
个人理解:节点给出YES或NO的依据代码。
背书策略由背书节点基于应用程序和对抵御不良行为的期望水平来组织管理。
Fabric-ca
Fabric-ca是默认的证书管理组件
个人理解:通过该证书管理组件来管理许可的节点。
Genesis Block - 初始区块
个人理解:第一个区块,类似比特币的创始区块
Gossip Protocol - Gossip协议
Gossip数据传输协议有三项功能:1)管理peer发现和channel成员;2)channel上的所有peer间广播账本数据;3)channel上的所有peer间同步账本数据。
个人理解:P2P网络节点要处理的事情
Initialize - 初始化
一个初始化chaincode程序的方法
Install - 安装
Instantiate - 实例化
Invoke - 调用
用于调用chaincode内的函数。Chaincode invoke就是一个交易proposal,然后执行模块化的流程(背书、共识、 验证、 提交)。invoke的结构就是一个函数和一个参数数组。
[疑问] 交易proposal?
是指节点的业务提议?
Leading Peer - 主导节点
个人理解:一个部门或公司可以有多个节点,节点中有个代表该实体的主节点来与网络的首发区块。
Ledger - 账本
[疑问] 比特币的链本身就是账本。这里的账本和区块链又是什么关系呢?不像是节点私有的账本。每个节点维护的账本不就是区块吗?
Member - 成员
个人理解:实体,部门或子公司,一个实体有一个证书。
Membership Service Provider - MSP
MSP是指为client和peer提供证书的系统抽象组件。
不理解
Membership Services - 成员服务
ECert是长期的身份凭证;TCert是短期的身份凭证,是匿名和不可链接的。
个人理解:设置了不同的身份凭证,通过不同的证书来管理。
Ordering Service - 排序服务或共识服务
将交易排序放入block的节点的集合。ordering service独立于peer流程之外,并以先到先得的方式为网络上所有的channel作交易排序。
[疑问] 这里是先到先得了,为什么还要排序,依据什么排序?是因为channel被不同的节点来共享导致的吗?
Peer - 节点
[疑问] Peer和Anchor Peer有什么区别,还是只是简称?
Policy - 策略
有背书策略,校验策略,区块提交策略,Chaincode管理策略和网络-通道管理策略。
Proposal - 提案
一种针对channel中某peer的背书请求。每个proposal要么是Chaincode instantiate要么是Chaincode invoke。
个人理解:Proposal不是业务,而是背书请求。也可能是业务+请求。像“员工请假,请上级签核”那样?
Query - 查询
对于current state中某个key的value的查询请求。
个人理解:有人说区块链是没有删除和修改的数据包。那么只剩下了新增和查询了。
Software Development Kit - SDK
SDK为开发人员提供了一个结构化的库环境,用于编写和测试链码应用程序。
State Database - stateDB
为了从Chaincode中高效的读写,Current state 数据存储在stateDB中,包括levelDB和couchDB。
联盟链里面还有使用数据库吗?
System Chain - 系统链
系统链存在于ordering service中,与channel类似,具有包含以下信息的初始配置:MSP信息、策略和信息配置。
Transaction - 交易
Chaincode的invoke或instantiate操作。Invoke是从ledger中请求read-write set;Instantiate是请求在peer上启动Chaincode容器。
[疑问] 交易的内容是什么?
网友评论