前言
为什么要写这本书
十余年前,攻读硕士期间在做P2P应用系统时,分布式的内容分发和文件共享均相对较容易实现,但却一直为P2P节点的信誉机制和信任体系的建立绞尽脑汁而不可得。博士阶段研究方向转为网络安全,在寻找研究方向时,因长期以来对网络对抗、密码学的研究有兴趣,机缘巧合,在2008年年底恰逢中本聪、哈尔芬尼等人在密码学邮件组讨论比特币设计并在讨论组里发布了比特币的原始论文,自此,开始了我的区块链研究生涯。
区块链行业近年来发展迅速,作为行业较早的从业者,我一直和行业一起成长,并实际参与了区块链行业,进行了诸多工程实践。人们基于块链式结构的分布式账本技术设计了很好的经济模型,解决了分布式环境下达成一致性之后的节点激励问题,但现有块链式结构的设计因需要将单笔交易的全部阶段作为原子操作来完成,所以先天性难以并行出块,存在难以提高系统吞吐量等问题。人们在如何提高块链式分布式账本的TPS上做了很多工作,典型的如闪电网络等,但由于块链式数据结构本身的限制,始终难以实现彻底的性能提升。
在数学和计算机科学的诸多领域,图(网)这种数据结构在解决诸多复杂应用问题时相较于链表结构具备先天性的优势,这在诸多科学问题和实际应用领域中已经得到证明。在区块链或者说分布式账本技术领域,我认为该规律依然适用。2013年,在bitcointalk. org论坛上关于NXT的讨论帖中,就有用户提出以有向无环图(Directed Acyclic Graph, DAG)作为区块链的底层数据结构以提高系统整体性能,此时提出的DAG底层依然用区块,但把区块的链式存储结构改成DAG存储,即变成区块DAG。此时人们的思路还停留在侧链的思路上,不同类型的交易并行在不同链上进行,即DAG和区块结合使用。但DAG区块仍受限于出块速度这个指标,因此2015年人们提出Blockless DAG的概念,此时的DAG把区块和交易进行了融合,交易发起后没有产生区块的阶段,而是直接对交易进行全网交易排序。后续人们逐渐在DAG技术路线上进行了探索,出现了IOTA、ByteBall、XDAG、Hedra Hashgraph、InterValue等项目,DAG几乎在每个维度上都能显露出比区块链更优的特性,在效率、确定性、避免中心化、能耗等方面尤为明显,但如何设计安全、高效的基于DAG的共识机制以实现对交易全网排序并确保排序的唯一性和一致性是个技术难点。上述项目在DAG共识机制上做了迭代性的探索,尤其是InterValue项目在共识机制设计上,创新性地提出的分层分片的Gossip共识机制HashNet。HashNet有望较好地平衡“不可能三角”,即平衡区块链基础设施的去中心化、性能和安全性。
由于区块链行业尚处于早期阶段,尤其是在技术方向的探索上,诸多项目依然在进行块链式区块链的研究,行业内尚未在能支持大规模分布式应用(DApp)的区块链基础设施应该走什么样的技术路径这个问题上达成共识,基于我对DAG技术的理解和应用实践,我认为非常有必要撰写一本关于DAG技术原理与工程实践的图书:首先让区块链爱好者对DAG这条技术路径的发展历程、现状和趋势有深度了解;其次让区块链从业者在从事区块链相关研究和开发过程中掌握DAG的技术原理并能够将该技术用于工程实践;最后希望能够将各类区块链行业大规模应用和基础设施研发团队的技术路径引到DAG技术路径上来,通过各团队的努力,在实用化区块链基础设施研发和基于实用化区块链基础设施构建的用户量级达到千万级以上的分布式应用研发上,尽早取得里程碑式的成果,实现现象级区块链基础设施和现象级区块链应用的落地。
读者对象
❑ 区块链技术爱好者
❑ DAG相关项目的用户
❑ DAG技术爱好者
❑ DAG项目实际开发者
❑ DAG相关应用开发者
❑ 开设区块链相关课程的大专院校的学生
如何阅读本书
本书可归纳为三大部分。
第一部分为基础原理(第1章~第5章),依次对DAG技术原理,包括数据结构、共识机制、智能合约、密码学技术进行了介绍,帮助读者掌握DAG的原理性知识。
第二部分为工程实践(第6章~第9章),着重讲解DAG技术工程实践中的三个具有代表性的项目,即IOTA、ByteBall和InterValue,尤其是对InterValue项目进行了详细介绍,并对DAG技术安全原理和实践进行了探讨。
第三部分为展望(第10章~第11章),对DAG的生态建设和发展趋势进行了探讨。
希望本书能够为读者提供原理性指导和工程实践参考。
勘误和支持
除封面署名的作者外,参加本书编写工作的还有张晓斌、康来、荀长庆、何速、龙军、张子文、刘晓铖、徐浩、彭磊、左晓亮、刘星、邢志、陈政、张硕云、甘卫、文冉、邓长青等。由于作者的水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。书中的全部源文件可以从华章网站下载,我会将相应的功能更新并及时发布出来。如果你有更多的宝贵意见,也欢迎发送邮件至邮箱caoyuan@nudt.edu.cn,期待能够得到你们的真挚反馈。
致谢
感谢比特币之父中本聪,他开创了一款影响我整个人生的软件。
感谢国防科技大学十数年的教育,我在这里度过了学生生涯并留校任教数年,让我有幸在我感兴趣的技术领域开展研究。
感谢公司的所有小伙伴——邵炳春、郭乐、钟磊、向妍、杨祝建、陈丽沙、李海平、于存威、张文政、叶永学、彭韬、刘轶、张超、杜玺麟、施雨良、丁继刚、郭芳琪、高迪、胡慧、阳昕丽、黄召戎、文德英、克雷蒙、康纯、张静、李爱军、贺文军、余增辉、李旭、刘欣如、熊季、彭毓妍、曹恒、邱颖、彭飞、李进、杨坚、张航、李帅、张小苗、代祥、金多多、万舸、徐斯洁、肖春宇,以及名单之外的更多朋友,感谢你们长期对公司的支持和贡献。
感谢机械工业出版社华章公司的杨福川老师,在这半年多的时间中始终支持我的写作,你的鼓励和帮助引导我能顺利完成全部书稿。
最后感谢我的父母及亲人,感谢你们将我培养成人,并时时刻刻为我灌输着信心和力量!
谨以此书献给我最亲爱的家人,以及众多热爱区块链尤其是DAG技术的朋友们!
湖南宸瀚信息科技有限公司董事长
哈希奈特(北京)科技股份有限公司董事长
四川宸瀚科技有限公司董事长
曹源
写于湖南长沙