#syscalls #module #contract #ckb #help #write #memory

ckb-std

此库包含多个模块,帮助您使用Rust编写CKB合约。

32个版本

0.15.3 2024年3月25日
0.15.1 2024年1月31日
0.14.3 2023年8月25日
0.14.2 2023年7月4日
0.1.1 2020年3月25日

#6 in #ckb

Download history 98/week @ 2024-04-29 93/week @ 2024-05-06 113/week @ 2024-05-13 115/week @ 2024-05-20 85/week @ 2024-05-27 175/week @ 2024-06-03 179/week @ 2024-06-10 101/week @ 2024-06-17 210/week @ 2024-06-24 279/week @ 2024-07-01 265/week @ 2024-07-08 314/week @ 2024-07-15 197/week @ 2024-07-22 321/week @ 2024-07-29 132/week @ 2024-08-05 150/week @ 2024-08-12

808 每月下载量
用于 4 crates

MIT 许可证

240KB
6K SLoC

C 4K SLoC // 0.1% comments Rust 2K SLoC // 0.0% comments

ckb-std

Crates.io

此库包含多个模块,帮助您使用Rust编写CKB合约。

用法

文档

模块

  • syscalls 模块:定义 CKB 系统调用
  • high_level 模块:定义高级API
  • dynamic_loading 模块:动态加载原语
  • debug! 宏:类似于 println! 的宏,有助于调试
  • entry! 宏:定义合约入口点
  • default_alloc! 宏:定义无标准Rust的全局分配器

内存分配器

默认分配器使用混合分配策略

  • 固定块堆,仅分配固定大小(64B)的内存块
  • 动态内存堆,分配任何大小的内存块

用户可以通过传递参数调用宏来自定义堆大小。默认堆大小参数为

(固定堆大小 4KB,动态堆大小 516KB,动态堆最小内存块 64B)

使用带参数的宏来更改它

default_alloc!(4 * 1024, 516 * 1024, 64)

请注意,使用不同的堆大小或内存块大小可能会影响合约的验证结果,可能会导致一些运行时错误,如 内存不足;您应该在自定义后始终测试合约。

示例

查看 examples测试 以了解如何使用。

另请参阅 ckb-tool,它可以帮助您编写测试。

依赖项

~1.4–2.6MB
~57K SLoC