王嘉平:带着区块链论文参加分布式系统全球顶会是何体验?

2019年3月13日18:02:13 发表评论
广告也精彩

上周我从美国的西北角西雅图飞到了东北角波士顿,在那里待了几天,为了参加 USENIX的旗舰学术会议 NSDI 2019。我和汪浩撰写的介绍区块链性能提升方案「Monoxide」的论文被这个大会接受,并安排在会议第一天上午为参会学者和专家进行专题介绍。

从读博士开始,到毕业后就职于微软研究院进行学术研究,参加这样的学术会议、讲解论文早已经成为生活和工作的一部分,不过这次在区块链领域的First Blood,还是让我着实兴奋。

NSDI 大会对像我这样长期从事分布式系统研究的「Nerd」来说,自带某种闪耀光辉。因为这个会议对于收录论文的质量严格非常把控,一直固执地采用双盲评审,从来不打算改变这一传统。他们接收的每篇文章都要经过两轮总计六到八个审稿人的审阅,还有程序委员会的讨论筛选。这样折腾下了,每年NSDI大会上只有几十篇论文能够入选,数量少得惊人。相比某些计算机视觉顶会动辄一年能收录几千篇论文的「文海」策略,NSDI大会算是相当古板,但又让人敬佩。另外一个让我心存敬佩的学术顶会是 ACM SIGGRAPH,每年接收论文的数量大概在100篇左右。第二个原因是,这是 NSDI 大会屈指可数的收录区块链论文的案例,更是中国人在这个领域的第一篇文章。

分布式系统中关于区块链技术的研究还需加强

NSDI 大会关注的研究课题是计算机网络和分布式系统,按道理,区块链的核心技术属于这个领域。可是事实上,学术界目前在这个领域的主流研究方向还是关注于中心化的数据中心、超算中心里面的理论挑战和实际工程问题,对应的大都是云计算行业以及涉及大量计算任务的机器学习领域。

今年总共3天的会议中,关注区块链的论文仅有我们这一篇,以至于会议主席在正式开幕的前一天晚上预热宣讲(preview session)中,特别提到了我们的论文,说「区块链终于来到了NSDI这个分布式系统领域的殿堂」。我有点想提醒主席先生,其实三年前这个大会收录过一篇区块链论文,那就是大名鼎鼎的「Bitcoin-NG」,也是在NSDI 大会上发表的,只是他们没叫区块链而已。

其实我们「一氧化物」的想法成熟并开始实验后,就一直在考虑应该如何把这个技术介绍给全球的同行。我们立下了几个原则:一定要送到采用双盲评审的顶级学术会议,接受同行严格的评审,在这个过程中接受挑战,也通过这样促成自身的精进。在选择会议上,我们明白论文在 NSDI 大会入选难度极大,但是,从一开始我们就把 NSDI 大会定为目标。因为我看到这个会议的研究课题分布在网络系统的各个技术点上,大家都在关心系统的性能,即承载大业务的能力,但是在去中心化的分布式系统的性能提升方面,却一直难有突破。所以,我们认为区块链的性能问题的技术突破,最应该在这里发表。

区块链是一种特殊场景下的分布式网络系统,其中涉及的通讯、计算、存储的开销和瓶颈等命题同传统的数据库、并行计算系统、分布式计算系统等领域中的问题在思路上是完全一致的。但是由于区块链又是一个去中心化的系统,没有集中控制和调度的机制,这使得之前分布式系统中的大部分具体的设计和算法,无法直接应用到区块链中。这就是为什么,分片的设计思路可以应用在区块链中,但是我们论文中具体的设计和算法是全新的。

接力交易本质上是并行计算系统里面很常用的消息传递机制,但是必须基于可以安全验证的设计方案,因为这里的安全性问题在之前的中心化系统中是不存在的。所以区块链在设计上,是安全机制和分布式系统交织在一起的考量,缺一不可。而其中分布式系统设计是骨架,安全机制是肌肉和韧带,保障系统可以在去中心化环境中健壮地运行。

同行相见,中国 Nerd 会师

今年的NSDI大会共收录了包括知名高校和企业研究机构在内的49篇论文,其中有超过一半来自美国顶尖高校,比如 MIT、UC Berkeley、Stanford、CMU、Princeton、Cornell、UW、Harvard、Yale等,而另外近一半则来自微软、Google、Intel等美国知名的云计算相关企业。

