charms-sdk

Crates.iocharms-sdk
lib.rscharms-sdk
version0.9.2
created_at2024-12-17 03:09:16.355426+00
updated_at2025-09-02 02:37:40.731208+00
descriptionCharms SDK: the only dependency needed to build ZK apps on Bitcoin
homepage
repository
max_upload_size
id1485743
size8,306
Ivan Mikushin (imikushin)

documentation

README

This is the only crate you need to get started coding a Charms app.

Usage

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
}
Commit count: 0

cargo fmt