From 95403516d5fa6e52a5c34f7664b3b134a3b5b70f Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 11 Jun 2026 23:26:11 -0400 Subject: [PATCH] =?UTF-8?q?Build=2023:=20README=20rewrite=20+=20banner=20?= =?UTF-8?q?=E2=80=94=20describe=20Goblin,=20not=20Grim?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace the inherited Grim README with one that reflects what Goblin actually is: a private, Cash App-style GRIN wallet that pays @usernames via NIP-17 gift-wrapped DMs over Tor, with in-app nostr identity and the goblin.st identity service. Adds the Goblin banner, a payment-flow diagram, correct build instructions (binary is `goblin`), and keeps the Claude credit. --- Goblin-Banner.png | Bin 0 -> 17804 bytes README.md | 66 ++++++++++++++++++++++++++++++++-------------- 2 files changed, 46 insertions(+), 20 deletions(-) create mode 100644 Goblin-Banner.png diff --git a/Goblin-Banner.png b/Goblin-Banner.png new file mode 100644 index 0000000000000000000000000000000000000000..fb27253b4df40060f94fe5a77d1fab7b0391b504 GIT binary patch literal 17804 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 -Cross-platform GUI for [GRiN ツ](https://grin.mw) in [Rust](https://www.rust-lang.org/) -for maximum compatibility with original [Mimblewimble](https://github.com/mimblewimble/grin) implementation. -Initially supported platforms are Linux, Mac, Windows, limited Android and possible web support with help of [egui](https://github.com/emilk/egui) - immediate mode GUI library in pure Rust. +

+ Goblin +

-Named by the character [Grim](http://harrypotter.wikia.com/wiki/Grim) - the shape of a large, black, menacing, spectral giant dog. +# Goblin -![image](img/cover.png) +Goblin is a private, Cash App-style wallet for [GRIN ツ](https://grin.mw) — confidential digital cash on [Mimblewimble](https://github.com/mimblewimble/grin), with no amounts or addresses on the chain. +Instead of passing slatepack files back and forth, you **pay a `@username` (or an `npub`)** and the payment is delivered for you as an **end-to-end encrypted message over [nostr](https://github.com/nostr-protocol/nips) and Tor**. Relays only ever see ciphertext — never the amount, the sender, or the recipient. -## Build instructions -### Install Rust +Goblin is a fork of the **Grim** egui GRIN wallet: it keeps Grim's full GRIN node/wallet engine and layers a Nostr-native, mobile-first payments experience on top. -Follow instructions on [Windows](https://forge.rust-lang.org/infra/other-installation-methods.html). +## What it does -`curl https://sh.rustup.rs -sSf | sh` +- **Send to people** — pay a `@username` or `npub`; the GRIN slatepack travels as a NIP-17 gift-wrapped DM (kind 1059) over Tor and is applied automatically by the recipient's wallet. No files to swap, no need to both be online at once. +- **In-app identity** — a nostr payment key that is deliberately *not* part of your seed, so you can rotate it any time to stay unlinkable without touching your funds. An optional human-readable `@name` (and hosted avatar) comes from the goblin.st identity service. +- **Private by construction** — GRIN's address-less, confidential chain; every relay and HTTP request routed through an embedded [arti](https://gitlab.torproject.org/tpo/core/arti) Tor client (webtunnel bridge by default); keys, names and history stay on your device. +- **Configurable amount pairing** — show balances against a world currency, Bitcoin, or sats (rates fetched over Tor), or turn the preview off. +- **Cross-platform** — Linux, macOS, Windows, Android, built in pure Rust on [egui](https://github.com/emilk/egui). -### Desktop +## How a payment travels -To build and run application go to project directory and run: +``` + you ──slatepack──▶ NIP-17 gift wrap (kind 1059, NIP-44 encrypted) + │ + arti / Tor + │ + ┌─────────────┴─────────────┐ + your relays recipient's DM relays (kind 10050) + └─────────────┬─────────────┘ + ▼ + recipient ◀──unwrap, verify seal author, apply slatepack +``` + +Both parties only need one relay in common. The default set is the Goblin relay plus large public relays (`relay.damus.io`, `nos.lol`), and the set is editable in **Settings → Relays**. + +## Build + +### Desktop (Linux / macOS / Windows) ``` git submodule update --init --recursive cargo build --release -./target/release/grim +./target/release/goblin ``` +Tor's webtunnel bridge is built from Go at compile time — install Go first (e.g. `pacman -S go`). Without it the bundled bridge is inert and Tor will not bootstrap on networks that block direct Tor connections. + ### Android -#### Set up the environment -Install Android SDK / NDK / Platform Tools for your OS according to this [FAQ](https://github.com/codepath/android_guides/wiki/installing-android-sdk-tools). +Install the Android SDK / NDK, then from the repo root: -#### Build the project -Run Android emulator or connect a real device. Command `adb devices` should show at least one device. -In the root of the repo run `./scripts/android.sh build|release v7|v8|x86`, where is `v7`, `v8`, `x86` - device CPU architecture for `build` type, for `release` specify version number in format `major.minor.patch`. +``` +./scripts/android.sh build|release v7|v8|x86 +``` + +`v7`/`v8`/`x86` is the device CPU architecture for `build`; for `release` pass a version in `major.minor.patch` form. + +## Identity service (`goblin-nip05d`) + +The optional `@name` + avatar service lives in `goblin-nip05d/` (axum + SQLite) and is deployed at [goblin.st](https://goblin.st). It implements NIP-05 resolution, NIP-98-authenticated registration/transfer/release, and a hardened avatar pipeline (magic-byte sniffing, bounded decode, full re-encode to a clean 256×256 PNG). The wallet is fully usable — and fully anonymous — without it. ## License @@ -40,6 +66,6 @@ Apache License v2.0. ## Credits -**Goblin** — the Cash App-style, Nostr-native payments experience layered on top of this wallet (end-to-end encrypted NIP-17 payments over Tor, in-app identity, and the goblin.st identity service) — was designed and built with development assistance from **Claude** ([Anthropic](https://www.anthropic.com)). +**Goblin** — the Cash App-style, Nostr-native payments experience layered on top of this wallet — was designed and built by the project owner with development assistance from **Claude** ([Anthropic](https://www.anthropic.com)). -The underlying cross-platform grin wallet is the upstream **Grim** project. +The underlying cross-platform GRIN wallet engine is the upstream **Grim** project.