基于DAG的IOTA共识算法

摘 要:针对传统区块链和比特币在高并发交易受限的问题,研究人员提出了一种基于有向无环图的新型加密货币。通过介绍该物联网行业加密货币IOTA的数学基础——用于存储交易的有向无环图,对其进行一定的了解。这种新型加密货币的分布式网络主要特征被称为tangle,同时讨论了IOTA协议中所使用的共识策略和算法。

关键字:DAG;IOTA;FPC-BI;共识算法;拜占庭问题


  • 背景介绍

整个加密货币行业围绕着如何打开去中心化世界的大门,让人们能够在不依赖第三方的情形下安全交易,研究人员相继提出了多种分布式账本技术。分布式账本类似于一种同步数据库,记录着网络参与者之间的价值转移,整个账本记录着有效交易的历史,并且不可篡改。区块链是当前分布式账本最主要的实现形式之一,但当前区块链中存在一个核心问题:可扩展性瓶颈。具体而言,区块链的吞吐量严重不足,且交易确认也较为缓慢,这些因素极大地限制了它的实际应用,同时它固有的工作量证明机制和高额的交易费使其无法满足小额交易的支付。正如没有人愿意为买一杯咖啡而等上一个小时来确认交易成功,之后还需支付几倍于咖啡的手续费。此外,区块链本身的工作量证明机制也导致了大量的能源消耗,比特币一年的挖矿耗电量已经超越伊拉克全国一年的耗电量,这些问题的发生让人们不得不去思考新的系统和新的机制。

在图论中,若有向图G=V,E对于任意顶点v∈V,从该点出发无法找到有序路径P=e1,e2,…∈E回到v,那么就称这个有向图为DAG(Direct acyclic graph,有向无环图)。DAG原本是计算机领域一种常用数据结构,因为独特的拓扑结构所带来的优异特性,经常被用于处理动态规划、导航中寻求最短路径、数据压缩等多种算法场景。在2015年Sergio Demian Lerner提出新的基于DAG的链式结构,可以替代区块链用于分布式账本的存储。

这种结构打破了区块链的固有思维,可以让每一笔发生的交易立即上链,并且通过新的共识算法约束整个网络。由于DAG不受必须将交易加入区块链末端的限制,把同步记账提升为异步记账,因此具有良好的高并发特性,是区块链从容量到速度的一次革新,被认为是能够解决传统区块链的可扩展行问题的具有前景的研究方向。

Kaa IoT 部署_权重

在区块链这种经典的账本结构中,通常将一组交易打包成区块(Block),通过哈希引用将区块组织成一个链式结构。在DAG账本中,一个区块通常只含有一个交易,他们彼此之间通过哈希引用,构成一种有向图结构,并且图中不存在环路。


区块链

DAG

单元

Block(区块)

TX(交易)

拓扑

由区块组成单链,只能按照出块时间依次写入

由交易单元组成的网络,可以异步并发写入交易

粒度

每个区块单元记录多个用户的多笔交易

每个单元记录单个用户交易

IOTA是一个基于物联网(Internet of things ,IoT)而生的区块链项目。严格来说,IOTA不是“区块链”,因为它没有区块,也不是链式结构。IOTA提出了基于DAG的分布式账本结构,这种结构就是所谓的Tangle。

  • IOTA原理

Tangle网络结构

在IOTA中,节点是存有缠结(Tangle)所有信息的设备,没有矿工和用户的区分,即所有节点都将参与协商。节点只执行不需要太多计算能力的基本操作(例如存储分类账单、验证事务)。用户能以最小的成本建立节点,并参与网络共识,增强网络的安全性。Tangle作为IOTA使用的基于DAG的基础数据结构,它构建的基本规则为:为了加入Tangle,每笔交易必须验证和赞成批准已有的两笔交易。验证是指用户校验交易的签名,即它们的PoW(Power of work,工作证明),并确保不会与任何先前交易(直接或间接引用的)发生冲突。如果所选的tips是合法的,则用户通过引用它们来添加新的交易。

