对IOTA早有耳闻,币值总额4.6亿美金,虚拟货币排行第10(2018.3.15数据),底层采用的Tangle创新的采用了DAG结构和新的共识方式,零手续费,超强的扩展性,参与节点越多,TPS越高。似乎很神秘,也很完美。
最近总算抽空稍微研究了一下,稍微总结一下心得。
网上中文资料很完整,基本看完5篇图解文章即可明白Tangle原理。这里给出其中一个链接,感兴趣的童鞋自行查找。当然,详情还是要看白皮书,同一个网站上有翻译的中文版,基于0.5版本翻译,感觉有点老,iota官网上的版本已经到了1.3,两者差别多大,没深究。建议先从图解看起,白皮书的作者看名字是个俄罗斯人,估计是个数学学霸,文章较多公式,直接看容易懵圈。
以下内容是我个人的一些理解,建议没接触过Tangle的同学还是先看刚才列出来的资料,原文写得比较清楚,我就不复述了。
毕竟是师出同门,跟传统区块链思路上面其实差别不是那么大:
1.不同于传统的链式结构,Tangle采用了TAG(有向无环图),本质上就是允许甚至鼓励区块链分叉。
2. 需要发起交易的节点通过算法沿着TAG随机行走,选择路径并校验,把新交易链到尾部(称为tip),间接校验了旧的交易。虽然Tangle按照TAG方式存储,但每次选择的路径仍然是一条链,交易验证仍然是按照单链来处理。当交易频率很低的时候,TAG实际上也退化为链。
3.在行走路径的选择算法上,给予获得更多确认的节点更高的权重,本质上就是鼓励交易选择最长链。为了让自己的交易尽快得到验证,节点一方面需要尽快把新的交易广播出去;另外一方面,也需要尽快获取网络其它节点的实时状态,避免因为信息不同步选择了概率较低的路径。这一点,本质上跟传统区块链也是一致的。
4.每个节点甚至每个交易选择的路径不固定,多个交易可以同步进行,也就是所谓的平行验证。当交易非常频繁时,通过无限分叉,可以获得几乎无限的TPS,参与的节点越多,TPS越高。
5.Tangle这种平行验证的方式经常会被类比为异步验证,言下之意就是传统的区块链技术是同步的。实际上我觉得这个描述并不精确,因为网络延时的存在,任何节点都不可能实时知道全网的实时状态,传统的区块链技术不可能也没有必要等待状态被全网接受以后才加入新块,也就是说,传统的区块链也是异步的。事实上,谁也没有办法在一个参与节点不明确的系统上实现一个同步系统。只能说,Tangle比传统区块链更异步。
天下没有免费的午餐,高TPS也带来一系列的问题:
1.不同于比特币或者以太坊,在Tangle里面一笔交易从提交到确认所需的时间是未知的,Tangle采用一个称为确认置信度的指标来衡量一笔交易的可靠性。原理很简单,就是认为获得直接或间接验证的数量越多,交易越可靠,具体的计算方式可以见上面的图解文章。
2.在高并发的情况下,确认置信度对每个交易并不平等。线上有个交易模拟器,大家把λ调高,可以观察到,某些提交很长时间的交易,仍然存在确认置信度很低的情况。套用动物庄园的话,所有的tip都生来平等,但某些tip比其它tip更平等。对于这种交易,Tangle给出的方案就是交易方重新把这笔交易放到新的位置上,具体的操作在不同的版本稍有不同,这里不做描述。
3.我们知道,比特币存在著名的51%算力攻击问题,也就是说,如果你掌握了超过整网一半以上的算力,你就具备了修改历史区块的能力,当然,实际上这要付出很大的代价。
Tangle上也存在类似的问题,攻击者可以在同一个链上通过发起大量小额交易,增加这个路径的权重,从而达到双花的目的。白皮书里面有专门提到这个问题,在这种场景下,确认置信度会随着攻击的发生从接近100%降低到接近0。在Tangle里,这个算力攻击的阈值远远低于51%,白皮书里给出的值是λ*w。因为对于攻击者来说,他(可能采用多个身份进行女巫攻击)只需要在一条链上不停添加新的交易,无需重新计算和校验每笔交易,无需同步状态,无需挖矿解数学问题,攻击的门槛其实很低。
4.Tangle通过降低安全性提高扩展性。在前期,为了保证交易安全,Tangle采用了一个称为协调器的机制。Tangle基金会每两分钟生成一笔特殊的交易作为milestone,所有经过它确认的交易立即被认为具有100%确认置信度。Tangle基金会充当了一个中心化的仲裁组织,本质上是牺牲了去中心化加强了安全性。据说后面可能会引入挖矿机制,如果是这样,势必对扩展性产生一定负面影响,通过牺牲扩展性提高安全性。最终还是只能在扩展性,安全性和去中心化这个三角形里面寻找一个平衡点。
以上资料基于Tangle 0.5白皮书,如果有什么不对的地方,欢迎打脸。