# kaspahub21/kaspire-kaspa-wallet architecture

> Architecture diagram of the GitHub repository kaspahub21/kaspire-kaspa-wallet, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/kaspahub21/kaspire-kaspa-wallet
- Repository: https://github.com/kaspahub21/kaspire-kaspa-wallet

## Overview

Kaspire is a self-custody Kaspa wallet for Android and Chromium browsers. A user initiates wallet actions in either client; the Rust security core derives keys, validates transaction data, constructs transactions, and signs locally, while network services supply untrusted blockchain or marketplace data. The repository also contains covenant-language tooling and NFT marketplace services. The README documents the client/security boundary and major capabilities; sampled source confirms only selected internal calls, so other relationships are omitted rather than inferred.

Main entry points: [`crates/kaspa_secure_core/src/lib.rs`](https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/kaspa_secure_core/src/lib.rs) (Secure core), [`apps/mobile_flutter/android/app/src/main/kotlin/space/kasvault/wallet/MainActivity.kt`](https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/apps/mobile_flutter/android/app/src/main/kotlin/space/kasvault/wallet/MainActivity.kt) (Android wallet), [`apps/browser_extension/src/ui/wallet.ts`](https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/apps/browser_extension/src/ui/wallet.ts) (Browser extension), [`services/nft-nexus/src/server/services/offer-service.ts`](https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/services/nft-nexus/src/server/services/offer-service.ts) (NFT offers)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_clients["Wallet clients"]
  node_android["Android wallet<br/>[MainActivity.kt]"]
  node_extension["Browser extension<br/>[wallet.ts]"]
  node_provider["Injected provider<br/>[provider.ts]"]
end

subgraph group_security["Signing and security"]
  node_secure_core["Secure core<br/>[lib.rs]"]
  node_android_bindings["Android JNI<br/>[android.rs]"]
  node_transactions["Transaction validation<br/>[transaction.rs]"]
  node_p2sh["P2SH account<br/>[hidden_kas.rs]"]
  node_vault_recovery["Vault recovery<br/>[vault_recovery.rs]"]
end

subgraph group_assets["Kaspa asset features"]
  node_dotk["dot.k names<br/>[dotk.rs]"]
  node_kcc20["KCC20 tokens<br/>[kcc20.rs]"]
  node_braid["Braid assets<br/>[braid.rs]"]
  node_vaults["Covenant vaults<br/>[covenant_vault.rs]"]
end

subgraph group_markets["Market services"]
  node_dotk_market["K-Agora sales<br/>[dotk_market.rs]"]
  node_kasforge["KasForge swaps<br/>[kasforge.rs]"]
  node_kforge["KForge swaps<br/>[kforge.rs]"]
  node_nft_market["NFT market<br/>[nft_market.rs]"]
  node_nexus["NFT Nexus<br/>[nft-service.ts]"]
  node_offers["NFT offers<br/>[offer-service.ts]"]
  node_nft_db[("Nexus database<br/>[prisma.ts]")]
end

subgraph group_language["Covenant tooling"]
  node_silverscript["SilverScript compiler<br/>[compile.rs]"]
  node_static_check["Static checker<br/>[static_check.rs]"]
  node_covenant_declarations["Covenant declarations"]
end

node_android_user(("Android user"))
node_dapp(("Web dApp"))
node_network{{"Kaspa network"}}

node_android_user -->|"uses"| node_android
node_dapp -->|"requests access"| node_provider
node_provider -.->|"forwards approved requests"| node_extension
node_android -->|"invokes JNI"| node_android_bindings
node_android_bindings -.->|"calls Rust core"| node_secure_core
node_extension -->|"uses packaged WASM"| node_secure_core
node_secure_core -.->|"validates and builds"| node_transactions
node_android -->|"fetches blockchain data"| node_network
node_extension -->|"fetches blockchain data"| node_network
node_secure_core -.->|"provides account logic"| node_p2sh
node_secure_core -.->|"provides recovery logic"| node_vault_recovery
node_secure_core -->|"derives names"| node_dotk
node_android -->|"offers K-Agora"| node_dotk_market
node_extension -->|"offers K-Agora"| node_dotk_market
node_secure_core -.->|"provides token logic"| node_kcc20
node_braid -->|"uses token routines"| node_kcc20
node_secure_core -.->|"provides swap logic"| node_kasforge
node_secure_core -.->|"provides swap logic"| node_kforge
node_android -->|"offers vaults"| node_vaults
node_secure_core -->|"builds and signs vault transactions"| node_vaults
node_android -.->|"supports NFT markets"| node_nft_market
node_extension -.->|"supports NFT markets"| node_nft_market
node_nexus -.->|"stores snapshots"| node_nft_db
node_offers -->|"refreshes NFT snapshots"| node_nexus
node_offers -.->|"persists offers"| node_nft_db
node_silverscript -->|"lowers declarations"| node_covenant_declarations
node_silverscript -->|"runs checks"| node_static_check

