对于开发者来说,cell 编程模型无疑是 Nervos CKB 中最有趣的部分。在这里,我们先对 cell 模型作一个简短的描述: Cell 是通用版的 UTXO一个 cell 是一个包含任意数据和可定制脚本的 UTXO当一笔交易尝试销毁或创建一个 cell,cell 中的脚本将被加载并执行,在执行脚本中返回任何错误,都将导致交易失败。Cell 模型不同于账户模型: 验证而非计算将数据存储在单独的 cell中,而不是将数据存储在一个账户中当你比较两个模型时,你会发现还有许多其他的不同之处,如果你对该话题感兴趣,可以在talk.nervos.org上找到更多关于 cell 模型 VS 账户模型的讨论。 Cell 模型中缺失的那一块 UTXO 是一个非常棒的模型,cell 模型继承了它的灵活性。我们(通过 cell 模型)可以发行 UDT(用户自定义代币,类似于 ERC20),存储链上资产,玩石头剪刀布游戏,或者与比特币实现原子交换等。Cell 模型可以实现很多人们最初认为不可能实现的事情。
这些难题合约有一个共性,那就是需要共享状态。 再举个例子,我们来看一个众筹合约:
当然,解决这些问题并不难;我们可以通过支付链下角色一些费用来激励他们;使用某种挑战机或者零知识证明(zk proof)来验证收集的结果;定义一些协议来规定和链下角色的交互。我们总能解决这些问题。 一个合约管理一切 可不是嘛!我们可不想为每一个合约都整这么多东西,我们只需要构建一次:
你可能发现,这听起来像是最近非常流行的 rollup 的解决方法。是的,没错。但是我们关注的是聚合的问题,而非可扩展性的问题。Godwoken 提供了 CKB 基于账户模型的编程能力来解决聚合问题。 一些人将 Rollup 称之为 layer 1.5 层;也有一些人认为它是 layer 2 层;还有人认为它是 layer 1 层(根据信任级别)。本文将 Godwoken 称为 layer 1.5 层,以便将其与 layer 1 层的 CKB 区分开。 Godwoken 使用和原生 CKB 合约相同的技术栈。唯一的区别在于 Godwoken 合约是基于账户模型的;它将验证账户的状态而不是 cells 的状态。账户状态和 layer 1 层的 cells 之间的映射关系是由 Godwoken 的主合约处理的,对于 layer 1.5 层的合约来说,是透明的。
// pseudo codefn verify_voting(i, votes) -> bool { state[i] += votes; merkle_root(state) == output_account_root} 从上面的伪代码中,我们可以看到验证模型类似于 layer 1 层。
Godwoken 设计文档 https://github.com/jjyr/godwoken/blob/master/docs/design.md Sparsemerkle tree https://justjjy.com/An-optimized-compact-sparse-merkle-tree 本文来源:NervosNetwork —- 编译者/作者:NervosNetwork 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
Godwoken —— Cell 模型中缺失的那一块
2020-07-01 NervosNetwork 来源:火星财经
LOADING...
相关阅读:
- 【Nervos CKB 解读】去中心化的Nervos也能拥抱监管?分层架构最为关键2020-08-06
- 大佬来给你推荐一个价值项目:Nervos(漫画)2020-08-05
- 【教程】如何查看自己在CKB吧的贡献? || 谈如何更好参与区块链这场革命2020-08-05
- Nervos以色列国家电台采访英国矿工迪农·卡特,从挖币CKB到看好Nervos前景2020-08-02
- HBA公链 政策暖风吹来,国内公链们的春天来了?2020-08-01