知世金融网专注于股票行情,期货开户,外汇储备等最新相关资讯信息提供投资者参考学习!

当前位置:网站首页 > 区块链 > 正文

和你说说调试 CKB 脚本的几个技巧

原创
文章作者
知世-金融领域资深作者
知名金融领域作者,从事金融超过十余年,在行业内有一定影响力。
金融风险管理师认证证书 常识职业资格认证 特许金融分析师 国际金融理财师认证证书
发布时间:2020-02-16 21:15:57 发布来源:Nervos 中文社区 文章点击:116

CKB 中的脚本不一定只是我们在脚本语言中看到的脚本,例如 Ruby,JS,它实际上是指在 CKB VM 上运行的 RISC-V 格式二进制文件。CKB VM 模拟 RISC-V 指令集,与其他 VM 通过 opcode 硬编码功能非...

目录

    本文标题和你说说调试 CKB 脚本的几个技巧,作者:知世,本文有946个文字,大小约为4KB,预计阅读时间3分钟,请您欣赏。知世金融网众多优秀文章,如果想要浏览更多相关文章,请使用网站导航的搜索进行搜索。本站虽然不乏优秀之作,但仅作为投资者学习参考。

    CKB 中的脚本不一定只是我们在脚本语言中看到的脚本,例如 Ruby,JS,它实际上是指在 CKB VM 上运行的 RISC-V 格式二进制文件。CKB VM 模拟 RISC-V 指令集,与其他 VM 通过 opcode 硬编码功能非常不同。考虑到 CKB VM 的通用特性,每种编程语言和工具链都有一些不同。在这篇本章中,CKB 开发者 jjy 将和大家介绍调试 CKB 脚本的几个技巧,快来查看吧。

    请注意:尽管 CKB 的编程模型现在非常稳定,但目前仍然在进行开发,因此可能会有变化。

    错误码

    CKB 节点仅在交易验证失败时报告 exit code,区分错误最直接的方法是使用不同的 exit code(-127 和 127 之间)来表示错误。

    例如,默认的 lock script error code:secp256k1 error codes
    https://github.com/nervosnetwork/ckb-system-scripts/wiki/Error-codes

    注意:常见的错误是混淆了lock script 错误和 type script 错误。简单的调试方法是删除 type script,然后重新运行;如果错误仍然存在,可以确定错误是由 lock script 引起的;否则,它是由 type script 引起的。

    调试 syscall

    当我们想要从脚本中输出额外的信息时,采用 debug syscall 来完成此需求。
    默认情况下,CKB节点不输出调试 syscall 消息,可以配置 ckb.toml 来启用它。

    [logger]
    filter = info,ckb-script=debug

    还可以选择在调试环境下运行脚本:ckb-cli, VM debugger, ckb-contract-tool。
    对于语言 / 工具链实现人员,如果开发语言支持,建议您集成 debug syscall 来打印错误向后追踪。例如:如果将 Rust 与 ckb-contract-std 一起使用,您可以看到程序崩溃的位置。

    用 ckb-cli 生成 mock tx 和验证

    ckb-cli 支持在调试环境下生成模拟 tx 和验证,步骤如下:

    1. 生成 mock-tx 模板

    ckb-cli mock-tx template --lock-arg <your lock-arg> --output-file debug-tx.json

    2. 修改模板

    将你的 script cell 添加到 cell_deps 中,并修改交易结构以使用 lock script 或 type script。

    3. 实现模板

    ckb-cli mock-tx complete --tx-file debug-tx.json

    此命令根据 lock arg 使用私钥签名交易。

    4. 验证交易

    ckb-cli mock-tx verify --tx-file debug-tx.json

    你将看到验证结果和调试输出。

    另外关于如何构建交易可参考 RFC:CKB 的交易结构

    使用 VM debugger 和 GDB

    1. Install ckb-standalone-debugger 安装 ckb-standalone-debugger

    git clone https://github.com/nervosnetwork/ckb-standalone-debugger
    cd ckb-standalone-debugger/bins
    cargo build --release

    2. Start standalone debugger 启动 ckb-standalone-debugger

    ckb-standalone-debugger 支持 ckb-cli 生成的模板。要调试一个脚本,我们用 -g <script type> 来指代 script group 类型,这表示我们想要调试哪个 script group,使用引用的 -h <script hash>。

    ckb-debugger -l 0.0.0.0:2000 -g type -h <type script hash> -t debug-tx.json

    3. 启动 GDB

    docker run --rm -it -v pwd:/code nervos/ckb-riscv-gnu-toolchain:bionic-20191012 bash
    # start gdb
    riscv64-unknown-elf-gdb <path of script binary>
    # connect to debugger server
    target remote <ip>:2000

    若想了解更多,请参考 CKB 开发者 Xuejie 的文章:CKB 脚本编程简介第一弹: 验证模型

    关于提交 bug

    当您在脚本中发现与安全相关的 bug 时,请不要将其发布在 github public issue。请在 ckb dev telegram(https://t.me/nervos_ckb_dev) 联系维护人员,这不仅有助于维护人员更新,也可以防止用户损失资金。

    当您在 CKB 官方 script 或 CKB VM 中发现与安全相关的 bug 时,欢迎加入我们的 bug bounty program,我们会为您的宝贵贡献提供丰厚奖励!

    本文相关推荐: 几个方法让你避开投资骗局

    以上便是知世金融网给大家分享的关于和你说说调试 CKB 脚本的几个技巧/qkl/29356.html的相关信息了,希望能帮助到大家,更多金融相关信息,敬请关注知世金融网!

    网站内容均来自互联网,如侵害您的利益联系客服进行删除!

    关键词:几个
    (0)
    (0)

    上一篇:EOS生态大利好?即将上线的Voice到底是什么?

    下一篇:EOS的BM:为什么区块链是更好的应用服务器/数据库架构?

    本文标题:和你说说调试 CKB 脚本的几个技巧

    本文地址:/index.php?s=article&c=search&keyword=%E5%87%A0%E4%B8%AA

    金融知名领域

    南方财富网 | 金融界 | 金融界 |

    更多推荐

    • 茅台吃饱,经销商哭倒
      茅台吃饱,经销商哭倒
    • 汇金的五次增持从短期看具有一定的“稳定器“作用,但从市场表现看效果逐次递减
      汇金的五次增持从短期看具有一定的“稳定器“作用,但从市场表现看效果逐次递减
    • 158亿元!比亚迪收购!
      158亿元!比亚迪收购!
    • 9月价格回落近五成 “冷静期”酒店业备战“十一”市场
      9月价格回落近五成 “冷静期”酒店业备战“十一”市场
    • 2023哈马博览会哈尔滨银行展区精彩纷呈
      2023哈马博览会哈尔滨银行展区精彩纷呈
    • 大额解禁撂倒股价 医疗影像龙头跌出千亿俱乐部 葛兰二季度大幅减仓
      大额解禁撂倒股价 医疗影像龙头跌出千亿俱乐部 葛兰二季度大幅减仓
    • A股,又上了热搜!数字要素概念走高多股涨停,锂电池板块走低恩捷股份大举跌停
      A股,又上了热搜!数字要素概念走高多股涨停,锂电池板块走低恩捷股份大举跌停
    • 最新!巨头出手,加仓宁王51%
      最新!巨头出手,加仓宁王51%
    • 600亿巨头暴雷
      600亿巨头暴雷
    • 一天32家!科创板回购潮涌来
      一天32家!科创板回购潮涌来
    • 提振信心实招来了!30余家上市公司密集出手 最高要买10亿
      提振信心实招来了!30余家上市公司密集出手 最高要买10亿
    • 高盛再发50年后预测:2075年印度股市全球市值占比将升4倍 中国升3成
      高盛再发50年后预测:2075年印度股市全球市值占比将升4倍 中国升3成

    新闻资讯栏目

    站长QQ: 2397470084