337220299f
The exit is unpinned everywhere, so the streamexit module + the exit_for/ exit_connect forks in transport + http were dead code. Remove them; the wallet's only mixnet path is the smolmix tunnel.
206 lines
7.5 KiB
TOML
206 lines
7.5 KiB
TOML
[package]
|
|
name = "grim"
|
|
version = "0.3.6"
|
|
authors = ["Ardocrat <ardocrat@gri.mw>"]
|
|
description = "Goblin: a peer-to-peer wallet for Grin. Send and receive instantly with a handle - slatepacks and the Nym mixnet handled for you."
|
|
license = "Apache-2.0"
|
|
repository = "https://code.gri.mw/GUI/grim"
|
|
keywords = [ "crypto", "grin", "mimblewimble", "nostr" ]
|
|
edition = "2024"
|
|
build = "build.rs"
|
|
|
|
[[bin]]
|
|
name = "goblin"
|
|
path = "src/main.rs"
|
|
|
|
[lib]
|
|
name="grim"
|
|
crate-type = ["cdylib","rlib"]
|
|
|
|
# Desktop/CI release binaries ship stripped of debug symbols — the nym + nostr +
|
|
# grin tree leaves a large symbol table that's dead weight for users (~16 MB on
|
|
# Linux). opt-level stays at the default 3 for wallet/runtime speed.
|
|
[profile.release]
|
|
strip = true
|
|
|
|
[profile.release-apk]
|
|
inherits = "release"
|
|
strip = true
|
|
opt-level = "z"
|
|
lto = true
|
|
codegen-units = 1
|
|
panic = "abort"
|
|
|
|
[dependencies]
|
|
log = "0.4.27"
|
|
|
|
# node
|
|
grin_api = { path = "node/api" }
|
|
grin_chain = { path = "node/chain" }
|
|
grin_config = { path = "node/config" }
|
|
grin_core = { path = "node/core" }
|
|
grin_p2p = { path = "node/p2p" }
|
|
grin_servers = { path = "node/servers" }
|
|
grin_keychain = { path = "node/keychain" }
|
|
grin_util = { path = "node/util" }
|
|
|
|
# wallet
|
|
grin_wallet_impls = { path = "wallet/impls" }
|
|
grin_wallet_api = { path = "wallet/api"}
|
|
grin_wallet_libwallet = { path = "wallet/libwallet" }
|
|
grin_wallet_util = { path = "wallet/util" }
|
|
grin_wallet_controller = { path = "wallet/controller" }
|
|
|
|
## ui
|
|
egui = { version = "0.33.3", default-features = false }
|
|
egui_extras = { version = "0.33.3", features = ["image", "svg"] }
|
|
egui-async = "0.3.4"
|
|
rust-i18n = "3.1.5"
|
|
|
|
## other
|
|
log4rs = "1.4.0"
|
|
anyhow = "1.0.97"
|
|
pin-project = "1.1.10"
|
|
backtrace = "0.3.76"
|
|
thiserror = "2.0.18"
|
|
futures = "0.3.31"
|
|
dirs = "6.0.0"
|
|
sys-locale = "0.3.2"
|
|
chrono = "0.4.43"
|
|
parking_lot = "0.12.3"
|
|
lazy_static = "1.5.0"
|
|
toml = "0.9.11+spec-1.1.0"
|
|
serde = "1.0.228"
|
|
local-ip-address = "0.6.9"
|
|
url = "2.5.8"
|
|
rand = "0.9.2"
|
|
serde_derive = "1.0.228"
|
|
serde_json = "1.0.149"
|
|
tokio = { version = "1.49.0", features = ["full"] }
|
|
image = "0.25.9"
|
|
rqrr = "0.10.1"
|
|
qrcodegen = "1.8.0"
|
|
qrcode = "0.14.1"
|
|
ur = "0.4.1"
|
|
gif = "0.14.1"
|
|
rkv = "0.20.0"
|
|
usvg = "0.45.1"
|
|
ring = "0.16.20"
|
|
hyper = { version = "1.6.0", features = ["full"], package = "hyper" }
|
|
hyper-util = { version = "0.1.19", features = ["http1", "client", "client-legacy", "tokio"] }
|
|
http-body-util = "0.1.3"
|
|
bytes = "1.11.0"
|
|
hyper-socks2 = "0.9.1"
|
|
hyper-proxy2 = "0.1.0"
|
|
hyper-tls = "0.6.0"
|
|
async-std = "1.13.2"
|
|
uuid = { version = "0.8.2", features = ["v4"] }
|
|
num-bigint = "0.4.6"
|
|
|
|
## nostr
|
|
nostr-sdk = { version = "0.44", features = ["nip06", "nip44", "nip49", "nip59", "nip98"] }
|
|
nostr-relay-pool = "0.44"
|
|
## NIP-44 v3 (+ v2) encryption for the NIP-17 backward-compat extension (G4).
|
|
## Path dep on the local crate's `v3` working tree — the M0 deliverable, all
|
|
## upstream test vectors green. Do NOT float this to crates.io until the crate
|
|
## is published there.
|
|
nip44 = { path = "../nip44" }
|
|
## Only to construct the key types the `nip44` crate takes: nostr-sdk pins
|
|
## secp256k1 0.29, the nip44 crate 0.31 — bridged via byte arrays in wrapv3.rs.
|
|
secp256k1 = "0.31"
|
|
async-wsocket = "0.13"
|
|
tokio-tungstenite = { version = "0.26", features = ["rustls-tls-webpki-roots"] }
|
|
regex = "1"
|
|
base64 = "0.22"
|
|
hex = "0.4"
|
|
## rustls is pulled by both our TLS (tungstenite, ring) and nym-sdk
|
|
## (aws-lc-rs); with two providers present rustls 0.23 can't auto-pick a default,
|
|
## so we install ring explicitly at startup (see lib.rs). Direct dep just to make
|
|
## `rustls::crypto::ring::default_provider()` reachable. NOTHING here may pull
|
|
## rustls-platform-verifier — it panics on Android outside a full app context.
|
|
rustls = { version = "0.23", features = ["ring"] }
|
|
## TLS-over-tunnel for the mixnet HTTP client (webpki roots, never the platform
|
|
## verifier — see the rustls note above).
|
|
tokio-rustls = { version = "0.26", default-features = false, features = ["ring"] }
|
|
webpki-roots = "1"
|
|
|
|
## Nym mixnet, linked IN-PROCESS (no sidecar subprocess, no bundled binary).
|
|
## Path deps into the local nym checkout, PINNED at rev
|
|
## f6ed17d949cc19fee0fb51db3cb65771fd510d5b: it carries the load-bearing local
|
|
## commit "http-api-client: preconfigured webpki roots on Android". Do not
|
|
## float the checkout past that rev without re-verifying the Android build.
|
|
nym-sdk = { path = "../nym/sdk/rust/nym-sdk" }
|
|
## smolmix: TCP/UDP tunnel over the mixnet with an AUTO-SELECTED IPR exit —
|
|
## the single-network-requester SPOF is structurally gone (plan G14).
|
|
smolmix = { path = "../nym/smolmix/core" }
|
|
## mix-dns wire codec. Already in the dependency graph via nym-http-api-client
|
|
## (Cargo.lock), so we reuse it instead of vendoring a DNS encode/parse.
|
|
hickory-proto = { version = "0.26", default-features = false, features = ["std"] }
|
|
|
|
## NIP-98 payload hashing
|
|
sha2 = "0.10.8"
|
|
|
|
## stratum server
|
|
tokio-old = { version = "0.2", features = ["full"], package = "tokio" }
|
|
tokio-util-old = { version = "0.2", features = ["codec"], package = "tokio-util" }
|
|
|
|
[target.'cfg(target_os = "linux")'.dependencies]
|
|
nokhwa = { version = "0.10.10", default-features = false, features = ["input-v4l"] }
|
|
|
|
[target.'cfg(target_os = "windows")'.dependencies]
|
|
nokhwa = { version = "0.10.10", default-features = false, features = ["input-msmf"] }
|
|
|
|
[target.'cfg(target_os = "macos")'.dependencies]
|
|
nokhwa = { version = "0.10.10", default-features = false, features = ["input-avfoundation", "output-threaded"] }
|
|
|
|
[target.'cfg(not(target_os = "android"))'.dependencies]
|
|
env_logger = "0.11.3"
|
|
winit = { version = "0.30.12" }
|
|
wgpu = { version = "27.0.1" }
|
|
eframe = { version = "0.33.2", features = ["wgpu"] }
|
|
arboard = "3.2.0"
|
|
rfd = "0.17.2"
|
|
interprocess = { version = "2.2.1", features = ["tokio"] }
|
|
|
|
## native-tls (via hyper-tls) uses OpenSSL only on Linux/Android. Upstream Grim
|
|
## got a vendored, statically-linked OpenSSL for free through arti's `static`
|
|
## feature; dropping arti for Nym took that with it, breaking Android/cross
|
|
## builds (no system OpenSSL for the target) and leaving desktop dynamically
|
|
## linked to libssl. Restore the vendored build for exactly those two targets so
|
|
## each is self-contained. Windows (SChannel) and macOS (Security.framework)
|
|
## don't use OpenSSL at all, so they must NOT pull it — building openssl-src
|
|
## there is both pointless and fragile (the Windows MSVC runner's bash perl is
|
|
## missing modules its Configure needs).
|
|
[target.'cfg(any(target_os = "linux", target_os = "android"))'.dependencies]
|
|
openssl = { version = "0.10", features = ["vendored"] }
|
|
|
|
[target.'cfg(target_os = "android")'.dependencies]
|
|
android_logger = "0.15.0"
|
|
jni = "0.21.1"
|
|
android-activity = { version = "0.6.0", features = ["game-activity"] }
|
|
winit = { version = "0.30.12", features = ["android-game-activity"] }
|
|
eframe = { version = "0.33.2", default-features = false, features = ["glow", "android-game-activity"] }
|
|
|
|
[build-dependencies]
|
|
built = "0.8.0"
|
|
|
|
# Windows hosts only: embed the Goblin icon (wix/Product.ico) into goblin.exe via
|
|
# build.rs. Not compiled on Linux/macOS/Android hosts, so other builds are
|
|
# unaffected.
|
|
[target.'cfg(windows)'.build-dependencies]
|
|
winresource = "0.1"
|
|
|
|
[dev-dependencies]
|
|
nostr-sdk = { version = "0.44", features = ["nip06", "nip44", "nip49", "nip59", "nip98"] }
|
|
tokio = { version = "1.49.0", features = ["full"] }
|
|
base64 = "0.22"
|
|
sha2 = "0.10"
|
|
hex = "0.4"
|
|
serde_yaml = "0.9"
|
|
## G14 transport-validation harness (tests/xrelay_smoke.rs): re-expose deps that
|
|
## already live in the main graph so the smolmix transport can be exercised and
|
|
## its tunnel/mix-dns logs captured. No new compiles — same versions unify.
|
|
log = "0.4.27"
|
|
env_logger = "0.11.3"
|
|
rustls = { version = "0.23", features = ["ring"] }
|