DNA 共识
一种新的区块链共识机制
摘要:
区块链技术是人类智商的一次爆表,它将对我们的生活产生深远的影响,然而区块链技术存在一个“不可能三角”或者“三元悖论”,即无法同时达到“高效低能”、“去中心化”、以及“安全”这三个要求。例如:比特币系统每秒可处理的交易不到10笔。
区块链目前使用的共识机制主要为:POW、POS、DPOS、PBFT,RAFT等。这几种共识机制有一个核心逻辑就是“它证”,即一个节点数据记录要得到其它大多数节点的认可或授权。它证机制需要消耗大量的时间才能达成一致性,所以它证机制是制约了网络的高效性的主要因素。
为了提高效率,可以采用“自证”,即每个节点在记录数据时必须自己证明自己的记录是否正确,不需要其它其节点的认可。某个节点证明自己正确的方式,就是将自己的纪录和其它(5≤n≤N/2)节点进行对比,如果一致,那么就认为当前区块的记录是正确的,打包存入数据库,开始记录下一个区块数据。事实上一个诚实节点按照约定的记录规则记录的数据一定是正确的。所以n值可以尽可能的小。
自证好像给了那些不诚实节点或者试图发起攻击的节点一些机会,不错,那些不诚实节点自然可以记录数据,但是它们记录的数据,诚实节点是无法访问的,因此它们记录自然就是无效的。具体实现在下边介绍。
一:DNA共识概述
无论是自证还是他证,本质上解决的就是数据一致性问题。只要解决了数据一致性,就形成了“多数人正义”,就有效的防止“双花”。
为了实现上述功能,我们必须找到相应的可靠的方式。这种可靠的方式就藏在生命科学之中即DNA复制。如果说DNA是数据,那么我们每个人就是一个分布式的数据库,更为神奇的是DNA经过无数多次的分列重组后,其中产生变异的基因占基因组总数的比例很低。同时任意两个人之间基因组误差几乎可以忽略。那么DNA是如何做到分布式存储信息一致性的呢?它们遵循一种规则,碱基配对。
图 1 DNA 示意图
我们将使用数学和密码学的方式来模拟这种方式。我么将这种共识称为DNA共识。
二:DNA共识的实现
1,算法实现
这里引入两条链,(事实上并不存在链)这两条也满足DNA双链的对应关系。
为了研究的方便,将这两条链分别记作X链,和Y链,Y链负责记录交易信息。X负责校验Y链记录的正确性。X链和Y链之间存在一定的关系。
令a=const_1,i=const_2,j=const_3,const 表示常数。
X链
定义X链上的第一个区块数据。
String data =" I love Maxwell"
令M=hash(data,10); M是十进制数表示的data 的hash值。
查找素数表找到一个素数P 使得最小。
令 mod 取余运算符。
Y链
令w=hash(transcation[],10,j) W是十进制数表示的Y链上本次需要打包的所有交易的hash值的后j位。
令
令
X链
令
综上则有:
即:
以上类似DH密码交换算法,具体流程如下图。
图 2 DNA共识规则的流程图
这样在X链和Y链上在同一个区块高度所有诚实节点上都有一个相同值k,并在Y链上使用k对交易集合进行加密。
注:每一条交易记录是由依然是通过RSA或椭圆曲线加密的,这里的k加密的是由多条交易记录组成的交易集合。
X链上数据结构至少应该应该包括:
{ M值,素数P,区块高度Nn,密码kx}以及根据业务需求的其它数据。
Y链上数据至少应该包括:
{前一个区块的hash,当前区块的hash,以及Hash值W,素数P,区块高度N,密码ky,加密交易记录集合 ...}以及根据业务需求的其它数据。
下图是双链模型:
图 3 DNA 双链模型
2、自证明
每个节点在打包交易数据时,必须按照约定规则打包:
例如,可以约定交易的数量、交易id大小顺序、交易的时间的先后顺序、持续的时间等作为判断条件打包交易。
因为所有诚实节点按照约定规则打包打包的交易,所以交易集合是相同的,那么生成的k是相同的。而不诚实节点因为打包的交易不同所以导致了k与诚实节点的k不同。
每个节点在完成记录后都将{k,Nn}广播出去,某一个节点收到广播后,和自己记录的当前区块{k,Nn}对比,如果不同则可以从其它节点下载该区块。如果相同,将当前区块的数据写入数据库并开始下一个区块的打包。
3、M值传递
下一个区块生成,当区块高度N=Nn时,X链上Mn值生成规则:上一个区块的M值加上一个区块的k的hash值
根据M值传递性可知不诚实节点只要有一次记录与诚实节点不同,之后所有记录都将和诚实节点不同。
4、排异性
因为交易是用k加密的,所有诚实节点的在相同区块高度上的k值相同,所以任意一个交易发起的节点就可以使用自己的k值访问其它节点的交易信息。相反,不诚实的节点生成的k和诚实节点的k不相同,所以无法相互访问。也就说诚实节点对不诚实节点具有排异性。
同时因为X链上M值的传递性,不诚实节点作恶后之后生成的所有区块的k都将和诚实节点的k不一致,都将无法被访问到。可以理解为这个不诚实节点已经被排除出该P2P网络。
5、攻击
除非不诚实的节点总数超过51%,并且这些不诚实的节点数据要高度一致才可以发起攻击。攻击行为背后一定是人的利益,如果这种攻击得逞,该链就失去了其它参与者的信任,同时失去价值。所以为了让自己利益最大化的最好的选择就是做一个诚实节点。
三:题外
1,在设计区块链时的时候,X链的某个高度时数据模块,可以作为Y链上对应区块的区块头的一部分。
2,交易的集合被k加密时,应该有一些信息曝露出来,方便对索引的查找。
3,每条交易仍然使用RSA或椭圆曲线等非对称密码加密和签名的。交易的加密发生在交易集合加密之前。
4,DNA共识的核心是自证。
5、交易集合也可以不加密,但使用当前区块高度的M值来控制其他节点的访问权限。
方案不成熟,抛砖引玉! weixin:bianaihou 多多斧正