从15年开始,区块链概念被单拎出来,这之前区块链还只是比特币技术里的一个数据结构,中本村白皮书里把block和chain连一起的时候也只是a chain of blocks 。随着以太坊去中心化计算机的概念提出来,很多人开始把以太坊称作区块链2.0,而比特币被归到了区块链1.0。至于区块链3.0,市场上为了抢夺区块链3.0的冠名权打的不可开交,没准会是DAG。
DAG(Directed acyclic graph),有向无环图,是计算机领域一个常用的数据结构,因为独特的拓扑结构所带来的一些特性,经常被用到处理动态规划,导航中寻求最短路径,数据压缩等场景中。
第一次提出DAG跟区块链结合是在Nxt社区,可以发现DAG最初出现就是为了解决区块链的效率问题。比特币的效率一直比较低,基于工作量证明共识下的出块机制是一个原因,由于链式的存储结构,整个网络中同时只能有一条链,导致出块无法并发执行。社区有人提出DAG的拓扑结构来存储区块,这个时候更多还是类似侧链的解决思路,不同的链条存储不同类型的交易,这样降低出现双花的可能,在之后某个节点需要合并的时候,几个分支再归并到一个区块。
简单介绍下,目前比特币区块链存储结构如下,每个区块存储着当前时间段所有的交易,矿工一直在拼命争夺某个时段交易的打包权利,把当前时间段所有的交易打成一个区块。目前比特币网络平均出块时间在10分钟。
比特币区块链存储结构
而Nxt社区提出,改变区块的链式存储结构,变成区块DAG。在区块打包时间不变的情况下,网络中可以并行的打包N个区块,网络中的交易就可以容纳N倍。
Ext社区提出的DAG of blocks
发现这个时候DAG跟区块链的结合还是停留在侧链的思路,不同类型的交易可以并行在不同的链条进行,达到提升性能的目的。这时候的DAG还是有区块的概念。
我们发现不管是最近风头正盛的iota,还是也备受瞩目的byteball,都提出了blockless无区块的概念。不管是比特币还是以太坊,我们总会提到出块速度这样的概念,比特币每十分钟才出一个块,6个出块确认就要一个小时,以太坊好很多,但是出块速度也要十几秒。为什么一定需要区块呢?15年社区有提出DAGCoin的概念,DagCoin: a cryptocurrency without blocks。这里把区块和交易融合到了一起。我们回想下比特币网络中区块和交易的概念,很多笔交易先打包到区块中,区块和区块之间通过prehash来维护全网的交易顺序。而DAGCoin的思路,让每一笔交易直接参与维护全网的交易顺序。这样交易被发起后直接跳过打包区块的阶段,直接融入全网,如此达到所谓的blockless效果。这样确实连打包交易出块的时间都省去了,如前文提到的,DAG最初跟区块链的结合就是为了解决效率问题,现在不用打包确认,交易发起后直接进入确认网络,理论上效率自然提高很多。
自此,以blockless独树一帜的DAG区块链雏形基本形成。又以IOTA和Byteball在市场上的表现最为耀眼。
DAG系的区块链有些概念很有趣,了解这些概念更容易理解DAG技术。
1从概率的角度来看双花问题。
在比特币网络中,通过UTXO模型,一个用户对自己可以解锁的UTXO只能发起一次转账,如此解决双花问题。比特币白皮书中也有提到,有可能多个矿工会同时解决哈希难题,获得同一时间段的交易打包权就是出块权,会有临时分叉的可能性。从这个角度来看,比特币网络中所谓的"global ledger state"也是一个不确定的状态。某一笔交易状态的确认是由其后挂靠交易的数量决定的,其后挂靠的交易越多,交易状态回滚的概率越低,这笔交易越安全。
2网络宽度
iota的tangle网络
DAG网络一个重要的问题就是解决网络宽度,DAG网络中,每笔交易被确认,需要链接到已经在网络中存在的并且比较新的交易,如果都选择网络中比较早的交易,会导致网络宽度过宽,新的交易难以得到确认。理想的状态是,新的交易发起时,选择网络中已经存在的并且比较新的交易做链接确认,这样网络的宽度保持在一定范围,能让新的交易有足够快的确认时间。在IOTA中,tangle也提出了自己控制交易宽度的算法,有兴趣可以参考tangle白皮书。
那么DAG究竟有哪些特点,居然让iota市值一度排到了虚拟货币第四的位置。
1交易速度快
如上文提到,由于DAG摒弃了区块概念,交易直接进入全网中(需要指出,iota网络中每发起一笔交易,会类似hashcash一样的机制做简单的pow证明),所以交易速度预期比基于pow和pos的需要出块的区块链会快不少。
2无需挖矿
DAG把交易确认的环境直接下放给交易本身,无需由矿工打包成区块后同意交易顺序。所以DAG网络中没有矿工的角色。
3无手续费
iota的tangle网路中,交易发起只需要做简单的POW工作量证明,整个网络中的POW都是发起交易者自己做的,而不是交给矿工。发起交易无需手续费。
4智能合约支持
目前iota还不支持智能合约,但是官方roadmap中有计划在18年开始实现对智能合约的支持。而byteball也还不支持智能合约。
5需要见证节点
不管是iota还是byteball,目前的网络结构中,还是需要见证人机制的存在。这一部分不管是DPOS、POS、PBFT,大家最终都会在效率、安全性上寻求一种平衡。
市场上iota和byteball的市值已经引起了很多关注,相信对DAG的技术讨论也会变多。从技术角度来看,DAG给我们提供了完全不一样的区块链实现,高性能和无手续费这些点确实引人注目。随着社区对DAG技术的进一步完善和发展,也许,DAG会是真正的区块链3.0呢。
最近在做区块链方面的创业项目,在找各种技术栈的小伙伴一起搞事情。也欢迎大家加微信交流沟通 qqwww5
最近在做一个区块链技术相关的公众号,欢迎大家关注 JustBurning

