3

Nervos Network架构师谢晗剑:区块链抽象与演进

 2 years ago
source link: https://www.jinse.com/blockchain/1169791.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Nervos Network架构师谢晗剑:区块链抽象与演进

金色财经现场报道,10月26日,由万向区块链实验室主办的第七届区块链全球峰会在上海举行,Nervos network 架构师谢晗剑在题为《区块链抽象和演进》的分享中称,治理和抽象是区块链面临的新挑战。以太坊改变了一切,它是把区块链技术一般化,它去寻找利用区块链技术的应用,发现它们的共性,然后为各种应用、场景和需求,创造一个平台,使得在以太坊上可以创造各种应用,包括支付、游戏等。以太坊是抽象层次更高的系统,而未来的区块链,追求不是性能更好,而是抽象层次更高,更加一般化的设计。他认为区块链在抽象层面的问题有三个,比如特定的账户体系,特殊的密码学算法,特殊的运行时。区块链应该追求抽象层次越高,性能是副产品。

WXl6jOMdx3bauigZDdwy06pfrNAxBMgfi9hBxoYU.png

以下为演讲全文:

大家好!我是 Nervos Network 的架构师谢晗剑,很高兴能和大家分享我今天想讲的题目——《区块链的抽象与演进》。

区块链所面临的最大挑战是什么?

不知道大家有没有看过这样一句话,意思是:今天新的区块链所面临的最大挑战不是「速度」和「吞吐量」,而是「治理」。

所谓的第二代区块链,新的区块链发展到今天,已经有五六年的时间了,如果大家回顾之前一些想法的话,能够看到当时的思路可能不是那么正确。

几年前大家想要做新的区块链的时候,想的是「如果我解决了区块链的性能问题,是不是就创造出了新一代的系统,就可以打败以太坊,然后可以怎么怎么样」等等。

但这几年区块链行业的发展已经把这个思路给证伪了,因为我们能够看到有新的区块链出来,它们的性能也确实非常好,但大家还是认为我们依然处于以太坊的时代,并没有进入下一个时代,并没有感觉到当年从「Bitcoin」进入到 「Ethereum」的时代,这种感觉并没有,虽然今天新的区块链已经有很好的性能,能每秒处理几千笔交易。

有人说我们面临的最大挑战是「治理」。

其实我也是同意的,「治理」确实是现在区块链行业面临的很大问题,而且这个问题是「Open question」,是没有答案的,不同区块链社区、不同区块链团队都在探讨怎么对这样一个开放性的P2P自治项目做治理。治理确实是很难的问题。

但是我想说,这不是唯一的问题,所以 and「Abstraction」,「抽象」也很重要。

「治理」讨论的问题是——我们作为社区能够决定区块链平台是不是应该做某件事情的话,那么区块链的「抽象」层次是决定什么东西可以被搬到台面上被治理、被讨论,就什么样的问题讨论该做还是不该做。

所以,我认为「抽象」也是新的区块链所面临的非常重要的挑战。

什么是「抽象」?

这个词本身就很抽象。

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

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

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

用一个不是那么区块链的例子解释一下。

大家可能玩过游戏机,至少我小时候会在游戏厅里玩大型所谓的街机。如果你了解这样机器的话,你就知道每一台机器其实对应一个游戏,这对于街机来说系统设计是从软件到硬件一体的设计,所有设计都是围绕一个目的服务的,就是这一款游戏。

tR5fBDi6lSUmh6ZIJKp3rPAN2DCsr1rZRYgTrOuT.png

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

游戏行业发展到今天最流行的东西已经不是街机了,更多的是像 XBox 这种通用的游戏平台。

XBox 是一般化的设计,你可以为 XBox 设计各种各样的游戏,而后你只可以购买不同的游戏就可以在这一个系统上运行去玩。

所以,从街机到 XBOX 就是一般化的过程,从另外一个角度来说 XBox 是抽象层次更高的设计,可以适用更多的场景,里面为每一个特定游戏所打造的特殊东西很少很少,几乎没有。

正是因为它没有那些特殊的细节,在这个平台上的开发者才能填补细节,才能让平台能够适应各种各样的需求。

当我们考察区块链行业的发展,考察「Bitcoin」和「Ethereum」的进程也是这样的过程。

「Bitcoin」想做什么?

从白皮书、标题里可以看到一开始的目的是想实现点对点的支付系统,这是有非常明确单一目的的系统,所以它的系统设计也是围绕这个目的来做的。

在以太坊出现之前的时代,如果大家还有印象的话,我们想要全世界人都看到「Bitcoin」底层的技术非常有价值,不管是区块链还是分布式账本。

当我们想用这个技术做另外事情的时候你能做什么?你能做的只是 Focus「Bitcoin」代码,而不是利用「Bitcoin」的代码做什么事情。

但是以太坊的出现改变了这一切,以太坊说我们不需要这么麻烦,我们可以把 Bitcoin、区块链变成更加一般化的系统,我们要找到那些利用区块链技术的应用需求的共性,创造出一个平台出来,把只为支付服务这种特殊设计去掉,但是要把为各种各样的共性需求找出来,为共性需求设计一个平台。

所以以太坊有虚拟机、运行环境,在以太坊上可以构造各种各样不同的应用,比如支付、借贷、游戏等等。

从「Bitcoin」到「Ethereum」是一般化的过程。

0AVO1z6a4AhOQOBkswNcFOMMjmJXJmoZrGcYP9hq.png

换句话说,以太坊其实是相对「Bitcoin」抽象层次更高的,就像 XBox 相比于街机一样。

如果沿着这个思路去考察的话,我们很容易可以想到要怎么样做的更好,如果真的要做出和现在这一代不一样的区块链的话,下一代是什么样子?

可能不是性能更好,应该是抽象更高。

怎么把系统变得抽象层次更高呢?

回忆刚才的定义,要找到里面的特殊设计和特殊细节,如果它不是共性的东西就把它砍掉,想办法把它变成更加一般化的设计。

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

(1)特定账户体系

PrjCrAYLRMbhAsQFbhw9UebhGl0Bp6DBsTPoLjck.png

区块链是人和资产交互的系统,这里面既然有人,有用户,你就要为每个用户建立一个账户、一个身份来代表它。怎么验证账户是属于某个人的?账户内部的数据模型是怎么样的?这些东西在今天的区块链系统里都是硬编码,由区块链设计者帮开发者、帮用户选定。作为用户、开发者,你并没有权利替换它。

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

但是,这样一个强制的设计其实会产生很多问题,其中最明显的是造成区块链用户门槛非常高。由于历史原因做出的特定选择,和今天在很多互联网场景里用到的密码学算法,是不一样的。比如说,现在每个手机里都有安全芯片,用安全芯片来保管私钥是最方便、最安全的,但安全芯片可能用的是 R1 或者 RSA 的算法,而不是区块链选择的加密算法,不兼容就会导致你必须使用助记词技术重新建立账户体系,而不能利用现有的账户体系。

现在,其他账户体系还有哪些?邮箱、人脸识别、生物特征识别等等,其实有很多,但是这些跟区块链的账户体系不兼容,这是特定设计带来的障碍。

(2)特殊的密码学算法

s4ErZ42a4viNmfU4KFdtBQsC3lViCMWOVksFjOss.png

比如说,今天我在某一个区块链上想要开发一款应用,我不想用这个平台指定的几个有限选择,怎么办?你不能怎么办,你啥也做不了。

在以太坊里,有一种Precompiles是写在 EVM 虚拟机里的特定密码学算法,如果你不想用这个算法的话,你也许可以用 Solidity 重新实现一个,但效率非常低,因为 EVM 本身效率也非常低。

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

(3)运行时环境

cxPPjejbt1S8aUjurIPJrgVFTmcBdgMF6Wtl1err.png

现在,几乎所有的区块链平台都支持智能合约,智能合约需要运行在恰当的环境里,这个环境可能包括虚拟机、状态模型。运行时环境本身也可以分为计算时、运行时、验证运行时等等,各自都有很多不同的选择。比如说,虚拟机可以用 EVM,也可以用 RISC-V 虚拟机等。但今天看到的每个区块链设计,都是由区块链设计者帮开发者选定了特定的组合,开发者无法自由选择不同的选项,这会给开发者带来门槛。开发者为了进入区块链的体系,可能需要学习一套完全不同于今天工作里用到的东西,在我们看来这个限制也很大。

不光是对开发者有学习成本,对区块链性能方面、安全方面都有影响。总而言之,区块链系统者给你做了选择,你只要用区块链系统就不能再做其他的选择。

以上三个方面是现在能够看到的区块链在抽象层次上比较大的问题,我们也希望解决这些问题。解决的方式,说起来也很简单。既然找到了问题,就要对账户做抽象,对密码学做抽象,对运行时做抽象,给用户和开发者更多的选择。

e1BXweBvMuuOetl65etZ3Zch9Jya71A6DYrjloAz.png

我们是怎么做的呢?在账户抽象一层,Nervos 推出了新的数据账号模型——Cell model。有了账号抽象之后,能够实现什么样的效果呢?在抽象账户上的应用,可以被不同地方的用户用到。

比如说,你是普通的互联网用户,你只有邮箱,你可以直接使用区块链上的应用,你不需要下载新的钱包入口,你也不需要设置你的私钥、助记词,你可以直接使用邮箱做账户就好了。

我们同样也可以利用手机的安全芯片,安全、方便地帮你建立一个账户。如果你的手机芯片和人脸识别是关联的,你可以直接用人脸识别控制账户,整个过程中你不需要学习区块链任何特殊的东西,只要用你现有的东西就可以了。

Nervos 上已经有不少应用在这样做了,像Unipass这样的应用就是一个基于e-mail的去中心化区块链账户系统,还有像DAS这样的应用,也是利用抽象账户的特性,使得互联网用户、以太坊用户、EOS用户都可以直接操作应用,而不是只有Nervos用户可以操作应用,这是互操作性。

如何做密码学抽象?

iub1kjFiZjFsIMsOgatk0wnVqgsY6AloqEnuO7vD.png

密码学抽象的核心是需要有非常高效的虚拟机。我们自己实现的高效虚拟机是CKB-VM,它采用的是开放指令级RISC-V,得益于RISC-V指令级的特性,CKB-VM可以让开发者用C和Rust来实现密码学算法,好处不仅仅是高效,并且很多成熟的密码学算法实现可以直接被搬到区块链上来运行,也就是说它们可以被搬到Nervos上运行。

密码学算法的实现其实非常困难,如果我们先去实现密码学算法,那么这样会很容易出错。如何判断密码学算法的实现是不是安全的?唯一的最好的检验标准就是它的成熟度和使用时间,使用的人越多,使用的时间越长就越安全。

能够直接移植C和Rust做的密码学好处是不需要重新实现一套,如果用Solidity重新实现一套,那么安全性就值得考虑,因为它是新做的事情,里面可能会有bug,需要时间矫正。

通过高性能的EVM,通过支持C和Rust的EVM,可以高效复用现在大部分的密码学算法,因为现在大部分现有的密码学算法就是用C和Rust实现。

运行时的抽象怎么做?

X77REIVUh3zj6xjUESGcJGzh08rFkuYvfGsZybRH.png

对于开发者来说,开发者不会被迫去使用某一种语言做开发,而是可以使用日常就已经很熟悉的语言来做开发,无论是JAVAscript、Ruby、Rust、C等,都可以被用来做开发。而且在写智能合约时,智能合约内部的内存布局、数据布局也并不是规定好的,而是可以有很灵活的选择,这是我们想要实现的目标。

Nervos其实是在这样的方向上改进区块链的,我们想要创造的可能不是速度更快的区块链,而是抽象层次更高的区块链。但是当抽象层次能够做到更高之后,我们能够做的事情会更多,性能也好、吞吐量也好,会是抽象层次变高带来的副作用。

UXJHj9eAZa1F0YBJRk8CenmR61IolInujlb9fDJD.png

当抽象层次更高之后,我们就会把更多事情移到链外,或者如今天上午Vitalik所说的移到Layer 2 去做。Layer 1与Layer 2的分离,或者说计算与验证的分离是抽象变化层次的副作用,所以我们应该追求的是抽象层次的变化,而不是直接追求性能的变化。

wRInK4wIy6W4xfKTVFXCQGboTY6RPt8m4K5xxyPj.png

就好像我们从XBOX变成了PC,XBOX虽然是一般化的通用平台,但其实它还是给了人们很多的限制,我们可以给它做不同的游戏,但是不能改它的硬件。PC把这个限制也去掉了,在硬件层也做了更加一般化的处理,PC允许人们换显卡、CPU、内存、主板、硬盘。所以PC是更加一般化的系统,它是一个标准。从这个角度来讲,PC是比XBOX抽象层次更高的系统,能够做更高的事情,能够满足用户更多的需求,能够给开发者带来更多的方便。

如果大家对Nervos有更多兴趣的话,可以访问Nervos的官网,我的演讲就到这里,谢谢大家!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK