| Crates.io | charms-sdk |
| lib.rs | charms-sdk |
| version | 0.9.2 |
| created_at | 2024-12-17 03:09:16.355426+00 |
| updated_at | 2025-09-02 02:37:40.731208+00 |
| description | Charms SDK: the only dependency needed to build ZK apps on Bitcoin |
| homepage | |
| repository | |
| max_upload_size | |
| id | 1485743 |
| size | 8,306 |
This is the only crate you need to get started coding a Charms app.
Run this command to create a new Charms app:
charms app new my-app
It will create a new directory called my-app with a basic Charms app template.
It'll have this in Cargo.toml:
[dependencies]
charms-sdk = { version = "0.3.0" }
This is how the entire src/main.rs looks like:
#![no_main]
charms_sdk::main!(my_app::app_contract);
The most important function in the app is app_contract in src/lib.rs:
use charms_sdk::data::{
check, App, Data, Transaction, NFT, TOKEN,
};
pub fn app_contract(app: &App, tx: &Transaction, x: &Data, w: &Data) -> bool {
match app.tag {
NFT => {
check!(nft_contract_satisfied(app, tx, x, w))
}
TOKEN => {
check!(token_contract_satisfied(app, tx, x, w))
}
_ => todo!(),
}
true
}