查看原文
其他

我对 Nervos 抽象性的粗浅理解

张三疯 NervosCommunity 2021-05-20

第二期 Nervos 社区征文大赛一共 16 篇稿件入围,这是第 8 篇,作者 @张三疯。如果你喜欢这篇文章,阅读后记得点赞、评论和转发分享哦 ❤️

第一个问题:什么是抽象?

抽象,顾名思义,抽象抽象,抽取事物形象的一面。

那么,为什么需要抽象呢?

首先,计算机科学和编程是一门复杂性很高的科学,人脑往往不适应长篇幅记忆或直接面对复杂的二进制底层,人们在面对根本无法控制的事情时,往往把它们转化为另外一件可控的事,这对于万事万物都是这样的。

其次,从问题到解决,不是一蹴而就的,所以需要建立中间层,先完成这诸多中间层。当中间的逻辑被解决的时候,最终的事情自然就变得简单了。

另外,抽象源于一个简单的事实,把事物从逻辑上分开,这样就会解耦它们之间的联系。只有把接口拉高,向高层抽象,那么就可以忽视平台逻辑(实际上正是正面绕过),面对一个抽象了的简单化的结果,比如抽象是历史上在开发中解决移植问题最好的方法,而实际上,增加抽象是解决一切编程问题的方法。

举个例子,我们先来看下面两张地图:

第一张图是一百年前的巴黎地铁图,图二是最新的巴黎地铁图,两者相互比较,哪一张是 “更好” 的地图呢?

第一张地图可以说是很能反映地铁的相对位置,各个地铁站的距离和站点的分布顺序,以及线路的走向都符合现实情况。第二张图就简略得很多,线路之间成直角,站点之间距离和真实情况也不符合。第二张图可以说是第一张图的抽象化表达。

我们再来理顺一下需求:

1、我们要知道搭乘地铁之间的逻辑顺序,即出发和目的站点之间的换乘顺序,不需要知道两条线路之间是直角还是锐角;

2、我们不需要知道相邻站点的准确距离,我们只需要知道从 A 到 B 点经过了几个站点;

从需求来说,第一张图明显优于第二张图,抽象性图例总是能够让复杂的事物变得容易理解,虽然抽象性隐藏了一些真实事物的细节。

上面的例子只是简单地解释了原子世界抽象性的必要,事实上,比特世界的抽象性无处不在。计算机只能识别01二进制编码,现实世界的事物如果要让计算机能够理解,就必须要把事物抽象化。

可以用 CKB 支付通道网络来举例,在 Jan 的这篇《适用于 CKB 上任意一种资产的通用支付通道方案》中,我们了解到支付通道网络(Payment Channel Network,缩写 PCN)是一个去中心化的支付网络,用来支持全球支付。通道网络的设计,主要包含两个方面:

第一:通道协议,它规定了两个用户在一个直接相连的通道内的链下信息传递、链上合约和链上链下交互;

第二:网络协议,它规定了如何将多个直接相连的通道组合成一个较长的通道,如何在两个用户之间找到一条路径,等等。

GPC(通用支付通道)旨在为 Layer 1 上的 UDT(用户定义代币)提供一个「透明的」性能扩展层,以便任何 UDT 从一出生就可以被「通道化」,而无需 UDT 开发者做任何另外的事情。在 GPC 中,系统已经抽象掉了支付通道协议的细节。

所以,在 Nervos 中,抽象性贯穿了系统的整个设计思路,如果开发者想要深度理解 Nervos 的系统架构,抽象性的概念可以说是打开 Nervos 这扇大门最重要的钥匙。

以上就是我对 Nervos 抽象性的粗浅理解。因为 Nervos 足够抽象,所以未来的想象空间也足够之大!

风险提示:本文内容仅为作者个人观点,不代表 NervosCommunity 的看法或立场,亦不构成任何投资意见或建议。

如果你喜欢这篇文章,记得点赞、评论和转发分享哦 ❤️


更多精彩内容
👇欢迎关注👇

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存