两个新的交易加入网络中。Tangle中的交易分为3类:绿色框表示已经被网络以很高的确定性确认了的交易(已达成共识的交易,共识是关于概率的确认,同区块链中永远不会有100%的确定性);蓝色框表示部分确定的交易(还没有达成共识的交易);灰色框(末梢交易tips)代表未经验证的交易。通过叠加新交易的验证路径可知,交易n被新加入的多个tips共同验证确认,则它在tangle中变得更加深入,成为完全确认的交易。

在更多交易添加到 Tangle 的情况下,这种二对一、前瞻性支付的共识可加强交易的有效性。由于共识是由交易确定的,因此理论上,如果有人可以生成三分之一的交易,那么他就可以说服网络中的其余部分,使得他的无效交易变成有效的,这时 IOTA 就会在一个称为“协调器(The Coordinator)”的中心节点上对网络中的所有交易做复核,并向整个分布式网络发布里程碑交易。里程碑的主要作用是确定共识,Tangle 运用一个简单的规则:当且仅当一笔交易被里程碑所引用,则该交易得到确认。一旦交易量足够大并达到一定规模,使得个人难以创建三分之一交易量,协调器就会被从中移除。

Kaa IoT 部署_算法_02

IOTA中的核心数据结构具有高度的可扩展性,提供多处可以附加交易,避免了单点附加新的交易的限制。 用户可以继续在Tangle的各个地方附加新交易,而无需等待其他交易确认。

共识机制和算法

由于网络中交易的传播有延迟,在同一时刻每个节点未必拥有相同账本状态。这使得在验证的时候,可能会有多个互相有冲突的交易加入到 Tangle 中。在发生冲突时,节点需要决定哪些交易最终应被视为有效,即他们需要就那些冲突的交易达成共识。

在处理冲突交易中,IOTA使用了Tip(尖端)选择算法和投票机制。节点间相互通信,以便在有冲突交易时决定接受哪些交易。快速概率共识(Fast Probabilistic Consensus within Byzantine Infrastructures ,FPC-BI)是一种通信复杂度低的协议,它允许一组随机节点通过投票的手段对一位变量值达成共识。元胞自动机方法从模拟结果来看似乎更快,然而该方案缺乏严格的证明,因此后文不再赘述。这两种解决方案可以看作是不同的投票机制的非互斥实现,它们可以组合使用来构建一个健壮的框架。

Kaa IoT 部署_权重_03

Tip选择算法

TSA(Tip selection algorithm)是一个基于马尔科夫链蒙特卡洛方法的随机游走算法,诚实节点用随机行走(random walk)的方法来选择有效交易加入tangle网络,如图4所示。在相当大的随机区间放置N个粒子,也称作随机游走者,它们独立的向末梢交易tips进行随机游走,最先到达tip的两个随机游走所选中的交易作为申请验证的候选人。当交易y赞成了交易x,则随机游走的转移依据概率Pxy:

Pxy=exp-αHx-Hyz:z~xexp⁡-αHx-Hy-1

其中,其中 α>0 是权重参数,Hx 是当前交易的累计权重,即交易x直接或间接验证(赞成)的交易数量。对于懒惰tips而言,因为它验证了过早的交易,因此累计权重远大于应有的Pxy而不会被选择;对攻击者tips而言,累计的权重远小于tangle主链中的,所以随机行走一般不会跳入攻击者建立的交易链。

该方法只有在诚实交易占多数的假设下有效。此外,该方法解决冲突速度缓慢,这会导致选择“错误”分支的交易,从而需要进行重新添加(reattachments)。所以IOTA运用投票表决来加速节点间交易的确认。

Kaa IoT 部署_算法_04

FPC-BI共识算法

