CKB 中主要使用的hash算法是 blake2b,下面我们通过一个 cell 的结构来说明 blake2b 的使用。
Cell相关的信息
上面的截图来自 ckb studio,图中的 Outpoint 和 address 字段不属于 cell,只是为了显示更多 cell 的信息。一个 cell 中包含四个字段:
- capacity:容量
- lock:表明了谁可以解锁/花费这个cell
- type:限制了cell的生成规则
- data:存放任意的数据
下面我们从截图中的字段一个个来看。
Outpoint
Outpoint 表示这个 cell 是在哪个交易中生成的,实际的结构是这样的:
OutPoint:{
txHash: 0x6e,
index: 0
}
其中的 txHash 长度为64,32字节/256位,使用的是 blake256(tx_hash_digest(tx)),tx_hash_digest 是一种序列化方式,把除了 witnesses 字段以外的所有字段连接起来并生成 binary 的形式,然后通过 blake256 哈希算法生成256位的交易哈希。
script hash
script hash 是指整个 lock script 的 hash,与交易 hash 类似,也是先将 script 中的字段系列化,然后进行 blake256:
blake256(serialize(script))
code hash
code hash 对应的是一段代码(为二进制数据)的 hash,ckb 默认使用
secp256k1 的签名算法,测试网部署在这里:https://explorer.nervos.org/aggron/transaction/0x6495cede8d500e4309218ae50bbcadb8f722f24cc7572dd2274f5876cb603e4e
args
args 中可以放任何的数据。对于 lock script 而言,默认会存放 public key的hash,使用的是
blake160。














网友评论