区块链共识机制 - 创新点思考
区块链技术,可创新部分涉及四个方面
- 共识机制
- 分布式存储
- 智能合约
- 密码学
(PS:个人认为比较好出创新点的两个方向是共识机制和智能合约。研究的话,如果偏理论<比如学硕>,建议考虑共识机制;如果是偏工程<比如专硕>,建议考虑智能合约)
区块链性能的评价标准,一般两个属性
- 吞吐量
- 共识延迟
创新点
我们不能“为了创新而创新”,创新的目的是提升系统的性能,所以我们要在 提升系统吞吐量和降低共识延迟为目标。
下面只介绍BFT的创新方向:(主要是我研究课题是这个方向的)
首先,总结一下PBFT的痛点
- 主副节点间的通信复杂度高
- 视图切换过程复杂(view change)
- 对拜占庭节点没有惩罚措施
- 系统扩展性差
降低主副节点的通信复杂度
现存机制:
- Zyzzyva
- SBFT
降低视图切换的通信复杂度
区块验证时间长
现存机制:
- 先选取区块发布者,之后再进行区块的发布
- PBFT中,选举出共识节点,不是所有的节点都参与共识
如何去掉拜占庭节点
现在存在的几种方式如下:
1.引入诚信机制,拜占庭节点会被清除
2.引入保证金机制,作恶节点会被清除和没收金额
提升共识效率:
待完善
节点的隐私
为了防止拜占庭节点,可以考虑引入保证金机制,引入保证金机制,需要保证保证金的安全,此时可以考虑环签名或者群签名,但是引入群签名或者环签名会影响效率
|-环签名 - 但是会影响共识效率
|-群签名
交易数据的隐私
- 上传的人进行数字签名,非数据拥有者即使下载了数据也是加密的
- 也可以在访问上进行限制(限制有某种属性的人才可进行访问)
提升系统的吞吐量:
控制共识节点的个数
(给共识节点增加权重属性,按照业务量和物理资源变化动态的改变参加共识节点的数量 - 增加了惩罚机制)(按照共识节点的物理状态,分配需要共识的区块)
控制区块的生成准则:
是按照时间生成还是按照交易的数量生成(好像都不太行,有些固化)
根据诚信值、可信度来选择共识节点的算法,会有诚信值积累的问题,对于新加入系统的节点不友好,当领导的一直是领导。怎样解决这个问题?
|-考虑诚信值定期清零,清零之后,网络内所有节点的诚信值是一样的,都是0;
|-考虑,老共识节点随机留一半,新申请的共识节点加入一半!(这种新旧比例,可以更改!)
|-从共识节点中选取唯一一个生成区块的 节点(下述称记账节点),怎么选?随机选取一个吧!但是为了防止这个节点作弊,限制其当选记账节点的时间间隔。
|-对于不作为的节点(拜占庭节点、懒惰节点),惩罚,降低信任度,甚至终身禁止成为共识节点(几次不回应)
|-
可是不根据诚信值,随机选取共识节点的话,万一可信度低怎么办,万一选到拜占庭节点怎么办?
|-不能随机选取
对共识算法的改进部分
(去除拜占庭节点)提升系统的安全性部分:
(1)拟引入“保证金”机制及“信誉度评价”,对于惰性节点,其一次不作为,在其信誉度上降低一个级别,连续三次不作为,剔除共识网络,并扣除一部分保证金;
(2)针对拜占庭节点,察觉其恶意行为,踢出共识网络,并扣除其缴纳的全部保证金;
(3)对于表现优良的节点,提升其”信誉度“;
针对后续选取共识节点的过程,”信誉度机制“有一个弊端:对于一开始就当选共识节点且永远表现良好的节点,其信誉值会一直累加,也就是说此节点会一直当选。为了解决此问题,本文考虑,在一段固定时间后,清空”信誉值“,即所有节点的信誉值均为0,这样来讲,对于新加入网络的节点较为公平;
但是为了安全起见,下一轮共识节点的选取会随机保留部分本轮的共识节点以防止拜占庭节点大量涌入,剩余的共识节点位置从提交了保证金的备选共识节点中选取。
提升系统的共识效率部分:
(1)缩小共识范围,参照“DPoS“的选举机制,由网络内的节点投票,选出一定数量的共识节点(信誉度高的节点容易当选),由这些被选出来的共识节点,验证”交易“的合法性,并打包成区块,即每个共识节点都能打包区块,打包成区块后,将区块发送给主节点;每次选出的节点数,应该根据时间段的不同,做适当的改变
(2)同时,主节点考虑到被选出来的每个共识节点的物理状态不同,分配给每个共识节点的”交易“数据量不同,即每个每个共识节点的打包工作量不同,防止”数据阻塞“。
最终区块成链的工作由主节点完成。