我这个在区分的专栏,主要以“挑刺”为主,被挑的可能有好项目,也可能有坏项目。主要是帮助投资者在区分项目的同时,还能理性的看待它。
请记住我——不羁的鲁迅
为什么会有这篇文章
我之前在币乎上翻译过IOTA官方博客的几篇技术文章,都是IOTA的核心技术——纠缠——相关的。
我经过对纠缠技术的研究,也得出了一些观点,想通过这篇文章分享给大家。
严格来说,这篇文章,正如标题一样,是挑刺的,希望能从鸡蛋里挑出骨头来,让投资者朋友能理性看待这个项目。
IOTA的愿景
IOTA在其官网上,有这么几句话(原文是英文的,下面是翻译后的):
- 下一代分布式账本技术
- 重新定义价值、信任和所有权
- 助力全球社区共建一个新的共享经济
再来看看它的愿景:
- 通过机器经济真正的赋能物联网
- 共享经济
- 让人类拥有和懂得自己的数据
IOTA的愿景真的能实现吗?
IOTA主要定位于物联网,并计划在物联网领域站稳脚跟之后再向其他领域扩展。我们先不看那么远,先看它能否占领区块链物联网的市场。
区块链物联网主要有如下挑战:
- 性能:如果想让将来数以亿万计物联网芯片都使用IOTA,那么IOTA必须具有足够强的性能,能够处理那么多的交易。
- 安全性:如果要使得物与物之间能够自动进行支付,就必须要有足够的安全性支持。
我们下面就从这两个方面,来分析下纠缠技术能达到的性能和安全性。
纠缠技术的性能
我是先从IOTA缠结的结构入手的。所谓缠结,就是把一个个交易组成一个有向无环图(DAG),新的交易必须验证前面的一个或者两个交易,一个个交易形成了DAG的顶点,而DAG中的边则代表一个交易验证了另外一个交易。箭头指向的顶点就是被验证的交易,箭头的另一端顶点,代表验证者,它也是一个交易。如下图所示,交易4验证交易1,交易6验证交易4和交易5:因为共识的机制决定性能,所以我们重点分析下IOTA的共识机制。
IOTA有自己的共识哲学:我为人人,人人为我;我若损人,我亦受损。
当一个交易正确验证了其他交易,它就能更快的得到别人验证;如果一个交易偷懒,验证了较老的交易,那么它将晚些时候才能被验证。
理论上来说,IOTA的交易可以非常快,只要我的交易验证了两笔前面的交易就可以了,不需要工作量证明或者权益证明,我对其他交易的验证本身就是证明。
但问题是,IOTA的交易是免费的,这也就意味着我可以发送很多笔交易而不用手续费。这可是把双刃剑,虽然有利于大规模采用。但这个世界上就是有那么多无聊的人,他们很可能会搞一些机器人,自动向IOTA网络发送垃圾交易,这样IOTA的节点就会受苦了,从而正常的交易也会受到影响。
因此IOTA不得不在交易验证的时候增加了一点工作量证明,从而降低垃圾交易的发送频率。而这个策略是把双刃剑,就像用化疗治疗癌症一样,这个办法同时也降低了正常交易的性能。从而导致,目前IOTA的性能最高也就几十TPS。
纠缠技术的安全性
安全性是一把双刃剑,为了实现高安全性,往往就要牺牲性能。
分布式账本技术中,最为普遍的也是较为头疼的一个安全性问题就是“双重花费”(简称“双花”)。
IOTA不可避免的也存在双花问题。
它的过程是这样的:
假设Alice账户里有1 IOTA,她想用一份钱买两份东西,也就是要实现双花,她可以这么做,首先同时向Bob和Carl购买一个东西,都花费1个IOTA,因为Alice只有1IOTA,所以这两笔交易不能同时成功,因而Bob和Carl之中肯定只有一个人会收到钱,假设收到钱的是Bob,Bob在看到“确信指数”(参考我的这篇文章)达到95%之后把货品发给了Alice。
之后Alice利用自己的算力,立即发送很多垃圾交易验证自己和Carl的交易,如果Alice的算力足够强,那么她就有可能让自己和Carl的这笔交易的“确信指数”增加到(95%),因为Alice只有一份钱,所以和Bob的交易就失效了,但Bob已经发货了;而Carl在确信指数达到95%之后,他也开始发货。整个过程下来,Alice用一分钱得到了两份货,而Bob损失了货品。
当然,如果Alice愿意,她还可以故技重施,和Dave再发起一笔交易,然后利用自己的算力让与Carl的这笔交易失效,如此往复下去,她就可以用一份钱购买N多份货品了。
看起来是不是很可怕?是的,双重花费的确很可怕,所以各个分布式账本技术都要设法解决这个问题,但很难彻底根除,一般采用的方式都是下面两条:
- 提高双花的成本
- 降低双花成功的可能性。
如果双花的成本足够高、成功的可能性足够低,那么我们就可以有理由相信,这个项目具有抗双花攻击的能力,也就是安全的。
好,我们再来看IOTA的抗双花的能力。
从成本来看,Alice的成本并不高,因为发送交易是免费的,所以只要拥有足够的算力(对于IOTA来说,也就是生成新交易并验证两个之前的交易的速度),而且IOTA的节点之间不存在竞争出块的压力,所以还是比较容易实现的,至少相比于比特币、以太坊以及EOS来说要容易很多。
从成功的可能性来看,因为只要新交易的被验证(包括直接验证和间接验证)次数足够多,就可以让新交易有效,所以成功的可能性也很大。
不过IOTA基金会也知道这个问题,所以他们引入了一个协调者的节点,它是一个中心化的节点,每隔2分钟产生一个基石交易,所有被它验证的交易,其确信指数都是100%,并立即生效。通过这个协调者,Alice的第二笔交易很难在这么短的时间内被验证。因而降低了双花成功的可能性。
不过这么做也是个权宜之计。IOTA基金会认为,一旦IOTA活跃度足够,IOTA就可以关闭协调者,然后切换为完全去中心化的算法。那个时候,因为IOTA中的交易频率足够大,Alice生成垃圾交易的速率很难匹敌整个网络正常交易的频率,因而Alice将很难再让第二笔交易得到验证。
我个人认为,IOTA不能太依赖于这种对未来活跃度的假设,有两个原因:
- 活跃度的提高,的确降低了双花成功的可能性;但因为IOTA网络上双花的成本很低,还是会吸引人不断地去尝试。
- 活跃度衡量的是人的交易频率,但人是不确定的,很可能某个时间段人们都因为某件大事而没有交易,或者交易很少,这时候双花不就又变得容易了吗?
总结
本文从技术方面,分析了IOTA的纠缠技术是如何应对物联网时代的高性能和安全性的挑战的。
我的总体观点是:
- IOTA的纠缠技术的确是一个创新,理论上可以提高交易的性能,然后因为安全性的问题,它又不得不拆东墙补西墙,通过降低性能来提高安全性;同时为了解决双花问题,不得不引入协调者机制,而且将来即便IOTA网络活跃度很高,因为在IOTA网络上作恶成本很低,所以也很难保证它的安全性。
- 另一方面,IOTA毕竟是一个新的项目,IOTA基金会也在不断的研究和改进IOTA的机制,同时IOTA的社区治理和技术布道也做的不错;虽然我对IOTA保持谨慎投资的态度,但也很期待它将来在技术上和激励机制上有新的突破。