国内首个登上 Epicenter 的项目,来看看他们都说了些啥?

Epicenter 是区块链行业全球知名的播客节目,上周,Nervos 基金会联合创始人 Kevin 做客 Epicenter,成为国内首个受邀的公链项目。

Epicenter 于 2013 年开播,致力于给行业人士带来独特的观点,同时揭示区块链的现状和行业趋势。节目会定期邀请区块链行业中颇具影响力的商界领袖、工程师、学者和企业家,并对他们进行深度采访。比特币奠基人之一 Gavin Andresen、BitPesa 和 AZA 的创始人兼首席执行官 Elizabeth Rossiello,以及以太坊创始人 Vitalik 等等都曾做客过 Epicenter,播客现在已更新至第 326 期。

在播客中,Kevin 和主播们一起探讨了 Nervos 项目的设计理念和愿景,并且对项目未来的生态建设计划和进展做了展望。以下是我们对部分播客内容做的整理,让我们一起来看看 Kevin 和主播们都聊了啥吧。

Host: 欢迎大家收听第 326 期的 Epicenter,今天我们邀请到的嘉宾是 Nervos Network 的联合创始人 Kevin Wang 。Nervos CKB 在几个月前发布了主网。在我看来,Nervos 最有趣的地方在于它非常独特的架构设计。在任何其它的智能合约平台中,不管是 Polkadot、Cosmos 还是 Ethereum 2.0,它们都只通过 PoS 或是 Sharding 这两种方式中的一种来实现可拓展性。

而 Nervos 采用了一种非常不同的方式。当第一次了解 Nervos 时,你会注意到它是一个分层架构。其中基础层用于交易,计算则发生在链外。让我们先关注一下基础层,因为这是真正有趣的地方。这个基础层被称为 Common Knowledge Base (公共知识库) ,简称 CKB。

当你在比特币网络中创建交易时,在广播之前,客户端会验证输入是否与 UTXO 集合中未花费输出相对应,这些计算工作会在本地客户端进行,然后通过网络验证,最后打包到块中。

Nervos CKB 也采用类似的方法,但他们将 UTXO 模型通用化,使其可以兼具智能合约的功能。因此,实际的计算是在链外进行,验证发生在基础层 CKB 中。所以 Nervos 并不像 Ethereum 那样,计算是在链上进行的。并且用户只需要在收到有效块之后,确保计算结果得到验证即可。

另一个和比特币的相似之处是,Nervos CKB 采用的是工作量证明。Nervos 团队是「中本聪共识」的坚定支持者。他们已经创建并优化了名为 NC-Max 的 PoW 共识算法,大大提高了吞吐量。

Nervos 确实是个非常有趣的模型。接下来就有请 Kevin 来和我们详细聊一聊。

国内首个登上 Epicenter 的项目,来看看他们都说了些啥?

让我们先来了解一下你的背景,这与你现在所从事的工作似乎相差甚远。你以前是 IBM 的高级顾问,后来也做了中国最大的技术播客之一。在中国做播客是怎样一种体验?

Kevin: 我们当时做的播客是专注于技术的一档节目,叫做 Teahour 。其实我就是因为这个播客而认识了一部分 Nervos 创始人。所以这是很有趣的体验。我们的播客面向于广大的程序员、hacker、企业家等听众。当时的播客做了 100 多集,邀请了很多有趣的嘉宾。

我之前是一名软件工程师,在 IBM 开始了我的职业生涯,在硅谷实验室做大数据工程解决方案。然后跳入创业大军,开始开商店做网页。

在 2000 年和 2010 年之间,有很多社交应用和一些企业家进入了这个领域。我也抓住了这股浪潮的一部分,和我的一个好朋友一起做了一项和开发者教育相关的创业,致力于培训人们成为职业的软件工程师。

在这期间,我发现了 比特币 。像其他很多人一样,我拜读了比特币的篇论文,这篇论文让我非常震撼。之后,我一直想在这个领域做一些事情。到了 2018 年初,我和其他一些联合创始人一起创立了 Nervos,直到现在。

