最近几件小事让我对“创新”有了进一步理解。
有天下午跟郭老师聊天,他说最近在研读 zk 里经典算法的论文,发现每一个重大突破都是有师承的,每一个看似精妙的天才想法,都是在前人的基础上再往前迈一步。看论文时能特别清晰的看到这个过程,因为论文有特殊的格式要求,必须写清楚哪些想法是你的,哪些是引用其他人的,即使是和其他人通信聊出来的想法,还没有正式发表成论文,也得写清楚。
对我这种不搞研究,没写过正经博士论文的人,这种做法相当陌生。“天下文章一大抄”是我更熟悉的,稍微有节操一些的作者,也经常会把别人的想法用自己的语言重写一遍,却不注明来源。这种文化其实非常不利于追溯思想和技术根源,进而影响新思想的诞生。
科研经常被看作几个天才科学家的故事,仔细想想,拉长时间和空间尺度来看,人类的知识库要想持续有突破,必须是大家合作,互相启发,一起探索。一个人离群索居,或者一部分人闭关锁国,几乎不可能持续推动人类整体的科学进步。
创业也是如此。前两天我和 Curio 的创始人 Yijia 聊天,他们团队非常年轻,都是刚毕业的小伙子。我问他为什么选了 onchain game 这个冷门方向,他很诚实的说,其实没想那么多,就是觉得这个方向很有趣,身边很多聪明的小伙伴也在做,那就干。
在拓荒阶段,很多时候是没有逻辑可以遵循,也看不清前路。这个时候做决策靠的就是直觉,另外就是看身边靠谱的朋友在做什么。我最近接触到做 onchain game 的朋友,基本都在国外。过去这几年,国内的 crypto 行业就像沙漠里的鱼,老一代都往国外转移,对新一代创业者来说,他们看不到身边的人在往这个方向努力,自然也就不愿意冒险前进了。
写到这,我觉得可以停下来想想,到底什么是创新呢?按字面意思,就是创造新思想和新方法来做事情和解决问题。按这个定义,不同的文明和国家多少都有自己的创新,虽然和平时我们说的“进步主义”的创新不太一样。
粗暴的按内外来分类,创新总是需要特定外部环境和核心人群支持的。
外部环境就是当地的政治经济文化环境,有些科技创新注定没法在特定政治环境下进行,会直接被禁掉;经济发展不够的地方也不可能支持需要长周期投入的创新。
核心人群就是直接和创新活动本身密切相关的人群,比如创业者,早期员工,用户,投资者,核心人群内部的互动构成了独特的内部环境,很多时候是外部人士意识不到的。这种小生态是难以强行复制的,通常只能在机缘巧合下自发生长。
历史上经常有创新一簇一簇出现的现象,集中的时间地点和人群,大概是因为创新需要的特定外部环境和核心人群非常苛刻,一旦符合条件,在那一片区里创新就会雨后春笋般冒出来。
啰哩啰嗦扯了一堆创新,就写到这吧,希望接下来鲱鱼罐头能给朋友们支起一片小生态,也算是创新了。
@空岛:这篇是对on-chain games入门科普类型的文章,很适合用来快速建立概念。而且这篇文章是由bankless刊发的,bankless作为影响力最大的crypto媒体之一,也说明on-chain games的概念开始在crypto主流视野中出现了。
@KurtPan:Personae Labs这次的Spartan-ECDSA证明ECDSA group membership的证明生成时间比之前他们几个月前自己的efficient ZK ECDSA快10倍,这种强大快速的工程实现和迭代优化能力还是很惊人的。还记得2019年(将近4年前了……)我和同学一起看Setty的Spartan论文,从此成为sumcheck协议忠实粉丝(那时候Justin Thaler还没开始写他的书),很欣喜地看到sumcheck协议在这几年的飞速发展。
@阿剑:累加器(accumulator)是这样一种技术:可以为底层的数据生成一个摘要,底层数据的变化可以反映在摘要上;并且,可以通过该摘要来证明底层数据中包含某个元素;某一些构造还允许证明底层元素中不包含某个元素。实际上,以太坊区块头中的状态树默克尔根,就可以被认为是一种累加器。
累加器是通往无状态性 —— 无需存储完整的区块链状态,也可参与完全的区块链验证 —— 的关键。
这份演讲稿来自 2018 年 10 月的 Bitcoin Core dev tech 活动,可能是 “Utreexo” 这个概念第一次亮相(Utreexo 的完整论文在 2019 年 6 月才发布)(作者是闪电网络论文的作者之一,也是 DLC 概念的提出者)。内容有点散乱,这是因为作者一边介绍 Utreexo(一种基于哈希函数的累加器),一边对比 RSA 累加器(就在该演讲的几天前,Scaling Bitcoin 2018 上有一场关于 RSA 累加器的演讲)(该演讲的文字稿的翻译同样可在 BTCStudy 站内找到)。
Utreexo 和比特币社区提出的其它累加器方案,跟以太坊社区以 “无状态性” 为名的技术,目标是完全相同的。实际的研究也几乎同期发生,以太坊社区可能还略早一些。我在 2017 年就听说过 Vitalik 提出的 “无状态客户端” 一词,Alexey 的重要文章出版于 2019 年 3 月。但是,从概念的完整性上来说,可能又数 Utreexo 更为完整。
一个例子是,在这份 2018 年的演讲中,作者就已经提出了需要 “桥接节点”,即需要为只保存累加器的 Utreexo 节点提供累加器证据。而在以太坊社区的研究中,人们似乎默认了最终一定会有一次硬分叉,让区块自身携带这些证据;然后 Piper 才发现,即使有了这些证据,这些只保存累加器的节点也无法成为 “正常的节点”,他们虽然能验证区块,但无法转发交易(如果交易自身不携带 witness),也无法查询状态,因此,需要一类特殊的节点,为无状态节点构成的网络提供 witness。可能是不同社区的文化导致了这一点。Utreexo 的作者虽然也希望能利用软分叉让比特币区块头承诺累加器,但应该不会在一开始就有信心让所有人接受这个概念,自然也会从一开始就设想自下而上的落地方法。
我从 “无状态性” 这个话题中收获很多,也是借此才理解链协议设计的许多内容,因此忍不住想考古一番。最终来说,应用这样的技术是大势所趋,至于如何使用、应该给这样的技术什么样的定位,则仍有待探究。
顺带说一句,Utreexo 非常有意思,它不是一棵默克尔树,而是默克尔树的森林,而且全部都是二叉默克尔树;添加元素会导致默克尔树产生以及合并;删除元素会导致默克尔树裂解;但是,因为它们全部都是二叉树,所以裂解后再添加,将非常容易建构出新的默克尔树。
@Leon:感谢几位朋友的贡献,我想历史会记住你们。