投票机制能够确保在被攻击的情况下共识的安全性。节点查询其他节点对当前分布账本的看法,根据得到的其他节点观点的比例调整自己,在经过几轮询问后,决定自己账本的内容。当有冲突时,从分布式账本的初始状态开始执如下:考虑一个交易v,如果在给定的时间内节点没有看到有其他交易从同一地址花费,我们说该节点喜欢交易 v;否则,节点不喜欢交易 v。我们会定期对缠结中的每个交易应用投票方案,每个节点都会询问一些邻居的状态。在投票后,一个交易要么被节点所喜欢,要么被一个节点肯定不喜欢,直到这种状态不会改变。我们希望保持单调性,如果一个节点喜欢交易u,那么它就喜欢交易 u 赞同的任何交易,如果节点不喜欢交易 v 那么它不喜欢赞同交易 v 的任何交易。实现这一点,我们可以放心地假设我们只喜欢交易 v 当我们喜欢它的所有前锥体形,如果我们不喜欢 v 那么我们不喜欢它的所有后锥体。

Kaa IoT 部署_算法_05

若赞成交易,则赞成该交易验证批准的所有交易;若不赞成交易,则舍弃验证该交易的所有交易。

FPC算法针对拜占庭问题的情况,假设部分节点被对手控制,这个对手要么想延迟共识,要么想破坏共识。

模型定义

  1. 节点知晓网络中所有的参与者,并和它们进行通信。节点在达成共识中,会进行多轮查询,在每轮中几点会询问k个节点当前的意见。所有节点都会回应询问;
  2. 1-qn个节点是诚实的。诚实节点是指我们认为遵守系统指定的协议规则的参与者,并且节点大部分应是诚实的;
  3. 假设对手节点是无所不知的。虽然这个假设看起来有点极端,但要注意,这些节点可以更频繁地查询诚实节点,以了解网络的当前状态;另外,即使以某种方式不允许“太频繁”的查询,对手仍然可以通过分析特定诚实节点与所有邻居节点的交互历史来推断关于该节点的意见。对手节点可以分为谨慎的对手和鲁莽的对手。在同一轮询问中,谨慎的敌对节点会对所有查询持有相同的意见,而鲁莽的对手则会给出不用的回应;
  4. 在每一轮查询中,所有参与者会使用一个随机数,假设这些随机数是由可信源提供的,而不是由对手控制的;
  5. 不存在中心节点“监督”整个网络,即网络不知何时达成共识并停止。因此每个节点需自发的决定。

参数设定

该协议依赖一组整数和实数参数:

  1. 1∕2<a≤b<1,第一轮查询的阈值;
  2. β∈0,1∕2 ,随后轮次查询的阈值;
  3. m0∈N 为冷静期;
  4. l∈N,表示一个节点具有相同意见的连续轮数(当冷却期结束时),在此之后,它将成为最终结果。

算法协议过程可以描述为:在第一轮中每个诚实的节点jKaa IoT 部署_算法_06随机的查询其他节点kKaa IoT 部署_Kaa IoT 部署_07次(重复和自我询问均可)并记录它接收到的1-opinions意见的数目为η1j

Kaa IoT 部署_数据_08

;随机变量X1~Ua,b

Kaa IoT 部署_算法_09

对所有节点可用;诚实的节点遵循若k-1η1jX1

Kaa IoT 部署_权重_10

,则决定意见为1否则意见为0。在随后的m轮次进行同样的询问,但随机变量的取值范围为Xm~Uβ,1-β

Kaa IoT 部署_算法_11

。当一个诚实的节点在冷静期结束后连续lKaa IoT 部署_算法_12轮中都得到相同的意见,则最终意见可以确定。

FPC依赖于随机查询的思想,在某些情况下足以获得良好的性能,而且由于消息的小复杂性,协议变得可扩展。这种随机性的另一个优点是在不太可靠的网络和不可避免的动荡(节点连接和离开)情况下的鲁棒性。

IOTA的应用领域

IOTA作为突破性应用的基础技术,在改变智能汽车、全球贸易和供应链、工业物联网、电子健康、智慧城市、海关与边境管理以及数字身份等领域都将发挥重要的作用。

