7 月 17 日, RChain 创始人 Greg Meredith 做客币乎直播间,就 RChain 如何重构互联网进行了深度分享。 PANews 作为媒体观察团参与了本次直播分享,以下是分享实录。

解读类型重构互联网

RChain 还没有成立之前,大概 30 年前开始, Greg 就开始作为数学家,研究对今天的 RChain 以及基于 RChain 的应用必不可少的一些技术了。实际上,今天 Greg 和大家分享的内容,也起源于 25 年前他的博导工作。那时候存在一个梦想,就是以 CBC (构造中正确)的方式开发软件。 Greg 记得第一次见到他的时候,是在加拿大渥太华的一场会议上。他在演讲中提到了从软件正确性的证明中( CBC )直接开发软件, Greg 立刻就受到了吸引。他在演讲中还提到了逻辑和计算之间的关系。 Greg 一看到这个想法,就意识到,它不仅仅会改变软件开发方式,还会改变我们对很多事物的理解。

而 RChain 就是脱胎于这个愿景。必须澄清,今天的演讲主题不仅是 RChain 重构互联网,还是类型重构互联网。有些人可能对类型不是很熟悉,它实际上是一种限制计算机程序的方式。软件开发者描述程序行为的信息,然后写代码,编译器检查信息和代码,确保其符合这些限制。

大多数语言,比如 Java ,只是对数据的形态进行限制,比如 Sort 函数,接受一个整数列表的输入,并输出一个整数列表。然后,在过去 30 年间,我们发现,你可以用类型表达不同种类的信息以及有关于程序更丰富的信息。比如你可以用类型对程序的安全信息进行限制,阻止信息泄漏,也可以确保程序通过 Gossip 协议分享秘密,诸如此类。

类型也可以提供有关活性的信息,以确保程序执行,不会陷入死锁。也就是一个部分等待另一个部分的执行结果,而这个部分反过来又在等待第一部分的执行结果,陷入了一个死循环,类型也可以避免这种死锁。

如果考虑一下这对于互联网的意义,情况就变得非常有意思了。互联网正在被重构 , 它正不可避免地从少数几个大公司(如谷歌、亚马逊、 Facebook 等)控制的中心化网络转为为去中心化社区服务的去中心化应用,区块链在此扮演重要的角色,但是这个重构的过程却远远超越区块链技术本身。毫无疑问,这样的变化将对社会、政治、经济都产生巨大的影响,但是除了区块链之外,还有一些技术,将与其一道创建新一代的软件服务。其中就包括类型系统。

有意思的一点在于,很多人都没有意识到,逻辑一直在经历一场革命,我们对逻辑的认知,以及逻辑与我们生活中其它方面之间的联系一直在发生变化。亚里士多德是最先正式提出逻辑这一概念的人, 20 世纪 80 年代,一位名叫 Jean-Yves Girard 的人提出了线性逻辑,将逻辑与对资源的认识联系起来,从而大大拓展了我们对逻辑的理解。

这些都改变了我们对证明( proof )的理解,改变了我们对化学、物理、量子力学等的理解,但是逻辑的演化还远未结束,它将为整个的数字生态带来广泛的影响。

回到代码。今天的代码就像是互联网里的暗物质,我们将代码看作数据集,存储在 GitHub 这样的库里,但是我们无法搜索它,就像是搜索关系型数据或是 XML 数据一样。相反,我们需要应用元数据或社会工程,比如 Bob 知道一个名为 Alice 的人知道这个库 … 这本质上意味着代码是不透明的,它占据了互联网的大量存储空间,但是却难以搜索。

15 年前,有个团队开发了一个名为 Hoogle 的系统,如果大家还记得我之前给的 Sort 函数的例子,输入整数列表,并输出整数列表,你可以将这个整数列表类型作为关键词,输入 Hoogle 进行查询, Hoogle 就会返回所有匹配的 Haskell 函数。但是有一个问题, Sort 的类型和 Shuffle 是一样的。 Sort 函数的功能是排序,也即输入随机的整数列表并输出有序的列表,而 Shuffle 的输入和输出都是随机的整数列表。因此如果你在 Hoogle 上以整数列表类型作为关键词进行搜索,有可能得到的结果并不是自己想要的。换言之,这意味着用类型作为关键词搜索这个想法,也就没那么有用了。

但是我此前提到的,逻辑革命,不仅仅是线性逻辑,也包括逻辑的其他方面和其它类型的逻辑,允许我们对于类型系统进行定义。事实上,存在一个思路,将类型和逻辑挂钩,并将程序与证明挂钩。因此逻辑的革命必然带来类型的革命,实际上这场类型的革命允许我们基于代码的功能和结构进行搜索。尤其是,我们可以搜索单线程、多线程、分享秘密和死锁等各类代码。

基于代码的功能和结构去搜索代码带来的一个结果就是,它允许编译器检查代码里的新型错误。比如:搜索多线程代码就转变成检查正在编译的代码是否存在资源竞争,换言之,它是否能非确定性地( non-derministic )响应不同的输入。搜索分享秘密的代码就转变成检查正在编译的代码是否存在安全漏洞。 诸如此类的例子。大家会在 Rholang 的类型系统里找到上述提到的种种功能。而检查出资源竞争的能力就可以避免 DAO 漏洞以及以太坊智能合约上已经出现的许多昂贵的攻击。

但是它的影响远不止于代码搜索,它也会影响代码生成,尤其是,它会强化我们利用人工智能生成和整合代码的能力。

1993 年,我还在一家研究机构工作,和英国电信的一个团队合作。我就提出了一个人工智能算法,可以利用类型搜索散布于全网各个库里的代码碎片,比如现在还可以搜索智能合约和区块链碎片并整合,返回一个满足用户需求的程序。这样一来,人工智能就能合成代码,并实现一系列的功能。

但是这场革命不仅限于代码,它也适用于一系列其它的领域,比如几何推理。 RChain 开发的这个逻辑形式操作语义算法,就是从不同类型的计算框架,包括几何代数中生成类型系统和查询语言。

除此之外,它还可以应用于无人车、制药、蛋白质折叠等一系列领域。以制药为例,这个算法应用于动态系统,大家可以认为计算机系统是一种动态系统,细胞信号转导机制也是(因此也适用)。我们可以将类型系统生成应用于这些动态系统的建模上。其中一种可能的查询,在类型系统算法出现之前无法做到,就是寻找细胞里某个特定的小分子浓度,并识别其与某种特定的细胞信号转导机制之间的关系,从而进行干预,避免细胞信号转导机制达到某个状态。

这些就是 RChain 尤其是 RChain 的逻辑形式操作语义算法能帮助实现的。

此外,等区块链的扩容性足够强大,囊括所有的公共领域数据后,比如地理位置数据,像人、物联网、传感器的位置,或者是医疗或其它的敏感数据, RChain 基于这些数据的结构或功能搜索的算法就会更有用,更有价值。

但是也可以想象,这样的搜索能力、一个全球计算机和一个全球的数据库,绝不能仅由一小部分人掌握,必须是归属于全人类。

问答环节:

1. REV RChain 网络有哪些作用?

答: REV 在提供网络安全方面发挥两大重要作用。第一是防止 DDoS 攻击。因为 RChain 想要打造的一个全球计算机和一个全球存储系统,任何能连上互联网的人都可以访问,这意味着,恶意的攻击者是可以拒绝他人的访问的,比如说提交永续运行的 Rholang 程序,并占用无限的资源,如果不加阻止,其他人就无法访问。 REV 可以避免这一点,因为每一步的计算和每一个存储单元都需要一定的 REV 开销, 如果说你的程序永续运行,那就意味着,你需要承担无限的 REV 开销。

第二点: REV 在共识机制中扮演核心角色。因为 RChain 是 PoS 网络, REV 就确保了验证人遵循共识协议规则。如果可以提供加密学证据证明有验证人没有遵循协议规则,他们的保证金( stake )就会被罚没,因此长期来看,只有遵循规则的验证人才会留在网络里。

2. Greg 你好,能介绍一下 RChain Staking 机制、参与门槛及如何参与吗?

答: Staking 机制与证明( justification )机制直接相关。区块链的结构意味着所有的区块都带有证明,这样的证明机制允许我们审查验证人发起新的区块时,是否是诚实的。一旦发现不诚实的验证人,比如发起双花或其它攻击,网络就可以罚没其保证金。这就是 RChain 的 Staking 机制。

就参与门槛而言,如果考虑经济模型的话, RChain 希望的是允许尽可能多的验证人参与,使得 RChain 网络的通胀率在所有的 PoS 网络中最低,同时验证人依然能获得最大程度的奖励。

