site: wallet/messaging framing, username+npub, nostr primer, docs nav, security section

- Lead with wallet + encrypted messaging; drop send-money/payments framing
  in meta, lede, and footer tagline (price-preview copy left untouched)
- Add human framing: pay by username or npub
- Add 'new to nostr?' primer link to nostr.how
- Add Documentation nav item to docs.goblin.st (both pages)
- Add code-verified security section: double-encrypted (NIP-44 seal + wrap
  with sender-hiding ephemeral key), seed encrypted at rest, choose/self-host
  relays, all traffic over Tor
This commit is contained in:
2026-07-06 19:47:40 -04:00
parent e127919c78
commit 2dfdf2ce82
2 changed files with 50 additions and 6 deletions
+48 -5
View File
@@ -4,10 +4,10 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Goblin — a private wallet for GRIN ツ</title>
<meta name="description" content="Pay a username and the payment travels as an end-to-end encrypted message over nostr, through Tor. No files to swap, no addresses on the chain.">
<meta name="description" content="Goblin is a private GRIN wallet with encrypted messaging. Reach a friend by username or npub and it travels as an end-to-end encrypted message over nostr, through Tor. No files to swap, no addresses on the chain.">
<meta property="og:type" content="website">
<meta property="og:title" content="Goblin — a private wallet for GRIN ツ">
<meta property="og:description" content="Pay a username slatepacks and Tor handled for you. Relays only ever see ciphertext.">
<meta property="og:description" content="A private GRIN wallet with encrypted messaging. Reach a username or npub; slatepacks and Tor are handled for you, and relays only ever see ciphertext.">
<meta property="og:url" content="https://goblin.st/">
<meta property="og:image" content="https://goblin.st/assets/goblin-icon.png">
<link rel="icon" type="image/png" href="assets/goblin-icon.png">
@@ -27,6 +27,7 @@
<a href="#handles">Handles</a>
<a href="/use-cases">Use cases</a>
<a href="#downloads">Downloads</a>
<a href="https://docs.goblin.st" rel="noopener">Documentation</a>
<a class="gh" href="https://github.com/2ro/goblin" rel="noopener">
<svg viewBox="0 0 16 16" aria-hidden="true"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8Z"/></svg>
GitHub
@@ -41,8 +42,9 @@
<h1>Send grin like <span class="strike">a&nbsp;text.</span></h1>
<p class="lede">
Goblin is a private wallet for
<strong>GRIN</strong>. Pay a <span class="at">username</span> and the payment is
delivered as an end-to-end encrypted message over <strong>nostr</strong>, through
<strong>GRIN</strong> with encrypted messaging. Reach a
<span class="at">username</span> or an <span class="at">npub</span> and it travels as
an end-to-end encrypted message over <strong>nostr</strong>, through
<strong>Tor</strong>. No files to swap. No need to both be online.
</p>
<div class="cta-row">
@@ -155,6 +157,46 @@
</div>
</section>
<section id="security">
<div class="sec-head">
<h2>Security you can check</h2>
<p>Every claim here lives in the open-source code. Here is what protects
you, layer by layer.</p>
</div>
<div class="features">
<article class="feat">
<div class="glyph"><svg viewBox="0 0 24 24"><rect x="5" y="11" width="14" height="9" rx="2"/><path d="M8 11V8a4 4 0 0 1 8 0v3"/></svg></div>
<h3>Double-encrypted messages</h3>
<p>Every message is wrapped twice. A <a href="https://nips.nostr.com/44" rel="noopener">NIP-44</a>
seal encrypts it to the recipient, then an outer gift wrap re-encrypts it
with a throwaway key that also hides who sent it. Relays only ever see
ciphertext.</p>
</article>
<article class="feat">
<div class="glyph"><svg viewBox="0 0 24 24"><rect x="3" y="4" width="18" height="16" rx="2"/><path d="M3 10h18"/><path d="M7 7h.01M7 14h6"/></svg></div>
<h3>Your seed stays encrypted</h3>
<p>The recovery seed is encrypted at rest with your wallet password
before it ever touches disk. It is derived on demand and never held in
the clear.</p>
</article>
<article class="feat">
<div class="glyph"><svg viewBox="0 0 24 24"><rect x="3" y="4" width="18" height="7" rx="2"/><rect x="3" y="13" width="18" height="7" rx="2"/><path d="M7 7.5h.01M7 16.5h.01"/></svg></div>
<h3>Your relays, your choice</h3>
<p>Run on the defaults, pick your own set, or point Goblin at a relay
you host yourself, localhost included. You decide who carries your
messages.</p>
</article>
<article class="feat">
<div class="glyph"><svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="9"/><circle cx="12" cy="12" r="5.5"/><circle cx="12" cy="12" r="2"/></svg></div>
<h3>Everything over Tor</h3>
<p>Nostr messages, name lookups and price data all ride
<a href="https://www.torproject.org" rel="noopener">Tor</a>, embedded
right in the app. The relay never learns your IP; the encryption hides
the rest.</p>
</article>
</div>
</section>
<section id="handles">
<div class="handle-grid">
<div>
@@ -163,6 +205,7 @@
Your handle resolves through the open <a href="https://github.com/2ro/goblin-nip05d" rel="noopener">goblin.st identity service</a>
standard NIP-05, one name per key, yours until you release it.</p>
<p>Or remain anonymous and reset your identity whenever you want.</p>
<p class="nostr-primer">New to nostr? <a href="https://nostr.how" rel="noopener">nostr.how</a> is a friendly primer.</p>
</div>
<div class="code-card" aria-label="NIP-05 resolution example">
<span class="c-dim">$</span> curl 'https://goblin.st/.well-known/nostr.json?name=alice'<br>
@@ -276,7 +319,7 @@
</div>
<div class="foot-bottom">
<span>© 2026 the Goblin project · Built on <a href="https://code.gri.mw/GUI/grim" rel="noopener" style="color:inherit">Grim</a> by Ardocrat</span>
<span>Send money, not metadata. ツ</span>
<span>Private messages, not metadata. ツ</span>
</div>
</div>
</footer>
+2 -1
View File
@@ -69,6 +69,7 @@
<a href="/#features">Features</a>
<a href="/use-cases">Use cases</a>
<a href="/#downloads">Downloads</a>
<a href="https://docs.goblin.st" rel="noopener">Documentation</a>
<a class="gh" href="https://github.com/2ro/goblin" rel="noopener">
<svg viewBox="0 0 16 16" aria-hidden="true"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8Z"/></svg>
GitHub
@@ -217,7 +218,7 @@
</div>
<div class="foot-bottom">
<span>© 2026 the Goblin project · Built on <a href="https://code.gri.mw/GUI/grim" rel="noopener" style="color:inherit">Grim</a> by Ardocrat</span>
<span>Send money, not metadata. ツ</span>
<span>Private messages, not metadata. ツ</span>
</div>
</div>
</footer>