Sma11_Tim3's Studio.

分布式账本之IOTA

字数统计: 1.7k阅读时长: 5 min
2021/03/01 Share

本文转载至https://draveness.me/iota-tangle/

什么是IOTA

IOTA是一个公共的分布式账本,其中主要利用了一个叫做Tangle(缠结)的机制,Tangle是一种基于DAG(有向无环图)的新型分布式账本,它意味着没有区块,没有链,没有矿工。同时没有矿工和用户之间的转账且交易时也不用收取手续费。

Tangle

Tangle本质上就是一个有向无环图,所有由节点出发的交易最后都会成为整个图的一部分,也就是用于存储交易的分布式账本。有所的交易在发送的时候,都需要确认两笔之前的交易,交易的确认是通过“边”来表示的。

iota-tangle

也就是说每一笔交易都为整个网络中的交易做出了确认其他交易的贡献,这样新的交易就能够起到降低历史交易被篡改的作用,这一点也是IOTA与其他区块链直接的主要区别之一。

在DAG中,分叉是无时无刻不在出现的;但是与其他区块链不同,例如Bitcoin,分叉只是整个网络的节点暂时没有达成共识而已,经过一段时间还是会确定唯一的一条主链,IOTA的DAG没有唯一主链的限制,这一点在理论上可以增加网络的吞吐量并降低响应时间。

Tangle和区块链的比较

•Tangle更流畅,随着时间的不断推移整个网络会变得更加的安全;反之区块链则会更慢,效率更低。

•Tangle免费的而且没有矿工,节点也不需要验证每笔交易;在区块链中交易的时间会比较长,而且需要一定的手续费。

•从存在的时间来看,区块链已经积累起了比较高的信誉度;而新兴的IOTA还没有体现出有效性和安全性。

•由于区块链的算法比较负责,以太坊和比特币比起IOTA更加的安全。

•虽然IOTA也属于加密货币,但是其去中心化的特性还有待商榷。

Tip Selection

为了将交易加入到Tangle中,新的交易必须选择并同意之前的两个交易;在通常情况下他们会选择最近没有被同意的两个交易,也就是tips,选择tips的方法叫做tip selection algorithm。但是由于这两个交易之前也选择过其他的交易,因此之前的交易的累计权重也会不断地增加以此来保证整个网络的安全性。

尖端的选择过程就是创世交易向尖端的随机遍历,只是不同的交易会拥有不同的权重,拥有更多权重或更多交易索引的tips就会被优先选择,也就是说新创建的交易会比老的交易更容易被选择。

然而不是所有的节点都需要遵守该尖端选择算法,但是该算法就是为了让大部分节点都遵循而设计的,其他的节点也会被激励使用这种方式来选择同意的交易。

共识

在Bitcoin中,所有的交易都是存储在区块中的,所以确认了区块就代表确认了交易;

bitcoin-consensus

存在的最长的链就是主链;但是在IOTA中因为使用DAG作为数据结构并且没有区块的概念,整个网络中的情况就变得非常复杂。

Tangle提供了两个不同的共识策略,一种是中心化的,一种是去中心化的。前者利用的是IOTA基金会控制的节点,也就是调节者(Coordinator),它每两分钟会发出一个不包含任何价值的交易,我们称之为里程碑,所有的被里程碑连接的交易都是被确认的交易,反之则是未被确认的交易。

iota-coordinator-consensus

另一种分布式的方式并没有一定确认或未确认的状态,与Bitcoin一样,它会给出某个交易在某个时刻被确认的概率。我们经常说Bitcoin需要经过6个区块确认,这是因为经过分析和实践发现在经过6个区块确认之后,攻击者想要发动双花攻击(double spending)必须有非常强大的算力,这种攻击只是在理论中存在。因为所付出的代价很大但是收益却低,因此攻击者一般不会去做。

在Tangle中要想知道一个交易被确认的概率,可以通过执行100次尖端选择算法,在这100次中该交易被选择多少次就代表有百分之多少的概率被确认,该概率会随着时间的推移而不断增加。

交易

作为一个区块链的项目,交易是不可获取的一部分,毕竟最终的目的就是为了能够正常使用。但是在IOTA中交易有点不一样,一个Transaction既可以表示一个交易的一次Input又可以表示Output,因此更多的Transaction更像是Bitcoin中的UTXO,而真正的交易在IOTA中名字叫做Bundle:

terminology

当我们提到交易时,其实说的是Bundle,IOTA理解的一次Transaction其实就是对某一个账户的单向操作,一组Transaction的组合成的Bundle才是我们通常意义上的交易。

Curl

因为 IOTA 使用了三进制作为编码方式,所以使用了 SHA-3 发明者设计的三进制哈希算法 Curl;但是波士顿和 MIT 大学在 2017 年 9 月发布了一篇名为 IOTA Vulnerability Report: Cryptanalysis of the Curl Hash Function Enabling Practical Signature Forgery Attacks on the IOTA Cryptocurrency 的报告,指出 IOTA 使用的 Curl 三进制哈希算法存在哈希碰撞的漏洞。

密码学中的一条『黄金法则』- 永远不要自己发明加密算法

The golden rule of cryptographic systems is “don’t roll your own crypto.”

作为区块链项目底层的重要设施的哈希算法,Curl 并没有经历过较长时间的研究和审查就这样使用在了公链中,这种做法并不是特别的明智,在出现安全隐患之后,IOTA 团队切换至更加成熟的 SHA-3 哈希算法。

总结

IOTA虽然在设计上有非常多的问题,但是它使用有向无环图作为区块链底层的数据结构的思路确实非常新颖。

CATALOG
  1. 1. 什么是IOTA
  2. 2. Tangle
  3. 3. Tangle和区块链的比较
  4. 4. Tip Selection
  5. 5. 共识
    1. 5.1. 交易
  6. 6. Curl
  7. 7. 总结