我们也发布一些 Staking 的介绍,包括我们的铸币系统,以及大额 Staking 的折扣机制,这样的设计允许我们实现通胀率最低的同时,验证人获得最大程度的奖励。

3. RChain Casper ETH 2.0 Casper 有什么区别?

答: 二者之间存在很多的区别。我仅就其中一点进行说明。

实际上, Casper 是没有活性的,这一点已经得到了证明。也就是程序会卡住,无法继续执行。要解决这个问题,必须设计一定的同步约束( Synchronization Constraints ),这个同步约束规定,要提出新的提案( proposal ),这个提案里必须包含其他验证人提案( proposal )的多少信息, 然后才能提出。也就是说 RChain 的同步约束不是通过世界时钟实现的,因为这一点技术难度非常大,尤其是在去中心化的网络中,它也意味着你需要信任一个中心化的时钟。但是证明( justification )机制却可以用来保证这个同步约束。

除此之外, Casper 还有其他的问题,比如公平性。 Casper 本身是不公平的,你需要添加其它的属性才能保证公平。一种思考同步约束和公平性的方法,就是想象一只摇滚乐队,其中一个成员只顾自己演奏,不管和其它成员的配合(同步),那么演奏的效果就非常差。因此同步约束就意味着,这个成员必须要听其他成员的演奏,而且要证明他听了,才能够继续演奏自己的部分。

这些就是 RChainETH 2.0Casper 之间的一些区别。

4. 为什么一定要去中心化的平台 ,听到您刚才讲的功能在中心化平台上似乎也可以实现,而且中心化的效率更高?

答: 中心化往往更高效,如果你看一下大自然,大自然始终是在中心化和去中心化之间做一个平衡。比如细胞,细胞有细胞质、细胞核等各类资源,一个细胞对内部资源的掌控是中心化的。但是另一方面,细胞又在无限地复制。如果细胞不复制,而是将所有的资源都集中在一个巨大的细胞里,那么一旦这个细胞出了问题,整个系统也会出问题。因此,始终要在中心化的效率和危险之间做一个权衡。

当然没有任何一个解决方案可以放之四海而皆准,你要做的就是去寻找平衡。 RChain 就是不断地去寻找平衡点,这样一方面通过本地化的资源,尽可能实现效率,另一方面又保证珍贵的资源不会仅为少数几个人掌握。

5. Greg 好,从技术的角度,也许是可以重构互联网的,但是如何吸引普通人来使用这个新技术呢?

这个问题问得很好。我自己经常使用的一个技巧就是通过无可否认的用途,人们自然而然地会注意到。比如说,当这个技术首次用于优化无人车的算法,或是首次用于寻找治愈某种疾病的疗法,人们立刻就会注意到。哪怕只是改变了搜索代码的方式,开发者社区也会立刻注意到这种新的搜索算法。然后其他人也会注意到。这就是我吸引普通人使用这个新技术的方式。

我十几岁的时候,有一个夏天去市场上卖草莓,我做的就是一大早去挑选最好看的草莓,简简单单的铺在摊位上,大家立刻就会注意到,阳光下闪着诱人光泽的草莓,我不需要多加兜售。

道理是类似的。你开发的技术有用,能满足人们的某个需求,他们就会注意到,并主动去探究这项技术。

6. Rholang 的解释器很慢,有优化的计划么?

答: 有很多的优化计划。大约 15-20 年前,一位计算机科学家提出了一种将某种结构的解释器,比如 Rholang 解释器变成虚拟机 ( 抽象机器 Abstract Machine ) 的方法。然后就可以很容易将这样的抽象机器变成一个基于字节码的机器,实现编译。因此我们会依据这个方法的一种变体对 Rholang 进行优化,从而使它更高效。

第二步就是从 JVM 的架构变成原生( Native )的架构,因为 JVM 也导致了一定程度的速度变慢,因此放弃 JVM 而转向原生硬件,也可以提高速度。比如说 Haskell 的编译方式,我们也会这么做。

第三步就是 Rholang 芯片-一个专门用途的芯片。因为现代芯片的指令集不太适合 RChain 想做的并发执行,因此在 Rholang 的蓝图里也提出了设计更适合并发执行的芯片。

