原标题:给大家介绍一下,这是两个新一代的加密货币:IOTA、RaiBlocks
编者按:对于加密货币,如果你只知道比特币的话,已经OUT了。现在涌现出了新一代的加密货币,不仅交易快速,而且无手续费,无矿工。其中的最具代表性的就是IOTA和RaiBlocks。它们背后的技术原理是什么?发展前景如何?Peter Ryszkiewicz在hackernoon上发表了一篇文章详细地介绍了这两个加密货币。文章由36氪编译。
新一代的加密货币越来越受欢迎,它们具有快速、无手续费、无矿工的的特征(接下来我将其缩写为FFM,即Fast、Feeless、和Minerless)。目前,只有少数几种这样的加密货币比较成熟,IOTA和RaiBlocks是最突出的两个。他们在如何实施FFM的方式上有很大的不同。这意味着他们在执行方式,复杂性和健壮性方面有不同的特点。我将在以下几节中讨论这些问题。
总的来说,我认为这些发明非常棒,我们需要在FFM加密技术领域进行更多的竞争和研究。一些竞争者和模仿者已经开始出现,例如Radix,这听起来很有趣,但仍在开发中。很难说是否会有“一个加密技术来统治所有”,因为这些不同的加密算法会有不同的表现,并专门针对不同的用例。
采矿的问题
最近,由于人们对采矿的能源需求和全球变暖的影响进行了计算,采矿活动受到了极大的打击。下面是Andreas M. Antonopoulos在YouTube上的一个有趣的反驳。虽然在很多方面都在理,但他并没有完全说服我。
当你有动力去花费惊人的精力去发送交易(尤其是小额交易)时,就会产生一个效率低下,不可持续的系统,而且难以修复。(目前比特币的交易费用约为30美元。)已经存在的矿工不希望昂贵的AntMiner,GPU和CPU被浪费掉。所以这些投资者将会推出像以太坊的股权证明这样的模式。我的确认为,他们所持股份的证明是朝着正确方向迈出的一步。让这些矿工发生转变,破坏他们最初的商业模式和投资,将是非常具有挑战性的。
有“第二层”(layer 2)的方法来对抗这种效率低下的问题,比如比特币的闪电网络和以太坊的Raiden网络。就连IOTA也有自己的第二层,叫做Flash Channels。但这其中仍然存在一些问题。最简单的反驳是,你需要有人来主持、维护和迭代第二层,这会带来费用。理论上,这一费用比第一层的正常交易费用要小。但这是一笔费用,这让我们又回到了VISA市场。另一个问题是,它侵蚀了这些加密货币的分散化操作。我认为,这需要付出很大的努力,不仅要全面实施这些系统,还要让它们变得更健壮、更安全、更易于维护。
另一个问题是,挖矿似乎正在导致“哈希权”(hashpower)集中化。出于某种原因,我们没有像人们希望的那样,在这一领域看到太多的竞争。基本上,中国在世界范围内产生了绝大多数比特币的矿业力量,如果这些公司串通起来,这最终可能导致对比特币进行双重攻击的问题。
这些加密技术是如何发挥作用的呢?
为了在IOTA网络上发送交易,客户端必须在网络中的两个以前的事务上执行最低限度的计算。这些计算需要几秒到几分钟的时间,这取决于你的GPU的功耗(IOTA的工作验证算法是优化GPU的)和你的运气。一旦你成功地完成了所需的工作验证,你的数据集就会被广播到IOTA网络上,在那里等待未来交易的确认。这是一种前付费类型的系统。一旦你的交易从别人的交易中获得了足够的确认,你的交易就会被视为完全确认。
从理论上讲,网络上发生的交易越多,交易得到确认的速度就越快。在IOTA的早期,这只需要几分钟。目前,由于拥堵问题,确认率和确认时间受到了延误。考虑到IOTA的“无限可扩展性”,这似乎是自相矛盾的。但在我看来,作为开发人员和节点操作员,可以查看节点代码本身,从而进行很多优化来加快这一过程。在运行节点时,我遇到过很多CPU峰值和内存泄漏(我已经在他们的GitHub上发布了其中的一些内容)的情况,但我相信这些只是技术问题,可以用几百个工程时来解决。(2017年12月23日,IOTA网络和拥堵问题有所改善。)
一个巨大的改进方法将是将节点代码从Java移植到Rust(性能统计)或另一个高级,高性能,可移植的编程语言。Java非常易于学习,作为一种高级的、面向对象的编程语言,有许多优秀的特性。但是它必须通过JVM(一个虚拟机,允许代码在地球上的任何一台计算机上执行)来运行,这是以牺牲性能为代价的。
RaiBlocks在一种名为“块格”(block lattice)的加密架构上运行。他们提供了一个很好的wiki页面,描述了这是如何工作的。其要点在于,RaiBlocks不仅仅是像比特币或者以太坊这样的长链区块链,它是一个区块链数据库,每个用户(或地址)都有自己的区块链,只有他们可以往区块链中添加东西。用户通过创建两个区块发送资金:个人区块链上的一个发送区块和收件人区块链上的一个接收区块。用户通过将任何未完成的接收块“嵌入”自己的个人区块链来获得资金。用户不必通过网络来获得资金(这是一个常见的问题,涉及到RaiBlocks的“私藏”系统)。当用户决定访问他们的资金时,钱包本身就会自动“提取”任何未付资金。从本质上来说,将资金投入到你的个人密钥中,就意味着你可以用你的私钥来签署接收区块,这样就可以将它添加到你的个人区块链中。
共识算法
在IOTA中,交易被连接到“缠结”(Tangle),这是一个有向无环图(DAG)数据结构。(Git使用相同的数据结构!)随着越来越多的交易被添加到缠结中,一个“权重”被添加到附属的祖先事务中。当交易有足够的权重时,交易将显示“确认”状态。原则上,如果整个网络中有足够的交易流,这个确认可以快到几秒钟。
在RaiBlocks中有一个基于“代表”(representatives) 的不同的确认系统。一般来说,所有需要的是你的“发送”和“接收”块上的加密签名。当节点同步时,它通过分类账运行,以确保签名是真实的。
为了防止双重打击,RaiBlocks有一个“ 代表性的系统 ”。系统中的代表基本上是一个有很多资金的地址。代表人作为仲裁者,用双重阻滞在整个系统中进行传播。在本文后面,我将详细介绍潜在的攻击向量。
运行完整节点的激励
关于这些FFM加密货币的一个常见问题是:“谁将为运行完整的节点付费?”这是一个很好的问题。在大多数其他加密技术中,比如比特币和以太坊,都有一种激励机制,让矿工可以运行完整的节点,因为这样做可以获得利润丰厚的采矿费用。但在IOTA或RaiBlocks中没有矿工。
对于这个问题,有很多答案,如果你在运行IOTA节点、RaiBlocks节点和其他密码,答案会略有不同。
对于加密货币的新手来说,节点基本上就是一台能够促进全球网络交易的计算机。任何时候,互联网上的任何人都可以添加或删除节点,而加密货币作为一个整体将继续发挥作用。加密系统往往需要最少数量的节点来防止网络攻击,但这是另一个话题。
让我们做一些计算,看看这些网络是否能够维持下去
每个交易所都需要将自己的节点作为提取和存款的节点。让我们假设每一个交换都需要平均5个节点来进行负载平衡和升级。(根据流量的不同,他们可能需要更多或更少的数据,但5是一个不错的保守估计。)现在,让我们来计算一下,一旦这些加密货币变得流行起来,它们将在全球约100家交易所上市。同样,保守估计,世界上有数百个流行的交易所,新的交易所一直在涌现。一旦IOTA和RaiBlock在交换行业被广泛采用,这将给我们500个节点。
此外,还存在运行节点的商业需求。小公司和大公司都加入了加密货币领域(我和我的公司P Rizz Ventures LLC),我们需要托管节点来提供我们的服务。让我们假设,在线商店、市场和服务的数量超过了交易所的数量。我认为这是相当保守的,因为在线商店的数量比在互联网上的在线交易数量要多。我们假设他们平均每人只需要三个节点,因为他们的流量可能比一个非常流行的交易所少。这使我们在商业领域中总共需要900个节点。
在未来,我们还将拥有许多智能设备。“福布斯”提到的一篇文章预测到2025年将有750亿个物联网设备。假设只有0.001%的设备需要运行完整的节点以实现高质量的服务。这就需要在网络上运行75万个完整的节点。
因此,随着所有这些行业的结合,在任何给定的时间节点都必然会有一个强大的节点基线。我预测IOTA和raiblock在未来几年会逐渐自然地增加节点数量,因为它们会越来越受欢迎。
对开发者的适用性
IOTA提供官方的Javascript,Python,C#,Java和Golang库来处理网络。他们还提供了“工作证明”库,他们称之为“curl”,也就是现在的“ kerl”,可以作为一个C库使用,并且可以在WebGL2的浏览器中使用。他们在Java中提供了一种名为IOTA参考实现的节点实现版本,即在Java中将其移植到C ++,Rust和Golang中。在我看来,我不太愿意在C++中实现它,原因有很多,其中最主要的原因是出现bug和漏洞的可能性更高。C++有一个用于高性能应用和OS内核的地方,但我不认为这是一个好的决定。我们可以辩论,但那是另一回事了。
RaiBlocks的API支持也相当不错。他们有RPC库,用于与Javascript,Python,PHP和Elixir中的节点进行交互。我不太清楚这些是否由Raiblock组织审查。不管怎样,他们都获得了支持,并在他们的devtools网站上发布了这些信息。还有一个用于在web浏览器中执行工作证明的库,它是用WebAssembly编写的。他们还有一些工具可以与协议和Fedora的软件包进行交互。
总的来说,这两个项目对于开发者来说都具有相当的支持度,开发者可以开始构建这些加密系统并将其集成到自己的项目和业务中。
物联网的适用性
这两种加密技术都为物联网中的小额交易提供了一个极好的用例。如果我们想让机器快速自动地与货币交互,我们肯定需要使用FFM加密。让我们从几个不同的角度来看待这两种技术。
数据流
IOTA中的交易允许附加大约1千字节的任意数据。1千字节听起来并不多,但它打开了一种可能性,让数据在缠结中传输。(这是我的基于IOTA的聊天室聊天应用程序Chatwan的工作原理。)IOTA的数据市场也将大量使用这种数据附件来促进设备和市场之间的数据传输。这是第一层的一个很棒的功能。
RaiBlocks在第一层没有内置的数据传输机制。我和一位Reddit用户就这个话题进行了一次有趣的对话,他提出了隐写术的想法,即你可以在数据交易中对数据进行编码,因为RaiBlocks每笔交易使用128位元数据。原则上,你可以使用底部的64或32位来创建和提取小量信息。除此之外,RaiBlocks可以非常简单地用第二层方法来实现:如果已经可以与其他物联网设备进行通信,那么你就可以利用这个通道来获取数据层。因此,在我看来,这不是RaiBlocks的主要障碍。
脱链交易
IOTA有一项独特的功能,即可以在后续的时间内创建脱链交易,并将其附加到缠结中。物联网设备可能能够在离线时彼此交互,然后在重新连接到网络后传播其交易。但这就引出了这样一个问题:接受方是否会“相信”这笔交易,只有在得到整个网络的确认之前,并不能知道它是否是一笔双重支出。只要这些设备之间能够相互信任,这就成了一个没有意义的问题。然而,这是一种理论上的反驳,目的是为了让这些脱链交易受益。
在RaiBlocks中,脱链交易是不可能的。发送方必须在线并与网络连接以促成交易。同样,我不认为这是一个大问题,因为如果它确实有这个功能,仍然会存在信任问题。除此之外,如今大多数智能设备和智能消费电子产品都可以接入互联网。
长期采用
我们将遇到的一个问题是,当有足够多的用户和加密货币的客户时,我们必须开始问自己,是否有足够的资金可以流通?最重要的是,当我们在处理物联网时,机器将会向彼此发送少量的加密货币,我们需要确保这些小额支出不会在长期内变得过于昂贵。
IOTA和Raiblock实际上都是“预先挖掘”的,这意味着他们的账簿上的加密货币是永远不会改变的。随着时间的推移,这些代币被购买、出售,并随着ICO和水龙头而流通,从而增加了这些加密货币的普遍用户的数量。
IOTA的最大供应量是2,779,530,283,277,761 IOTA(或大约2.8万亿IOTA)。(相比之下,比特币的最大供应量将达到约2.1千万亿。)
RaiBlocks的最大供应量约为2¹² ~340e36,即340decillion(即340后面再加33个零)。这一高上限的原因是他们使用了一个128位整数来表示余额。(稍后我会解释这为什么这是一件好事。)他们的实际最大供应量约为133,248,290 MXRB,其中1 MXRB代表1亿个原始RaiBlock单位。最大供应可以被表示为大约133e36,或者133个未分配的原始RaiBlocks。他们的wiki也表示一些基于SI系统的帮助使用这些高数字。这里是原始单位的最大供应,只是为了好玩:133,248,290,000,000,000,000,000,000,000,000,000,000,000,000,000,000。39位数字!作为对比,这意味着每个IOTA可能存在大约48个sextillion原始RaiBlocks。
让我们设想一下,到2025年,我们将拥有750亿个物联网设备。假设2025年将有数十亿人拥有加密货币。因此,我们还假设这些物联网设备拥有所有的密码(Skynet !?)。现在,让我们做一些计算。这些未来750亿个设备将共享的平均密码量将为37000 IOTA(或37 kIOTA)或1.78 octillion 原始RaiBlocks(或1.78 kXRB)。 由此我们可以看出,交易意义上RaiBlocks比IOTA有更多的灵活性。这让我认为,RaiBlocks在未来几年可以很好地支配物联网领域,除非IOTA升级他们的协议,以增加最大供应或允许可分割的IOTA。
可扩展性
在可扩展性方面,我们从几个不同的度量标准来衡量。
交易的速度
在IOTA中,随着越来越多的交易通过网络发送,在理论上,确认时间会减少。最近几周,我们看到了一些问题,导致人们的交易被推迟,有时需要几天时间。但正如我之前解释的,我认为这些都是技术问题。一旦节点性能和垃圾邮件问题得到缓解,我们应该看到一个反弹,以获得更好的确认率和时间。
在RaiBlocks中,作为用户,你通过签署你的交易来执行确认。这个过程花费的时间非常少。一般情况下,你的交易在几秒钟内得到完全确认和处理。大部分的时间都花在了执行工作证明上,这对于减少未经检查的垃圾邮件攻击是非常必要的。
总帐大小
IOTA有一种机制,可以在一个名为快照(snapshot)的过程中来调整总账的大小。到目前为止,我们已经有了一些由IOTA团队手动执行的快照。(我所经历的最大分类帐大小约为每月5-10GB的交易量)在快照之后,分类帐的大小就会减少到现存的非零地址和每个地址的余额。从那时起,缠结的状态再次恢复正常。目前,这个方案有几个问题。其中的一个问题是,用户需要手动将他们的地址“附加”到缠结上,以查看他们在钱包中的平衡。(这可能会让很多人在打开钱包看到零平衡时,会有小心脏病发作),新的UCL钱包将自动化这个过程。我相信我们可以期待他们在这个月或下个月发布一个alpha版本。另一个问题是节点操作员必须手动进入他们的服务器,并清除存储交易的旧数据库。我相信这只是一个技术问题,将会得到解决。他们计划完全自动化这些快照。
在RaiBlocks中,当前的总分类账大小为3GB。这两年的交易还算不错。当然,Raiblock还没有IOTA那么受欢迎,因此我们还没有看到它在极端负载下的表现。随着时间的推移,规模肯定会成为一个问题。不过,他们也有一些精简数据库的计划,因为一致性所需的所有东西都是区块链中每一个区块的总余额。
去中心化
因为协议还没有完全去中心化,IOTA在受到指责。我倾向于认同这种观点,但我相信,他们也在尽可能快地工作,在没有协调器的情况下实现完全的去中心化。(我在下面会对协调器进行详细说明)我们仍在等待分析或估计何时才能实现。我想猜测一下,协调器将在2018年的某个时候被移除。
另一个问题是互传。直到最近,节点操作员不得不手动与其他操作员合作,并将彼此的IP地址和端口添加到IRI配置中。不过,我很高兴地说,最近出现了一个名为Nelson的开发项目,有效地解决了这个问题,并允许在网络上进行完全的自动互传。现在,这是IOTA节点的包装器,但我希望它们最终在节点本身中实现一个完全成熟的解决方案。
Raiblock没有中心来管理网络上的交易,自2015年9月左右发布以来,它就一直在进行自动互传。因此,我们可以认为它是去中心化的。我看到的唯一一个问题是它们的代表系统。这是一个潜在的攻击媒介,恶意的实体可能会购买价值数百万美元的XRB并进行投票攻击。他们的攻击wiki概述了这种情况。当然,这是一种“低”风险,因为恶意的一方必须有效地放弃大笔资金,以数亿美元或50%的市值来实施这一攻击。
交易所(如何购买?)
IOTA可以在包括Bitfinex和Binance在内的多家大型交易所进行交易,并计划在不久的将来加入更多的交易所。你可以在这里找到他们最活跃的市场。
相比之下,RaiBlocks还没有在任何大型交易所上市。该公司的总销售额为500至1000万美元,而IOTA是5亿美元。他们的主要交易所BitGrail和Mercatox由于流量增加和DOS攻击传言,最近受到性能问题的影响。鉴于这些不稳定的交易和供应不足,不幸的是,目前很难获得RaiBlocks。你可以跟踪他们在这里的交流。
发展规划
IOTA和RaiBlocks目前正在大力发展中。目前,IOTA团队比RaiBlocks团队的规模更大,与RaiBlocks的5位开发者相比,大约有30位开发者。IOTA还培育了大量的企业合作伙伴,帮助开发他们的生态系统,比如大众和博世。
至于发展的规划,这里有一篇来自IOTA的博客文章,这里有一个wiki页面和一个关于RaiBlocks的信息图表。
这两种代币都有很好的发展规划,但IOTA更有意思,他们正试图在IOTA上实现私有交易、智能合约、数据市场等等。
RaiBlocks的口号是“做一件事,把它做好”。由于他们专注于制作最好的FFM代币,他们很难将这个代币扩展为私有的、拥有智能的合同等等(也许有人可以用这些功能制作出像样的分叉,然后变成超级富豪??)编辑:目前,至少有一个项目分叉Raiblock,目的是增加私有交易。就拿这一点来说,有无数的项目声称要做很多事情,其中很多都是永远不会交付的。
用户友好度
对于普通用户来说,互动的主要载体就是钱包。
IOTA的官方钱包
对于IOTA来说,他们当前的钱包在用户友好度方面相当单薄。但它能完成工作。对于一个仍处于测试阶段的产品来说,它更像是开发者的钱包。我在reddit上看到过很多帖子,询问他们是否应该重新附加或重播他们的交易。在我看来,这些深奥的选项应该完全从用户那里抽象出来。编辑:IOTA团队最近加入了另一项名为“交易推广”的功能,我要说的是,这一功能应该完全从用户那里抽象出来。
值得庆幸的是,由于UCL的团队,他们的钱包已经大大改善了。这个钱包应该清理掉当前钱包体验带来的许多麻烦。此外,他们还在开发面向大众消费的移动钱包,因为他们的iOS钱包目前正在进行测试,然后才会公开发布。
UCL即将推出的IOTA钱包截图