#charms #sdk #apps #zk #build #bitcoin #coding

charms-sdk

Charms SDK: the only dependency needed to build ZK apps on Bitcoin

15 releases

new 0.3.4 Feb 20, 2025
0.3.3 Feb 7, 2025
0.3.0 Jan 21, 2025
0.2.0 Jan 16, 2025
0.1.10 Dec 31, 2024

#2 in #charms

Download history 116/week @ 2024-12-12 25/week @ 2024-12-19 749/week @ 2024-12-26 202/week @ 2025-01-02 3/week @ 2025-01-09 338/week @ 2025-01-16 14/week @ 2025-01-23 11/week @ 2025-01-30 366/week @ 2025-02-06

729 downloads per month

MIT license

6KB

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
}

Dependencies

~6MB
~122K SLoC