695c3e6d4f
Route every relay and HTTP request (nostr relays, NIP-05, price) through a local nym-socks5-client sidecar on 127.0.0.1:1080, so all traffic egresses via the 5-hop Nym mixnet and nothing touches the clear net. - Add src/nym/: SOCKS5 HTTP client (reqwest socks5h), NymWebSocketTransport for the nostr relay pool (tokio-socks dial + TLS/ws handshake over the mixnet), and a sidecar launcher that reuses or spawns nym-socks5-client. - Swap the nostr-sdk transport off ArtiWebSocketTransport; route nip05.rs and price.rs off Tor; revert the clearnet username-lookup shortcut. - Remove the embedded arti Tor client wholesale: the onion-service listener and send-to-onion path in the wallet, the legacy transport GUI tab, the Tor settings page, src/tor/, the webtunnel pluggable transport (Go build + submodule), and all arti crates from Cargo.toml. The Grin node connection is unchanged (chain data, no payment metadata, and never used Tor). The network requester the sidecar routes through is configured via GOBLIN_NYM_PROVIDER / NETWORK_REQUESTER at deploy time.
150 lines
4.4 KiB
TOML
150 lines
4.4 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 = ["rlib"]
|
|
|
|
[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"] }
|
|
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"
|
|
async-wsocket = "0.13"
|
|
tokio-tungstenite = { version = "0.26", features = ["rustls-tls-webpki-roots"] }
|
|
regex = "1"
|
|
base64 = "0.22"
|
|
hex = "0.4"
|
|
## HTTP client routed through the local Nym SOCKS5 sidecar (rustls, no native
|
|
## TLS so it cross-compiles to Android; `socks` so every request — NIP-05,
|
|
## price, avatars — goes over the mixnet, never clearnet).
|
|
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls", "socks"] }
|
|
## SOCKS5 TCP dialer for the nostr relay WebSocket transport over the mixnet.
|
|
tokio-socks = "0.5"
|
|
|
|
## 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"] }
|
|
|
|
[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"
|
|
|
|
[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"
|