Files
GoblinPay/crates/gp-server/Cargo.toml
T
2ro bd67bfc92e GoblinPay: receive-only Grin payment server
A self-hostable Grin payment server for shops, creators, and sites: show a
code, Grin lands in your wallet, with a verifiable Grin payment proof on
receive. Workspace crates (gp-core / gp-nostr / gp-server / gp-wallet /
gp-goblin-sender), a WooCommerce connector, a hosted /pay/<token> checkout,
and NIP-44 v3 gift-wrapped payment DMs carried over the Nym mixnet. All
secrets are read from the environment; none are committed.
2026-07-02 04:29:54 -04:00

51 lines
1.7 KiB
TOML

[package]
name = "gp-server"
description = "GoblinPay HTTP server (Actix-Web, in-process rustls TLS)"
version.workspace = true
edition.workspace = true
license.workspace = true
[[bin]]
name = "gp-server"
path = "src/main.rs"
[dependencies]
gp-core = { path = "../gp-core" }
gp-nostr = { path = "../gp-nostr" }
gp-wallet = { path = "../gp-wallet" }
actix-web = { version = "4", default-features = false, features = [
"macros",
"http2",
"rustls-0_23",
] }
askama = "0.14"
rustls = { version = "0.23", default-features = false, features = [
"ring",
"logging",
"std",
"tls12",
] }
rustls-pemfile = "2"
serde = { workspace = true }
serde_json.workspace = true
sqlx = { workspace = true }
log = "0.4"
# Outbound webhook delivery. `rustls-no-provider` reuses the process-installed
# ring crypto provider (no aws-lc-rs build) and brings platform-verifier roots;
# no JSON feature (we send a pre-signed body).
reqwest = { version = "0.13", default-features = false, features = ["rustls-no-provider"] }
# Stderr logger for the gp-nostr/nym `log` output; no regex filtering needed.
env_logger = { version = "0.11", default-features = false, features = ["humantime"] }
[dev-dependencies]
# The milestone-3 end-to-end test: a stand-in payer built from nostr-sdk
# gift-wraps a REAL S1 (generated by the gp-goblin-sender subprocess), the
# ingest pipeline receives it through the real WalletReceiver, and the reply
# is decrypted and finalized by Goblin's wallet stack.
nostr-sdk = { version = "0.44", features = ["nip44", "nip49", "nip59"] }
nip44 = { path = "../../../nip44" }
tokio = { workspace = true, features = ["rt-multi-thread", "macros"] }
rand = "0.6"
grin_keychain = "=5.4.1"
grin_core = "=5.4.1"