Nervos ——为了更好的世界

链接:https://bitcointalk.org/index.php?topic=4505366.0

Nervos项目评级报告:http://huoxun.com/news/show/2700.html(略)

橙皮书:https://underplay.me/orange/p/144

对话Nervos团队 https://xcong.com/articles/3377360

白话解读NERVOS (一)链接:https://www.jianshu.com/p/5237bc35a555(略)

白话解读NERVOS(二)链接:https://zhuanlan.zhihu.com/p/36233894

NERVOS :https://docs.nervos.org/#/

NERVOS 白皮书:https://github.com/NervosFoundation/binary/blob/master/whitepaper/nervos-ckb.pdf

https://github.com/NervosFoundation/appchain

以太坊扩展性问题:分片(shrading);将交易从主链剥离,放到链外,有雷电网络,状态通道。

你们的白皮书我看过了,你们只提出了问题,但是你们根本没有解决方案!别告诉我你们想要解决以太坊的问题,以太坊的方案在我眼里根本不 work!

3 个月前,在一家机构的会议室,Terry 和我,我们正在向对方 Pitch 我们的 Nervos 项目。不确定对方有没有真的看过我们的白皮书,也许怀疑一个本土的团队是否真的有能力写出这样的白皮书,也许怀疑我们提出了一个没有验证过的技术方案,也许团队没有能力真的能把这样的项目做出来......

记得当时我跟 Terry 是这样回答的:

也许您现在只能理解您现在能够理解的东西,我们来您在这里,就是要给你介绍我们的团队的背景,能力,以及我们要解决的问题,而你看到的白皮书只包含了我们底链的设计。

Nervos 还处于非常早期,也许您现在看不懂,或许还有所怀疑,不过这都没有关系,您可以再等一等,看一看,等我们有更多的信息释放出来,甚至东西做出来后再买都是不晚的。

2017 年年底,我们发起了 Nervos Network 项目,目标是做下一代区块链基础设施(严格来讲 Nervos 是一个网络,这一点后续文章会详细阐述),并以开源基金会的方式运作。然后我们马上组建了开发团队,基于之前两年多的联盟链和公链开发经验,结合我们对下一代区块链基础设施架构的设计思想,我们的团队用了三个月时间做了若干个概念验证和迭代,基于这些工作,我们正式发布了 Nervos CKB 白皮书,即 Nervos Network 的底层基础公链设计。

然后我们紧锣密鼓的开始了 token 的 private sale 工作,为了找到全世界最优质的资源,我们几乎拜访了能联系到的所有国内外机构。 总的来讲整个 private sale 还算顺利,我们取得非常多国内和世界范围内绝对的一线机构的信任和追捧,这既是情理之中,又是意料之外。我们没有想到这么快就能被如此多的一线机构所认同,这不得不归功于我们团队在世界一线的区块链项目(BTC, Ethereum)中长期积累,以及 Nervos 本身的卓越设计。

我们对以太坊的理解是全中国最深刻的

最初接触以太坊是在 2015 年底,当时以太坊横空出世,给了整个区块链社区一个方向,并吸引到了大量的像我们一样的开发者加入其中。我们创立了 Ethfans — 以太坊爱好者社区,之后 Ethfans 成了在国内事实上的第一以太坊技术社区。我们还帮助 Ethfans 孵化了星火矿池,现在星火矿池算力规模排到了世界前三。我们还组织了无数国内的技术 Meetup,参与并组织以太坊开发者大会,不胜枚举。

我们的首席架构师谢晗剑 (Jan Xie)之前在以太坊核心团队(Research Team)工作有两年之久,跟 Vitalik 一起做了 Casper -- 以太坊下一代核心协议早期研究和开发,并且一直是 pyethereum 和 ruby-ethereum 的主要维护者。而我则曾经以联合创始人兼 CTO 的身份,参与过 imToken 的第一版实现,而 imToken 是国内最流行的以太坊钱包。

可是以太坊的区块链应用真的爆发了么?其实并没有。大家都还在等,在等扩展方案落地,等处理速度和吞吐量可以支持真实的商业应用落地,等开发语言,环境,工具变得更安全,成熟。其实以太坊基础设施有太多问题需要解决:

