上个月我们推出
《最近被矿工热捧的XDAG,了解一下?|周五说币》
之后,多位朋友在后台和粉丝群里对DAG表示了兴趣,并希望熊小猫能仔细讲解一下这个概念。当当当当,今天这篇文章就来啦~
同时还带着一个好消息!那就是本月的抽奖送EOS活动又开始啦~是的没错,文末有精彩活动等你参加哦~
DAG(Directed Acyclic Graphs)有向无环图,是一个在加密世界被高频提及的词汇。大部分时候它们之所以出现,是因为有加密货币声称使用了这种技术/数据结构。这些加密货币被统称为DAGcoins,他们往往有一个共同点,就是都强调自己使用的不是区块链技术。
很多人不明白这是什么意思,因为在大家的感觉中,加密货币和区块链就是一回事。今天熊小猫就来跟大家聊聊到底什么是DAG,和区块链有什么不同,以及那些常见的DAGcoins。
要解释这一点,我们先(再一次)了解一下什么是区块链。(深入了解看这里:祛魅:你对区块链的想象,有可能都是错的)
简单来说,区块链就是对(一个网络中)发生过的事情的有序记载,并因此形成了一连串有序相连的区块。这种数据结构中,每一个区块的存在,都基于前一个区块已经得到验证的基础上,因此从任何一个区块都可以回溯整个区块链上曾发生过的所有事情(交易)。
区块链中的数据安全,依赖于这种有序性。然而这种特性,也造成了区块链本身的瓶颈。比如在比特币中,每十分钟才能产生一个新的区块。也就是说一个新的交易要得到验并写入区块链,最快也要等十分钟。这就是遏住区块链咽喉的扩容问题。
解决的方法现在看似有很多,但实质上只有两种思路:A、把区块变大,这样每个区块就能记载更多的事情 B、让产生区块的速度变快,比如现在是十分钟,想办法缩短到五分钟甚至一分钟。然后这就触发了区块链世界的不可能三角——这种扩容的方法几乎是必然会以牺牲区块链的去中心化程度为代价。
因为更大的区块、更快的出快速度,会要求更高的算力水平和更好的设备,普通人的电脑是无法承受的。这样一来,我们的电脑就失去了作为区块链网络的一个验证节点的资格。当这样的淘汰越来越多的发生,区块链网络的节点中心化也就难以避免了。
因此有人想到了使用与区块链完全不同的数据结构网络,譬如DAG(Directed Acyclic Graphs).在DAG这种数据机构中,所有发生过的事情同样会形成一个link(连接)。
熊小猫来逐个单次的拆解一下这个短语。DAG全写(Directed Acyclic Graphs).Directed的意思是,所有这些link,必须始终有同样的方向。它们不是双向的,不能来来回回。Acyclic的意思是,所有节点不能返回到自身,因此不可能构成一个循环。
从某种意义上来说,DAG就像是并发式多线程区块链;把传统区块链一维单点的存储模式改变为一个三维全网并行的复杂工作环境。简单理解一下,DAG的结构就有点像我们做的流程图。
下面是一个区块链数据结构和DAG数据结构的对比。最上面那个条状的是区块链数据结构,可以看到区块只能按照先后顺序不断添加进来。整个是一个线性的有序结构。下图则是DAG数据结构,可以看到所有区块大体顺序是一致的——从上到下,但是不同时间段产生的交易验证可以同时发生。
下面我们来说说市面上主流的DAGcoins.
IOTA
使用DAG数据结构的加密货币中,IOTA应该是最知名的了。目前在加密货币市场上市值排行第九,有很大的关注度。
IOTA把自己的DAG结构称为缠结(tangle)。它最有趣的一点在于,将矿工从整个流程中完全去掉了,同时也就去掉了区块的概念。在比特币网络中,矿工通过算力竞争,来争取每十分钟一次的写入区块的权力,而在IOTA中,每个人都是潜在的矿工,都可以播报交易。但是根本上来说,每个人都需要验证之前的两笔交易,这样才能让自己的交易被网络所接受。
在比特币等区块链网络中,真正参与共识机制的,其实只有矿工。而我们都知道,比特币等网络的算力集中化已经相当严重。在之前的《Top10币种の去中心化程度大考察》中熊小猫曾一一列出。那么在IOTA中,每个人都可以参与验证交易,那也就意味着, 如果有越来越多的人参与到这个项目中,那么它未来的去中心化程度理应比比特币更高。
当然,为了防止有人因此发送大量垃圾交易堵塞网络,IOTA也加入了一部分PoW共识机制,要求有一定的算力才能写入交易——不过这个算力大概只需要一两秒钟就能完成。与此同时,因为添加了这一部分的PoW机制,IOTA实现了免费——用户在付出算力的过程中,已经履行了他们维护网络运行的职责。这样的机制中,参与人数越多,去中心化的程度会越强。
IOTA另一个好的地方在于,在进行交易的同时,你还可以附加发送一些数据作为交易的一部分,这一功能也是它名字的由来。IOTA应用领域定位于物联网,目标是成为物联网的一种加密货币(想想汽车和加油站在互联网上相互通信的情况)。
物联网(IoT)无可置疑将是未来对人类生活产生重大影响且最具潜力的领域之一。在今后的几年中,互相无缝接驳的设备将极大地丰富和方便我们的生活。当然,这些相互连接绑定在一起的物联网也会面临大量障碍需要解决,其中一个主要的问题就是小额交易。物联网设备必须能够彼此之间无摩擦地进行自动支付,并且无需在产品设计之中妥协而引入额外的硬件。IOTA的两个特性正好满足了这一需求,可以说这个市场本身是前景无限的。
当然,IOTA本身并不是毫无缺憾的。首先,IOTA在构建DAG数据结构的时候,使用的是自创的密码。这在密码学界这是一个绝对无法被认可的事情,可以说触及底线。公认的原则是使用已经实验过、验证过的密码。去年麻省理工学院“数字货币计划”就因此与IOTA项目进行了持久的网络论战,并引发多方关注。
另外一点是,因为IOTA独特的运行方式,只需要33%的网络节点(因为不存在挖矿)就可以对IOTA网络实现攻击。比特币需要的是占据全网51%的算力攻击。而IOTA的每笔交易只需要很少的算力,因此聚集33%的网络节点似乎并没那么难,尤其是对于IOTA这样一个还算是新兴的网络来说。不过随着网络的发展、更多节点参与其中,这一状况应该会得到缓解。
此外,IOTA网络中有一个coordinator,本质上是一个中心化的服务器,所有交易都必须经由这里得到验证。虽然IOTA项目称这只是个暂时的解决方案,相当于辅助轮。coordinaor将会在18年晚些时候移除,但是就目前来说,它是带来了单点故障的威胁的。如果IOTA团队未来真的移除了这个结构,那么新的结构是否能够运行良好?还有待验证。
Byteball
Byteball是另一个使用DAG数据结构的加密货币项目。事实上它的主网上线还在IOTA之前。它们的数据结构有诸多相似之处,这里就不赘述了。
IOTA的加密货币叫做bytes,与IOTA不同,Byteball收取一定额的交易费来避免垃圾交易堵塞网络。这些交易费用会给到12个witness(目击者),他们负责整个Byteball网络上所有的交易验证。因此这里不存在coordinator或者是所有人都一起参与交易验证的情况。
IOTA允许在交易的同时发送一些数据,而Byball可以做的更多。它甚至有自己的类似“智能合约”的功能。不过和以太坊虚拟机不同的是,Byball更多的只是一些基本的“if……then”函数。在DAG数据结构之上,Byball还设置了许多功能,诸如有自己的隐私币(blackbytes)帮助用户匿名交易,此外还有即时通讯工具、智能客服等。
Byball的运行机制也不是完美无缺的。正如前面提到的那样,它使用12个目击者来验证所有交易,这12个人是在现实生活中实名认证的,一旦有恶性表现,就必须为此付出真正的代价。这样的措施是为了避免IOTA所会面临的33%攻击的风险,同时也不想要设置一个coordinator来验证全网交易,但这显然损害了去中心化。
此外,就像上面提到的那样,Byball的底层协议也许是太过包罗万象了。去它们的官网看一下,感觉是眼花缭乱,似乎是无所不能。这会让人情不自禁担心,成自阿勒这么多功能,代码层是否足够经得起考验,会不会有各种各样的bug?
SPECTRE
Spectre白皮书发布于2016年,最初是一群以色列的研究者想要找出比特币扩容的方法。最终他们找到了DAG.
Spectre与IOTA和byteball都不同的是,Spectre其中还涉及很多挖矿的流程。就像比特币网络一样,矿工们通过算力竞争来争取产生区块的权力,但是不同点在于,比特币的区块链网络,同一时间只能产生一个区块,先后有序。而DAG结构允许多个区块并行产生。然后有一个冲突解决方案和投票机制,来帮助这些区块被DAG网络所接受。
目前为止,Spectre还只是一个白皮书,还没有具体的项目发布。但是已经有一个名为DAGlabs的项目在研究这个技术,项目成员包括最初的以色列研究者中的一部分。这个项目有望在一两年中取得进展,熊小猫将为您持续关注。
使用DAG技术的加密货币并不止以上几种,譬如我们之前写过的XDAG,最近也是最近风头很盛。从理论上看,DAG技术在加密货币市场有着明显优势;但是其仍处于发展阶段,无论是技术还是市场方面,都存在着很大的不确定性。但也说不定这就是解决区块链扩容问题的真正法宝,谁知道呢?
领取专属 10元无门槛券
私享最新 技术干货