click node_android "https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/apps/mobile_flutter/android/app/src/main/kotlin/space/kasvault/wallet/MainActivity.kt"
click node_extension "https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/apps/browser_extension/src/ui/wallet.ts"
click node_provider "https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/apps/browser_extension/src/inpage/provider.ts"
click node_secure_core "https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/kaspa_secure_core/src/lib.rs"
click node_android_bindings "https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/kaspa_secure_core/src/android.rs"
click node_transactions "https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/kaspa_secure_core/src/transaction.rs"
click node_p2sh "https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/kaspa_secure_core/src/hidden_kas.rs"
click node_vault_recovery "https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/kaspa_secure_core/src/vault_recovery.rs"
click node_dotk "https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/kaspa_secure_core/src/dotk.rs"
click node_dotk_market "https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/kaspa_secure_core/src/dotk_market.rs"
click node_kcc20 "https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/kaspa_secure_core/src/kcc20.rs"
click node_braid "https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/kaspa_secure_core/src/braid.rs"
click node_kasforge "https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/kaspa_secure_core/src/kasforge.rs"
click node_kforge "https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/kaspa_secure_core/src/kforge.rs"
click node_vaults "https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/kaspa_secure_core/src/covenant_vault.rs"
click node_nft_market "https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/kaspa_secure_core/src/nft_market.rs"
click node_nexus "https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/services/nft-nexus/src/server/services/nft-service.ts"
click node_offers "https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/services/nft-nexus/src/server/services/offer-service.ts"
click node_nft_db "https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/services/nft-nexus/src/lib/db/prisma.ts"
click node_silverscript "https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/silverscript_lang/compiler/compile.rs"
click node_static_check "https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/silverscript_lang/compiler/static_check.rs"
click node_covenant_declarations "https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/silverscript_lang/compiler/covenant_declarations.rs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_android,node_extension,node_provider,node_android_user toneBlue
class node_secure_core,node_android_bindings,node_transactions,node_p2sh,node_vault_recovery toneAmber
class node_dotk,node_kcc20,node_braid,node_vaults toneMint
class node_dotk_market,node_kasforge,node_kforge,node_nft_market,node_nexus,node_offers,node_nft_db toneRose
class node_silverscript,node_static_check,node_covenant_declarations,node_dapp,node_network toneIndigo
```

## Components

### Wallet clients

- [Android wallet](https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/apps/mobile_flutter/android/app/src/main/kotlin/space/kasvault/wallet/MainActivity.kt): `apps/mobile_flutter/android/app/src/main/kotlin/space/kasvault/wallet/MainActivity.kt`
- [Browser extension](https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/apps/browser_extension/src/ui/wallet.ts): `apps/browser_extension/src/ui/wallet.ts`
- [Injected provider](https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/apps/browser_extension/src/inpage/provider.ts): `apps/browser_extension/src/inpage/provider.ts`

### Signing and security

- [Secure core](https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/kaspa_secure_core/src/lib.rs): `crates/kaspa_secure_core/src/lib.rs`
- [Android JNI](https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/kaspa_secure_core/src/android.rs): `crates/kaspa_secure_core/src/android.rs`
- [Transaction validation](https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/kaspa_secure_core/src/transaction.rs): `crates/kaspa_secure_core/src/transaction.rs`
- [P2SH account](https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/kaspa_secure_core/src/hidden_kas.rs): `crates/kaspa_secure_core/src/hidden_kas.rs`
- [Vault recovery](https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/kaspa_secure_core/src/vault_recovery.rs): `crates/kaspa_secure_core/src/vault_recovery.rs`

### Kaspa asset features

- [dot.k names](https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/kaspa_secure_core/src/dotk.rs): `crates/kaspa_secure_core/src/dotk.rs`
- [KCC20 tokens](https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/kaspa_secure_core/src/kcc20.rs): `crates/kaspa_secure_core/src/kcc20.rs`
- [Braid assets](https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/kaspa_secure_core/src/braid.rs): `crates/kaspa_secure_core/src/braid.rs`
- [Covenant vaults](https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/kaspa_secure_core/src/covenant_vault.rs): `crates/kaspa_secure_core/src/covenant_vault.rs`

### Market services

- [K-Agora sales](https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/kaspa_secure_core/src/dotk_market.rs): `crates/kaspa_secure_core/src/dotk_market.rs`
- [KasForge swaps](https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/kaspa_secure_core/src/kasforge.rs): `crates/kaspa_secure_core/src/kasforge.rs`
- [KForge swaps](https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/kaspa_secure_core/src/kforge.rs): `crates/kaspa_secure_core/src/kforge.rs`
- [NFT market](https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/kaspa_secure_core/src/nft_market.rs): `crates/kaspa_secure_core/src/nft_market.rs`
- [NFT Nexus](https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/services/nft-nexus/src/server/services/nft-service.ts): `services/nft-nexus/src/server/services/nft-service.ts`
- [NFT offers](https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/services/nft-nexus/src/server/services/offer-service.ts): `services/nft-nexus/src/server/services/offer-service.ts`
- [Nexus database](https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/services/nft-nexus/src/lib/db/prisma.ts): `services/nft-nexus/src/lib/db/prisma.ts`

### Covenant tooling

- [SilverScript compiler](https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/silverscript_lang/compiler/compile.rs): `crates/silverscript_lang/compiler/compile.rs`
- [Static checker](https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/silverscript_lang/compiler/static_check.rs): `crates/silverscript_lang/compiler/static_check.rs`
- [Covenant declarations](https://github.com/kaspahub21/kaspire-kaspa-wallet/blob/main/crates/silverscript_lang/compiler/covenant_declarations.rs): `crates/silverscript_lang/compiler/covenant_declarations.rs`

### Other components

- **Android user**
- **Web dApp**
- **Kaspa network**

## Connections

- Android user → Android wallet: uses (evidence: `README.md`)
- Web dApp → Injected provider: requests access (evidence: `README.md`)
- Injected provider → Browser extension: forwards approved requests
- Android wallet → Android JNI: invokes JNI (evidence: `README.md`)
- Android JNI → Secure core: calls Rust core (evidence: `crates/kaspa_secure_core/src/lib.rs`)
- Browser extension → Secure core: uses packaged WASM (evidence: `README.md`)
- Secure core → Transaction validation: validates and builds (evidence: `crates/kaspa_secure_core/src/lib.rs`)
- Android wallet → Kaspa network: fetches blockchain data (evidence: `README.md`)
- Browser extension → Kaspa network: fetches blockchain data (evidence: `README.md`)
- Secure core → P2SH account: provides account logic (evidence: `crates/kaspa_secure_core/src/lib.rs`)
- Secure core → Vault recovery: provides recovery logic (evidence: `crates/kaspa_secure_core/src/lib.rs`)
- Secure core → dot.k names: derives names (evidence: `README.md`)
- Android wallet → K-Agora sales: offers K-Agora (evidence: `README.md`)
- Browser extension → K-Agora sales: offers K-Agora (evidence: `README.md`)
- Secure core → KCC20 tokens: provides token logic (evidence: `crates/kaspa_secure_core/src/lib.rs`)
- Braid assets → KCC20 tokens: uses token routines (evidence: `crates/kaspa_secure_core/src/braid.rs`)
- Secure core → KasForge swaps: provides swap logic (evidence: `crates/kaspa_secure_core/src/lib.rs`)
- Secure core → KForge swaps: provides swap logic (evidence: `crates/kaspa_secure_core/src/lib.rs`)
- Android wallet → Covenant vaults: offers vaults (evidence: `README.md`)
- Secure core → Covenant vaults: builds and signs vault transactions (evidence: `crates/kaspa_secure_core/src/covenant_vault.rs`)
- Android wallet → NFT market: supports NFT markets
- Browser extension → NFT market: supports NFT markets
- NFT Nexus → Nexus database: stores snapshots
- NFT offers → NFT Nexus: refreshes NFT snapshots (evidence: `services/nft-nexus/src/server/services/offer-service.ts`)
- NFT offers → Nexus database: persists offers
- SilverScript compiler → Covenant declarations: lowers declarations (evidence: `crates/silverscript_lang/compiler/compile.rs`)
- SilverScript compiler → Static checker: runs checks (evidence: `crates/silverscript_lang/compiler/compile.rs`)