性能扩展问题,以太坊通过两种方案解决扩展问题,但是他们都有各自的问题。
第一种是通过分片的方式,将基础设施的性能和吞吐量提升 10 倍,100 倍,甚至更高。这种试图在全球第二市值的系统上实现底层协议的大幅更替,从技术和社区方面都面临巨大的挑战,这不是在飞机的飞行当中更换引擎,而是在飞行的火箭上更换喷射器,必须小心翼翼,否则火箭会爆。
第二种是将交易从主链剥离,放到链外,即第二层扩展方案。第二层方案必须充分得到主链的支持,但是主链本身作为通用基础设施的一部分,从优先级上很难对二层方案给予最好最直接的支持,这是为什么雷电网络,状态通道,从论文提出到现在都已经五年过去了,已然难以实施普及。

安全相关的问题,我亲自经历了两次大规模的安全事件,一次是 TheDAO 攻击事件,另一次是 Parity 多签钱包导致大量的以太币和资产被冻结。两次安全事件先后给整个社区上了重要的一课,安全性问题被摆在了极高的位置,但是即使如此,整个开发社区仍然在需要等待更好更安全的编程范式和检测工具。

经济模型问题,以太坊用 Gas 限制你的合约单次执行的复杂度,本质上 Gas 是在计算时间维度上的度量,也就是计算量的度量,而 GasLimit 是一个区块上对可容纳的计算量总和,如果我们需要增加合约执行的复杂度,我们需要在出块时间尽量短,每个块可容纳的计算量尽可能高。假设我们已经进入了后性能扩展时代,扩展问题被解决之后,节点维护者将面对另外一个难题:状态数据量爆炸。这是一个无法逃避的问题,但是目前的扩展方案在针对这个问题是没有考虑的,即以太坊的经济模型缺乏对空间维度的考量。

治理问题,以太坊并没有采用线上治理或者协调机制,未来的治理机制会随着共识协议的更替而改变。但是目前我们所能观察到的以太坊主要依靠创始人和核心团队的影响力,以及有限的激励方式来激励核心开发者,换句话说,以太坊的每一次协议的演进正在变得越来越慢,在治理工具,协调和激励方面,我们应该鼓励更多的尝试。

对区块链的本质思考从未停止

为什么应用需要先把业务逻辑改造成去中心化模式,并通过智能合约实现,并且开发者需要掌握一门叫做 Solidity 的编程语言,才能实现应用上链?但是世界上大量在区块链这个词还没有被发明之前,就已经存在的中心化,半中心化的场景和应用,就已经被用户信任并且达成了局部的共识,为什么这些应用要花费很高的成本,并且牺牲性能为代价,将局部的共识变为全球的共识?

为什么需要全球所有的节点全部执行相同的计算并交叉验证,通过得到相同的结果,这样才能消除智能合约执行的不确定性,区块链的本质是以最低成本,高效建立全局的信任。但是随着共识规模的扩大,建立信任的交易成本,也就是说矿工费越来越贵,难道没有更好的建立信任的机制?或者对用户更友好的信任成本支付模型?

为什么所有希望实现下一代区块链基础设施的团队,大多选择了单点突破这个方向,比如更高效的共识算法,或者更好的分片机制作为切入点,在不牺牲安全性和去中心化的前提下,尽量将性能做到最优,而不去考虑从整体架构上实现整体突破?

为什么现有的第二层扩展方案,包括 state channel,Plasma,Truebit,Teechan 等,不论从理论研究到工程实现,都慢慢趋向成熟,无论从工程,还是可靠性方面,都要比扩展主链这个方向耗费的成本更低,耗时更少,但是依然很难得到在任何一条主链上的更好支持?

用技术改变世界,是我们的信仰

下一代的区块链应该是什么样子,这个问题我们想了整整两年,Nervos Network 的整体设计,就是我们的答案。我们已经正式对外发布了 Nervos CKB 白皮书,未来对经济模型的设计,共识算法的设计,以及其他核心组件的设计白皮书会陆续放出。既然我们已经想清楚了下一代区块链基础设施的,与其继续等待,不如我们自己来,我们过去交付过的成果可能比这个世界上任何的区块链团队都要多。我们要做的 Nervos Network 是:

是一组协议,而不是一个协议定义的网络
以 Common Knowledge Base 作为核心的信任基础设施,承载各种网络上的可信组件
为所有可信任组件之间的协同和互操作提供支持
围绕 Common Knowledge Base 设计的经济激励模型,兼顾了计算时间,空间的考量
分层设计的架构思想,在不同的层次为了不同的目标做取舍,兼顾性能,安全,以及去中心化特性
为所有第二层扩展方案充分优化,最大限度为第二层扩展方案提供安全性保障,状态验证,以及必要的时候提供仲裁

