• 2020年8月3日 09:56

    RChain的0.9.26版就要上线了,主要实现了last finalized state (LFS) 功能。大家知道LFS能够帮助新加入的验证节点快速同步数据,新验证节点无需从创世块开始同步数据,只需同步到当前的最终完成块 (last finalized block),就可以开始行使验证功能并且开始出块。但其实LFS远非这么简单,它神奇地实现了区块链减肥。

    区块链被认为是公共账本,人人有权向区块链上写数据。随着时间推移,区块数据会不断累积。由于没有相应的措施限制数据的增长或者清理掉历史数据,区块链变得臃肿。其后果十分严重,首先会对节点服务器的硬件要求水涨船高,淘汰一批低性能的节点,导致节点数量下降,区块链的去中心化程度受损。其次,会不断压榨节点服务器的计算能力,导致验证难度上升,同步时间变长,网络延迟增长,tps下降。总之,数据膨胀会让区块链健康状况不断恶化。

    Greg很早就曰过,区块链上的数据要付费,停止付费的数据应该被清理掉。并不是所有的数据都值得永久性地保存在区块链上,所以RChain应该是按租期付费的区块链。实现这个功能的前提就是LFS。

    RChain的存储架构是RSpace + Rholang, 详情参见我以前的文章:“RChain切入数据库赛道?” 基于Key-Value结构的Tuplespace数据存储,加上内置了模式匹配和行为类型系统的Rholang查询语言,为LFS功能实现提供了非常扎实的底层支撑。RChain并没有对LFS进行过多的解释,因为沿着RChain现有的理论构架,实现LFS顺理成章,只需在工程层面花费一些功夫。0.9.26在即,LFS功能已经在测试节点上测试了。

    要理解RChain这种云淡风轻的创新能力,需要找一个陪衬,一个非常努力的竞争对手:以太坊。

    因为没有对比,就没有伤害,只有通过互相伤害,才能充分体现各自的价值和优势。

    以太坊正在经历区块数据大幅增加之痛,目前以太坊每月新增区块数据在5G左右,该速度维持不了3年, 届时以太坊会因为安全性及处理能力问题而瘫掉。即使顺利升级到以太坊2.0,也无法摆脱数据膨胀带来的达摩克利斯之剑。

    2020年年初以太坊启动了无状态(stateless)客户端开发计划,意图彻底摆脱数据膨胀。无状态指节点无需保存从创世块以来的所有区块数据,而是采用状态根+ witness的方式。 状态根是指区块头里保存的默克尔树根,witness指一种不同于区块数据的附加状态数据。经过一段时间的研究,以太坊研究人员证明了无状态客户端的可行性,但要把它变为现实仍需要大量的工作,无异于为以太坊做一个大型手术。比如,需要把默克尔树从16进制改为二进制,修改EVM虚拟机里的gas费计算方法。即便手术成功,witness的大小能不能降到可用范围还是个未知数。

    毕竟在方案变成现实之前都存在着不确定性。无状态客户端并不是以太坊首次尝试解决数据膨胀问题,2019年以太坊曾提议采用状态租金的方案,该方案就无疾而终。

    总之,RChain在区块链减肥方向上冲在了最前面,谁是第二名,会是以太坊吗?


    欢迎关注 “Rholang中文社区” 公众号

    欢迎开发者加入 “RChain开发者” 微信群。加群请加lowbird微信,拉你入群。非开发者请勿加,会有一轮测试,通过者方可入群。