IOTA 不是传统的区块链结构,而是 DAG(Directed Acyclic Graph,有向无环图)结构。本文以最浅显的语言来解释 IOTA 原理。
IOTA 基本特点
Tangle
IOTA 的 DAG 结构被称为 Tangle,看起来就像下图
图中的每个点都是一个交易。IOTA 中不再有区块的概念,共识的最小单位是交易。不像比特币只有一条链,这是一个网状结构,会不断往外扩散。
DAG 结构非常适合高并发且小数据交易的 IoT 场景。
交易
在 IOTA 里发起一笔交易,是怎么样的流程呢?答:你需要先找到网络里的两笔交易,验证它们的合法性,然后做一点小小的 PoW(就是付出一些计算),把自己的交易与它们绑定,再广播到网络。
你的交易会被后来的交易以相同的方式验证。如果验证你交易的其他交易越多,则你的交易的确定性越高。当达到一个阈值时,就认为这个交易被确定了(这和比特币 6 个区块确定交易状态的思想一致)
IOTA 把算力作为交易的一部分。只要你想加入这个网络,那必须先成为矿工,做出一点 PoW 贡献。如果想不做贡献吃白食🙄,不好意思,我们不认可你广播的交易。由于人人都做了 PoW,因此才能做到零交易费。
那坏人故意让非法交易通过验证怎么办?网络里会充满着大量非法交易吗?IOTA 的思想是这样的,节点会计算每个交易的权重值,选择权重高的交易来进行验证,这会有助于增加自己的交易被后来交易验证的可能性。如果你绑定非法交易,那后来的交易则不会选择你的交易来验证。时间一长,这个交易就被网络抛弃了,不再是网络的一部分。
三元逻辑
IOTA 整个网络都用三进制来描述
比如 IOTA 的 Seed 是 81 Tryte,Address 是 90 Tryte,都以三进制来描述。
IOTA 使用的哈希函数名为 Curl,是一个三进制算法,由 Keccak (SHA-3) 的发明者设计。Curl 被设计用于 IoT 设备,是世界上第一个三进制哈希算法。
IOTA 团队认为,三进制架构的电路功耗低,适合 IoT 设备,但他们似乎忽视了传统计算机都是基于二进制电路的。如果传统计算机要运行三进制算法,得怎么做?需要先模拟一个三进制电路,然后进行相应的计算。中间加了一层,这效率肯定下降,属于吃力不讨好。
IOTA 基金正在研发 IoT 异步三态处理器 JINN,用于集成到 IoT 设备里。可能这也是团队的商业规划之一(处理器+网络仅此一家,IoT 行业就尽在我等手中了)
抗量子
IOTA 使用的签名算法是 Winternitz one-time signature (W-OTS) ,这是一种后量子签名算法,可以抵御量子攻击。
就如同其名,W-OTS 算法是 one-time 的,即签过一次名后就不能重复使用,否则会有丢钱的风险。你可以一个地址多次打钱,但取一次钱(取钱需要签名)后就不能用了,得换新地址。
W-OTS 的一个缺点是签名长度特别大,这也是抗量子签名普遍的缺点。IOTA 的单个交易编码后有 2673 trytes(大约为 281.96 bytes),但签名占了 81%(2187 trytes)。对于 IoT 设备,这可能是一个很大的挑战。
中文链接请点左下角“阅读原文”。