值得信赖的区块链资讯!
全面了解Nervos CKB的版本控制与区块链演进
我是 Linus 的粉丝。他创造了一个随处可见的开源操作系统,与人合著了一本我非常喜欢的书,还建立了一个几乎每个开发者每天都在使用的分布式版本控制系统。
我在见到 Git 的那一刻就开始用上了 Git,并被它的速度和优雅所吸引。开发者用版本控制系统[1]来管理源代码,这样他们就可以随时掌握代码的更新情况,与朋友和同事共享修改,在出现新错误时回滚到之前没有 bug 的版本等等。Git 让生活变得更加有趣,我希望 CKB 也可以做到这一点。
CKB 是 Git
我们在创建 CKB 和 Cell 模型的过程受到了 Git 的启发。Git 的出现是出于 Linus 对 Linux 内核开发方便的渴望,人们无论何时想要组织一些东西,从注释到博客文章,到图片,都可以使用它。它是一个具有极好历史跟踪功能支持的知识库。
Git 知识库被称为「存储库(repository)」,在内部维护着一个不可变的只可追加的对象数据库(想起来了吗?)。Git 中的基本存储单元是 Blob(二进制大对象),它是一个包含人们存储在存储库中数据的对象,就像 CKB 中的一个 Cell 一样。Git 会为每个文件的每个版本都创建一个 blob 对象。每当创建一个新文件时,都将创建一个新的 blob。每当修改现有文件时,都要创建一个具有新内容的 blob,而不需要修改旧的 blob(是不是听起来很熟悉?)。每个 blob 都会被哈希,并且该 blob 哈希会被用作引用 blob 的标识符。工作了几个小时之后,您创建了一些新文件并修改了一些现有文件,然后将所有更改提交到存储库中,将新的提交同步给同事们,便收工了。
一个提交是 Git 中的基本历史点,存储库历史由一系列提交组成,这些提交包括从存储库的起源到最近的更新。提交是某个特定时间的存储库版本,包括版本元数据,如作者、时间戳、上一个提交和对 blob tree 的引用。就像区块头通过写下矿机地址、时间戳、父块哈希和交易 merkle tree 的根来为区块链的每次更新保存元数据一样。您和您的同事们通过扩展 git 存储库的历史来获得报酬,就像矿工通过扩展区块的历史来获得区块奖励一样。
Git 存储库也可以有 Fork。人们在不同的分支上工作,但是哪个分支是「正确的」是由存储库维护者决定的,而不是通过共识。Git 是一个没有共识的分布式系统,依赖于特殊的点对点通信(如 ssh 或电子邮件)进行数据交换。
Git 和区块链之间有着相似之处,这也意味着我们应该更谨慎地将 Git 的想法融入到区块链中,而不应该将相互冲突的设计选择引入到区块链中,这样区块链或智能合约开发者就可以享受到 Git 的一些已被证明的优点。这就是 CKB 内在的真实样子:一个拥有真正的 p2p 网络、全球共识和增强 blob 的唯一大型 Git 库,由一群匿名者不断进行更新。

这不是一个区块链
按照你喜欢的方式给 Cell 命名
Git 和 CKB 的核心都是数据对象(blob/cell)和哈希引用。哈希引用是一个对象的固有名称,是你可以挥舞的魔杖,提取出数据的价值。如果你知道一个对象的名字,你就可以通过引用它,从而获得它的力量。在 CKB 上,智能合约的代码和用户数据是分离的,所以哈希引用可以让你直接命名一段代码或用户数据,让它们成为系统中的一级对象[2]。这种精细的颗粒度创造了一个灵活而强大的编程模式。下面是一些例子。
重用代码/数据
因为 cell 是可引用的存储单元,所以在 CKB 上重用代码/数据很容易。假设在 cell 0xbeef#1(交易 0xbeef 的输出 1)中存储了一些共享代码/数据,要重用它,首先需要加载 cell 0xbeef#1 作为交易依赖项(cell_deps),然后使用 ckb_load_cell_data 系统调用从它那里读取数据,如默认的锁定脚本所示。一旦将 cell 0xbeef#1 中的数据加载到 VM 内存中,那么就可以根据您的需要[3],将其视为代码或数据使用。通过这种方式,CKB 就类似于一个代码和数据共享库,供运行在上面的智能合约使用。如果我们能通过组合现有的安全乐高积木来构建一个智能合约[4],是不是很酷?而不需要从 GitHub 上的某个地方复制代码,并且一次又一次地部署相同的代码,这既浪费了时间,也浪费了链上的空间。一项对以太坊合约[5][6]的分析中表明,95%~99%的合约都是重复的。

