2021/06/10| AMA:区块链的内力与招式,RChain VS 其他链

2021/06/10| AMA:区块链的内力与招式,RChain VS 其他链

1WechatIMG827.jpeg

邀请嘉宾:莫给机狂

主持人及收录:光之十一

红包小助理:蓝精灵

同步小助手:冰河、小七、徐Rose

莫给机狂:大家好,我叫莫给机狂。简单介绍一下自己。莫给机狂,RChain合作社中国社区成员,毕业于浙江大学和卡耐基梅隆大学计算机专业,后定居于美国,长期在IT业界工作。作为区块链技术爱好者,2017年开始关注RChain的技术,和RChain合作社成员有很多深入交流,并一直在中国社区宣传和推广RChain的独特技术路线。很荣幸参加今天的交流。

凌晨:首先很感谢RChain中文社区的热情和给到云顶这次AMA的机会。自从马斯克推特喊单碳排放后,该词汇便一直围绕着币圈,于是深耕发掘到RChain。自己也写了一篇文章,这次主要想邀请你们,让我代表我们的社区成员对你们进行深入的问答。

Q1. 最近有一篇公众号文章流传甚广,其中声称RChain不但是碳中和第一链,还是协调全世界的平台,请问这是忽悠吗?

莫给机狂:我是RChain的老会员,自从踏入币圈以后,看了很多公链项目,但一直被RChain的技术所迷恋,很开心能在今晚把它展现给大家。RChain社区里的老人都知道,Greg做了很多期关于气候变暖、世界协调的访谈,不断的重复RChain是个必不可少的这样的平台。最近在国际金融论坛的演讲,Greg也是重复了这一点。很多人确实不理解,觉得这种说法太玄幻、太虚,反而让投资者觉得这个项目就是个空气币。这个问题上,我觉得这是因为绝大多数人的认知还没到那个层次——你只站在二层楼那么高,而Greg是站在百尺高楼的楼顶,所以你是看不到他的视野的。

实际上,区块链的信任模型确实是世界协同必须的。举个例子,全世界合作一起减排,发行统一的碳积分,那这个积分系统由谁来管理?谁都不合适,即使联合国设立个委员会来管也不合适,因为涉及的钱太多了。所以最好就是区块链这种“代码即法律”的无需信任的系统。进一步Greg也认识到,除RChain以外的其他公链,都无法提供一个给全世界几十亿人同时使用的平台,因为现实生活中,所有人、IOT设备的行为都是并发的,没有一个统一的顺序。而除RChain以外的所有公链,都因为没有并发的计算模型,由此都需要通过各种方式给链上的交易排序。

那么问题来了:你能给几十亿人,几百亿设备的每分每秒的行为都排好队,给个号吗?显然不现实。然后其他的公链又出了个昏招:分片。分片就是说,好,一条队不够,那我们做N个队让大家排。但那也不对啊,比如我给Greg 5个REV,这个交易,到底是排Greg的队,还是我的队呢?其实链上的世界计算机就是对链下的映射,现实生活中,每时每刻都有很多沟通、交流事件发生,本来就不需要排各种队去处理。

所以,你只要排队了,一开始就错了。而RChain不排队,RChain只管处理、协调交易之间的冲突。这就是RChain的思路。这才算符合天道的世界协作平台。

Q2. 早闻ETH的Layer 2方案即将进行扩容,在这之后,请问区块链还会需要RChain吗?

莫给机狂:Layer 2实际上只是把耗时久的计算放到链下,每隔一段时间,只把一堆交易的运算结果打包,把这堆交易的整体状态更新上链。Optimisitc rollup是留出一段时间,让人去挑毛病,如果没人挑出毛病了,那结果就是可信的。ZK rollup是用密码学手段,给那一堆交易做个防伪标签,再把这堆交易的结果和防伪标签一起写回主链。用那个排队做比喻,Layer 2就是:我们大堂里太挤了,一个队排不下,你们出们去排个队自己解决下,然后每隔一段时间把处理结果放进大堂里的长队(主链)里来。

所以,你很容易看出问题:你还是在排队。队与队之间,互操作性是很差的,你只能通过“隔空喊话”的形式来处理两条队之间的交互。也就是说,这些队(各个二层网)之间,都是半独立的,没法无缝的协作。如果你们看各种论文、解决方案,为了解决二层网之间的协作,都是用各种跨链原子交换类似的加锁解锁的方式,且不论效率,这个只对简单的资产原子交换可行,对一般的通用计算是无能为力的。