Host: 去年我来到了杭州,去办公室拜访了你们,这是一次非常酷的经历,杭州有点像中国的创业之都。可以和我们介绍一下杭州的情况吗?还有哪些其它的区块链创业公司呢?

Kevin: 杭州是中国的金融科技中心,最大的参与者当然是阿里巴巴集团旗下的阿里支付(Ali Pay)。他们有很多很多的产品,在中国开展了大规模的业务。此外,还有一些传统的金融科技公司,比如 P2P,在区块链领域也有很多公司。

浙江大学就在杭州,它是中国最大的理工科重点大学之一,很多优秀的工程师都来自于浙江大学以及其它院校。我们的工程师大部分都在杭州。在区块链领域,杭州有钱包公司 imToken,星火矿池,还有一些许可链公司。另外,还有很多区块链研究人员和工程师。因为我们会定期在杭州举办活动,所以我们可以很好地了解这部分人群。杭州是一个非常具有企业家精神的城市。

Host: 非常有意思的环境。其实我一直以来都有在关注 Nervos 首席架构师 Jan 的动态,他在区块链行业里也尝试过很多方向,那么是什么驱动了你们,让你们决定开始专注于构建一个无需许可链。

Kevin: 是的,这实际上也需要从 Jan 说起。他曾是以太坊核心开发者,在早期与 Vitalik 有过密切的合作。通过近两年的工作,Jan 可以清楚的看到以太坊是如何成长的,同时也看到了以太坊有很多成长的烦恼。我觉得是这一经历让他认识到,区块链可能也可以有另外一个选择方向。

比如说以太坊是拥有通用计算能力的智能合约平台,CKB 是一个底层的共同知识库。如果要从比特币出发去实现一个完整智能合约平台,你可以选择以太坊,也可以选择 CKB。就像 一个向左,一个向右。 这两种方式都是可行的,但 Jan 和我们认为我们选择的技术架构更有优势。

当然,我们也可以在这个节目中更深入地讨论这个问题。

国内首个登上 Epicenter 的项目,来看看他们都说了些啥?

Host: 这很有趣。你们用比特币的工作证明和 UTXO 模型来构建智能合约平台。我觉得你们是对的,这是一个非常有趣的设计架构。那 Nervos 的愿景是什么?你能从更高的层次上描述一下你们想要构建什么,以及为什么要这样构建吗?

Kevin: Nervos 网络采用的是分层架构。在早期,我们就明确的选择了分层方案来解决区块链的可扩展性问题。换句话说,我们选择保持第一层尽可能的简单,在整个生态系统中只发挥最必要的作用,然后在二层实现可扩展性。这个决定其实涵盖了我们所做的很多实际的技术权衡,包括为什么我们会选择 PoW,为什么使用 NC-Max。当然,如果选择 PoS 或是其它的一些创新,可能会达到更高的可扩展性,但是如果我们选择用二层解决方案,就没有必要去做这样的选择。

在运行全节点上,我们会采取不妥协的方式,就像比特币一样,我们不会用 Sharding,我们要确保所有的状态都是一个整体。同样的,在经济模型方面,我们试图解决比特币面临的一些问题,我们的加密经济模型也是专门为分层网络所设计的。

因此,无论是从架构上,还是从加密经济模型的设计上来看,Nervos 网络都可以视为 Layer 1 和 Layer 2 很好的结合。

国内首个登上 Epicenter 的项目,来看看他们都说了些啥?

Host: Nervos CKB 采用的共识机制是 NC-Max ,它是中本聪共识的优化版本,可以和我们解释一下什么是 NC-Max 吗?它是如何优化比特币的工作量证明的?

Kevin: CKB 的共识机制,首选的属性应该是可用性。这也是我们认为 Layer 1 应该有的属性。NC-Max 在多个方面改善了中本聪共识。

首先,我们认为比特币在 10 分钟一个块的设定下利用带宽,是非常浪费的。我们希望有一个机制,能够 动态调整难度 。所以,我们不以出块时间 10 分钟为调整目标,而是希望 以特定的叔块率做为调整目标 。目前的目标值是在 2% 到 3% 之间。这样,在目标叔块率的范围内,我们就可以尽可能快地确保出块时间。目前,我们的出块时间大概都在 10 秒以内,并且仍然有非常合理的叔块率来达成共识。

