行走笔记:Nervos 谢晗剑,抽象是当下区块链更需解决的问题



本篇笔记来自万向主办的上海区块链周活动,是1026日下午Nervos Network 架构师谢晗剑的主题演讲,原标题《区块链抽象与演进》。

 

以下,Enjoy

 

 

不知道大家有没有看过这样一句话

 

行走笔记:Nervos 谢晗剑,抽象是当下区块链更需解决的问题插图1


目前新的区块链所面临的最大挑战不是速度或者吞吐量,而是治理

 

所谓的第二代区块链新的区块链发展到今天,其实已经六年的时间了如果大家回顾之前的一些想法,能够发现当时的一些不那么正确的思路在几年之前大家想要做一个新的区块链,想的是如果我解决了区块链的性能问题,就创造出新一代的系统就可以打败以太坊就可以怎么怎么样但是这几年区块链行业发展下来,这个思路已经被证伪

 

我们能够看到有新的区块链出来,它们的性能也确实非常好但是家还是认为我们依然处于以太坊的时代,我们并没有进入下一个时代。并没有当年从BTC进入到以太坊的感觉

 

虽然今天新区块链已经有很好的性能,每秒可以处理几千笔交易所以有人说我们面临的最大挑战可能是治理我其实也是同意的。治理确实是整个区块链行业面临的很大的问题,而且这个问题是一个open question,是没有答案的。

 

不同的区块链的社区,不同区块链的团队都在探讨怎对开放性的P2P自治的项目去做治理所以治理确实是一个很难的问题但我想说,治理不是唯一的问题

 

抽象也很重要如果治理讨论的问题是,我们作为一个社区能够决定一个区块链平台是不是应该做某件事情的话,那么abstraction区块链的抽象层次可能会决定什么东西可以被搬到台面上,被治理被讨论。也就是说我们到底可以就一些什么样的问题去讨论,我们该做还是不该做我会认为抽象也是新的区块链所面临的一个非常重要的挑战。

 

那什么是抽象?

 行走笔记:Nervos 谢晗剑,抽象是当下区块链更需解决的问题插图3


Abstraction这个词本身就很抽象。上图是一个解释抽象本身是一个很比较技术的词汇,这里有两个解释我们只要关心第一个所谓抽象是一个过程。我们把特殊性从一个系统里去掉,然后从这个系统里创造出一般性、普遍性。

 

抽象是一个一般化的过程。我们通过去掉特殊的一些设计,把共性找出来,让这个系统可以变得更加一般化,可以适用于更多的场景。

 

这个解释可能还是很抽象但大家只要记住其中的关键词我们要去掉特殊性我们要把特性从系统里去掉,在这个系统里找到更多共性的一般性的东西,把它放到设计里面去创造一般性


行走笔记:Nervos 谢晗剑,抽象是当下区块链更需解决的问题插图5 


用一个不是那么区块链的例子来解释大家可能有玩过游戏机,特别是戏厅里大型街机如果你了解这样的机器会知道,每一台机器只是对应一个游戏对于街机来说,系统设计是从软件到硬件一体的设计所有的设计都是围绕一个目的服务的,就是这一款游戏。

 

当我们需要去创造另一个新的游戏的时候,需要另外设计一台新的机器所以我们可以看到游戏厅里摆了1020台机器,每一台机器是一个不同的游戏

 

但是游戏行业发展到今天最流行的东西已经不是街机了,而是像Xbox这样的通用的游戏平台。X box是一个一般化的设计你可以为X box设计各种各样的游戏。玩家只要购买不同的游戏,就可以在一个系统上去运行去玩。

 

街机X box就是一个一般化的过程。从另外一个角度上,X box是一个抽象层次更高的设计它可以适用更多的场景,它里面为每一个特定游戏所打造的特殊的东西,很少很少几乎没有正是因为它没有那些特殊的细节,在这个平台上的开发者才能够去填补那些细节,才能够让这个平台适应各种各样的需求。

 

当我们去考察区块链行业的发展考察BTCETH的进化的时候,其实也是这样过程。如果大家还记得比特币想要做什么我们从白皮书标题里可以看到,BTC一开始的目的是想要实现一个点对点的支付系统这是一个有非常明确的单一目的的系统所以它的系统设计也是围绕这个目的来做的。


行走笔记:Nervos 谢晗剑,抽象是当下区块链更需解决的问题插图7 


在以太坊出现之前的时代——如果大家还有印象——全世界的人都看到了BITCOIN底层的技术是非常有价值的不管它区块链也好,还是叫分布式账本也好当我们想要用这个技术来做另外事情的时候,你会做什么?你能做的只有Fork BITCOIN的代码,而不是在BITCOIN这个平台之上去做什么事情

 

所以在以太坊之前,利用区块链技术的方式,是不停的创造一个又一个新的区块链的项目但是以太坊的出现就改变了这一切。以太坊不需要这么麻烦,可以把BITCOIN变成一个更加一般化的,或者说把区块链变成一个更加一般化的系统

 

以太坊是找到那些利用区块链技术的应用,它们需求的共性。通过创造个平台,把只为支付服务的一些特殊的设计去掉但是要把为各种各样的场景应对应用需求的共性需求找出来会为共性的需求去设计一个平台所以以太坊有虚拟机,有它的运行环境在以太坊上我们可以去构造各种各样的不同的应用。无论是支付,借贷还是游戏。

 

从这个角度看,BITCOIN以太坊是一个一般化的过程。换句话说以太坊是一个抽象层次更高的系统就像X box之于街机一样

 

 

如果沿着这个思路去考察,我们很容易可以想到我们要怎么样做的更好如果我们真的要做出一个和现在这一代区块链不一样的区块链,下一代应该是什么样子它可能不是性能更好,它应该是抽象层次更高

 

那我们要怎样把一个系统变得抽象层次更高呢?

 

回忆一下对“抽象”的定义我们要找到里面特殊的设计特殊的细节如果它不是共性的,我们就把它砍掉然后想办法把它变成一个更加一般化的设计。

 

在今天的区块链系统里有哪些是特殊的设计呢?我们找到了几个方面和大家分享一下

 

1、特定的账户体系

 

行走笔记:Nervos 谢晗剑,抽象是当下区块链更需解决的问题插图9


区块链是人和资产交互的一个系统。这里有人有用户,就要为每个用户建立一个账户来代表他,或者建立一个身份来代表他。

 

在账户体系里账户的标识怎样去验证这个账户是属于某个人的,这个账户内部的数据模型是怎样的?这些东西在今天的区块链系统里都是硬编码是由区块链的设计者帮开发者帮用户选定的作为用户和开发者,并没有权利去替换它

 

比如账户里的验证不管是BTC还是ETH都指定一旦想要往这个系统中发一笔请求构造一个交易,都必须用一种特定的密码学算法来签名这是一个强制性的设计作为这个区块链的用户,你是没有办法去更改它的,是写死在这个系统里面的。

 

但是这样一个强制的设计会有很多很多的问题最明显的是它造成了区块链的用户门槛非常高由于历史原因作出的特定的选择,造成了和今天在很多互联网场景里用到的密码学算法是不一样的。

 

比如手机芯片现在每个手机里都有安全芯片,用安全芯片来保管私钥是最方便也最安全的但是安全芯片用的可能是R1或者RSA的算法,而不是区块链选择的K1这样的不兼容就导致你必须使用一些像助记词等技术去重新建立一个账户体系,而不能利用现有的账户体系

 

我们经常使用的账户体系还包括电子邮箱地址、人脸识别各种生物特征识别等等很多但是这些区块链的账户体系是两分的,是不兼容的这是特定设计带来的第一个障碍

 

2、特殊的密码学算法

 

行走笔记:Nervos 谢晗剑,抽象是当下区块链更需解决的问题插图11


比如在某一个区块链上想要开发一个应用,开发者如果不想用这个平台指定的有限几种选择,可以怎么办?目前是啥也做不了比如在以太坊里,密码学算法是写死在EVM虚拟机的特定的密码学算法如果你不想用这些,也许可以重新实现一个你想要用的算法,但效率非常低因为EVM本身效率非常低它在实际使用中是不可接受的所以其实你也没得选择

 

这会带来一个什么问题呢?大家知道密码学算法其实是一种标准,不同国家的密码学算法标准是不一样的美国有美密,中国有国密但是区块链的选择不是其中任何一种标准这意味着当区块链的应用想要走入真实的场景里,很难去兼容现有的这些标准这其实是一个区块链技术推广的障碍

 

3、运行环境

 

行走笔记:Nervos 谢晗剑,抽象是当下区块链更需解决的问题插图13


现在几乎所有的区块链平台都是支持智能合约的智能合约需要运行在一个恰当的环境里这个环境可能包括虚拟机,可能包括状态模型运行时环境本身也可以分为计算时的运行时,还有验证运行时。

 

所有左边4个选项,每个各自都有很多不同的选择比如虚拟机,可以用EVM也可以用wozoom,也可以用JavaScript虚拟机,会有很多选择但是今天我们看到每一个区块链系统的设计,都是由区块链的设计者帮开发者选定了一个特定的组合开发者没有自由去选择不同的选项

 

这会给开发者带来门槛。开发者为了进入区块链的体系,可能需要去学习一套完全不同于今天工作里用到的东西这个限制也很大当然不只是对开发者会存在学习成本对于区块链的性能,安全性等各方面都是有影响的我就不展开了。

 

总之区块系统设计者给开发者和用户做了选择,你只要用这个区块链的系统,就不能再做其他的选择

 

这三个方面现在区块链在抽象层次上比较大的问题。所以我们也希望去解决这些问题

 

行走笔记:Nervos 谢晗剑,抽象是当下区块链更需解决的问题插图15


解决的方式说起来也很简单我们要去对账户做抽象,我们要对密码学做抽象,我们要对运行时做抽象,把更多的选择给用户,开发者

 

那么我们是怎么做的呢?

 

1、抽象账户

 

行走笔记:Nervos 谢晗剑,抽象是当下区块链更需解决的问题插图17


在账户抽象这一层,得益于我们提出了一个新数据模型状态模型Cell Model。细节不展开了有了账户抽象之后,能够实现的效果是在抽象账户上的应用,可以被不同地方的用户用到比如用户是通常的互联网用户,只有一个电子邮箱地址,可以直接使用区块链上的应用,不需要下载一个新的钱包入口,不需要去设置私钥和助记词而是直接用EMAIL账户就好了

 

同样也可以利用手机芯片,安全方便的帮你建立一个账户如果你的手机芯片和人脸识别是关联的话,可以直接用人脸识别来控制你的账户。

 

整个过程中,用户不需要去学习区块链的特殊东西,只要用现有的东西就可以了

 

这一点在Nervos上已经有不少应用在做了,比如说像UniPass这样的应用,是基于EMAIL的去中心化的区块链账户系统还有像DAS这样的应用,也是利用抽象账户的特性,使得无论互联网的用户,还是以太坊的用户EOS的用户都可以直接操作它的应用而不是只有Nervos的用户可以操作这个应用。这是账户的抽象性带来的互操作性

 

2、密码学的抽象

 

行走笔记:Nervos 谢晗剑,抽象是当下区块链更需解决的问题插图19


密码学的抽象我们认为很核心的点是需要有一个非常高效的虚拟机才行。我们自己实现了一个高效的虚拟机CKB-VM采用的是一个开放指令,可以与允许开发者用CRust来实现密码学算法。

 

这样的好处不仅仅是非常高效,也可以使很多成熟的密码学算法的实现,可以直接被搬到Nervos上来运行。

 

大家知道密码学算法的实现其实是非常困难的如果新去实现一个密码学算法,其实很容易出错。我们如何去判断一个密码学算法的实现是不是安全的最好的检验标准是它的成熟度,它的使用时间使用的人越多,使用的时间越长它就越安全

 

能够直接移植CRust做密码学实现的好处是我们不需要去重新实现一套重新实现一套,抛开效率问题不谈,它的安全性都是值得考虑的因为是新做的一个事情,里面可能有bug,这是需要时间去校正的。

 

所以通过一个高性能的VM通过一个支持CRustVM我们可以高效的去复用现在大部分的密码学算法。因为现有的大部分的密码学算法就是用CRust去实现

 

3、运行时的抽象

 

行走笔记:Nervos 谢晗剑,抽象是当下区块链更需解决的问题插图21


这部分我就不详细解释了我们想要实现的效果是对于开发者来说,不是被迫去使用某一种语言做开发而是可以使用不同的或者是日常就已经很熟悉的语言来做开发而且在写智能合约的时候,内部的内存布局数据布局也不是谁帮你规定的,而是你可以有很灵活的选择些是我们想要实现的目标。

 

Nervos是在这样一个方向上用技术去改进区块链的我们想要创造的可能不是一个速度更快的区块链,而是一个抽象层次更高的区块链

 

当抽象层次能够做到更高之后,能够做的事情会更多性能也好,吞吐量也好,会抽象层次变高带来的副作用。因为当抽象层次更高之后,会把更多的事情移到链外,或者移到Layer 2去做这样一个Layer 1Layer 2的分离,计算与验证的分离,我们认为是抽象层次变化的副作用所以我们应该去追求的是抽象层次的变化,而不是直接去追求性能的变化

 

如果要一个比喻,这个过程好像我们从X box回到了PCX box虽然是一个一般化的通用的平台,但是它还很多限制。开发者可以做不同的游戏,但是不能改它的硬件PC把这个限制也去掉了,在硬件层也做了更加一般化的处理PC允许换显卡、换CPU、换硬盘、换内存、换主板,所以PC是一个更加一般化的系统,它是一个标准

 

PC是一个抽象层次更高的系统,它能够做更多的事情,它能够满足用户更多的需求,它能够给开发者带来更多的方便。

 

以上是笔记的全部内容。

 

根据央行等部门发布“关于进一步防范和处置虚拟货币交易炒作风险的通知”,请读者严格遵守所在地区法律法规,不参与任何违法违规的投资行为。本文内容仅用于信息分享,不对任何经营与投资活动推广进行背书,请读者提高风险防范意识。

聯系郵箱:0xniumao@gmail.com