从比特币的 UTXO 出发,多走了一步
比特币的账本由一笔笔未花费输出(UTXO)构成:花钱就是销毁旧输出、开出新输出,没有“账户余额”这个被原地修改的对象。Nervos CKB 的 Cell 模型官方文档开宗明义:它继承比特币的架构,把 UTXO 泛化成状态存储——一切链上状态都存在名为 Cell 的容器里,计算放在链下完成,节点只负责验证。这一步泛化的意思是:UTXO 的输出内容原本只能放脚本和金额,Cell 里可以携带任意数据与类型信息,等于把“未花费输出”升级成了“可携带状态的通用盒子”。
Cell 不可变:更新等于销毁重开

官方文档强调 Cell 一经上链便不可更改。所谓更新状态,走的是一条“消耗—新建”的路径:一笔交易消耗掉旧 Cell,从里面取出数据、修改,再开出携带新数据的新 Cell。账本没有“回拨”这回事,所有历史都是已定格 Cell 的集合。这与账户模型“读出来改回去”的世界观截然不同:在 Cell 模型里查任何对象的过去,是在检索曾经存在过的 Cell,而不是回放一条修改日志。对程序而言,这意味着所有状态变更都必须经过交易的输入输出结构来表达,可验证性从共识层延伸到了数据层。
资产归用户,不归合约
Cell 模型里有一个对用户影响很大的设计:官方文档把资产称为一等公民——无论代币规则由哪个合约定义,资产的所有权都在用户手里,而不是锁在某个合约账户内。合约可以规定转移条件,但不能“持有”你的资产;文档据此推论,合约被攻击时攻击者无法顺着合约摸到用户资产,因为资产根本不在合约名下。当然这挡的是“合约被盗连坐”这一类风险,签名被诱导、条件被设局仍然照单全收,所有权模型不等于交易安全。
状态要交租金,手续费可以代付
状态占用链上空间,官方文档说明资产所有者要为持续占用支付一小笔维护费用,即状态租金(state rent),具体规则由该链的代币经济部分定义,本文不引用具体数额以免过时。另一个少见的灵活性是手续费来源:发起交易或执行操作的人不必亲手支付网络费用,接收方或第三方都可以代付,这也是各类“免 gas 体验”在机制层最容易实现的一类链。两者合起来传递的是同一种哲学——链上空间是稀缺资源,谁受益谁负担,但负担由谁出钱包付款是另一回事。落实到操作层面:转账时看到的“占用费”不是给矿工的小费,而是给状态空间的押金性质支出;余额里有一部分可能被规则锁定用于覆盖占用成本,钱包显示的总额与可动用额之差,在这类链上有了明确的机制解释。
链下算、链上验
Cell 模型把计算与验证拆开:新数据在链下算好,随交易提交,全节点只执行验证。官方文档同时指出验证可并行——每笔交易在各自的虚拟机里独立校验,多核机器天然吃满。这与“整条链按同一顺序重放执行”的账户模型路线形成对照:并行度来自验证互不依赖,代价是应用要把“哪些输入被谁消耗”显式表达清楚。用户视角下的核对方式也随之不同:查一笔资产,看的是它当前所在的 Cell 及其锁定脚本;查历史,则是在检索被消耗掉的 Cell 集合。模型没有绝对优劣,关键差异在于状态表达与验证结构,评估任何一条此类链,都应从 Cell 结构、脚本能力与租金规则三处入手,而不是照搬 EVM 链的对比表。
本文为机制说明,不构成投资建议;Cell 结构与费用规则以 Nervos CKB 官方文档为准。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。