NC-Max 优先考虑的另一个属性是 最大化带宽 。在中本聪共识中,对于每一笔交易都会通过网络进行两次打包确认。而对于 NC-Max 来说,我们会确保交易只被打包一次。所以,这又一次很好的节省了带宽。

我们的第三个优化是,NC-Max 最大限度地减少了自私挖矿 ,我们的协议在估计网络算力时,会将所有区块(包括叔块)纳入到难度调节中,因此新的难度和孤块率是不相关的。不论攻击者在诚实挖矿、自私挖矿、关闭矿机这三种策略中如何分配算力,不论他的策略覆盖多少个难度调节周期,自私挖矿都是无利可图的。

Host: 可以这样理解吗?在比特币中,出块时间是 10 分钟,这里的想法是在 10 分钟内,会将一兆大小的块充分、完整的传播。但考虑到全局带宽的增长以及优化,比特币这样的做法可能是一个安全边际非常高的方法。Nervos 采取的方法并不是通过足够长的出块时间来控制叔块率,而是根据网络的实际情况调整难度来控制叔块率,是这样吗?

Kevin: 是的,你理解的很对。随着技术的进步,5G 时代的到来,在未来的网络当中,带宽可能会成倍的增长,那么我们还会有更大的提升空间。所以,对于我们的第一层协议和 NC-Max 来说,每秒能达到的交易量还会自动的增加。

Host: 我知道去年 Nervos 研究员 张韧 在美国旧金山举办的 Scaling Bitcoin Meetup 中发表了一个非常棒的演讲,从「带宽利用率」角度分析了诸多共识协议的效率和可行性,这让我感到非常震撼和难以置信。所以这里我也强烈推荐大家阅读:

https://talk.nervos.org/t/nervos-ckb-nc-max-nakamoto-consensus/1295

我还想问一下有关挖矿的问题,你们有自己的哈希算法,你能谈谈 Nervos 挖矿生态系统是什么样子的吗?

Kevin: 是的。之所以我们有自己的哈希算法是,因为如果使用现有的哈希算法,会把项目置于危险的情况之中,特别是当一条新链刚开启的时候,有很多现有的矿机可以参与项目的挖矿,我们很难预测算力的变化,甚至还会受到攻击,所以我们开发了自己新的,简单且安全的哈希算法 Eaglesong。

Nerve CKB 的挖矿生态演变非常类似于从 CPU 开始的比特币挖矿。从 CKB 测试网大赛中的 PC 端挖矿到 GPU,再到后来的 FPGA。我们得到了绝大多数主要矿池的大力支持,也很感谢矿工社区的热情,目前 GPU 和 FPGA 矿工都有在 CKB 上面挖矿。到后期,我想我们会向 ASIC 挖矿生态演变。

Host: 其实我自己也有尝试参与 CKB 挖矿,我刚刚关掉了我的 grin 矿机,想要把 CKB 的挖矿程序安装进去,但是非常不幸,直到录制这期节目之前我都还没有成功(旺柴脸)。

国内首个登上 Epicenter 的项目,来看看他们都说了些啥?

接下来让我们继续看一下 Nervos 的另外一个亮点,Cell 模型,这其实是我最喜欢的部分之一,因为我一直梦想要设计一个使用 UTXO 模型的智能合约系统,然后发现,哇哦,Nervos 竟然成功创造出来了。你能告诉我一些关于 Cell 模型的信息吗?分离状态生成和状态验证意味着什么?

Kevin: Cell 模型是 CKB 账户结构的核心。它是更 通用化的 UTXO 账户结构 。比特币的 UTXO 模型只能表达一个信息,即余额或者金额。而 Nervos CKB 将它通用化之后,能够支持任何类型的信息,并且可以支持智能合约或完全图灵完备的脚本,由虚拟机执行。

当创建一个交易时,会有输入和输出。输入的就是 cell,你可以有多个 cell 作为输入的一部分,然后以输出作为结果。所以当你创建的交易被验证和执行接受后,输入就会被花费。这些(被花费的) cell 我们称之为 dead cell 或者是 expire cell,而这些输出就成了新的 cell。