还有一个很重要一点就是,二层网为了追求速度,一般都配置很少的节点数。这样区块链的一些特性就被牺牲了。因为结果会被发布到主网,所以”可信无篡改“可以保证,但“公平”,”抗审查“的属性就丢掉了。所有的这些问题,就是因为他们在不停的排各种队,一条队不够就来一堆半独立的队,这并不是真正的扩容。这一切都要等RChain的基于Rho演算的不用排队的方案正式部署到主网(暂时部署在测试网),区块链才能真正的解决扩容问题。区块链才能真正的解决扩容问题。而且更让我激动的是,RChain也可以借鉴Layer 2的思路,把耗时久的计算放到链下的,但不同的是,RChain可以把计算和部署解耦,在把计算放链下的同时,部署还是放链上!这一切都是因为RChain是静态部署的,而其他项目是动态部署的,计算和部署不能分开。RChain为什么可以静态部署?因为它用了Rho演算!计算放链下是不会违反区块链的特性的,但是部署是不能放链下的下了链你就丢失区块链的特性了。

Q3. 在ETH 2.0出来以后,请问是否仍有RChain的用武之地?

莫给机狂:前面说了Layer 2就是出去排队,把结果放回大堂里的队里。那么,分片,就是在大堂里把一条队变成很多条队,那么分片就是在大堂里把一条队变成很多条队。所以其他项目的分片和Layer 2都一样,都需要面对队与队之间的互操作问题。都需要面对队与队之间的复杂的互操作问题。解决不了,得到的就只是一堆一盘散沙的半独立系统,并不是个可扩展的方案。而这个问题,在图灵机框架下,无解。种因得果,各种问题在你选了图灵机计算模型,要把交易排队的时候就已经种下了。而RChain根本不做排队,它记录每个个体之间的并发信息交换然后放到链上,接着用共识协议验证信息,并处理可能冲突。

RChain的这个架构,不光可以在分片内去完成并发,而且分片之间也能保证原子互操作性。这样的好处就是,程序员写跨分片的复杂的代码,和单分片内是一样的,没有差别。“万块并发,万链如一”就是RChain的架构优美之处。为什么RChain能做到这点呢?因为它基于可组合的Rho演算,其他项目基本都基于不可组合的图灵机。一个分片的图灵机就是一条队,顺序处理各种交易。两个分片的图灵机就是两条队,并不会成为一台更大的图灵机。而一个Rho演算虚拟机相当于一张Excel表,两个甚至N个分片的Rho虚拟机可以组合成一张更大的Excel表,这就是可组合性。这里面还有很多细节,今天没法讲太多,有兴趣可以再聊。

光之十一:最有影响力的软件里都有机总的代码潜伏。

莫给机狂:对的,影响过历史的进程,还真不是吹的LOL

Q4. RChain可以做跨链吗?请问跟波卡,Cosmos,等等,这些跨链项目相比的优势是什么?

莫给机狂:当然可以。万块并发,万链如一,最后RChain还会做到万链归一。

跨链类项目是做一条中继链,让很多其他链都通过它来传递代币或者消息。有的例如波卡,还会为接入的链提供信用背书,让子链也具有主链同样的安全性。所以他们的目的就是成为一个类似骨干网那的基础架构,联通很多不同的链。然后在上面做个抽象,提供一个统一的视图做DApp开发。但做过网络工程的人知道,骨干网是需要最强大的硬件来支持的。没有并发加持,相当于妄想让一个家用机的路由器来带一个大型公司的骨干网。

而且,做跨链,你不光只是传递消息和代币,还需要强大的协调能力:需要能检测并处理各个跨链事务的冲突,还能提供一个“可组合的安全性”。比如你调用其他链上的一个合约,需要保证你给他的一些权限不会被泄露给第三方,不然,你不敢跨链去调用其他合约,相当于你没有防火墙直接把裸机暴露在互联网上。这些能力,现在我只见过RChain的技术可以提供。RChain有无限并发可扩展的强悍特性,快速的冲突处理能力,加上行为类型系统在链上加以约束,这才是最理想的跨链平台。

Q5. RChain是适合开发DeFi的平台吗?请问在这方面有什么独到的优势?

莫给机狂:DeFi现在还是早期,从逻辑上推演,DeFi必然走向RChain的架构。RChain是反应式的合约体系,类似一个Excel表,输入变了,依赖于这个输入的合约自动触发运行,不需要主动调用。无数DeFi合约之间可以并行运行,但链上又有冲突检测机制保证它们运行结果之间没有冲突。