绝不让环境成为你追求卓越的障碍

在刚刚结束的北美之行,我们见了许多北美一线的机构,团队,讨论的话题自然包括我们双方怎么看中国的许多其他项目,在讨论过程中,有个词组是我们绕不开的,就是 “pump and down",意思就是项目没有实质,只是为了发币,然后炒作,这种类型的项目在中国数量不少。

其实要证明我们的项目和团队能力给一个不熟悉我们,不熟悉中国环境,甚至带有一点点偏见的投资机构是很不简单的事情。但是我们要证明的不仅仅是这些,在任何情况下,我们都有勇气选择自己的态度,选择自己的道路,我们要代表中国,做出可以代表中国的世界级区块链基础设施项目。

肯尼迪在 1961 年的总统就职典礼上的演讲,他向全人类展现的是未来的美好前景,探索太空,治愈绝症,消除贫困等等,大家在激动之余,会问这些真的都能实现么?最后肯尼迪说:问心无愧是我们唯一稳得的报酬。

白话解读NERVOS(二)链接:https://zhuanlan.zhihu.com/p/36233894

Nervos是面向分布式的区块链思维计算模型,底层设计上将区块链范式从“世界计算机”改变为“共识自动机”,链上存储共识结果,链外执行计算过程,从根本上解决了区块链的扩容问题。

现有的底层基础公有链已设计出多个公有链所用的扩容方案,如基于比特币延伸的闪电网络方案,又如基于以太坊拓展的雷电网络。当世界在发展进步时,无不因背后有优秀的先进技术在推动社会的发展与前进,区块链世界也如此,为什么Nervos 说能够从根本上解决区块链的扩容问题?文章陆续从Nervos 底层设计架构&内部运作做详细的解读。

Nervos的底层设计架构

Nervos 运用分布式思维 提出一种全新的分布式应用范式(分布式架构)
• Cell (分布式数据单元)
• Type (分布式数据单元的数据类型)
• Validator (验证程序)

• Generator (生成程序)

• Identity (身份验证程序)

五种元素组成组成Nervos CKB 范式

其中的General (暂且通俗翻译:通用管道)代替了UTXO的功能,与UTXO不同的是,计算进一步分化为生成(Generator)和验证(Validator)两个步骤。

Nervos ——为了更好的世界Nervos ——为了更好的世界

Nervos的General (暂且通俗翻译:通用管道)充当Trustware(信任件)作用,与Software(软件)、Hardware(硬件)对应,其中所适用场景与智能合约一致,但不完全等价于智能合约,可通过validator(验证程序)实现图灵完备的可编程性。

Nervos的底层设计架构内部运作

Nervos CKB 中的分布式应用,可以使用Type (分布式数据单元的数据类型)定义合适的数据结构,将应用数据存放在多个 Cells (分布式数据单元)中;应用的执行逻辑由Generator (生成程序)实现,状态验证逻辑 由 Validator (验证程序)实现;Generator(生成程序)在客户端运行,用户进行操作时生成新的应用状态,新状态被打包在交易中发送到全网;网络中的节点先验证交易发送者的身份,然后使用 Validator 对交易中新状态的有效性进行验证,验证通过后将新状态保存到CKB 中。

但Cell (分布式数据单元),Type (分布式数据单元的数据类型),Validator
(验证程序), Generator (生成程序),Identity (身份验证程序)运作关系如下图:

Nervos ——为了更好的世界

P1CS(第一阶段的多个数据单元的组合)是现有所有的状态空间(Cell列表),TX1234是一笔用户发起的交易,它选择该交易的依赖规则,在Deps Cell中,选择该交易将修改的Cell列表(Inputs),通过链外计算(Generator 生成程序)计算出新的Cells(outputs)/多个数据单元的输出。然后把它们一起发送到区块链上。

记账节点使用Validator对该交易进行验证,如果认证成功,则更新P1CS(即:删除Inputs的Cells,增加outputs中的cell),删除过后的Cells被保存在P2CS(第二阶段的多个数据单元的组合)中。记账节点记录所有的P1 P2(第一阶段&第二阶段),非记账全节点只需要记录所有的P1,轻节点则只需要对P1中自己感兴趣的部分Cell记录。不论是哪个类型的节点,他们在P2P网络上是等价的,均使用区块同步协议,也不存在地位上的区别。这一点也与以太坊的轻节点依赖全节点提供状态更新有区别。

从技术架构而言,Nervos将每对UTXO的交易输入及交易输出转变成,以链上客户端内存储Cell数据的状态的输入及输出为基础,链下用Generator(生成程序)计算共识过程,减轻链上存储负载,提升全网工作效率。

对话Nervos团队 https://xcong.com/articles/3377360

橙皮书:你会如何向一个小朋友解释“什么是区块链”?

Jan:区块链就是一块全世界都能看到的石头。它的特质是什么呢?你刻在石头上的字是不能改的,同时,全世界所有人都能看到这块石头和上面写的字。不可篡改和共识,区块链其实就这么简单。

橙皮书:全世界都能看到的石头,我们能用它来干嘛呢?

Jan:最直接的应用就是审计:无论你想做什么,先要求你在石头上刻一遍,让所有人看到。我们可以再叠加一层东西,叫“惩罚”。一旦你做的和你说的不一样,就要接受惩罚。过去,“惩罚”是通过社会机构和人力进行的,比如法院和警察。但在区块链上面,我们想把它自动化。

橙皮书:如果区块链是这块石头,Nervos 是什么?

Jan:Nervos 是刚才我提到的,围绕这块石头开发的那一整套系统

橙皮书:你之前写过一篇长文,把区块链称为“信任的引擎”,怎么理解这个概念?

Jan:在 Nervos 里面,我们把区块链当作最核心的一个点。为什么叫信任引擎?如果 Nervos 是一辆汽车,区块链就是发动机。它源源不断地把信任传输到其他组件上。引擎输出的是信任。

橙皮书:信任的传递具体是怎么实现的呢?

Jan:区块链核心的性质是一个密码学系统。它所有的数据都是通过密码学关联在一起的。

橙皮书:所以 Nervos 是把整*实社会的制度搬到了虚拟世界.

工业革命用机器代替人的体力劳动,区块链用机器来代替人的交易系统。

橙皮书:Nervos 跟其他公链相比,最大的不同是什么?

Terry:Nervos 有一个很重要的特点是“分层”。在区块链的设计里,大家都知道存在一个「不可能三角」——安全、去中心化、性能,这三者只能取其二。Nervos 的设计是用分层设计来解决不可能三角的问题。比如底层 Layer1 里,CKB 就选安全和去中心化,Layer2 选性能。Layer2 追求把性能做到极致,但是去中心化和安全由 CKB 来解决。

橙皮书:为什么分层这个看起来在计算机行业里是非常 make sense 的设计,在之前区块链行业里都没有人意识到这一点?至少在遇到 Nervos 之前,我看其他公链似乎没有人提及「分层」这样的想法。

Jan:我觉得是因为大家误解了中本聪,认为网络里的所有节点都是一样的。你仔细想想,这其实是反分工的,对吧?要求所有节点都是一样的,那当然节点是没有分化的,每个节点都要做所有的事情,又要挖矿、又要存交易,又要 relay、又要广播消息。

我觉得这种思想会束缚这个技术的发展。因为认为所有节点都是一样,所以所有东西都要堆在一起做。但是现在大家意识到这样不行。你去看中本聪说过的话,会发现中本聪并没有这个意思。他在回复别人的帖子时说,我觉得未来比特币的网络可能只有少数人在挖矿,然后其他人是通过 SPV 的协议,用轻节点去使用这个网络。这是为什么比特币的白皮书里面就是有轻节点的存在。轻节点和全节点是不一样的,中本聪本来就设计了两套东西。

共同知识是协作的基础,之前没有技术手段可以把大量的共同知识保存下来

橙皮书:如果要为 CKB 做一个具体解释的话,到底什么是 Commom Knowledge Base?

Terry:有人问过我一个问题说,为什么在区块链上存一条数据需要这么贵?我在自己的服务器上存一条数据甚至都不要钱。这个问题很基础,但我觉得很有意思。其实是因为你存的这条数据,是需要经过所有人达成共识的。换句话说,它是一条 Common Knowledge,大家都知道的共同知识。跟你存在自己电脑上、只有你自己承认的数据不一样。所以它一定是贵的。