DAG也许是真正的区块链3.0的更多相关文章

  1. 区块链3.0:拥抱EOS

    EOS是当下最火的区块链技术,被社会广泛看好为下一代区块链3.0.不同于以太坊的学习,EOS的主语言是C++,本文作为EOS研究的首篇文章,重点介绍EOS的创新点,它的周边生态,各种概念原理的解释,以 ...

  2. 区块链3.0 ada Cardano卡尔达诺如何获得一致好评?

    区块链3.0 ada Cardano卡尔达诺如何获得一致好评? EOS 的直接竞争对手是以太坊.文章介绍的卡尔达诺(Cardano)的目标就更加远大了,他要同时锁定比特币和以太坊.但大家去网上搜索卡尔 ...

  3. Genaro Network —— 区块链3.0缔造者

    在2018年1月26日硅谷密探在美国旧金山艺术宫成功举办了“Blockchain Connect Conference”.在大会上,Genaro Network 联合CEO Jason Inch 携同 ...

  4. 一场IPFS引领下的共享之风正在走向区块链

    中国互联网的高速发展 已经接近10年,小编完整的经历这个过程.这一切我们从一个小网站 饭否 说起... 互联网 2006年3月16:Twitter上线 2007年5月12:  饭否上线 饭否是中国第一 ...

  5. cpp 区块链模拟示例(五) 序列化

    有了区块和区块链的基本结构,有了工作量证明,我们已经可以开始挖矿了.剩下就是最核心的功能-交易,但是在开始实现交易这一重大功能之前,我们还要预先做一些铺垫,比如数据的序列化和启动命令解析. 根据< ...

  6. 如何从零开始学习区块链技术——推荐从以太坊开发DApp开始

    很多人迷惑于区块链和以太坊,不知如何学习,本文简单说了一下学习的一些方法和资源. 一. 以太坊和区块链的关系 从区块链历史上来说,先诞生了比特币,当时并没有区块链这个技术和名词,然后业界从比特币中提取 ...

  7. [区块链] 带你进入Bitcoin开发 - 环境搭建

    学习完区块链枯燥乏味的.高深的.必备的基础知识后,终于可以走上开发之路了!真是迫不及待啦!之后博客更新主要放在区块链的开发上,相信这才是大多数同学更加感兴趣的地方!学习过程从最经典的区块链鼻祖-比特币 ...

  8. 区块链教程(二):比特币、区块链、以太坊、Hyperledger的关系

    不知道大家喜不喜欢音乐! 朋克音乐:诞生于七十年代中期,一种源于六十年代车库摇滚和前朋克摇滚的简单摇滚乐.它由一个简单悦耳的主旋律和三个和弦组成,经过演变,朋克已经逐渐脱离摇滚,成为一种独立的音乐,朋 ...

  9. bimgotoblock-BIM要上区块链

    比特币(BitCoin)的暴涨暴跌让参与者体验着过山车的感觉,有人一夜暴富.别墅靠海,也有人拍断大腿或者恨不得跳楼了此残生.世人也更多的听说了比特币底层的依托--区块链(BlockChain) 技术. ...

随机推荐

  1. fetch数据请求的封装

    export default class HttpUtils { static get(url){ return new Promise((resolve,reject)=>{ fetch(ur ...

  2. RMAN restore fails with ORA-01180: can not create datafile 1

      最近在验证.测试备份有效性时,遇到了"ORA-01180: can not create datafile 1"这个错误,顺便结合metalink的官方文档"RMAN ...

  3. Cas 服务器 使用HTTP协议对外服务

    在上篇博文<Cas 服务器 下载.编译及部署>Cas启动后默认支持HTTPS连接,如果要使用使用HTTP连接访问,则会收到以下信息: 注:本文是将Cas服务器运行在Http协议模式下,非设 ...

  4. [20181124]关于降序索引问题3.txt

    [20181124]关于降序索引问题3.txt --//链接:blog.itpub.net/267265/viewspace-2221425/,探讨降序索引中索引的键值.--//实际上使用函数sys_ ...

  5. Timeout occurred while waiting for latch: class 'ACCESS_METHODS_DATASET_PARENT'

    前些天某个SQL Server数据库的错误日志爆出如下错误: Timeout occurred while waiting for latch: class 'ACCESS_METHODS_DATAS ...

  6. SQL server 获得 表的主键,自增键

    主键: @tableName --表名 @id ---表对应的id SELECT SYSCOLUMNS.name FROM SYSCOLUMNS,SYSOBJECTS,SYSINDEXES,SYSIN ...

  7. Windows Server 2016-清理残留域控信息

    本章紧接上文,当生产环境中域控出现问题无法修复以后,一方面我们需要考虑抢夺FSMO角色,另一方面我们需要考虑的问题是清理当前域控的残留信息,以防止残留数据信息导致用户验证或者解析异常等问题.本章讲到如 ...

  8. python设计模式之单例模式(转)

    设计模式之单例模式 单例设计模式是怎么来的?在面向对象的程序设计中,当业务并发量非常大时,那么就会出现重复创建相同的对象,每创建一个对象就会开辟一块内存空间,而这些对象其实是一模一样的,那么有没有办法 ...

  9. session 详细解析(转)

    转自 https://www.cnblogs.com/blueskycc/p/5524709.html?tdsourcetag=s_pcqq_aiomsg http协议是WEB服务器与客户端(浏览器) ...

  10. 负载均衡(nginx、dubbo、zookeeper)

    nginx dubbo zookeeper