生活中的各种金融系统实际都是按照RChain的思路运行的,有各种依赖关系,自动根据一些事件,比如:违约、价格跌破一定阈值等,触发结算,每个机构、每个产品、系统都可以并行的跑系统都可以并行的跑,而不是排成一条长队去依次处理。而且,RChain的基于行为类型系统的快速形式化验证,提供了“可组合的安全性”,这个对DeFi来说太重要了!没有这个,你就不放心把各种金融产品组合起来,成为一个更大的产品,比如:ETF、各种衍生品、等等。

反应式合约+并发+可组合的安全性加起来,RChain是DeFi的不二之选!

Q6. RChain说自己是世界计算机,而Dfinity也说自己是世界计算机,请问二者之间有何差异?

莫给机狂:受我们群的传奇身家几十亿的毛总启发,我要提到一个”含块量“的概念了。都是世界计算机,但“含块量”可以完全不一样。区块链必定是世界计算机,而世界计算机并不一定是区块链!只有满足区块链的几个特性的,这台世界计算机才算得上区块链:高度冗余,计算以及结果可信、无篡改,公平、抗审查。

Dfinity还在搞排队那套,所以它没法实施可扩展性,,所以走的是和以太坊Layer 2类似的路线,计算放链下的容器里,结果上链,就是出去排队的意思。这个方式可以保证冗余、结果无篡改,因为计算数据、结果上链。然而我没看到以太坊Layer 2种的Optimistic或者ZK roll up的那种结果的验证机制,计算过程的可信也不能保证了。当然和Layer 2一样,“公平”,“抗审查”也不能保证,因为那个容器的运行者完全可以决定执行哪些交易,次序如何,它说了算。所以,Dfinity丢掉了一大半区块链的特性,“含块量”低的可怜,应该开除出区块链的队伍。

再者,单链几百TPS的性能也是不足以承担世界计算机的可扩展性要求的。RChain的Casper CBC协议,是完全的Leaderless,所有节点任何时刻都平等地位,没有带头大哥,在保证无限可扩展性的同时,所有区块链的特性都能保留,这才是真正的“含块量”100%的世界计算机!

Q7. 有消息说Coinlist上的明星项目Casper Labs是从RChain分叉出去的,并且Fork了RChain的代码,请问它的技术路线和RChain有何不同?

莫给机狂:Casper Labs是RChain在熊市深陷财务危机的时候,被一个著名机构把一大半开发团队挖走折腾的项目,Scala版本的代码一开始是抄我们的,当然后来他们用Rust重写了。

可惜啊,虽然操刀的著名机构和币圈大佬,但对Rho演算一知半解,反而觉得太小众,是个累赘,所以要求开发团队把Rho演算阉割了回到以太坊那样的图灵机(最终用了WASM虚拟机),当时我就大笑三声。因为,他们只看到RChain用Casper CBC共识协议来并发出块,觉得炫酷,所以只抄了这部分,我称之为“剑招”。但是Rho演算才是RChain区别于其他所有项目的精华所在,我称之为内力。有了内力,你才能不用排队。你只学了并发出块的剑招,没学会并发执行的内力,技术上肯定翻车嘛。当然我只论技术,商业上成功与否不讨论。

这个区块拓扑图是CSPR的电报里Copy来的:

image.png

这个密集恐惧症的图,是RChain的测试网上抓下来的:

image.png

哪一个更厉害?看看两个项目的区块图的区别你就知道了。而且我看了CSPR的区块浏览器,发现没看到一个区块有多个父块的Hash。说明它们可能已经完全退回到一条长队了。还有很多轶事,要知其中详情,可看拙作《笑看Casber Labs只练半本九阴真经的下场》

Q8. 这边有一张(RChain和其他公链对比的总表(点击跳转)),其中多次强调形式验证,关于形式验证是什么意思?请问可以具体解释一下吗?

莫给机狂:形式验证是终极的保证智能合约代码安全性的方案,就是出一个数学证明,证明这段代码无论输入怎么样都能满足所需要的特性:比如任何账户余额不能为负,总的代币量不会有变化,等等。

形式验证是很难实现的,尤其是它的复杂度是一级一级往上升的:

Level 1. 单合约,单线程; 

Level 2. 多合约,单线程;

Level 3. 单合约并发;

Level 4. 多合约协作+并发;

Level 5. 多合约跨分片协作+并发。

RChain因为用了可组合的Rho演算+配套的行为类型系统做链上快速形式验证,内力充沛,从Level的1-5都可以轻松打卡,因为难度都是一致的。检查一张小的Excel表,和检查N张Excel表组成的大表,逻辑上没啥大区别。而其他项目的图灵机体系下,底下几级还可以爬爬,但越往上越复杂,指数爆炸教你做人。然而你不去做形式验证的话,黑客可以免费帮你做,然后发现通不过,就发现了可能的攻击途径,一样教你做人。所以,这是条不归路。详情可见《RChain的乾坤大挪移》

