我从一个计算机研究者的角度分享一下我对区块链的认识以及如何在这个领域展开研究,希望能对迷茫的同学有所帮助。
随着人们对区块链认识的不断深入,国内外很多大学以及实验室都开设了针对研究生的相关课程以及区块链相关的研究方向,不少新晋的硕博同学也因此入坑。由于针对区块链正经的学术研究相比于其他领域只能算刚刚起步,很多大学和实验室缺乏相关积累,这让很多新入坑的同学痛苦不已:在区块链领域到底是怎么做科研的?在这里我从一个计算机研究者的角度分享一下我对区块链的认识以及如何在这个领域展开研究,希望能对迷茫的同学有所帮助。
PS: 本文转自知乎:https://zhuanlan.zhihu.com/p/354997450,有问题欢迎大家在知乎上私信和咨询。
区块链的历史定位
区块链从技术层面上来讲不是一个从 0 到 1 的新技术,我更愿意把它说成是分布式系统领域向前进了一小步。传统的分布式系统更多地是去解决一个中心化的分布式系统中所遇到的问题,而区块链则强调其是一个去中心化的系统,其复杂性上升了一个台阶。从中心化到去中心化,其本质是人们减弱了对分布式系统的安全假设。过去的系统大多假设节点中不存在拜占庭行为,而一个区块链系统则要求在拜占庭行为存在的情况下,系统仍然是安全的。有关抗拜占庭系统的研究在 1999 年 PBFT 被提出后到达一个顶峰,但在之后的 10 年都没有什么重大的进展,直到 20 年后的今天, PBFT 仍然是最被人们熟知的抗拜占庭协议。这是因为中心化的系统已经足够好用,而抗拜占庭系统的性能、可扩展性、复杂性上都存在问题,去中心化的场景也不是刚需。但就在10年之后,比特币的出现让研究者们重新审视去中心化的系统。
从历史的眼光看,区块链的出现不是偶然。早在互联网的初期,世界上还不存在中心化的系统,每个节点都是相对独立和平等的。随着人们对互联网服务需求的增加,互联网公司需要搭建高性能服务器给数以万计的用户提供服务,同时存储和管理用户数据。互联网开始逐渐向中心化演变。随着云计算、大数据时代的到来更是将这一演变推向顶峰。可以说,人们在互联网上的任何活动都离不开一个中心化的系统。人们已经不知道脱离了中心化的系统,互联网该如何工作。然而比特币的出现告诉人们,互联网世界不必完全依赖中心化的系统,即使是价值交换这么关键的行为也可以在一个去中心化的系统中进行。所谓“天下分久必合,合久必分”,区块链的出现可以说就是互联网发展到“合久必分”的阶段。当然,区块链也不可能颠覆现有的中心化系统,但从某种程度上来说,将互联网从中心化向去中心化推进了一点点。虽然我们无法预测区块链将来会发展到什么程度,但我们至少可以对区块链有一个正确的发展定位。
区块链有哪些研究方向
区块链牵扯的技术有很多,可以说是涵盖了计算机领域的方方面面。我下面主要从近些年顶级会议所接收的区块链相关的论文来分析一下区块链比较热门的研究方向。有需要的同学可以关注一下我们组在 github 上维护的区块链领域论文列表(blockchain_conference_paper)。
1.分布式系统方向
区块链的本质就是一个分布式系统,各个节点在一个存在拜占庭行为的网络中,维护一个不断增长(liveness)的唯一(consistency)的账本。作为区块链中的核心技术,共识算法是分布式系统中非常重要的研究方向。共识算法按照网络假设不同可以分为同步(synchronous)、半同步(partially synchronous)和异步(Asynchronous)算法。同步算法依赖网络中的同步假设,即网络中的消息传播可以在一个确定的时间内到达,这类算法虽然设计起来简单但实现过程中满足网络的同步假设并不容易。由于同步假设过于理想化,这类算法过去大多只停留在理论,但区块链的出现促使一些实用的同步协议被提出,比如 Sync HotStuff, S&P’19。
半同步协议则假设网络大部分时间是同步的,即使网络会有短暂时间的波动,但最终都会回归到同步的状态。这种假设比较符合现实生活中的大部分场景,因此实际工程中使用的也大多是半异步的协议,比如 Facebook 的加密货币 Diem(过去叫 Libra)采用了 HotStuff, PODC’19。
异步网络的假设最弱,只要求消息最终能够到达,具体需要多长时间无所谓。这也是最贴合实际网络状态的假设,适用于需要大规模部署且网络环境比较复杂的场景。但为了适应这种复杂的网络环境,异步协议通常性能比较差,设计比较复杂,实际工程当中应用较少。区块链的去中心化特性同样促进了异步协议的发展,比如近期在国内比较火的 Dumbo, CCS’20 就是一个高性能的异步拜占庭协议。
除了以上按网络假设对共识协议分类之外还有可以根据网络是否对外公开分为 permissionless(无许可的)和 permissioned(有许可的)。这种分类也就是通俗来讲的公链和联盟链。公链一般基于 Proof-of-Work(PoW)、Proof-of-Stake(PoS)、Directed Acyclic Graph(DAG)等,主要解决的问题是如何在拜占庭场景下对抗女巫攻击(Sybil Attacks)。目前公链这方面的研究主要关注协议的可扩展性和性能,比如 Prism, CCS’19。而联盟链一般基于传统的拜占庭算法,主要关注区块链场景的一些工程优化问题,比如 Hyperledger Fabric, Eurosys’18。分布式系统方向的顶会主要有 PODC 和 ICDCS,在近几年发表了了很多优质的区块链论文。
2.安全方向
安全方向是区块链研究非常重要的一个分支,涵盖的研究面非常广,包括区块链协议安全,隐私保护,密码学应用,以及智能合约安全等。区块链协议的安全主要关注对一些现有区块链系统及组件的安全与隐私分析(比如 Bitcoin Backbone, Eurocrypt’15)、针对区块链的攻击(比如 Eclipse Attacks, Usenix Security’15)、新型区块链协议(比如 HoneyBadger, CCS’16)等。
密码学方面主要是一些密码学技术(比如零知识证明)以及可信执行环境(TEE)在区块链领域的应用(比如 FastBFT, ToC’19)。智能合约安全也是近几年安全圈比较关注的领域,这是因为智能合约一旦出现漏洞,则会造成不可挽回的损失,比如非常有名的 The DAO 事件。这方面的研究主要包括智能合约的形式化验证(比如 VeriSmart, S&P’20)和漏洞挖掘(比如 Smart Contract Vulnerabilities, Usenix Security’21)等。
信息安全的四大顶会(CCS,S&P,NDSS,Usenix Security)一直备受区块链研究者的青睐,每年都会产出数十篇高质量论文。除此之外还可以关注一下另一个会议,Financial Cryptography(FC)。虽然说 FC 只被列为 CCF 的 C 会,但因为区块链自带的金融属性,使得 FC 基本成为了区块链专门的学术会议,而且质量大部分也都不错。
3.存储和网络方向
用户对区块链的操作,无非是读和写,用户体验与传统的分布式数据库非常类似。因此存储方向的研究主要关注读、写操作的性能以及可扩展性。近几年数据库的顶会 VLDB、Sigmod 和 ICDE 发表了很多篇有关区块链的文章,比如 FalconDB, Sigmod’20 和 ResilientDB, VLDB’20。
区块链底层节点之间的通信采用 P2P 网络。如何提高交易和区块传输速率、节省网络带宽是网络方向比较热门的研究方向,比如 Graphene Sigcomm’19。除此之外,针对区块链的二层扩容网络,闪电网络、状态通道等也非常有前景,比如 Flash CoNext’19。网络方向的会议产出区块链论文比较多的主要有 CoNext 和 Infocom。
资源分享
目前市面上还没有非常系统的区块链学习资源,我在这里整理了一下这些年我自己学习过的网课还有阅读资料,有其他好的资源欢迎在评论区补充。
网课
- 首先我最为推荐的是著名的
MIT 6.824
。这是针对研究生的分布式系统课程,每年都会更新全套的教学资源,包括视频、讲义、实验、练习、代码,课外阅读材料等,完全免费。课程主要介绍经典的分布式系统,包含4个实验。除了第一个实验是关于 MapReduce 之外,其它三个部分都是围绕 Raft 实现一个 key/value 系统。虽然大部分课程和实验跟区块链没有直接相关,但理解这些经典的系统,对研究区块链有非常大的帮助。课程地址:https://pdos.csail.mit.edu/6.824/。 - 如果觉得上面的课程有难度,可以先尝试学习 UC Santa Cruz 的本科分布式课程
CSE138
,讲师是 Lindsey Kuper。这堂课的特点就是简单易懂,包含了很多分布式系统入门的理论知识,非常适合打基础。课程地址:http://composition.al/CSE138-2020-03/index.html。 - 布朗大学的
CS1951L Blockchains and Cryptocurrencies
。我推荐这个课的原因主要是因为讲这个课的教授 Maurice Herilhy 是个非常有意思的老头。一把年纪了还在科研第一线,经常以第一作者发表论文,最近几年在区块链领域仍然有非常高质量的产出,是年轻人学习的榜样。另外这个课的 slides 也都是他一个人做的,不仅介绍了区块链和加密货币的方方面面,也介绍了一些比较新的区块链论文(包括 Algorand 和 HotStuff等),有非常浓重的个人色彩。课程地址:http://cs.brown.edu/courses/cs1951l/。 - 斯坦福大学在去年也开设了区块链的研究生课程
EE374 Internet-Scale Consensus in the Blockchain Era
,教授是大名鼎鼎的 David Tse,信息论的殿堂级人物,最近在区块链领域异常活跃,有非常多高质量的产出,有兴趣的同学一定要关注一下。EE374 的课程内容也是围绕他们团队的一些科研成果开展,主要关注新型的可扩展区块链协议。课程地址:https://web.stanford.edu/class/ee374/。 - UIUC 的
CS598LR Consensus Algorithms
。讲师 Ling Ren 可以说是区块链领域的新星,跟很多研究区块链的大佬都有非常紧密的合作关系,最近高质量的产出也非常多,值得关注。CS598LR 的课程内容由浅入深,探讨了分布式系统领域的很多根本性问题,而且紧跟科研动态,讲解了最新的区块链研究成果,引人入胜。课程地址:https://sites.google.com/view/cs598lr/home。
阅读资料
- 首先,区块链的两本入门书是必看的:Mastering Bitcoin 和 Mastering Ethereum。两本书的作者都是 Andreas M. Antonopoulos,著名的科技作家。这两本书都在 github 有开源版本,而且在不断更新中。
- 硬核教材的话我强烈推荐 introduction to reliable and secure distributed programming (2nd Edition)。这本书涵盖了分布式系统领域涉及的各种抽象和实现算法。有了这本书作为知识储备,再也不用担心看不懂区块链论文里面晦涩难懂的协议和算法了,因此这本书也可以当作工具书,非常实用。
- 密码学领域教母级人物 Elaine Shi 最近免费公开了她写了一本区块链教科书的草稿 Foundations of Distributed Consensus and Blockchains,内容主要介绍了从拜占庭协议到区块链的发展,篇幅不长,可读性很强,非常推荐。由于这本书还是草稿,所以内容还在不断更新中,感兴趣的同学可以持续关注。
- 最后我想推荐一个特别值得关注的博客网站,Decentralized Thoughts。这个网站由多个区块链领域的顶级研究者维护,博客内容浅显易懂,涉及的研究面很广,时效性强。每篇博客通过一张统一的思维导图串联起来,非常方面读者按照导图的指引检索内容。
盖盖 更新于 2021-03-08
https://learnblockchain.cn/article/2238