IOTA概述
IOTA是专门为物联网应用场景设计的加密货币。它的数据结构基于Tangle而非区块链,更加适用于高并发交易的物联网场景;同时,它的交易无需手续费,大大降低了物联网中海量小微支付的交易成本。本文主要对IOTA的数据结构、交易规则、交易过程以及风险应对四个方面进行介绍。
一、数据结构
IOTA的和其他代币最根本的区别是底层数据结构的不同。其他代币大多是用区块链存储交易数据,而IOTA则是采用了缠结Tangle作为其底层的数据结构。
Tangle是一种存储交易数据的有向无环图(Directed Acyclic Graph, DAG),其基本结构如图1所示。
图1Tangle图中包含“点”和“边”两种元素,点代表交易,边代表绑定关系。有向边将各个交易链接起来,形成了Tangle——一种用于存储交易的新型分布式账本。
在图1中,新产生的交易6对交易4和交易5进行了验证,验证通过后进行了绑定,形成图中交易6指向交易4和交易5的有向边。
由此可见,Tangle结构和区块链相比有如下几点特征:
1.最小验证单位不是区块,而是交易。
2.存储交易的数据结构不是链状,而是网状。
3.可以不断向外扩散的网状数据结构,更加适合物联网高并发交易的应用场景。
二、交易规则
基于比特币的交易需要支付矿工手续费,这里的矿工就是建立区块的节点。在未来小微支付广泛存在的物联网场景中,这种交易方式并不适用,因为这个手续费会大概率超过微小交易本身的价值,这种情况是非常不合理的。
同时,由于矿工的存在,使得比特币系统不可避免地拥有了节点二元性的特点:一类节点是参与交易的,而一类节点是参与确认交易的。这种二元性将会造成资源分配问题和公平性问题。
对此,IOTA基于Tangle提出了它的解决方案。
在IOTA中,每一笔新交易发生之前,该笔交易的节点首先要选择之前两个旧交易进行验证。验证通过后,该交易和被验证的两笔交易绑定。也就是说,要在IOTA网络上发行交易,就要对之前的交易进行验证。参与交易的每个节点都要承担一些矿工的义务,对整个网络的交易真实性负责。
这种记账的方式,不需要矿工,也不需要大量节点验证,这就节省了手续费和算力资源。有效地消除了手续费和网络二元性的问题,更加适用于大量节点之间小额交易的物联网场景。
三、交易过程
上面对IOTA的数据结构和交易规则进行了说明,下面对交易过程的一些细节进行介绍。
选择旧交易。一个节点在发行一个新的交易之前,首先要选择已经发生过的两个交易进行验证。关于选择哪两个交易,是IOTA技术的关键,最简单的策略是随机选择,并且要在还未被验证过的交易中进行选择。
验证旧交易。选择好旧交易后,节点会对它们进行验证。要检查交易的签名是否正确,生成该交易的工作量大小,以及是否和与之直接或间接相连的交易有冲突。如果有冲突,则重新选择旧交易;如果没有冲突,则验证通过。
绑定旧交易。验证通过后,节点将新生成的交易与已被验证的交易进行绑定。绑定过程需要做一点PoW计算,类似于比特币中的矿工,需要找到一个随机数满足如下条件:该随机数和被验证交易中的某个数值连接成新的字符串,该字符串对应的哈希值应满足某个固定格式。
四、风险应对
在IOTA中也会出现交易冲突,即双花问题,类似于区块链中的分叉。IOTA通过交易权重解决这个问题。
每个交易在生成时,都会附带两个权重值。一个是自有权重,为3的指数,固定不变;另一个是累计权重,是其后续绑定交易自有权重的累加,随着交易的增多而变大。
交易在被验证的时候,两个权重值是重要参考指标。累计权重越大的交易,意味着其可信度越高。在交易冲突发生的时候,会比较两个交易的累计权重,并舍弃那个累计权重较小的交易及其分支,后续如果遇到合适的时机会会再加上。
同时,IOTA对虚假交易也有应对措施。虚假交易一般在生成时,黑客节点会设定较大的自有权重,使其看似可信,而IOTA对自有权重有大小限定,会过滤掉黑客节点的交易;同时,由于单一节点算力有限,基本不可能在短时间内发生多个交易以对虚假交易进行可信验证的情况。