而另一个很明显的趋势是,来自中国的一线研究人员和技术企业的比重在增加。在国际顶会中看到中国人的面孔早就很常见了,但是之前更多是在海外高校研究和一线科技企业做研究的华人,现在,越来越多来自中国的机构。比如,今年的大会上我们越到了来自微软亚洲研究院、清华大学和今日头条(Bytedance)的中国同行。当然,其中还有我们,来自创新工场和中科院计算所。

当谈论硬核技术时,我们谈论些什么

我们的论文被归类在分布式系统架构设计专场。「分布式系统架构设计」这个细分领域算是网络研究领域的重中之重,所以这个环节安排在会议正式开幕的第一天上午宣讲。和我们同一个专场一起宣讲的还有Stanford、MIT和EPFL(瑞士洛桑联邦理工学院)的论文。

当天 300多人的会场坐得满满当当,除了第一排(难道是读大学的后遗症?),所以照片里面的我就没几个像素了。凭着当年在ACM SIGGRAPH千人会场宣讲的经验,我还算稳稳地把宣讲时间控制在20分钟,好在后面流出足够的时间来回答与会者的提问。

第一个问题来自Princeton的一个做无线网络的研究生,看他对着手机屏幕念出问题,大概是在帮远程的某位同学提问的。他的问题直击这个版本的Monoxide的一个约束,就是交易要能够被分解成多个每个涉及一个zone的操作。而后面几位来自MIT和Google的问题,则是关于最终原子性和连弩挖矿,都比较基础,估计是没细看论文。

最后瑞士洛桑联邦理工学院 Bryan Ford教授的学生,也就是Dfinity在瑞士的团队,问了关于交易确认时间可能延长的问题。这个情况有概率存在,延长时间的数学期望是出块周期的一半。其实我在心里也特别想向他提几个问题,问问 Dfinity 团队在研发过程中进展究竟如何,一些核心挑战是否已经解决。

周三傍晚是我们的海报站台环节(poster session)。很明显,区块链还是非常新的课题,大家充满好奇心,前来交流的人非常多。很多问题也比较初级的,不好意思在论文宣讲提问环节提出的问题,这个时候都来了。

期间比较有意思的是一位MIT的同学。我猜他也在做区块链分片这个方向,他和我们讨论了限制矿工聚焦算力的另一种方法,数据结构和连弩挖矿类似,但是一次只允许出一个块,并且能在那个分片里面出是随机的不受矿工限制。在保障安全这个角度来说,可以实现和连弩挖矿一样的效果,只是其他块都白算了。另外一个让我印象深刻的是一位来自VMWare的女生。她过来来讨论了很多设计的细节问题,显然在这个方向已经有很深入的研究。我智能心中暗暗诧异,难道VMWare也在搞区块链了?

期间还有一个Google的朋友,问起一个问题,说到了矿场最终会所有分片,是不是分片就没意义了?这个问题很具代表性,之前知乎上面也有网友问到,所以我觉得值得再解释一下。矿场需要参与所有分片,并没有使得分片退化,也没有损害伸缩性。矿场这个设施,并不是一个单一节点,矿场本身就是一个由几百上千台矿机构成的分布式系统。正是有了Monoxide的分片架构,才使得矿场内部可以很简单地设计成一个高收缩性的系统。投入足够多的普通服务器,用不同的机器去监控不同的分片进行出块计算,就可以把实实在在的几万甚至几十万的TPS以及几个TB的状态容量撑起来。如果没有分片,例如现在的比特币以太坊,那么矿场即使投入再多的普通服务器也无法提升TPS和容量。

小八卦

在海报站台期间,会议主席Jay Lorch也来到我们的摊位,表示很喜欢我们的工作,希望有这些新的研究课题给NSDI大会带来更多活力。

他还透露说,今年大会组委会其实总共收到了四篇和区块链相关的论文投稿,最后拒了三篇,只收了我们这一篇,因为评审委员会评审之后,认为只有我们这篇工作非常扎实并且想法非常创新,系统的设计简单有效,是可以应用到实际的工程实现的。

这次参加会议除了让更多人了解我们的工作之外,最大的收获是在茶歇期间,和一位Stanford的同学聊到了RSA Accumulator。发现我之前对RSA Accumulator有个误解,以为它的状态需要3K左右字节,而事实上,这个代价是和其模数有关的值,可以变小,当然冲突概率会变大。

这个误解来自于Grin团队的某个宣讲视频,摔 … 事后请教了一下斯坦福学的密码学大咖Dan Boneh教授,原来 RSA Accumulator在采用2048-bit模数的时候,只需要256字节。这是一个非常有意义的结论,可以直接应用在Monoxide中,用很小的代价将接力交易的通讯总和从n log(n),降到n,从而提高大概10倍的吞吐量。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: