2021-11-02 04:16 | 出处: 行走
本篇笔记来自万向主办的上海区块链周活动,是10月26日下午Nervos Network 架构师谢晗剑的主题演讲,原标题《区块链抽象与演进》。
以下,Enjoy:
不知道大家有没有看过这样一句话:
目前新的区块链所面临的最大挑战不是速度或者吞吐量,而是治理。
所谓的第二代区块链,新的区块链发展到今天,其实已经有五、六年的时间了。如果大家回顾之前的一些想法,能够发现当时的一些不那么正确的思路。在几年之前,大家想要做一个新的区块链,想的是如果我解决了区块链的性能问题,就能创造出新一代的系统,就可以打败以太坊,就可以怎么怎么样。但是这几年区块链行业发展下来,这个思路已经被证伪了。
我们能够看到有新的区块链出来,它们的性能也确实非常好。但是大家还是认为我们依然处于以太坊的时代,我们并没有进入下一个时代。并没有当年从BTC进入到以太坊的感觉。
虽然今天新的区块链已经有很好的性能,每秒可以处理几千笔交易。所以有人说,我们面临的最大挑战可能是治理。我其实也是同意的。治理确实是整个区块链行业面临的很大的问题,而且这个问题是一个open question,是没有答案的。
不同的区块链的社区,不同区块链的团队都在探讨怎样对开放性的、P2P的自治的项目去做治理。所以治理确实是一个很难的问题。但我想说,治理不是唯一的问题。
抽象也很重要。如果治理讨论的问题是,我们作为一个社区能够决定一个区块链平台是不是应该做某件事情的话,那么abstraction,区块链的抽象层次可能会决定什么东西可以被搬到台面上,被治理、被讨论。也就是说我们到底可以就一些什么样的问题去讨论,我们该做还是不该做。我会认为抽象也是新的区块链所面临的一个非常重要的挑战。
那什么是抽象?
Abstraction这个词本身就很抽象。上图是一个解释。抽象本身是一个很比较技术的词汇,这里有两个解释。我们只要关心第一个:所谓的抽象是一个过程。我们把特殊性从一个系统里去掉,然后从这个系统里创造出一般性、普遍性。
抽象是一个一般化的过程。我们通过去掉特殊的一些设计,把共性找出来,让这个系统可以变得更加一般化,可以适用于更多的场景。
这个解释可能还是很抽象。但大家只要记住其中的关键词:我们要去掉特殊性。我们要把特性从系统里去掉,在这个系统里找到更多共性的、一般性的东西,把它放到设计里面去创造一般性。
用一个不是那么区块链的例子来解释。大家可能有玩过游戏机,特别是戏厅里的大型街机。如果你了解这样的机器会知道,每一台机器只是对应一个游戏。对于街机来说,系统设计是从软件到硬件一体的设计。所有的设计都是围绕一个目的服务的,就是这一款游戏。
当我们需要去创造另一个新的游戏的时候,需要另外设计一台新的机器。所以我们可以看到游戏厅里摆了10台、20台机器,每一台机器是一个不同的游戏。
但是游戏行业发展到今天,最流行的东西已经不是街机了,而是像Xbox这样的通用的游戏平台。X box是一个一般化的设计。你可以为X box设计各种各样的游戏。玩家只要购买不同的游戏,就可以在一个系统上去运行、去玩。
从街机到X box就是一个一般化的过程。从另外一个角度上,X box是一个抽象层次更高的设计,它可以适用更多的场景,它里面为每一个特定游戏所打造的特殊的东西,很少很少,几乎没有。正是因为它没有那些特殊的细节,在这个平台上的开发者才能够去填补那些细节,才能够让这个平台适应各种各样的需求。
当我们去考察区块链行业的发展,考察BTC到ETH的进化的时候,其实也是这样的过程。如果大家还记得比特币想要做什么。我们从白皮书的标题里可以看到,BTC一开始的目的是想要实现一个点对点的支付系统,这是一个有非常明确的、单一目的的系统。所以它的系统设计也是围绕这个目的来做的。
在以太坊出现之前的时代——如果大家还有印象——全世界的人都看到了BITCOIN底层的技术是非常有价值的,不管叫它区块链也好,还是叫分布式账本也好。当我们想要用这个技术来做另外事情的时候,你会做什么?你能做的只有Fork BITCOIN的代码,而不是在BITCOIN这个平台之上去做什么事情。
所以在以太坊之前,利用区块链技术的方式,是不停的创造一个又一个新的区块链的项目。但是以太坊的出现就改变了这一切。以太坊不需要这么麻烦,可以把BITCOIN变成一个更加一般化的,或者说把区块链变成一个更加一般化的系统。
以太坊是找到了那些利用区块链技术的应用,它们需求的共性。通过创造一个平台,把只为支付服务的一些特殊的设计去掉。但是要把为各种各样的场景,应对应用需求的共性需求找出来。会为共性的需求去设计一个平台。所以以太坊有虚拟机,有它的运行环境。在以太坊上我们可以去构造各种各样的不同的应用。无论是支付,借贷还是游戏。
从这个角度看,从BITCOIN到以太坊是一个一般化的过程。换句话说:以太坊是一个抽象层次更高的系统。就像X box之于街机一样。
如果沿着这个思路去考察,我们很容易可以想到,我们要怎么样做的更好。如果我们真的要做出一个和现在这一代区块链不一样的区块链,下一代应该是什么样子?它可能不是性能更好,它应该是抽象层次更高。
那我们要怎样把一个系统变得抽象层次更高呢?
回忆一下对“抽象”的定义。我们要找到里面特殊的设计、特殊的细节。如果它不是共性的,我们就把它砍掉。然后想办法把它变成一个更加一般化的设计。
在今天的区块链系统里有哪些是特殊的设计呢?我们找到了几个方面和大家分享一下:
1、特定的账户体系
区块链是人和资产交互的一个系统。这里有人、有用户,就要为每个用户建立一个账户来代表他,或者建立一个身份来代表他。
在账户体系里,账户的标识怎样去验证这个账户是属于某个人的,这个账户内部的数据模型是怎样的?这些东西在今天的区块链系统里都是硬编码。是由区块链的设计者帮开发者、帮用户选定的。作为用户和开发者,并没有权利去替换它。
比如账户里的验证,不管是BTC还是ETH,都指定一旦想要往这个系统中发一笔请求,构造一个交易,都必须用一种特定的密码学算法来签名。这是一个强制性的设计。作为这个区块链的用户,你是没有办法去更改它的,是写死在这个系统里面的。
但是这样一个强制的设计会有很多很多的问题。最明显的是,它造成了区块链的用户门槛非常高。由于历史原因作出的特定的选择,造成了和今天在很多互联网场景里用到的密码学算法是不一样的。
比如手机芯片。现在每个手机里都有安全芯片,用安全芯片来保管私钥是最方便也是最安全的。但是安全芯片用的可能是R1或者RSA的算法,而不是区块链选择的K1。这样的不兼容就导致你必须使用一些像助记词等技术去重新建立一个账户体系,而不能利用现有的账户体系。
我们经常使用的账户体系还包括电子邮箱地址、人脸识别等各种生物特征识别等等很多。但是这些和区块链的账户体系是两分的,是不兼容的。这是特定的设计带来的第一个障碍。
2、特殊的密码学算法
比如在某一个区块链上想要开发一个应用,开发者如果不想用这个平台指定的、有限几种选择,可以怎么办?目前是啥也做不了。比如在以太坊里,密码学算法是写死在EVM虚拟机的特定的密码学算法。如果你不想用这些,也许可以重新实现一个你想要用的算法,但效率会非常低。因为EVM本身效率非常低。它在实际使用中是不可接受的,所以其实你也没得选择。
这会带来一个什么问题呢?大家知道,密码学算法其实是一种标准,不同国家的密码学算法标准是不一样的。美国有美密,中国有国密。但是区块链的选择不是其中任何一种标准。这意味着当区块链的应用想要走入到真实的场景里,它很难去兼容现有的这些标准。这其实是一个区块链技术推广的障碍。
3、运行时环境
现在几乎所有的区块链平台都是支持智能合约的。智能合约需要运行在一个恰当的环境里。这个环境可能包括虚拟机,可能包括状态模型。运行时环境本身也可以分为计算时的运行时,还有验证运行时。
所有左边的4个选项,每个各自都有很多不同的选择。比如虚拟机,可以用EVM,也可以用wozoom,也可以用JavaScript的虚拟机,会有很多的选择。但是今天我们看到每一个区块链系统的设计,都是由区块链的设计者帮开发者选定了一个特定的组合。开发者没有自由去选择不同的选项。
这会给开发者带来门槛。开发者为了进入区块链的体系,可能需要去学习一套完全不同于今天工作里用到的东西。这个限制也很大。当然不只是对开发者会存在学习成本。对于区块链的性能,安全性等各方面都是有影响的,我就不展开了。
总之
您可能感兴趣的文章: