Restoring a phrase finds the accounts it already uses (#69), and any open wallet can be rescanned from the accounts page. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014ftBXYuba8ARhQeF74oUgW
84 lines
3.9 KiB
TOML
84 lines
3.9 KiB
TOML
[workspace]
|
|
resolver = "3"
|
|
members = ["crates/*"]
|
|
|
|
[workspace.package]
|
|
version = "0.3.0"
|
|
edition = "2024"
|
|
rust-version = "1.88"
|
|
license = "GPL-3.0-or-later"
|
|
authors = ["Rob Thijssen <rob@lair.cafe>"]
|
|
repository = "https://git.lair.cafe/blackbeard/wallet"
|
|
|
|
[workspace.dependencies]
|
|
wallet-entities = { path = "crates/wallet-entities", version = "=0.3.0" }
|
|
wallet-core = { path = "crates/wallet-core", version = "=0.3.0" }
|
|
wallet-data = { path = "crates/wallet-data", version = "=0.3.0" }
|
|
|
|
anyhow = "1"
|
|
async-trait = "0.1"
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
thiserror = "2"
|
|
tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "time"] }
|
|
tracing = "0.1"
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
# Types in `wallet-entities` are exported to the webview as TypeScript so the
|
|
# UI and the Rust side never disagree about a field. See .cargo/config.toml.
|
|
ts-rs = { version = "10", features = ["serde-compat", "no-serde-warnings"] }
|
|
toml = "0.8"
|
|
zeroize = { version = "1", features = ["derive"] }
|
|
# Quantus's post-quantum primitives. The dilithium crate is the FIPS 204
|
|
# implementation the chain verifies against; hdwallet is the BIP32/39/44
|
|
# derivation for lattice keys; poseidon is the account-id hash.
|
|
qp-rusty-crystals-dilithium = { version = "4.1.1", default-features = false, features = ["ml-dsa-65", "ml-dsa-87"] }
|
|
qp-rusty-crystals-hdwallet = { version = "4.1.1", features = ["ml-dsa-65", "ml-dsa-87"] }
|
|
qp-poseidon-core = "3.1.0"
|
|
# SS58: blake2b-512 checksum and base58. Nothing else from sp-core is needed.
|
|
blake2 = { version = "0.10", default-features = false }
|
|
bs58 = "0.5"
|
|
getrandom = "0.3"
|
|
# The quantus-cli keystore format: Argon2id (frozen m=19456,t=2,p=1) into
|
|
# AES-256-GCM. The versions are pinned to what the CLI itself uses.
|
|
argon2 = { version = "0.5", features = ["std"] }
|
|
aes-gcm = "0.10"
|
|
chrono = { version = "0.4", default-features = false, features = ["clock", "serde", "std"] }
|
|
directories = "6"
|
|
tempfile = "3"
|
|
# Mnemonics: the same bip39 the hdwallet crate pins, so validation and seed
|
|
# stretching cannot disagree about a phrase. The checkphrase crate is
|
|
# Quantus's human-readable address checksum; its wordlist is vendored.
|
|
bip39 = { version = "=2.2.2", features = ["zeroize"] }
|
|
qp-human-checkphrase = "2.2.1"
|
|
# subxt 0.44 is the version quantus-cli signs mainnet transactions with; its
|
|
# extension resolver skips extensions whose type is empty, which is how the
|
|
# chain's two custom extensions (Reversible, WormholeProofRecorder) are
|
|
# tolerated without a custom config. 0.51 will add a builder for them.
|
|
subxt = "0.44"
|
|
parity-scale-codec = { version = "3", features = ["derive"] }
|
|
hex = "0.4"
|
|
# `isolation`: the IPC isolation pattern (crates/wallet-app/isolation/index.html).
|
|
tauri = { version = "2", features = ["isolation"] }
|
|
tauri-build = { version = "2", features = ["isolation"] }
|
|
# Native file dialogs, for importing a quantus-cli wallet file. The only
|
|
# plugin so far; each one is a capability entry with a reason.
|
|
tauri-plugin-dialog = "2"
|
|
# Copying an address to the clipboard from the receive screen. Write only.
|
|
tauri-plugin-clipboard-manager = "2"
|
|
# History comes from blackbeard.observer over HTTPS; rustls, no system TLS, JSON only.
|
|
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls", "json"] }
|
|
# The local history cache, so an account's past is readable with the network down.
|
|
rusqlite = { version = "0.40", features = ["bundled"] }
|
|
# Opening the explorer in the system browser. URLs only, allow-listed in the capability.
|
|
tauri-plugin-opener = "2"
|
|
# Updates for the AppImage, NSIS and dmg installs: minisign-verified manifests
|
|
# published with every release. dnf owns updates for the rpm, which opts out.
|
|
tauri-plugin-updater = "2"
|
|
# Relaunch after an accepted update; nothing else from it is granted.
|
|
tauri-plugin-process = "2"
|
|
|
|
[profile.release]
|
|
lto = "thin"
|
|
codegen-units = 1
|
|
strip = "debuginfo"
|