Q9. 币圈都说得TPS得天下,不少公链都吹嘘自己几十万、几百万的TPS,这方面您是如何看待的呢?请问为什么相较中心化而言,去中心的TPS会那么难提升呢?

莫给机狂:对的,很多项目都在吹嘘TPS。TPS是忽悠外行的,这一行,最难的保证区块链特性不丢失的情况下爆TPS。就是说,我们追求的是“含块量”高的TPS。你含块量低了,TPS再高也没个卵用,因为单机系统TPS比你高的多了去了。

举个例子:Solana的TPS高达65000,感觉很厉害。一般的韭菜是看不出里面的门道来的,但我今天就可以聊一下,它的高TPS是靠牺牲“含块量”弄出来的,没什么意义。它的思路就是,让一群人撕逼决定排队的次序太慢,所以干脆排队的次序都让一个Proof of History节点来指定,指定完了以后,用一堆哈希函数串起来,就没法篡改了。网络里其他的节点都是打酱油的,根据这条队上排好的交易次序依次执行,那TPS就接近于单机跑了。

然而这里,“排队”这个事就中心化了。这个中心化的节点,可以在排队的次序里动猫腻,或者,根本不给你服务(不让你排进来),你也没办法。这是直接违反区块链的精神的,甚至比21个节点的EOS还要烂。区块链这么伟大,是因为怎么“排队”这个事情不是一个节点决定的,而是一群节点共同决定,很公平,很有号召力。如果这点没了,我还不如退回到现在的中心化系统呢,那里至少如果我受到了歧视性的待遇,我还能打官司告那个中心化的平台去。

所以,你去中心化到底是为了什么?这种“隐藏的中心化”也是V神痛恨的,他在最近的博客里没点名的批评了。然而人家比较清高,不像我那样喜欢怼……

那么,含块量100%的TPS为什么那么难整?又回到开始了,因为除RChain以外的所有项目,都需要给交易排队!你只要排了队了,不管白皮书怎么天花乱坠,你的TPS就限定了,走不出不可能三角。RChain因为没了排队这个最根本的约束,已经突破了不可能三角了。不可能三角,只是对”一条队“而言的。RChain因为没有队,所以直接一个筋斗云跳出三界外,不在五行中了。RChain只要一步一个脚印,在保证100%“含块量”的前提下,不断去优化这个架构就行。

Q10. 现如今在做DAG的项目有很多,比如:FTM,Conflux,等等。请问RChain的DAG比较这些起来有何特色?

莫给机狂:DAG可以用在两个地方:节点间的网络连接拓扑,以及区块间的依赖连接拓扑。第一种不推荐,因为无秩序的连接,乱糟糟的只会降低全网共识的收敛速度。网络连接层这块已经有很好的算法了;第二种用途才是DAG的杀手锏: 把区块组织成Dag,可以实现并发出块。就是说,很多节点都可以同时出块,不需要像以太坊那样,PoW、PoS协议轮到的那个节点才有出块权。只要同时出块了,块之间就可能有兄弟姐妹关系。比如我和凌晨都同时出了一个块,这两个块之间是兄弟关系,不可能是父子关系,所以,肯定要用DAG来连接所有节点并发出的块。

然而,同时出块,形成DAG仅仅只是剑招,要真正发挥DAG的威力,你还得有相应的内力去配合: 并行的执行这个DAG!而且执行时,每个节点可以不用步调一致,没有这个内力,只会搞得和CSPR一样走火入魔,退回到单链。并行执行的话,这个DAG上的块、交易你都不能排序了。除了RChain以外的所有DAG,因为都用的图灵机,还是要把DAG上所有的交易排成一队,不然就跑乱套了。所以这个感觉,就像一台超跑,挡位卡死在一档了,要多难受就多难受。但是没办法啊,没有RChain这样的并发虚拟机的内力,是发挥不出真正并发的威力来的,更别说还需要配套上并发下的形式验证了。

群友:一直以为Layer 2 跟ETH 2.0一样,今天看机总讲解,明白了。

莫给机狂:大道至简,只要明白大家都在“排队”这个道理,大多数的项目也就一眼能看穿本质了。

群友:买了那么久的币,真正开始买REV后才真的了解到底层技术。

群友:是机总讲解的通俗易懂了,之前看文章全是专业语,很苦恼也不明白。辛苦了。

莫给机狂:我觉得,一个东西如果只能讲的云山雾罩,不让人看清楚,那就是一开始就不想让你搞清楚。不能靠忽悠、传销,要以德服人。市场自己会去价值发现。价格回归价值的过程,就是财富被动暴增的过程。

image.png