数据是机器经济和互联世界中最基本的要素之一,它是数据-信息-知识-智慧(DIKW)金字塔的基础。在接下来的十年中,将有超过750亿个连接的设备以不同的方式进行交互,我们将看到历史上无与伦比的数据激增。这些设备将促进机器经济发展,从存储到电力和传感器数据的所有交易都将在此进行。然而绝大多数数据仍被锁定在所谓的数据孤岛中。数据孤岛不会或很少会在自己的封闭环境之外共享数据。IOTA基金会启动了“数据市场”项目,作为概念证明(PoC)和开放式创新生态系统。随着数据流在各个孤岛上激增并在相互之间传递价值,传统的价值链将过渡为价值网络。这种范例的管理将更加复杂,迫使企业重新考虑其作为这些生态系统一部分的竞争优势。数据市场将成为交换数据,货币化数据流并提供新的智能业务模型基础。

文件是在各方之间传输信息和合同的重要手段。若能可靠地证明文档没有从建立状态更改过,将有助于确保各方之间的信任。IOTA技术可自动检查来自受信任来源(Tangle)的下载文件,并在文件不同的情况下警告用户。

能源供应通常是自动化的,但是支付系统的集成成本很高,并且通常需要人工干预。通过使用IOTA创建点对点(P2P)能源网格,可以自动进行电力传输和该电力的自动付款。这种自动化使基础架构更加动态,更易于更新。捷豹路虎近日测试发布了基于IOTA的联网汽车服务,车主可以通过让车辆自动向导航提供商或地方交管部门报告有效的道路状况数据(如交通拥堵或坑洼)来获得积分,并用其实现支付通行费、停车费和智能充电等费用。

供应链中的大多数可回收资产不会被跟踪,或仅被手动跟踪,这一过程由于低回报率,延迟以及与追踪这些项目相关的高成本而造成效率低下和经济损失。因此,大量资产不会流回给所有者,而是被提供给竞争对手或被低效回收或处置。为了解决这些问题,IOTA驱动的解决方案将为每个资产提供独特的数字身份,包括当前拥有它的组织的位置和身份,所有这些都可以通过简单的移动应用程序查看和管理。例如,在玻璃制造业中,玻璃架是可回收的资产。该资产用于将玻璃从玻璃生产商(资产所有者)运送到分销商。玻璃分销商可能会使用它们将其他玻璃运送到窗户制造商,而不是将玻璃架退还给玻璃生产商。然后,窗户制造商可能会用它来将窗户交付给他们的客户。IOTA提供了一种解决方案,可以无缝收集和共享有关可回收资产的信息,而无需集成任何专有系统。

Kaa IoT 部署_算法_13

显示了简化的利益相关者以及每个利益相关者在接触可退还资产时应执行的不同操作。其中虚线表示可退回资产的路径,绿色圈代表利益相关者,紫色圈代表可退回资产的所有者。

总结

IOTA作为面向IOT的分布式协议在基金会的研发和发展下,已经有了广泛的应用。在IOTA中为了达成共识,将FPC和元细胞自动机等算法和机制进行相互结合,通过学习研究相关文献,掌握分布式与并行计算的前沿知识并拓展了研究思路。同时我们可以看到在IOTA项目中仍开发了Chrysalis、Coordicide、BeeNode、Firefly、Wallet library等新技术和工具,我们将在以后进行对这些理论与技术进行跟踪研究。

参考文献

[1]高政风,郑继来,汤舒扬,龙宇,刘志强,刘振,谷大武.基于DAG的分布式账本共识机制研究.软件学报,2020, 31(4):1124–1142.

[2]刘开放,付绍静,苏金树,张富成.面向物联网多域协同的IOTA区块链优化方案[J].信息网络安全,2020,20(10):41-48.

[3]江航. DAG链上的共识机制与均衡[D].哈尔滨工业大学,2019.

[4]Popov S, Buchanan W J. FPC-BI: Fast Probabilistic Consensus within Byzantine Infrastructures[J]. Journal of Parallel and Distributed Computing, 2020, 147:77-86.

[5] Serguei Popov, Hans Moog, Darcy Camargo, Angelo Capossele ,etc(IOTA Foundation). The Coordicide .https://files.iota.org/papers/20200120_Coordicide_WP.pdf


 出自小白的学校课程结课报告,参考了IOTA白皮书和相关论文,是对网络上的资料进行的搜集整合以及翻译,供对IOTA尚未了解的小伙伴进行学习交流。因个人学识与理解原因有可能会有错漏,敬请谅解。