1 unstable release

new 0.21.0 Feb 25, 2025

#350 in Magic Beans


Used in chik-sdk-bindings

Apache-2.0

23KB
501 lines

Chik Wallet SDK

crate documentation minimum rustc 1.75 codecov

This is an unofficial wallet SDK for the Chik blockchain, enabling the development of high-performance wallet applications built with Chik's light wallet protocol.

image

Why do you need an SDK?

If you intend on writing an application that uses the Chik blockchain, be it a dApp, a wallet, or even just tooling on top of it, you will most likely need some code to interact with a Chik wallet. The worst case scenario is that you need to write an entire wallet and all of its driver code from scratch every time. This is very challenging to do, takes a lot of time, and can be error prone if anything is done wrong.

To build driver code, you need libraries like chik-bls and klvmr, for interacting with Chik's native BLS signatures and KLVM runtime. You compose puzzles by currying them, and spend them by constructing solutions. Even with libraries in place to do this (assuming they are tested properly), it can be very tedious and hard to get right. That's what this wallet sdk is aiming to solve.

It's essentially a higher level wrapper over the core primitives that the Chik blockchain provides, and aims to make various things in the lifecycle of wallet development simpler such as state management and signing.

chik_rs and klvm_rs

This SDK is built on top of the primitives developed in the chik_rs and klvm_rs libraries. I help maintain chik_rs to add new core functionality necessary for wallet development as needed. And klvm_rs is a great implementation of the KLVM runtime, especially when combined with the klvm-traits helper library for translating Rust types to KLVM and vice versa.

Supported primitives

Currently, the following Chik primitives are supported:

  • Standard Transactions, either as an inner puzzle or standalone
  • CATs (Chik Asset Tokens), with creation, parsing, and spending capabilities
  • DIDs (Decentralized Identities), with creation, parsing, and (limited) spending capabilities
  • NFTs (Non-Fungible Tokens), with minting and (limited) spending capabilities

Additionally, the wallet sdk is designed to be modular, so you can extend it with your own primitives and driver code if needed! Contributions are welcome for adding things to the wallet sdk itself as well.

Credits

Special thanks to SumSet Tech, LLC for sponsoring the initial development of various parts of the wallet sdk.

Banner image produced by Midjourney.

Dependencies

~16–23MB
~432K SLoC