区块链的本质远不止分布式账本,区块链如何安全地达成共识,对于不同的应用场景如何设计一个既安全又可以持续地共识算法呢?一切答案尽在本文《创新型共识机制大集合》
首先为大家介绍的是来自于NKN的中继证明 (POR) :
介绍中继证明之前,可能有小伙伴不了解NKN是做什么的,所以先给大家介绍下什么是NKN。
NKN是区块链驱动的一种开放、去中心化、社区共建共享的新型网络基础设施和生态系统。继以太坊区块链化计算能力, Filecoin/IPFS区块链化存储,NKN对信息基础设施的第三大支柱——网络传输,进行区块链化,创建新型区块链网络生态系统。我们认为数据传输能力是一种有价值的资源,其价值在于数据传输能力的用途(为社区扩展网络连接范围和提高数据传输能力)。直观来说,NKN将网络资源进行了数字资产化,通过独有的通证经济模型使得网络基础设施的使用和建设合二为一。
区块链的三大支柱
简单来说,NKN就是要让不同区域的互联网设备可以互联互通,实现自主协同构建去中心化网络并实现规模化扩张。这种互联网并不受限于算力、存储等方面的限制,赋予互联网强大的扩展能力,实现真正的去中心化、开放、自激励、保障隐私和安全等。
说了那么多,下面我们来聊聊怎样设计一个共识算法才能既安全又高效的让不同设备之间实现互联互通呢?
NKN整个网络中的一个关键问题是要证明一个节点中继了多少数据,也就是中继证明(Proof of Relay, POR)。 POR对于NKN至关重要,因为被中继的数据量与NKN系统通证奖励直接相关。理想的证明应该满足以下条件:
1.可验证的:任何参与数据传输的人都能够仅使用公共信息正确验证证明
2.不可伪造性:除非控制所有涉及的节点,否则没有一方能够伪造有效证明
3.不可篡改性:除非控制所有涉及的节点,否则没有一方能够修改有效的证明
与比特币和以太坊挖矿不同,POR是一个有用的工作证明,即:挖掘正在传递数据。POR通过特殊的签名链进行实现。为了提高效率,POR使用哈希签名链以不可控但可验证的方式随机选择样本。此外,POR的特征还在于即使恶意攻击者控制了网络中大多数节点,POR也很难被伪造。
NKN通过独有的签名链以实现POR共识机制的基础就是传输数据。 为了保证对应用程序透明,POR适用于网络数据包。数据包来自可以是节点或客户端的源节点,然后只能由至少一个节点进行转发,直至到达目的地。NKN中的基本传输单元是NKN数据包,NKN数据包的字段如下图所示:
NKN数据包字段汇总
签名链属于NKN数据包的一部分而且是NKN数据包中可能上链的那一部分。签名链是数据转发节点在转发NKN数据包时依次签署的签名链,如下图所示。 签名链中的每个元素都由以下字段组成:转发节点的NKN地址和公钥、下一个转发节点的NKN地址、和使用中继节点的私钥对前一跳节点有效数据的签名。
签名链结构示意图
签名链的最大特点是具有可验证性,也就是说仅当最终签名链上的每个元素满足以下条件时,签名链才有效:
1.转发节点的NKN地址匹配前一个元素中的下一跳转发节点NKN地址
2.签名字段是有效的
除有效载荷(例如网络数据包)以外,对签名NKN数据包的任何修改都会使签名链无效,除非重新签名。 因此,签名链对任何有权访问NKN数据包的人都是可验证的(不需要有效载荷)。恶意节点无法篡改或伪造签名链(除非拥该路由上的所有节点的私钥),仅当满足以下条件时,数据包才有效:
1.有效负载哈希值是正确的
2.有效载荷大小是正确的
3.签名链是有效的
4.源NKN地址和公钥与签名链的第一个元素匹配
5.目标NKN地址和公钥与签名链的最后一个元素匹配
除非重新签名,否则对已签署的NKN数据包的任何修改都会使其无效。 因此,NKN数据包对任何人都是可验证的。不需要额外的信息来验证NKN数据包。 恶意节点无法篡改或伪造NKN数据包(除非掌握沿路由所有节点的私钥)。
总结一下,设计共识机制的时候要考虑三个问题,即:NKN数据包,签名链和可验证性设计。那么,画龙得点睛,是时候引出中继证明(POR)机制了。NKN使用移除有效载荷字段的NKN数据包作为路由中所有转发节点的中继工作证明(POR)。 我们知道它可以满足可验证的,不可伪造的和不可篡改的要求,使得每个人都能够验证签名链的有效性,而没有人可以伪造或修改有效的签名链,除非他强大到可以控制系统指派路由中的所有节点的私钥。要做到这点几乎不可能,因为有效的系统路由一定是按照随机规则选取,一来这样做大大减小了共谋的可能,而且一旦发现共谋则该签名链会被立刻无效掉(无法参与共识)。除此之外,这些签名链不可能分叉,因为每个元素都包含下一个节点的NKN地址和公钥。 如果路由上的节点是恶意的,并且在生成签名时删除或修改链上某些先前的元素,则该链不再有效。 同样,如果一个部分签名的签名链被恶意方拦截,没有有效的签名链可以在没有指定的下一个节点的私钥的情况下生成。
考虑到要将POR机制真正落地应用,必须要考虑其效率的问题。因此,每个NKN数据包都有一个证明,可用作收据来生成从源地址到转发节点的交易。但是,假如为NKN中传输的每个数据包而创建一个交易是及其低效率的做法。所以,POR的设计考虑到了这点,并规定只有签名链上最后一个签名小于某个预定的阈值的数据包才有资格进行交易。因为签名链上的最后一个签名对每个人都是可验证的,但仍然是不可预测和不可控制的,除非包括源和目的地在内的所有沿途节点由同一方控制。考虑到有效载荷和完整路径,最后的签名本质上是确定性的,但如果没有沿路径的所有节点的私钥,就不能提前计算。使用理想的哈希函数,签名链上的最后一个签名在数据包中是随机的。因此,仅选择具有足够小的最后签名用于交易(具有调整后的每个数据包的价格)的NKN数据包不会改变转发节点的预期奖励,但引入了定价和奖励中的一些变化。这通过选择合理阈值来平衡对较少交易和较小奖励变化的需求。
与所有公链要面对复杂的开放环境一样,NKN需要在恶意攻击的情况保证POR的安全性。只要至少一个节点的私钥保密,NKN数据包中的签名链就是不可预知和不可控制的。 但是,如果恶意方控制包括源和目的地的路由上的所有节点的私钥,则该方能够预测并创建有效的签名链和NKN数据包,而不实际传送该数据。 为了解决这个问题,NKN的设计区分了两类签名链。一类是在数学上显示具有小概率被一方控制以用来获得更多的好处,例如挖掘奖励。 另一类没有额外的好处,因此创建此类签名链是徒劳的,会产生经济上损耗。如果想更多关于POR安全的细节,可以参考NKN Github的wiki页面(https://github.com/nknorg/nkn/wiki)。这里面包括如何设计安全的路径,基于会话的数据传输模式等内容。
第二个要给大家介绍的是来自于Genaro Network团队设计的SPOR共识机制:
同样,首先给大家介绍下什么是Genaro Network。
Genaro Network 是首个结合去中心化存储网络的图灵完备公有链,它为区块链开发人员提供了一站式解决方案,在部署智慧合约的同时,可以存储用户资料。同时,Genaro 也为每个人建立一个可靠的互联网与共享小区。作为区块链3.0时代的缔造者,Genaro 致力于推动区块链科技的发展。通过 Genaro Hub 和 Genaro 加速器,Genaro 将帮助数以千计的区块链应用落地,完成从云端转向区块链的技术革命,从而创建全球区块链生态系统。
简单来说,Genaro要将储存和共有链结合在一起,使它可以
起初我们在探讨设立Genaro共识机制的时候, 就明确一点:要做有意义的计算。也就是说,公有链除了做账本,本来还应该完成互联网中的某些其他功能。世界上本来就有很多东西需要大量的算力,为什么一定要做没有实际意义的哈希计算呢?为什么不计算蛋白质的分子结构、计算基因工程、计算机器学习?所以说,减少能源的消耗,同时完成有意义的计算,是共识机制设计的关键所在。
但是这两点同时实现极为困难。第一,如果消耗的资源减少,安全性就越低,因为攻击者越容易将分叉链让大家误以为是主链;第二,有意义的计算如何有规律的与区块链系统连接起来,比如如果做机器学习计算,稳定的Data Set从何而来,计算的奖励如何分配,都是需要精心设计的地方。
先给大家介绍一下什么是SPOR:SOPR是一种数据可检索行证明,可以被看作是一个微型POW。数据可检索证明的意思是:当用户不取回文件的时候,依然可以相信文件完好无损的保存在系统中。在Genaro系统中每天都会对存储节点进行“challenge”,存储节点通过运行SPOR算法表明数据是可被取回的。首先这种证明的难度不会随着时间的推移而增加。证明一个文件可取回,今天的计算量和明年是几乎一致的。其次这是在实际生活中有用的计算,即便是云存储也本身需要这样的证明。SPOR是一种在存储领域被验证为可靠的算法,将其引入区块链系统并不会带来额外的隐患。
Genaro并不是用SPOR代替POW, 实际上,Genaro的混合共识机制是以POS为主体,而SPOR主要用来要求节点贡献算力、存储空间等资源来加强POS共识的“防守”。此混合共识机制的大致过程为:
1.节点进行GNX押注,分享存储空间,申请加入委员会
2.报名者进行实力排名(根据epoch中heft重量与GNX押注等因素)确定委员会名单
3.由委员会点按排名顺序依次连续出块
4.出块节点获得奖励
这个流程相当于通过SPOR来筛选可信节点,也即要求共识节点付出一定代价,也即something at stake,于是nothing at stake不攻即破。其中,选取部分节点以及允许信任节点连续出块是提升TPS的方法。对于long range attack而言,Genaro的混合共识机制的本质是将存储网络与公有链进行深度绑定,公有链中的交易分为两部分:
1. 普通交易
2. 存储行为引发的交易(例如上传下载分享等)
而第二类交易会将文件的sentinel相关信息存入区块中。那么,如果节点想要实施long range attack,回到最初阶段的区块链状态,则无法复原存储网络,就无法将区块推进到当前高度,网络会判断你不是最长链,直接进行惩罚。
此外,这样的混合共识机制还可以防止分叉。如果攻击者想要故意分叉(就像ETC与ETH),即便可以拉拢部分矿工在分叉链上继续出块,但这条链将会丧失用户数据的完整性,成为了一条毫无价值的“伪链”,用户不会使用,矿工就没有了消费者,自然不会去挖。
这样,通过引入“存储”这样更多的一个维度,打造出的SPoR + PoS混合共识机制,变成为了可持续共识机制的一个例子。这也说明,可持续共识机制要求公链本身有记账之外的更多实际功能。











网友评论