总结来说,这是一个三步走的计划,第一步是从解释器转变为编译形式,第二步是放弃 JVM ,第三步就是芯片。

7. RChain 有进入 DeFi 领域的计划么?

答: 我们确实有进入 DeFi 的计划。但是如果我们要做去中心化的金融工具,还需要从更基础的层面去思考。今天的 DeFi 更像是一个流行词而非坚实的技术。我认为区块链技术目前还不够可靠,无法支持真正的 DeFi ,尤其是考虑到各大主流区块链已经报道出来的关键漏洞。因此目前不适合将关键的代码放到区块链上。

更好的选择是做低风险、高吞吐量的事情。这也是我们从互联网的发展中获得的启示。以谷歌为例,一开始谷歌只是一个单一的搜索界面,如果返回的搜索结果不对,不会有人因此丧失性命或损失大量的金钱,至少是就搜索论文、图片、视频而言。随着系统的成熟,你可以实现更复杂的功能,这也是 Web 2.0 过去 15-20 年间的发展历程。

8. RChain 主网已经上线一段时间,为什么还是不能完全放开 REV 的交易?

答: 这其实和监管有关。美国的监管意味着我们必须要谨慎考虑,是否将 REV 作为一个证劵型代币。但是 REV 也已经上线了抹茶等交易所,在中国和一些其它市场可以交易,但是由于监管的原因,它并不能在所有的市场交易。随着监管的成熟,这一点未来或许会发生变化。

9. RChain 会重点关注哪些类型的 Dapp?

答: 这个问题也问得很好。它和我对于 DeFi 的看法是直接相关的。我们首先想做的是高吞吐量、低风险的 Dapp 。思考一下比特币和以太坊上的吞吐量,和 Facebook 或者是交易所的流量相比,是非常非常低的。

社交媒体和娱乐应用就属于风险非常低的,看不到别人发的帖子,也不会有人丧生,或者遭受财务损失。但是另一方面,人们又认为社交媒体能提供的人与人之间的联结,对他们的生活至关重要。

因此这就是我们想要关注的 Dapp ,高吞吐量、低风险。 RChat 就是一个例子,我们将开源的 Zulip 与 RChain 的后端整合,这样就有了链上的聊天室,这对于像链的治理的通信是非常重要的,因为它保证了通信信息不可篡改。

10. RChain 目前的技术进展如何?似乎 RChain Twitter 也不是很活跃?

答: 技术开发和社交媒体的活跃是存在差别的。如果你想要看技术开发的活跃度,去 Github 上查看 Pull Request ,你就会发现 RChain 的活跃度在所有的区块链项目中都是居于前列的。开发热度非常高。

就社交媒体而言,我们刚刚重整旗鼓,因此未来 RChain 的社交媒体活跃度也会大大提高。

我们也举办很多的电话会议,比如每周五我们都会讨论 RChain 在气候变化中的应用。另外我们也有 RCast (播客)。所以我们会有自己的传播方式,内容非常的丰富,但是这些确实没有被翻译成中文。或许这也是为什么我们看起来在社交媒体上不是很活跃。

11. 0.9.26 版本何时发布?

我无法给出一个具体的发布时间。但是已经非常靠近发布了,我们想要确保在沙盒里将所有功能都测试完毕再发布。

12. 团队有财政问题么?

答: 疫情期间,相信所有人都不好过。但是 RChain 想做的事情非常多,而且有很多人愿意投入 RChain 的开发,这一点更重要。

就财政而言,我们有足够的资金发布新的 release ,一直支持到块合并及后续开发,再之后我们也会开启新的融资。

13. 是否有计划和 IPFS 结合?

答: 我们没有任何的计划和 IPFS 结合。我认识 Juan Benet ,也很尊重他,他的技术实力很强大,也很投入。但是 IPFS 的解决问题的路径是错的,如果要做存储,必须要认真思考查询 (query) 和交易( transactions )。做文件系统也需要仔细思考查询,最终 IPFS 还是要考虑交易边界( transactional boundary )。 IPFS 一开始没有思考这些基本的问题,而是决定先搁置,因此它们的架构非常笨重。但是 RChain 一开始就明白,做搜索必须要考虑查询,要有一个好的查询系统,并且要对交易有相当的理解。这个交易不是指金融交易,不是转币,而是数据库层面的 。我们对于这些概念都有相当的理解,因此二者的架构是很不一样的。