资讯专栏INFORMATION COLUMN

Hello,CKB:构建加密经济网络的重要里程碑

fou7 / 651人阅读

摘要:年,包括分层的网络以及一个作为共同知识库的区块链,都已经成熟。是一个在设计上非常不同的公有链协议,也是网络中的基础层,是整个加密经济网络的信任引擎。主要指责是记录和更新本地累计工作量最高的链,并维护链上数据的索引。

说到“猿”起,这些心里的想法能追溯到 2016 年,甚至更早。2017 年,包括分层的网络以及一个作为共同知识库(Common Knowledge Base)的区块链,都已经成熟。因此 2018 年元旦一过秘猿科技的技术团队就迫不及待的行动了起来,聚集在一间小小的办公室,进行了 CKB 想法的第一次分享,第一次整理了开发计划,在 1 月 23 日写下了第一行代码。

从那时起到现在已经过去了 300 多个日日夜夜,经历了多个迭代和冲刺,CKB 的版本终于来到了 0.1.0。设计框架基本成型,包括共识、Cell 模型、虚拟机以及网络协议在内的组件都已经实现,开源的准备都已经完成。现在,我们终于可以说一句,Hello CKB!

我们朝着心中的加密经济网络迈进了历史性的一步!

秘猿科技区块链小课堂第 15 期

CKB 开源仓库

Nervos 网络是一个分层架构的分布式应用网络。CKB 是一个在设计上非常不同的公有链协议,也是 Nervos 网络中的基础层,是整个加密经济网络的信任引擎。CKB 从分层架构的角度出发,目标是成为资产存储层和上层协议的仲裁层。

CKB 的开源仓库如下:

https://github.com/nervosnetw... - CKB 主仓库
https://github.com/nervosnetw... - CKB 虚拟机仓库。CKB 虚拟机是我们专门为区块链设计的,使用 RISC-V 指令集[1],用来执行CKB上智能合约的虚拟机。

CKB 的编程模型由 Cell 模型和 CKB-VM 组成,在 CKB 上运行的 DApp 都有计算和验证两个部分[2],计算在链外运行,验证在链上由 CKB-VM 执行。由于这是一种新的编程模型,我们通过如下三个仓库提供了合约代码及 SDK 示例:

https://github.com/nervosnetw...
https://github.com/nervosnetw...
https://github.com/nervosnetw...

请注意,CKB 还在快速开发迭代中,这里只是提供简单的示例参考,CKB 的 API、编程模型和其它设计在未来都有可能发生变化。

作为一个开放的网络,Nervos 通过 RFC (Request for Comments) 流程来定义规范和改进协议。我们欢迎社区通过RFC流程来和我们一起推动 Nervos 网络的发展。Nervos RFCs 仓库位于:
https://github.com/nervosnetw...

CKB 特点

使用 Rust 作为主要开发语言 通过不同的功能模块实现一个紧凑,完整的区块链底层系统 基于 Cell 模型来扩展 UTXO

模型并支持存储通用状态 基于 Cell 模型和 CKB-VM 实现智能合约,合约计算验证分离,计算发生在链下,验证则在链上

支持智能合约的代码逻辑和状态分离 CKB-VM 使用 RISC-V 指令集,支持使用如 Ruby,Python 等高级语言来编写智能合约

使用 Flatbuffer 实现数据结构的序列化,无需解析直接访问序列化数据以及基于 Zero-copy 的高效内存使用效率

系统内部基于消息和 Channel 实现模块通讯机制,在高性能,以及底层存储访问和索引访问使用共享内存加锁实现 安全的 P2P

网络实现,具有更好的网络安全性,对 DoS 和日蚀攻击等有更好的抵抗性 更高效的节点间发现,同步协议

CKB P2P Network 示意图

CKB 主要模块

SRC 模块
存储了 Main 函数,是整个项目的编译入口模块。

CORE 模块
用于保存 CKB 的核心数据结构的定义,包括 Block,Cell,Transaction 等核心数据结构。

SPEC 模块
链的共识配置,该配置会写入创世块。不同配置的节点直接无法通信。

SHARED 模块
用于保存各个模块公用的逻辑和代码。

DB 模块
封装了底层的数据持久化层,CKB 底层存储使用的是 KV 数据存储,对应的实现有两种,一种是基于 RocksDB 的实现,利用 RocksDB 将数据持久化到磁盘。另外一种实现是基于内存的模拟持久化实现,主要用于测试和开发等场景。

CHAIN 模块
实现了区块链数据结构。使用 DB 模块进行持久化。Chain 主要指责是记录和更新本地累计工作量最高的链,并维护链上数据的索引。在更新链时需要进行验证,并同时更新索引。

POOL 模块
Pool 模块的主要功能是实现交易池,CKB 的 Pool 的特点是根据网络状况动态调整出块时间,这样会更合理的利用网络资源和带宽。交易池的设计和实现的最大挑战是要同时兼顾多个目标并取得平衡。包括考虑交易的排序,依赖关系,以及整体性能,尤其是降低节点之间需要同步的数据并且合理的使用缓存。

PROTOCOL 模块
用于存放节点间消息的结构定义,以及消息体的 Builder。消息使用 Flatbuffers 序列化。

NETWORK 模块
点对的通讯的底层实现相关代码,对 Rust-libp2p 进行了封装,并将一些基础协议通过服务的方式暴露出来。通过对 Libp2p 的抽象实现未来可定制的 Libp2p 更加方便。

SYNC 模块
实现了 CKB 的网络同步协议,包括两个协议,分别是 Synchronizer 协议和 Relayer 协议。Synchronizer 协议的工作方式是 Head-first,更高效的利用网络带宽提升区块下载效率,用于节点之间高速下载区块数据。Relayer 协议是节点之间用来处理广播和转发新的交易。Sync 模块在 Bitcoin 的 Head-first 同步,Compact Block 等协议的基础上,结合了交易提交区,叔伯快统计等功能。

CKB-VM 模块
CKB-VM 是一个独立的实现。从实现角度,CKB-VM 是 RISC-V 的硬件 CPU 指令集的实现,所有的实现完全遵循 RISC-V 的标准。所以可以将 CKB-VM 当作一个 General Sandbox Runtime Module,CKB-VM 在项目中的作用是验证状态和执行智能合约,让整个系统的计算层保持了最大限度的灵活性,如通过更新 Cell 中存储的系统合约可以实现添加新的加密算法或其他功能等,并且 CKB-VM 的 Sandbox 的隔离性设计为执行合约提供了强大的运行安全保障。

MINER 模块
通过可插拔实现了不同的共识算法替换,目前为了开发方便,实现了 CPU 和 Cuckoo 两套内置共识算法,并且可方便增加外部实现的共识算法,如 ProgPow 算法。

NOTIFY 模块
是一套用于内部模块之间消息通讯的 Pub/Sub 模块。

DEVTOOLS 模块
包含用 Ruby 实现的脚本,用于开发过程中方便向区块链发送测试数据。

代码阅读建议

阅读代码需要具备一些基础知识,比如对 Rust 语言和生态,以及一些基础的数据结构和算法熟悉,对区块链的基础概念如共识协议,智能合约等概念有一定的理解。

建议可以通过三条路径来阅读代码:
数据同步,这部分的逻辑跟网络相关,会涉及到网络协议,协议的实现等,主要看 Protocol,Network,Sync 三个模块。
数据存储,可以了解数据结构设计和数据持久化实现,主要看 Core,DB,Chain,Pool 等模块。
共识协议,需要对共识算法有一定的概念理解,主要看 Spec,PoW,Sync,Chain 等模块。

Nervos CKB 仍然处于非常活跃的开发阶段,代码还没有经过生产环境验证,功能,模块可能在未来还有较大调整,所以项目状态和说明请以 GitHub 上最新源码为准。

开发者链接

开发者论坛:talk.nervos.org
Nervos RFC 入口:t.me/nervos_rfcs
Nervos CKB Dev Telegram:t.me/nervos_ckb_dev

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/24728.html

相关文章

  • Nervos CKB 为了构建能够长久运行加密经济模型

    摘要:双管齐下的发行政策在基础发行结束之前,矿工的收入是这样基础发行二级发行手续费,与比特币有着类似的发行曲线。在前个减半周期中,网络会发出绝大部分的区块奖励,与比特币不同的是,当基础发行完全结束后,仍然有二级发行担任出块奖励的角色。 在 31/32 期秘猿科技小课堂中,我们从经济模型角度分析了现有区块链的问题,以及状态爆炸的问题。Nervos CKB 的经济模型为了解决现有问题,提出了创新...

    Tony 评论0 收藏0
  • 虚心向古典互联网学习,创造我们所向往加密经济网络

    摘要:自我保障协议与加密经济加密经济是区块链发展多年以后形成的全新经济体。根证书颁发机构为互联网创造信任,它们是整个互联网信任体系的引擎。的信任引擎区块链是创造信任的机器,是一个不依赖任何第三方的由算法和经济激励维护的的网络。 在上一篇中,我们畅想了区块链的未来。秘猿科技在行业内有着丰富的工程实践经验,在多年的实践中,我们不禁思考:区块链技术到底能用来干什么?区块链是要像以太坊一样成为世界计...

    zhkai 评论0 收藏0
  • 什么是区块链?

    摘要:对于什么是区块链,每个人都有自己的看法。不是将区块链技术神化,就是一味的宣传区块链无用论。如果网络是一辆汽车,区块链就是发动机。没有流动性就不是资产那么区块链首先将会颠覆游戏行业。 对于什么是区块链,每个人都有自己的看法。但是,如何通俗易懂的理清楚、说明白区块链到底是什么?真正能够做什么?恐怕少之又少。不是将区块链技术神化,就是一味的宣传区块链无用论。秘猿科技从事区块链基础技术与工具研...

    BigNerdCoding 评论0 收藏0
  • 经济模型角度看比特币和以太坊存在问题

    摘要:比特币和以太坊像两座最早出现的虚拟城市。下面我们先来分析比特币和以太坊这两个最大加密经济体的经济模型,我们经过研究发现它们在可持续性上都存在各自的问题。状态爆炸比特币与智能合约平台,都 公链的竞争是惨烈的,这个战场里的玩家要想生存下来,既要有绝活,还得没短板。在构建加密经济网络上,在技术实现和共识协议部分,我们为大家分享了CKB 的绝活,即: 与时俱进的 Cell 模型 用 RIS...

    thekingisalwaysluc 评论0 收藏0
  • 分层加密经济网络底层公链设计原则

    摘要:秘猿科技区块链小课堂第期的技术目标是设计一个分层的加密经济网络。换句话说,从分层的角度来看,现有的区块链设计方式都是过时的。 从分层的角度来看,现有的区块链在设计时考虑的是特定的功能(例如支付,或者是运行 DApp),并希望在运行一段时间后,让上层协议来适应自己。然而区块链并不天然是 Layer 1,Layer 1 是需要设计的。在分层的大框架下,上层协议和分层网络分别有着怎样的需求?...

    LMou 评论0 收藏0

发表评论

0条评论

fou7

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<