链化未来共识黄皮书(1)

链化未来公众号将分三篇文章来阐述链化未来的共识协议的理论设计,后续还会推出一系列文章来详细说明链化未来共识协议的工程实现,本文为链化未来共识协议理论设计的第一篇(1-3章)。
目录
1、前言
2、贡献
3、名词解释
3.1 验证算法
3.2 摘要函数
3.3 后量子算法
3.4 BLS 算法
3.5 区块
3.6 节点身份
3.7 消息类型
3.8 可验证延时函数算法
4、架构
4.1 随机数层
4.2 身份层
4.3 共识层
4.4 新节点加入
5、安全性证明
5.1 定理
5.2 安全假设
5.3 推论
1、前言
对于区块链应用场景,需要共识算法具有如下特性
Throughput:transaction per second 意味着区块链系统每秒能处理的交易笔数,为了能够满足全球用户,交易处理速度必须足够大,否则会造成交易积压,回复时间长。比如 bitcoin 的交易拥堵和以太坊因为 crytokitties 造成的网络拥堵。
Latency:交易从提交到回复成功与否的时间。在 PoW 网络中,因为有分叉可能,一般要等待几个块后确定。在 BFT 共识系统中,因为正确节点都在共识结束后就确定性有相同结果,所以在交易不拥堵的情况下,响应速度与共识时间相同。
Scalability:一般默认区块链系统参与的节点数越多,系统安全度越高。对于基于 PoW 共识的系统,安全度与参与的诚实算力相关。对于基于 BFT 共识的系统,参与节点数越多,能容纳的恶意节点越多,恶意节点少于 1/3。但是对于 BFT 系统,节点越多,通信和计算开销越大。Algorand 提出利用 Verifiable Random Function 随机选出一部分节点形成 committee参与共识,保证了无论总节点数多大,最后的 committee 数目一定,共识速度就不变。
Security:对于 BFT 共识,安全度包含 consistence,liveness 和 fairness。Consistence 是系统内所有诚实节点要最终达到相同的状态。Liveness 需要系统在任意情况下都能收敛到确定状态,并且能持续接受交易,产生正确的共识结果。Fairness 在于对于系统的用户,任意合法的交易都不会被拒绝。
对于传统的 PBFT[1, 2] 系统,需要假设网络处于弱同步状态,通过超时和换主来保证 liveness。但是因为换主是确定性地换到预先设定的下一个节点,而且每次换主导致的节点消息同步耗时长,主节点会被连续不断的网络攻击导致瘫痪,最终系统持续换主,永远无法共识交易,相当于停滞状态。
对此,Tendermint[3] 提出每一轮共识完成后确定性由下一个节点提出共识请求,从而避免了一直由主节点提交请求,避免了攻击的薄弱点。但是这依然无法避免提交请求节点的可预测性,导致被依次攻击,系统每轮共识都为空。
Honey Badger[4] 提出了基于 RBC(Reliable Broadcast)和 BA(Binary Agreement)的协议。核心在于任意节点都可以提出共识消息,通过 RBC 可靠传播到所有节点,并且为了减小广播带宽,通过 erasure code 分割消息为多份。同时所有节点都通过 BA 协议共识所有消息,BA 协议的执行会在任意情况下快速收敛到 1 或者 0,表示对共识消息的接受与否。该协议相当于每一轮,所有节点并行地提出交易、共识,最终得到交易的子集作为共识结果。所以对任意一个节点的攻击,都不会造成整个网络的崩溃,只是会影响网络部分性能。而且能充分利用带宽,适合全球部署。该协议的缺点在于交易响应延时比较高,因为每轮要共识多个节点的交易。同时协议需要预先确定节点的集合,不能动态添加节点,不能支持大规模节点。
为了解决节点添加和扩充节点的问题,Algorand[5] 提出将 VRF(Verifiable Random Function)[6]和 BA 结合起来。无论节点数目多少,通过 VRF 和持有的代币数随机选出特定数目节点,然后节点通过 BA 相互发送交易,并对优先级最高(VRF 随机数最小)的节点发出的交易共识。为了提高安全性,共识的每一步都通过 VRF 选出新一轮共识节点,从而让攻击者无法预测下一个攻击目标。该协议的主要有点在响应时间短,缺点在于无法做到高吞吐率和小带宽。
Dfinity[7] 主要是通过 threshold 签名来保证 VRF 的每一轮都能确定性地收到 signature。结合Random Beacon 和 Notaries 来使每一轮的成员都随机选择,并且提交的块按照本轮随机数进行排名。但是一个潜在的经济学博弈问题是,threshold 签名可以通过多个成员的合谋的方法来预测,合谋的成员可以协同计算出群私钥,快速预测出下一轮的随机数。通过作恶 Dos 攻击下一轮的成员的目的,合谋者可以破坏网络的公平性。因为这种攻击是不容易被发现的,所以可以做到零成本收益,因而在现实世界必然会出现。
2、贡献
链化未来共识具备如下特性
基于 VDF 的随机数生成器,解决了拒绝提交和随机数提前预测的问题,并且允许所有人公平地参与,随时可以离开。
基于 VDF 的改进 PoS 机制,解决了长程攻击问题,同时对新节点加入的验证问题也进行了解决。
引入硬件独特的计算能力评分和历史记录评分,生成无法篡改的硬件指纹,保证参与共识的节点都是高性能和良好信誉的。通过可验证随机函数和硬件指纹、持有代币随机选出共识节点(侧重硬件性能)和验证节点(侧重代币数和信誉评分),提高了系统的安全性和扩展性。
通过利用拜占庭共识过程中的并行性,提高了共识的效率,同时保证在少数共识提交者被攻击的时候,网络依然保持活性。
通过优化密码学签名验签模块,在共识过程采用轻量级的密码学模块 [8, 9],同时持久化高安全度的密码学结果,提高了节点响应速度。
通过冗余编码 [10] 将消息划分为多份传递,而不是一份消息广播,保证了节点能在同一时间窗口并行广播最大的消息数量,并且同一份消息通过多个路径传播,增加了安全到达概率。每一份消息附带默克尔树证明,可以提前得到存在性验证。
3、名词解释
3.1 签名验证算法
链化未来选择 ED25519[11] 作为对消息的签名,主要是基于如下考虑:
ED25519 是开源的密码学算法,由 Daniel Bernstein 提出,经过众多密码学专家论证,最后入选 RFC7748 标准。曾经参与过同微软 FourQ[12] 共同竞争下一代更高效更抗侧信道攻击的椭圆曲线算法标准,后因 NIST 直接进入后量子算法的遴选而取消。
ED25519 有比较高效的开源算法实现,并且汇编实现支持 Intel AVX 指令集。
ED25519 相对基于 Weistrass 曲线的 NIST P-256 曲线,性能有比较大的提升。在接下来的数学表达中,
签名标记为:SIGsk(m) = ED25519sig(sk, m)
验证标记为:V ERpk(SIGsk(m), m) = ED25519ver(pk, SIGsk(m), m)
其中(sk, pk) 为一对私钥、公钥。
3.2 摘要函数
链化未来采取 SHA256 作为摘要函数,基于如下考虑:
虽然 SHA3 标准已经提出,但是目前尚没有明显针对 SHA256 的攻击。
SHA256 性能相对 SHA3 比较高,而且有众多比较成熟的开源实现。
SHA256 相对 SHA3 或者其他摘要算法,有更多市场可用的实现。
在接下来的数学表达中,摘要函数标记为:SHA(m) : hash = SHA256(m)
3.3 后量子算法
量子计算机主要对密码学中的非对称算法和密钥交换影响较大,比如 RSA 基于的大数分解困难问题可用 Schor 算法高效解出,同理离散对数问题也可以解决(如 GEECM )。然而对于对称算法和单向函数影响不大,只需要为了增加安全性到两倍即可即可。目前 链化未来 不以后量子算法为主,基于如下考虑:
量子计算机的发展仍然有相当的时间长度 [15],一些关键性的问题如多个量子的叠加、量子纠错。
目前抗量子算法如密钥交换和非对称算法标准尚不成熟,NIST 第一轮的筛选刚刚完成。
抗量子算法目前有基于 LWE[16] 和 code[17] 的算法,效率普遍比较低,而且安全性的量化评估目前尚无定论(如 LWE 基于的 CVP 和 SVP 问题一直有效率更高的算法被提出 [18])。
传统算法基于的困难问题,如基于 pairing 的 ABE[19]/IBE[20]、零知识证明 [21],在抗量子的困难问题基础上构造比较困难,或者比较难做到高性能。
区块链上的数据到后量子的迁移并没有很大难度。主要是因为有足够多的时间,从非抗量子的公钥钱包迁移到抗量子的钱包。
Merkle tree、存证等基于的 SHA 算法即使安全度降低,被碰撞的难度依然比较大。
链化未来的抗量子钱包,通过结合最新的 NIST 征集的抗量子加密算法,并通过多重签名技术达到足够的安全性。并且针对抗量子算法的缺点又以下解决方案
针对目前抗量子算法是否真正抗量子的问题,即使 NIST 尚无定论,所以我们采用多个算法(Crystals-dilithium[22], Spincs+[23], Rainbow[24])+ 多重签名的方式。这样即使其中一个算法被攻破,不至于影响钱包的安全性。
针对公钥长度太大的问题,目前消息传递采用账户名的方式,所以只是多占用用户的存储资源,不会带来交易的带宽消耗。
针对签名长度太大的问题,会造成交易大小的增大,影响系统的 tps,消耗用户的带宽资源。所以目前只能依赖密码学的进一步发展,同时建议用户只是用在抵押账户或者不经常使用的存储账户上。
针对多密钥的管理问题,我们提供安全的密钥派生钱包,用户只需要存储一个密钥,即可管理所有抗量子的钱包,并且不会因为一个账户被破解而影响其他任何一个账户的安全性,用户体验不会受到任何影响。
3.4 BLS 算法
采用 BLS 算法,可以对签名结果进行聚合 [25],从而减小传递的消息大小。链化未来 目前将此算法此算法应用在 Vote 消息中,减小 Vote 的消息大小,并相应地减小每个块证书的大小,减小侧链向主链传递的跨链消息大小。同时小的块证书大小,也对轻客户端的验证带宽和计算负载比较小。
3.5 区块
区块由如下结构构成
块高度,简写为bh
上一个块的hash,定义为hprevbh。
块包含的交易的merkle根hrootbh。
交易执行结果的merkle状态树根,即hstatebh。
交易的Proposers的merkle树根,即hP roposerbh。
VDF结果和证明,即resV DF和proofV DF 。
总的区块格式为
(bh, hprevbh, hrootbh, hstatebh, hP roposerbh, resV DF , proofV DF ) (1)
考虑到创世区块比较特殊,我们定义为
(0, 0, hroot0, hstate0, 0, 0, 0) (2)
其中hroot0包含一个创世合约,其中约束了链化未来的规则。hstate0包含创世成员的身份和代币分布。
3.6 节点身份
在区块链系统运行过程中,任意一个节点属于如下一种身份:
Proposer: 共识每轮提起交易批
Voter: 对交易进行确认,发出投票同意打包请求
Listener:对消息进行传递,收到足够票数后执行
3.7 消息类型
区块链系统运行过程中,主要包含如下两种消息:
PROPOSE 消息:提议共识中需要包含的交易,由Proposer(对应密钥对为 (skp, pkp))生成, 格式为
(P ROP OSE, txs, bh, round, txshash, SIGskp, pkp) (3)
其中txs为交易批,txshash = SHA(txs),SIGskp = SIGskp(bh, round, txshash)。
ECHO 消息:投票消息, 由 Voter(对应密钥对为 (skv, pkv))生成,格式为
(ECHO, bh, round, txshash, SIGskv, pkp, SIGskv, pkv) (4)
其中 SIGskv = SIGskv(bh, round, txshash),其余同上。
3.8 可验证延时函数算法
可验证随机函数,又被成为 VDF,是一种延时函数,具有不可被并行的特征,并且可以被高效验证。为了表示该函数,我们定义如下:
y = V DF(x, ts) (5)
result = V DFverif y(y) (6)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值