#canister #internet-computer #cdk #type #dfinity #data-type #api-bindings

no-std ic-cdk

互联网计算机的 Canister 开发工具包

32 个版本 (10 个重大更新)

新版本 0.15.1 2024 年 8 月 16 日
0.15.0 2024 年 7 月 1 日
0.14.1 2024 年 8 月 16 日
0.14.0 2024 年 5 月 17 日
0.1.1 2020 年 10 月 4 日

#684神奇豆子

Download history 13379/week @ 2024-04-29 14147/week @ 2024-05-06 15393/week @ 2024-05-13 14074/week @ 2024-05-20 15987/week @ 2024-05-27 18611/week @ 2024-06-03 15537/week @ 2024-06-10 17080/week @ 2024-06-17 14819/week @ 2024-06-24 13322/week @ 2024-07-01 15818/week @ 2024-07-08 16403/week @ 2024-07-15 17417/week @ 2024-07-22 16041/week @ 2024-07-29 19087/week @ 2024-08-05 17208/week @ 2024-08-12

每月 70,667 次下载
用于 127 个 crate (112 个直接使用)

Apache-2.0

160KB
2.5K SLoC

Documentation Crates.io License Downloads CI

ic-cdk

互联网计算机的 Canister 开发工具包。

背景

在互联网计算机上,智能合约以 canister 的形式出现,它们是 WebAssembly 模块。

Canister 提供了入口点,可以由其他 canister 和 IC 外部实体调用。

这个库旨在提供 Rust 优化的抽象来实现 Canister 入口点。

使用 ic-cdk

在 Cargo.toml 中

[lib]
crate-type = ["cdylib"]

[dependencies]
ic-cdk = "0.15"
# Only necessary if you want to define Candid data types
candid = "0.10" 

然后在 Rust 源代码中

#[ic_cdk::query]
fn hello() -> String {
    "world".to_string()
}

这将注册一个名为 hello查询 入口点。

宏定义

这个库重新导出在 ic-cdk-macros crate 中定义的宏。

这些宏分为两类

  • 将函数注册为 canister 入口点
  • 导出 Candid 定义

将函数注册为 canister 入口点

这些宏与 互联网计算机规范 直接相关。

导出 Candid 定义

请查阅为 Rust canisters 生成 Candid 文件以获取更多详细信息。

更多示例

在稳定内存中管理数据结构

使用 ic_cdk::storage::{stable_save, stable_restore} API 很简单,但它扩展性不佳。

当处理具有较大数据集的多个数据结构时,推荐使用 ic-stable-structures

依赖项

~1.1–2MB
~41K SLoC