Ethereum 上重复最多的智能合约
无惧依赖删除
在上面的代码/数据重用例子中,你不需要担心有人修改存储在依赖 cell 中的代码/数据,因为 cell 是不可变的,也就是说,没有人有办法修改它。但是如果依赖 cell 的所有者直接将其从 CKB 中删除呢?那会不会让我的智能合约无法使用呢?
在 Ethereum 上的确是这样的。如果你在这个领域待的时间足够长,你可能会知道 2017 年关于 2.8 亿美元的意外事故[7]。整个悲剧是由 Ethereum 上一个智能合约的意外删除引发的,这个合约被许多其他智能合约使用。这次删除导致所有依赖它的智能合约都功能失调,所有存储在这些智能合约中的资产都被冻结。
而在 CKB 上,这样的意外并不会造成什么影响,因为任何保存代码副本的人(例如那些运行全节点或复杂的轻客户端)都可以在链上再次部署相同的代码,代码哈希的引用仍然有效。我们只需使用新的依赖 cell 来构造交易即可。没有人会因此受到损失,一切都仍将正常运转。

从依赖删除中恢复
实际上,我们甚至可以有意地利用这一点来实现代码的「先使用后部署」。假设您想使用一个新的自定义锁定脚本(智能合约)来保护你的 cell。与通常的先部署后使用流程不同,您可以在不进行部署的情况下使用它。只需要将新的锁定脚本(代码实现)的代码哈希放入 cell lock(代码使用)中,那么这些 cell 就会被新的 lock 保护,且立即生效。
实际锁定脚本代码的部署可以延迟到您想要解锁这些 cell 之时。如果想要解锁,首先需要在链上部署脚本代码,然后像往常一样发送另一个交易来解锁这些 cell。在 cell 被解锁之后,您可以删除部署的代码并索回被占用的 CKByte,以减少不必要的存储成本。先使用后部署的额外好处是更好的隐私性:在你解锁之前,没有人知道这个新锁的逻辑是什么。
进化的 CKB
在了解了 CKB 和 Git 之间的相似性及其优点之后,我们来探讨一个更有趣的问题:如果 CKB 是一个 git 库,我们可以用 CKB 来管理 CKB 的代码吗?
是的!这就是为什么一些 CKB 核心功能,如交易签名验证[8]和 Nervos DAO[9]都是以智能合约形式实现的原因。以交易签名验证为例——这是几乎所有区块链的核心功能,并且是用原生语言硬编码的(比如比特币中用 C 语言编写,go-ethereum 中用 Go 语言编写)。
为了升级区块链,人们必须在大多数节点上分发和部署新的软件版本(软/硬分叉),这需要大量的协调工作。对于 CKB 来说,交易签名验证可以和其它智能合约一样,通过在链上部署新版本来进行升级。这让 CKB 具备了 Tezos[10]提出的长期可升级性。
我们还可以做到更好。在 CKB 上,每个用户都拥有自己的数据,所以一份合约更像是用户和 CKB 之间的两方协议,个人可以做出独立的选择。如果你通过代码哈希[11]来使用合约,这意味着「我同意了这个特定版本的合约」。你不必担心有一天开发者会升级合约代码,因为新合约的代码哈希是不一样的,你的 lock/type 仍然会引用旧的合约而不是新的合约。新版本部署后,会与系统中的旧版本共存。如果您通过其代码哈希使用系统合约,那么新版本对您不会造成影响,您可以自主决定是否升级。如果答案是 yes,那么你可以更新所有 cell 以使用新版本。如果是 no,则什么都不需要做,继续使用旧版本。
这对那些可能不经常在线的持有者来说是一个友好的保证,因为他们可以保证在创建时附加在他们 cell 上的合约不会被更改。人们的资产将始终按照他们锁定时指定的方式进行锁定。这是对 SoV 用户的终极保证,也是 CKB 资产不同于其它区块链上资产的原因。这和比特币通过「只遵循软分叉」的方式来为持有者提供保障是一样的。唯一的缺点是,当进行安全升级时,您需要承担「太晚」的风险。因此,为了方便起见,有些人可能还是喜欢一直使用最新的版本,因为他们相信开发团队,不需要操心去审核合约和手动升级,在这种情况下,他们会使用 type id[12]来引用合约。大致来说,type id 就类似于 Git 中的 HEAD,一个可更新的引用总是指向当前的版本。通过提供这两种选项(通过代码哈希引用和 type id 引用)我们将选择合适升级策略的权利还给了用户。有选择总是好的。我们可以有不同的选择,没有人会被强迫升级。

系统脚本升级
从长远来看,CKB 将越来越抽象化、模块化,更多的核心功能将会在链上智能合约中被提取和实现。在其完整的形态下,我们应该可以无需通过软/硬分叉就能升级 CKB。这其中缺失的一环是,我们,即社区如何决定升级系统合约与否,或者说 CKB 的治理模式是什么?更准确地说,是我们如何决定升级一个系统合约的 type id。
今天,CKB 使用的是和比特币一样的链下治理模式,我们仍然依赖于软/硬分叉。为了让使用其 type id 引用的人启用新版本的系统脚本,需要硬分叉来更新 type id 引用以指向最新版本,因为代码 cell 是被一个可解锁的 lock 锁定(https://explorer.nervos.org/address/ckb1qgqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqhzeqga
检查一下它的代码哈希)。不使用核心团队控制的多签签名锁是一个有意的选择,因为系统脚本的升级应该遵循社区制定的治理决策。
正如我们在定位白皮书中所说的那样,虽然目前有很多有趣的建议,但我们还没有看到一个切实可行的治理模式。一旦我们找到了合适的治理模式,我们就可以用「治理锁」来代替不可解锁的锁,让系统智能合约在征得社区同意的情况下进行升级,比如投票的结果。在此之前,我们会暂时坚持不完善的链下治理模式,但 CKB 治理和演进的脊梁已经存在。
Ref:
[1]:https://en.wikipedia.org/wiki/Version_control
[2]:https://talk.nervos.org/t/first-class-asset/405
[3]:https://github.com/nervosnetwork/ckb-system-scripts/blob/master/c/secp256k1_helper.h#L40-L66
[4]:https://talk.nervos.org/t/rfc-swappable-signature-verification-protocol-spec/4802
[5]:https://www.researchgate.net/publication/332799463_Characterizing_Code_Clones_in_the_Ethereum_Smart_Contract_Ecosystem
[6]:https://security.cse.iitk.ac.in/sites/default/files/17111011.pdf
[7]:https://medium.com/hackernoon/what-caused-the-latest-100-million-ethereum-bug-and-a-detection-tool-for-similar-bugs-7b80f8ab7279
[8]:https://github.com/nervosnetwork/ckb-system-scripts/blob/master/c/secp256k1_blake160_sighash_all.c
[9]:https://github.com/nervosnetwork/ckb-system-scripts/blob/master/c/dao.c
[10]:https://tezos.com/
[11]:https://github.com/nervosnetwork/rfcs/blob/master/rfcs/0022-transaction-structure/0022-transaction-structure.md#upgradable-script
[12]:https://docs.ckb.dev/blog/ckbscript-06
来源:Nervos 中文社区
比推快讯
更多 >>- 因 Bithumb 乌龙空投事件,韩国多家银行对 CEX 实名账户续约持审慎态度
- 木头姐:AI 热潮带来良性通缩,市场正处于泡沫的另一面
- Yzi Labs 投资伙伴指责 CEA Industries:恶意拖延股东大会,已危及上市地位
- 某交易员持续滚仓做空 LIT,对应空单已浮盈 317 万美元
- 中国上海一投资者投入 105 万元投资虚拟货币,遭遇平台无法提现后诉至法院求偿,法院驳回其诉求
- 韩国警方丢失自 2021 年起扣押并存放于冷钱包中的比特币
- 现货白银日内大涨 5.00%,现报 79.04 美元/盎司
- 以太坊周交易笔数创历史新高,同时中位数手续费降至历史最低水平
- 预告:美国 1 月 CPI 数据将于今日 21:30 公布
- Polymarket 将手续费扩展至体育市场,2 月 18 日起将对 NCAA 和意甲事件收费
- Gate 在 Consensus HK 三日连线全球生态,Dr. Han 主题演讲深化合作共识
- 昨日美国现货比特币 ETF 净流出 4.102 亿美元,连续两日大额净流出
- 某巨鲸再向 CEX 存入 2,535 枚 BTC,过去 3 日累计存入超 1 万枚 BTC
- 数据:ETH 当前全网 8 小时平均资金费率为 0.0012%
- 交易员 PuzzleTricker 投注巴塞罗那赢得国王杯,单次“爆赚”212 万美元
- 麻吉以太坊多单持仓仅剩 261 枚,过去 1 周亏损超 76 万美元
- 比特币提币延续,过去 24 小时 CEX 净流出 1,838.56 枚 BTC
- Hyperliquid BTC 空头规模 TOP3 地址已浮盈 243.4 万美元,持有 278.76 枚 BTC 的 40 倍空单
- 币安研究院:比特币从峰值回落 50% 属“温和调整”,市场成熟伴随波动性降低
- 数据:监测到 3,000 万 USDT 转出 Binance
- CPI 前瞻:经济学家称 CPI 数据每年 1 月都超出预期
- 摩根大通:建议战术性做空 2 年期美债,称沃什上任后难推激进降息
- 若比特币跌破 6.4 万美元,主流 CEX 累计多单清算强度将达 8.98 亿
- 美国 1 月 CPI 预计上涨至 2.5%,降息空间打开
- 数据:某巨鲸将 480 万枚 USDC 存入 HyperLiquid,并开立 20 倍杠杆 ETH 空单
- 分析:1 月 CPI 料延续降温趋势,美联储短期内或仍按兵不动
- Gate 创始人 Dr. Han:融合 CEX、DEX 与 AI ,打造综合型 Web3 平台
- 斯图加特证券交易平台计划将其加密部门与交易公司 Tradias 合并
- Matrixport:价格跌破关键水平,市场已进入熊市确认阶段
- 当前主流 CEX、DEX 资金费率显示看跌态势有所减弱
- DASH 最大空头单币浮盈逾 510 万美元
- 慢雾,虚假招聘活动利用远程访问木马攻击加密开发人员
- IREN 将自 2 月 27 日美股收盘后起被纳入 MSCI 美国指数
- 数据:BTC 期货总持仓量降至 340 亿美元,创 2024 年 11 月以来新低
- Polymarket 上预测比特币今年跌至 5 万美元概率升至 66%
- 比特币改进提案 BIP-360 已合并至官方代码库中,以提升抗量子攻击能力
- CZ 辟谣:未通过对冲用户仓位获利,且从未在 BitMex 上进行过交易
- 分析:比特币现拐点信号,但底部尚未明确
- UPBIT 将下架 Loopring (LRC) 相关交易对
- 《金融时报》:特朗普准备取消对金属和铝征收的关税
- 不丹政府再次出售价值 670 万美元的 BTC
- 数据:当前加密恐慌贪婪指数为 8,处于极度恐慌状态
- 数据:192.96 枚 BTC 从匿名地址转入 Wintermute,价值约 877 万美元
- Meme 币 AntiHunter 短时拉涨超 35%,市值回升至 800 万美元
- 彭博社:渣打银行发出警告后,比特币在亚盘时段企稳
- Aave 新提案激发社区乐观预期,看涨币价同时多方呼吁拆分投票、强化透明审计
- Tether 推出链上黄金新计量单位 Scudo,与千分之一盎司等价
- OnGreen 携手 BlueRock Capital 拓展 RWA 绿色前沿:从香港 Consensus 大会到中东及北非地区扩张
- 比特币七日平均已实现净亏损达到 23 亿美元,创自 2021 年以来最大跌幅
- 大宗交易员以 2350 万规模做多美股科技板块,主要持仓为近日大涨的美光科技
比推专栏
更多 >>- Happy new year【Horse success】|0213Asian
- Was it finished?|0206 Asian
- 围猎以太坊多头:「巨鲸」们暴亏 70 亿美元,正被集体围观
- Challenge,risk And chances|0130 Asian
- Meta 豪赌 AI:砸钱 1350 亿美元,2026 的扎克伯格,值得相信么?
- Variables: Terrible snowstorm|0128 Asian
- 英特尔「生死线」时刻:在 ICU 门前,陈立武如何清算遗产并开启自救?
- 從1月13號到今天,提前到5100|0126Asian
- You Should work HARDER in 2026|0120 Asian
- 硅谷最聪明那群人的「终极推演」:2026,我们应该「All-In」什么?
观点
比推热门文章
- 木头姐:AI 热潮带来良性通缩,市场正处于泡沫的另一面
- Yzi Labs 投资伙伴指责 CEA Industries:恶意拖延股东大会,已危及上市地位
- 某交易员持续滚仓做空 LIT,对应空单已浮盈 317 万美元
- 中国上海一投资者投入 105 万元投资虚拟货币,遭遇平台无法提现后诉至法院求偿,法院驳回其诉求
- 韩国警方丢失自 2021 年起扣押并存放于冷钱包中的比特币
- 现货白银日内大涨 5.00%,现报 79.04 美元/盎司
- 以太坊周交易笔数创历史新高,同时中位数手续费降至历史最低水平
- 预告:美国 1 月 CPI 数据将于今日 21:30 公布
- Polymarket 将手续费扩展至体育市场,2 月 18 日起将对 NCAA 和意甲事件收费
- Gate 在 Consensus HK 三日连线全球生态,Dr. Han 主题演讲深化合作共识
比推 APP



