Crate kaspa_wallet_core

Source
Expand description

§Kaspa Wallet Core

Multi-platform Rust framework for Kaspa Wallet.

This framework provides a series of APIs and primitives to simplify building applications that interface with the Kaspa p2p network.

For key generation and derivation, please see the kaspa_wallet_keys crate.

This crate included are low-level primitives such as UtxoProcessor and UtxoContext that provide various levels of automation as well as higher-level APIs such as Wallet, Account (managed via the WalletApi trait) that offer a fully-featured wallet implementation backed by a multi-platform data storage layer capable of storing wallet data on a local file-system as well as within the browser environment.

The wallet framework also includes transaction Generator that can be used to generate transactions from a set of UTXO entries. The generator can be used to create simple transactions as well as batch transactions comprised of multiple chained transactions. Batch transactions (also known as compound transactions) are needed when the total number of inputs required to satisfy the requested amount exceeds the maximum allowed transaction mass.

Key generation and derivation is available in the kaspa_wallet_keys crate.

The framework can operate within native Rust applications as well as within NodeJS, Bun and browser environments via the WASM32 SDK.

WASM32 SDK documentation is available at: https://kaspa.aspectron.org/docs/

For NodeJS JavaScript and TypeScript environments, there are two available NPM modules:

NOTE: for security reasons (to mitigate potential upstream vendor attacks) it is always recommended to build WASM SDK from source or download pre-built redistributables.

Latest development builds of the WASM32 SDK can be found at: https://aspectron.org/en/projects/kaspa-wasm.html

The kaspa-wasm module is a pure WASM32 module that includes the entire wallet framework, but does not support RPC due to an absence of a native WebSocket in NodeJs environment, while the kaspa module includes websocket module dependency simulating the W3C WebSocket and thus supports RPC.

JavaScript examples for using this framework can be found at: https://github.com/kaspanet/rusty-kaspa/tree/master/wasm/nodejs

For pre-built browser-compatible WASM32 redistributables of this framework please see the releases section of the Rusty Kaspa repository at https://github.com/kaspanet/rusty-kaspa/releases.

Modules§

account
Generic wallet Account trait implementation used by different types of accounts.
api
Wallet API
compat
Compatibility layer for legacy wallets.
cryptobox
Re-export of the crypto_box crate that can be used to encrypt and decrypt messages.
derivation
Module handling bip32 address derivation (bip32+bip44 and legacy accounts)
deterministic
Deterministic byte sequence generation (used by Account ids).
encryption
Wallet data encryption module.
error
Error types used by the wallet framework.
events
Events emitted by the wallet framework. This includes various wallet, account and transaction events as well as state and sync events produced by the client RPC and the Kaspa node monitoring subsystems.
factory
Wallet Account factories (Account type registration and creation).
message
Message signing and verification functions.
metrics
Primitives for network metrics.
prelude
Re-exports of the most commonly used types and traits in this crate.
result
Result type alias bound to the framework Error enum.
rpc
RPC adaptor struct use by the Wallet framework.
serializer
Helpers for binary serialization and deserialization used by the storage subsystem.
settings
Multi-platform storage for wallet and application settings.
storage
Wallet data storage subsystem.
tx
Transaction generation and processing primitives.
utils
Kaspa value formatting and parsing utilities.
utxo
UTXO handling primitives.
wallet
Kaspa wallet runtime implementation.
wasm
WASM32 bindings for the wallet framework components.

Functions§

version
Returns the version of the Wallet framework.
version_with_git_hash
Returns the version of the Wallet framework combined with short git hash.