您好!欢迎光临这里是三亿体育app网站下载,我们竭诚为您服务!
定制咨询热线+86 0000 88888
联系我们

三亿体育·(中国)官方网站-APP下载

邮 箱:admin@hzzxyy120.com
手 机:19976186592
电 话:+86 0000 88888
地 址:浙江省衢州市镇沅彝族哈尼族拉祜族自治县标工大楼275号

CKB 交易验证初探【3亿体育】

发布时间:2024-12-26 13:34人气:
本文摘要:我们都告诉 Nervos CKB 是一个以状态为中心的架构,并且用交易回应状态变更和迁入。

我们都告诉 Nervos CKB 是一个以状态为中心的架构,并且用交易回应状态变更和迁入。而且 Nervos CKB 获取基于 Cell Model 和 CKB VM 的编程模型。在这个模型中,去中心化的应用逻辑被分为两个部分:状态分解和状态检验。

状态分解逻辑在客户端运营,新的状态被包成交易,检验通过后广播到整个网络。非常简单来说 CKB 的编程模型分为如下三部分:· 状态分解:链下· 状态检验:CKB VM· 状态存储:Cell Model之前 CKB 开发者 luochao 给大家讲解了如何用最少见最简单的方法在 CKB 上建构交易——也就是状态分解。在本篇文章中,CKB 开发者 DingWei Zhang 和 luochao 将之后分别为大家介绍状态检验的研发细节:「CKB 交易检验的生命周期」和「CKB VM 检验规则」。CKB 交易检验生命周期RPC首先,发送到方会结构一笔交易,通过 RPC 递交。

交易由递交到的 outputs_validator (从 0.27.0 版本引进)展开检验。配置文件的检验逻辑还包括检查各种东西:transaction.outputs.all{ |output|let script = output.script(script.code_hash == secp256k1_blake160_sighash_allscript.hash_type == "type"script.args.size == 20) ||(script.code_hash == secp256k1_blake160_multisig_allscript.hash_type == "type"(script.args.size == 20 || (script.args.size == 28script.args[20..28].is_valid_since_format))}transaction.outputs.all{ |output|let script = output.typescript.is_null || script.code_hash == daoscript.hash_type == "type"|| (script.has_lock_period()since.is_absolute())}此检验目的避免格式不准确的交易,例如在 Common Gotchas 中提及的交易。https://github.com/nervosnetwork/ckb/wiki/Common-Gotchas#nervos-dao此外,可以将其配备为 passthrough 以跳过此检验。

交易递交到本地节点后,节点还不会输入交易 id,您可以用于该 id 追踪交易的状态。检验在广播交易并转入 mempool 之前,交易将在本地检验和继续执行。步骤 1——Resolve本质上,交易 input 只是指针,如下右图:struct OutPoint {tx_hash:Byte32,index: Uint32,}我们在交易继续执行之前通过指针搜集提到的数据,这个过程称作「解析交易」。

我们还必须检查这个交易的所有输出都是有效地的(没反复或双花)。步骤 2——检验检验步骤必须检查如下要素:1、版本(目前必需是 0)2、serialized_size 必需大于如下容许:pub fn serialized_size(self) - usize {// the offset in TransactionVec header is u32self.as_slice().len() + molecule::NUMBER_SIZE// molecule::NUMBER_SIZE = size_of::u32() 4}3、inputs 不是机的inputs().is_empty() || outputs().is_empty()4、inputs 是成熟期的对于每个 input 和 dep,如果提到的 output 交易是 cellbase,那么它必需最少经过 4 个 epoch 证实。

5、capacityinput capacity 的和必需大于或相等 output capacity6、duplicate_depsdeps 无法反复7、outputs_data_verifier「output data」字段的数量必需相等 outputs 的数量8、sincesince 值必需遵循 RFC:Transaction valid sincehttps://github.com/nervosnetwork/rfcs/blob/master/rfcs/0017-tx-valid-since/0017-tx-valid-since.mdCKB VM 将继续执行交易脚本,并输入所消耗的 cycles 个数。向网络广播如果检验顺利,当前节点将交易(具有 cycles 值)广播给它的所有对等节点(它所相连的节点)。在检验告终的情况下,将仍然广播交易。

交易流经各个「原始节点」,这些节点反复前面步骤中叙述的检验过程,并检查 cycle 值否与检验交易时用于的实际 cycle 相匹配。


本文关键词:三亿体育app网站下载,三亿体育官网入口,三亿体育网页版,3亿体育

本文来源:三亿体育app网站下载-www.hzzxyy120.com

+86 0000 88888