如何查询CKB链上已部署的Omnilock脚本代码及代码哈希?
在CKB区块链查询已部署脚本(以Omnilock为例)及代码哈希的方法
一、获取Omnilock的代码哈希
方式1:直接使用公开标准代码哈希
Omnilock作为CKB生态常用多签脚本,主网标准代码哈希为:0x9bd7e06f3ecf4be0f2fcd2188b23f1b9fcc88e5d4b65a8637b17723bbda3cce8。若需验证,可通过以下方式自行生成。
方式2:本地编译生成代码哈希
- 获取Omnilock源代码后,用CKB编译工具链生成兼容二进制文件:
ckb-build --release - 用CKB命令行工具计算二进制的blake2b哈希,得到代码哈希:
ckb-cli blake2b --binary target/riscv64imac-unknown-none-elf/release/omnilock
二、通过代码哈希查询已部署的脚本代码
方法1:CKB节点RPC查询
- 确保已连接到CKB主网/测试网节点(本地启动或使用可访问的节点服务)。
- 调用
get_cellsRPC接口,过滤匹配目标代码哈希的type脚本cell:curl -X POST http://localhost:8114 -H "Content-Type: application/json" -d '{ "jsonrpc": "2.0", "method": "get_cells", "params": [ { "script": { "code_hash": "0x9bd7e06f3ecf4be0f2fcd2188b23f1b9fcc88e5d4b65a8637b17723bbda3cce8", "hash_type": "data", "args": "" }, "script_type": "type" }, "asc", "0x100" ] }' - 返回结果中,cell的
data字段即为Omnilock的脚本二进制代码。
方法2:CKB命令行工具(ckb-cli)查询
- 配置ckb-cli连接到目标节点:
ckb-cli config set rpc_url http://localhost:8114 - 执行查询命令获取包含脚本代码的cell:
ckb-cli cell get-cells --type-script-code-hash 0x9bd7e06f3ecf4be0f2fcd2188b23f1b9fcc88e5d4b65a8637b17723bbda3cce8 --type-script-hash-type data --limit 1 - 提取结果中的
data值,可保存为二进制文件用于后续验证或分析。
三、验证脚本代码的有效性
- 对查询到的二进制代码重新计算blake2b哈希,确认与目标代码哈希完全一致,确保脚本未被篡改:
echo -n "<查询到的data值>" | xxd -r -p > omnilock-query.bin ckb-cli blake2b --binary omnilock-query.bin - 若持有Omnilock源码,可将本地编译的二进制与查询到的二进制对比,完全匹配则说明脚本代码正确。
内容的提问来源于stack exchange,提问作者Michael.Andromeda
相关产品推荐
相关产品推荐

