新闻中心

9博体育app官网入口|CKB 的交易结构

2024-10-24
浏览次数:447
返回列表
本文摘要:在本篇文章中,让我们和 CKB 开发者 Ian 一起了解探究 CKB 基本的数据结构——交易。

在本篇文章中,让我们和 CKB 开发者 Ian 一起了解探究 CKB 基本的数据结构——交易。这篇文章分为两个部分。

第一个部分包括了核心的交易特征,而第二部分讲解一些拓展内容。在编写本文时,对应的 CKB 版本是 v0.25.0,在未来的版本中交易结构还有可能有所变动。

您可以页面读者原文,查阅近期版本。右图是关于交易结构的概览。

大同小异逐字逐句的说明各个名词,我将不会讲解 CKB 账户需要获取的各种类似结构,以及这些名词在其中的明确意思。Part I:核心特征价值储存CKB 使用的是 UTXO 模型。

一笔交易封存了一些在先前交易下创立的输入(作为输出),并且创立一些新的输入,我们在 CKB 中将此交易输入称作一个 Cell。因此在这里的 Cell 和交易输入是可以更换的。右图表明了在此层中不会经常出现的专有名词。

此交易封存了 inputs 中的 Cell,同时创立了在 outputs 中的 Cell。CKB 主链将交易包成块。

我们可以在区块中利用从零(也就是创世纪区块)开始递减的非负整数(编号),作为区块编号来关联链上的区块。在区块中的交易也是按照顺序排列的。我们可以说道编号较小的区块是较早于(old)的区块,如果一个交易在较早于的区块上,或者它所在的区块的方位早于于其它区块,那么它也不会是较为早于的交易。

在下面的示例中,区块 i 比区块 i+1 早于。交易 tx1 要比 tx2 早于,也比 tx3 早于。在所有先前的交易中,一个能用(Live)的 Cell 不会以输入而非输出的形式经常出现。一个被封存(Dead)的 Cell 代表它是以输出的形式在其它较早于的交易中被用于过。

一个交易不能以能用的 Cell 作为输出。我们可以从除了 witnesses 之外的所有交易字段计算出来交易的哈希。

关于如何计算出来交易哈希的更好信息,可以参看序言 A。交易哈希是独一无二的。因为一个 Cell 总是被一个交易创立出来,而每个新的 Cell 在交易输入的数组中都有他自己的方位,所以我们可以通过交易哈希以及输入索引去指向一个 Cell。OutPoint 结构是一种提到类型。

交易在输出时会用于 OutPoint 来指向先前被创立的 Cell,而非映射其中。Cell 将 CKB 代币存储在字段 capacity 中。一个交易不需要凭空铸 capacity,所以交易终将合乎以下规则:sum(cell's capacity for each cell in inputs)≥ sum(cell's capacity for each cell in outputs)在输出中每个 Cell 容量的总和要小于相等在输入中每个 Cell 容量的总和。矿工可以缴纳这两者之间的价差当作手续费。

fee = sum(cell's capacity for each cell in inputs)- sum(cell's capacity for each cell in outputs)如果你熟知比特币,那么就不会找到在价值储存层都是相近的,但是比特币缺少瞄准脚本来维护交易输入的所有权。CKB 正好有这个特征,但是在我们探究这个话题之前,让我们再行来谈谈 Cell Data 和 Code Locating 层吧,这是任何 CKB 中脚本特征的依据。Cell Data除了需要存储价值通证以外,CKB Cell 还能储存给定数据。

字段 outputs_data 是输入的分段数组。在 outputs 中第 i 个 Cell 的数据对应的是 outputs_data 中的第 i 项。Cell 中的 capacity 不只代表通证的数量,也代表需要存储数据的容许。

这也是它如此命名的原因,因为它代表 Cell 的存储容量。capacity 不仅能用作存储数据,它还必须涵括 Cell 中的所有字段,还包括 data、 lock、type 以及 capacity 本身。计算出来闲置容量的规范请求参照:https://github.com/nervosnetwork/ckb/wiki/Occupied-Capacity交易势必会创立一个闲置容量大于(输出) Cell 容量的输入 Cell。

occupied(cell) ≤ cell's capacity代码定位Cell 中有两个字段的类型是 Script。CKB-VM 不会运营所有输出 Cell 中的 lock 脚本,还不会运营所有输出和输入 Cell 中的 type 脚本。

我们区分了代码和脚本这两种术语:· 脚本具备脚本结构· 代码是 RISC-V (可运营的)二进制· 一个代码 Cell 是其数据为代码的 Cell脚本并没必要包括代码。想到下面的脚本结构。现在我们可以忽视哈希类型的 Type 以及 args 字段。


本文关键词:9博体育app官网入口,9博体育app在线登录入口,九博体育官网,9博体育app

本文来源:9博体育app官网入口-www.wangziwei.com

搜索