对于比特币来说,未花费的交易输出集合是当前的全局状态;对于 CKB 来说未花费的 cell 输出集合就的当前的全局状态。

比特币有 lock script,对于 CKB 来说,因为代码也可以是 cell 的一部分,所以 CKB 需要有 两种类型的脚本一种是 lock script 。所以你仍然可以说,我有我的私钥,并且可以让对应的 cell 成为交易输入的一部分。

第二种类型的脚本是 type script 。Type script (不要与某编程语言混淆)让 cell 作为交易输出。换句话说,type script 可以根据预先指定的规则来验证从输入到输出的状态转换是否有效。

这就是为什么我说 cell 模型是一个通用化 UTXO 模型的原因。它包括了输入和输出,通过 type script 来确保我们可以在虚拟机中运行相应的验证规则,可以有效的在智能合约里加入状态转换的规则。

Host: 是不是可以这样理解,这更像是用函数编程的方法。我们不像 Ethereum 那样数据是被写进函数里,通过调用函数来改变合约状态;相反,我们将智能合约定义为纯函数,也就是 lock script 和 type script 。我们将旧的智能合约状态销毁,并通过这个函数将它转化输出为一个新的合约状态,也就是一个新的 cell。

Kevin: 没错。所以验证引擎或虚拟机的执行结果,会是 ture 或者 false。也就是会验证它是一个有效还是无效的交易。如果它是有效的,那么它就会被区块链接受,如果是无效的,就会被拒绝。就像你说的,它实际上是花费或烧毁旧的状态,然后从输出中产生新的状态。

Host: 这里会有一些规则来规定从这个烧毁的输入中产生的输出必须是什么样子的吗?我如何将一系列函数、lock script 串起来,以达到更高的处理效率。

Kevin: 是的,以太坊中是通过一个智能合约调用另一个智能合约来实现。而你所描述的方式是 Nervos CKB 中的一种处理方式。在以太坊中,采用的是面向对象的程序设计(Object-oriented programming)方式,人们有具有内部状态的帐户。当你与它们交互时,你就会改变状态,对象本身可以传递消息,并且可以通过该信息来改变其它对象。

在 Nervos CKB 中,就如你刚才说的一样,可以通过一系列的交易将交易或者智能合约组合在一起并且实现传递。

Host: CKB 上所有的计算都是在链下完成的,对吗?所以区块链只存储状态。我需要做一下个人笔记。

Kevin: 是的,在 CKB 区块链上只做验证。为了方便理解,我们再举一个比特币的例子。在比特币中,交易构造的过程可以发生在链外,就像我们在钱包中进行转账一样,首先我们需要搜索到符合交易输入的 UTXO,而这一步并不包含在比特币核心代码内,它可以发生在钱包上,通过钱包来进行 UTXO 的搜索。而验证输入、输出是否平衡才会发生在链上。

对于 CKB 来说也是一样, 交易构造在链下完成,验证(包括签名的验证、虚拟机中对于 type script 执行结果的验证等)在链上完成。 所以这确保了这些规则是非常直观的。

国内首个登上 Epicenter 的项目,来看看他们都说了些啥?

Host: 最后让我们来讨论一下 CKB 的经济模型,你能和我们说说什么是 CKByte,为什么选择用这样的经济模型设计来加持这条多资产价值存储公链?

Kevin: 是的,「 多资产价值存储公链 」是我们 Layer 1 协议的 slogan。首先我来回答一下你的第一个问题。CKB 的原生代币叫做 CKByte, 一个 CKByte 代表着全局状态中的 1 byte 。假设你拥有 10000 CKByte,这意味着你拥有 CKByte 全局状态中的 10000 byte。

关于第二个问题,是因为在整个网络中,我们认为更多的交易应该转移到 Layer 2,因为二层是交易更快和更便宜的选择。

那么第一层的目的是什么呢? 在我们看来,Layer 1 应该是一个保护资产、提供安全和抗审查的平台,所以 Layer 1 应该是资产所选择的层。和比特币不一样,比特币区块链中只有比特币这一种资产,而在智能合约平台上,可以有很多的通用定义的资产。所以 Layer 1 协议的目标应该是提供可持续性,并确保资产的长期安全。这就是我们所说的资产存储、多资产价值存储的概念。

