Skip to content

Repository files navigation

Krusty

Krusty

Deterministic key management, Starknet account tooling, and protocol cryptography in Rust.

Disclaimer: This repository is experimental and is provided strictly for testing and experimentation purposes. It should not be used in production environments or relied upon for any security-critical application. There are no guarantees of stability, correctness, or continued maintenance. Use at your own risk.

Krusty provides BIP-39/44 key derivation for Starknet and Nostr domains, deterministic Stark and Nostr signing, OpenZeppelin account descriptor/address calculation, Tongo confidential proof generation, and a focused Starknet client/gateway surface.

Published Crates

krusty-kms-common     Shared value types, errors, and exact serialization helpers
krusty-kms-wallet-api Shared wallet execution contract: transaction tracking, wait options,
                      and the minimal WalletExecutor boundary shared by wallet crates
krusty-kms-domain     Pure typed integration contracts for gateway/client orchestration
krusty-kms-gateway    Long-lived runtime for derive/check/deploy/sign/query flows with
                      explicit secret, cache, and RPC boundaries
krusty-kms-crypto     Cryptographic primitives and zero-knowledge proofs
krusty-kms            Deterministic derivation, account descriptors, and Stark/Nostr signing
krusty-kms-sdk        Tongo protocol operations: fund, transfer, withdraw, rollover,
                      ragequit for confidential balances
krusty-kms-client     Focused Starknet wallet, deployment, Tongo account, and call-builder client

Internal Crates

These remain in the repository for internal, experimental, or integration-specific use:

krusty-kms-oracle     Versioned stdio transport on top of the gateway
krusty-kms-wasm       WebAssembly bindings for browser environments
krusty-kms-controller Cartridge Controller integration
krusty-kms-cabi       C ABI shared library (libkms)
mental-poker*         Experimental gaming protocol crates
qb-game               Experimental game crate

Language Bindings

Package Language Method
packages/kms-swift Swift SwiftPM via C FFI
packages/kms-jvm Java/Kotlin JNI
packages/kms-dart Dart dart:ffi
packages/kms-c C Header distribution
@starknetfoundation/krusty-kms-wasm JavaScript/TypeScript npm / wasm-pack

Quick Start

cargo test                          # Run default-member tests
cargo test --workspace              # Run all workspace tests
cargo clippy --workspace --all-targets -- -D warnings
cargo fmt --all
wasm-pack test --node crates/wasm   # Run the JS/WASM boundary tests

Examples

Examples live in:

crates/kms/examples/key_derivation.rs
crates/kms/examples/stark_sign.rs
crates/kms/examples/nostr_sign.rs
crates/kms/examples/oz_address.rs
crates/kms/examples/oz_multisig_address.rs
crates/client/examples/oz_multisig_coordination.rs
crates/sdk/examples/tongo_proof_generation.rs

OpenZeppelin multisig wallet integration, devnet tests, and the CLI-style transaction lifecycle are documented in docs/oz-multisig-wallet-guide.md.

WASM

cd crates/wasm && wasm-pack build --target web

JavaScript / TypeScript

Install the published browser-oriented ESM package:

npm install @starknetfoundation/krusty-kms-wasm

Initialize it before calling its exports:

import init, {
  getVersion,
  poseidonHash,
} from "@starknetfoundation/krusty-kms-wasm";

await init();

console.log(getVersion());
console.log(poseidonHash("0x1", "0x2"));

See the npm package for the generated API documentation.

computeInvokeTransactionHashV3 accepts an optional final proofFacts argument for proof-carrying invoke-v3 transactions:

const txHash = computeInvokeTransactionHashV3(
  senderAddress,
  compiledCalldata,
  chainId,
  nonce,
  tip,
  resourceBounds,
  paymasterData,
  nonceDataAvailabilityMode,
  feeDataAvailabilityMode,
  accountDeploymentData,
  proofFacts
);

Omit proofFacts or pass [] for the standard invoke-v3 hash.

License

MIT OR Apache-2.0

About

No description, website, or topics provided.

Resources

Contributing

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages