http://www.7klian.com

CKB 的生意业务布局

· 建构一个剧本布局,其 hash_type 是「数据」,code_hash 只是构建二进制文件的哈希
下面两个章节我们将接头剧本如安在生意业务顶用于锁定 Cell,以及如何成立 Cell 上的合约。
其他字段
G1 是将 type id 从 cell1 转移到 cell4 的 Type ID Transfer Group

Cell 中的 capacity 不但代表通证的数量,也代表可以或许存储数据的限制。这也是它如此定名的原因,因为它代表 Cell 的存储容量。
load_header(…, 0, CKB_SOURCE_INPUT);

字段 outputs_data 是输出的并行数组。在 outputs 中第 i 个 Cell 的数据对应的是 outputs_data 中的第 i 项。

Type ID Deletion Group 只有一个输入

除了可以或许存储代价通证以外,CKB Cell 还能储存任意数据。

ckb_load_script(addr, len, offset)
CKB 利用 blake2b 作为默认的哈希演算法。我们用 blake256 来暗示一个函数,用小我私家的「ckb-default-hash」来获取 blake2b 哈希的前 256 位。
load_header(…, 1, CKB_SOURCE_HEADER_DEP);

Header Deps 答允剧本去读取其哈希已经列在 header_deps 中的区块头。尚有另一个先决条件,是生意业务只能在所有列在 header_deps 的区块都已经在链上时(叔块除外),才可以被添加到链上。
Cell Data

Dep group 会在定位和运行节点之前被扩展,只有被扩展的 cell_deps 才是可见的。

Dep Group 是一个绑缚很多 Cell 作为其成员的 Cell。当一个 dep group 的 Cell 在 cell_deps 中被利用时,它的结果和添加全部的成员到 cell_deps 中是一样的。
这个签名演算法有两个要求:

上图的生意业务中有三种生意业务 ID 群组
occupied(cell) ≤ cell’s capacity
因为被范例剧本哈希引用的代码是可以被改变的,所以你必需信任剧本作者利用的这种范例剧本。固然利用哪个版本取决于哪一个 Cell 在 dep_cells 的生意业务中被添加。用户老是可以在签署生意业务之前查抄代码。可是,假如剧本用于解锁 Cell,那么签名查抄甚至是可以被略过的。
https://github.com/nervosnetwork/rfcs/blob/master/rfcs/0017-tx-valid-since/0017-tx-valid-since.md
· Type ID 的代码一样有范例剧本。我们此刻不会在意实际的内容,让我们假设范例剧本的哈希是 T1
字段 since 可以制止生意业务在特按时间前被挖出。详见 since RFC。
1. 没有范例剧本的 Cell 会被忽略
第二种载入区块头的要领有另一个长处是,剧本会知道 Cell 位于被载入的区块中。DAO 取出生意业务借此来获取存储容量的区块号。

在所有先前的生意业务中,一个可用(Live)的 Cell 会以输出而非输入的形式呈现。一个被销毁(Dead)的 Cell 代表它是以输入的形式在其它较早的生意业务中被利用过。一个生意业务只能以可用的 Cell 作为输入。

这篇文章分成两个部门。第一个部门包括了焦点的生意业务特征,而第二部门先容一些扩展内容。在撰写本文时,对应的 CKB 版本是 v0.25.0,在将来的版本中生意业务布局还大概有所变换。您可以点击阅读原文,查察最新版本。

在输入上运行范例剧本对合约而言很是重要;譬喻一个让用户可以在线下抵押 CKB 来租用资产的合约,假如这个范例剧本不在输入上运行,用户可以在没有权限的环境下从合约中取回 CKB,只需销毁这个 Cell 并将容量转移到一个没有范例剧本的新 Cell 上即可。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

相关文章阅读