当你设计像比特币这样单一资产存储价值系统时,你可以不用考虑一些额外的因素。比如在比特币中,矿工是按照每个区块来支付固定的比特币奖励。这样的设计很有意义,能够让它们的经济模型作用于整个系统。因为如果资产价值增加一千倍,那么矿工每个区块的收入也会增值一千倍。这也让比特币成为一种很好的价值储存手段。

但是在以太坊上却并不能这样简单的考虑。其实在以太坊上,如果上层应用的价值上下波动,它们与以太坊本身的价值相关性不大。换句话说,如果你用资产存储的思维模式去设计,其底层的原生代币应该类似于和这个网络整体价值存在相关性的某种「 指数基金 」,而且这种指数基金可以用来支付矿工的奖励。

因为如果整个生态系统价值上升,原生代币的价值也随之上升的话,那么就可以为协议的安全提供更多的保障。

但是对于以太坊平台来说,如果二层的应用资产价值上升 10 倍或 100 倍,你不能保证以太坊的价值会随着他们一起上升。这样会出现一个安全隐患,攻击者可以以更小的成本攻击该应用底层的共识协议,从而双花这个应用上的资产。

另一方面,矿工为以太坊上的资产提供了安全保障,但上层加密资产的持有者并没有做出类似的贡献,上层资产的升值不会用于支付给矿工。所以这就会遇到公地悲剧的问题,当激励不一致时,如果没有制度规定一定要为公共利益做出贡献,那么资源就会被滥用。这在我们看来是不可持续的。

Host: 那你们是怎么把 CKByte 变成理想中的那个「指数基金」的呢?

Kevin: 实际情况下,区块链中很难真正建立这样一个「指数基金」,但这对我们的思考很有帮助。我们想到的解决方案是, 底层链的原生代币需要能够捕获上层资产的价值 。换句话说,如果我是一个持有者,我也需要为网络的整体安全性做出贡献。所以我们需要这个单一的资产能够捕捉到区块链上所有资产的需求。

另外,这种贡献必须随着时间的推移而扩大。如果我持有的时间越长,那么就应该对网络的安全做出更大的贡献。Nervos 网络底层的原生代币 CKByte 代表了对相应全局状态的所有权,因此我们的想法是,任何加密资产的需求都要转化为对全局状态的占用。如果有更多的开发者,他们拥有更多的市值和用户,那么他们也将占用更多的全局状态,这将会导致他们对原生代币产生需求。

因此, 原生代币是对整个生态系统实现价值捕获的载体 。这也是为什么我们通常会 将 CKByte 和土地做类比 。你可以在土地上开不同的商店,可以是麦当劳、自助洗衣店等等。它们各自不同,并且有自己的生态系统和经济属性,但它们都占用土地。无论你开的是什么店,都会对土地有需求,所以我们也可以说 土地是对这个生态系统的价值捕获

这个单一的资产能够捕捉到多个资产的价值和建立在区块链上的经济。

Host: 那么哪些类型的项目更适合在 CKB 上开发?

Kevin: 我们的主网在三个月前刚刚发布,我觉得 CKB 上最适合的应用类型是基于资产或以资产为主的应用,另外还有 DeFi 等。

Nervos 不同于其它区块链的地方在于,我们希望有一个单一的区块链能够汇聚价值,那么其它的区块链就都可以专注于扩展性能。所以在某种程度上,整个网络就像在金融系统一样,你可以认为底层链就像是去中心化的托管提供商一样,其它所有的链都像是基于交易的系统。以上就是我们网络的总体模型。

国内首个登上 Epicenter 的项目,来看看他们都说了些啥?

编译 Kelly

更多精彩内容,欢迎点击文内视频,或收听节目完整音频:

https://epicenter.simplecast.com/episodes/326

国内首个登上 Epicenter 的项目,来看看他们都说了些啥?

国内首个登上 Epicenter 的项目,来看看他们都说了些啥?

来源链接:mp.weixin.qq.com