mirror of
https://github.com/Such-Software/smirk-website.git
synced 2026-10-17 05:51:28 +02:00
docs: bring privacy + terms current with v0.3
- Privacy: add Nostr identity + name@smirk.cash, encrypted messaging, and IP-hashing sections; note the self-hostable backend (your data goes to that operator, not us). Correct the BTC/LTC description: addresses are queried against Electrum/Fulcrum servers, not mempool.space/litecoinspace.org. - Terms: usernames/identity, reporting unlawful content, DMCA, and relay/messaging abuse terms for v0.3. - smirk.d.ts: SmirkPaymentRequest.amount is a human decimal amount, not atomic units (matches the dapp protocol after the decimal-amount fix).
This commit is contained in:
@@ -36,9 +36,12 @@ export default function Privacy() {
|
||||
Smirk is published by <strong className="text-white">Such Software LLC</strong>, a
|
||||
single-member limited liability company organized under the laws of the Commonwealth
|
||||
of Pennsylvania, United States ("Such Software," "we," "us," or "our"). This policy
|
||||
explains what stays on your device, what our backend receives to power tipping and
|
||||
balances, and which independent third parties see what. It applies to the Smirk browser
|
||||
extension, desktop application, and this website (smirk.cash).
|
||||
explains what stays on your device, what our backend receives to power identity,
|
||||
balances, tipping, and optional messaging, and which independent third parties see
|
||||
what. It applies to the Smirk browser extension, desktop application, and this website
|
||||
(smirk.cash). Smirk's v0.3 backend is open source and self-hostable: you can run
|
||||
your own instance (or use another operator's), in which case the backend data
|
||||
described here goes to that server, not ours.
|
||||
</p>
|
||||
|
||||
{/* Section 1 */}
|
||||
@@ -101,9 +104,10 @@ export default function Privacy() {
|
||||
<h3 className="text-lg font-semibold text-white mt-6 mb-3">D. Bitcoin & Litecoin Public Addresses</h3>
|
||||
<p className="text-zinc-400 mb-3">
|
||||
To show your BTC and LTC balances and broadcast your transactions, our backend
|
||||
forwards your <strong>public</strong> wallet addresses to mainstream blockchain
|
||||
indexers (e.g. mempool.space for Bitcoin, litecoinspace.org for Litecoin).
|
||||
These are the same indexers most non-custodial wallets use.
|
||||
queries <strong>Electrum/Fulcrum</strong> servers with your <strong>public</strong>
|
||||
wallet addresses. The default configuration uses public Electrum servers, the same
|
||||
kind most non-custodial wallets use; a self-hosted operator can point at their own
|
||||
node instead.
|
||||
</p>
|
||||
<ul className="space-y-2 text-zinc-400 ml-4">
|
||||
<li><strong className="text-white">What is shared:</strong> only public address strings and signed transaction bytes — never seed phrases or private keys.</li>
|
||||
@@ -148,6 +152,45 @@ export default function Privacy() {
|
||||
<li><strong className="text-white">Referral commission:</strong> Such Software receives a referral commission (around 1% of the swap amount) from Trocador, already reflected in the quoted rate. We are never in custody of or in the settlement path for the swapped funds — see our <Link href="/terms" className="text-[#fbeb0a] hover:underline">Terms</Link> for details.</li>
|
||||
<li><strong className="text-white">Opt-in:</strong> no swap data leaves your device until you tap to request a quote.</li>
|
||||
</ul>
|
||||
|
||||
<h3 className="text-lg font-semibold text-white mt-6 mb-3">H. Nostr Identity & name@smirk.cash</h3>
|
||||
<p className="text-zinc-400 mb-3">
|
||||
Smirk v0.3 gives your wallet a <strong>Nostr identity</strong> — a public key
|
||||
("npub") derived from your seed. If you choose a Smirk username and link your
|
||||
npub, our backend stores that <strong>username ↔ npub</strong> mapping and
|
||||
publishes it in a public <strong>NIP-05 directory</strong> at{' '}
|
||||
<code>/.well-known/nostr.json</code>, so others can verify you as{' '}
|
||||
<strong>name@smirk.cash</strong> and route messages to you.
|
||||
</p>
|
||||
<ul className="space-y-2 text-zinc-400 ml-4">
|
||||
<li><strong className="text-white">Public by design:</strong> a username and npub are public identifiers meant to be looked up. Any name you link is publicly resolvable; a name you have not linked returns nothing (the directory does not reveal whether a name exists).</li>
|
||||
<li><strong className="text-white">Optional:</strong> you do not need a username to use the wallet — it exists only to give you a name@smirk.cash handle and let people find you.</li>
|
||||
<li><strong className="text-white">Derived, not custodial:</strong> your npub is a public key; the matching private key stays on your device with your seed.</li>
|
||||
</ul>
|
||||
|
||||
<h3 className="text-lg font-semibold text-white mt-6 mb-3">I. Encrypted Messaging (Nostr Direct Messages)</h3>
|
||||
<p className="text-zinc-400 mb-3">
|
||||
Smirk v0.3 supports end-to-end <strong>encrypted direct messages</strong> over the
|
||||
Nostr protocol (NIP-17 "gift-wrapping"). Messages are encrypted on your device
|
||||
before they leave it. They travel through Nostr <strong>relays</strong> — public
|
||||
relays and, optionally, one operated by Such Software — which carry only ciphertext
|
||||
they cannot read.
|
||||
</p>
|
||||
<ul className="space-y-2 text-zinc-400 ml-4">
|
||||
<li><strong className="text-white">What a relay we operate can see:</strong> the encrypted envelope, the recipient's public key (needed to deliver it), and basic metadata (timing, size). It cannot see message contents, and the gift-wrapping hides the real sender.</li>
|
||||
<li><strong className="text-white">Retention:</strong> a relay we operate stores encrypted messages briefly (currently about 30 days) so your other devices can fetch them, then deletes them.</li>
|
||||
<li><strong className="text-white">Your choice of relay:</strong> you can use other Nostr relays instead of, or in addition to, ours — messaging does not depend on us.</li>
|
||||
<li><strong className="text-white">Opt-in:</strong> messaging is a feature you choose to use.</li>
|
||||
</ul>
|
||||
|
||||
<h3 className="text-lg font-semibold text-white mt-6 mb-3">J. IP Addresses</h3>
|
||||
<p className="text-zinc-400 mb-3">
|
||||
Like any internet server, our backend receives your device's IP address with
|
||||
each request. We store only a <strong>salted, one-way hash</strong> of it, and only
|
||||
for rate-limiting and abuse prevention (for example, throttling automated signups).
|
||||
We do not use it to track you or link it to your wallet, and self-hosting avoids
|
||||
sharing it with us at all.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
{/* Section 3 */}
|
||||
@@ -162,6 +205,12 @@ export default function Privacy() {
|
||||
<strong className="text-white">No Sale of Data:</strong> We do not, and will never,
|
||||
sell your social handles, transaction history, or view key data to third parties.
|
||||
</li>
|
||||
<li>
|
||||
<strong className="text-white">Legal requests:</strong> We may access, preserve, or
|
||||
disclose the limited data we hold to comply with valid legal process or applicable
|
||||
law, or to report unlawful content (such as child sexual abuse material) as the law
|
||||
requires.
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
@@ -184,12 +233,15 @@ export default function Privacy() {
|
||||
<ul className="space-y-2 text-zinc-400">
|
||||
<li><strong className="text-[#fbeb0a]">Non-Custodial:</strong> We never see your private spend keys. Your money is yours.</li>
|
||||
<li><strong className="text-[#fbeb0a]">View Keys:</strong> We collect Monero/Wownero view keys to scan for your tips so you don't have to sync the whole blockchain.</li>
|
||||
<li><strong className="text-[#fbeb0a]">Public Addresses:</strong> Your BTC/LTC public addresses are forwarded to mainstream blockchain indexers — the same ones every non-custodial wallet uses. Nothing private.</li>
|
||||
<li><strong className="text-[#fbeb0a]">Public Addresses:</strong> Your BTC/LTC public addresses are queried against Electrum/Fulcrum servers, the same kind every non-custodial wallet uses. Nothing private.</li>
|
||||
<li><strong className="text-[#fbeb0a]">Fingerprint:</strong> A one-way SHA-256 of your seed is sent to identify your wallet — not reversible, cannot move funds.</li>
|
||||
<li><strong className="text-[#fbeb0a]">Encrypted:</strong> All tip payloads are encrypted on your device.</li>
|
||||
<li><strong className="text-[#fbeb0a]">Identity:</strong> We only store your Social ID to help people find your public key.</li>
|
||||
<li><strong className="text-[#fbeb0a]">Dapps:</strong> The <code>window.smirk</code> API is opt-in per origin, revocable per origin, and can be turned off globally in Settings.</li>
|
||||
<li><strong className="text-[#fbeb0a]">Swaps:</strong> Optional, opt-in, routed through third-party aggregators (e.g. Trocador). We never operate an exchange, but we do earn a ~1% referral commission that's baked into the quoted rate.</li>
|
||||
<li><strong className="text-[#fbeb0a]">Identity:</strong> An optional Smirk username + your linked Nostr key (npub) are public — they back your name@smirk.cash handle. No username, no listing.</li>
|
||||
<li><strong className="text-[#fbeb0a]">Messaging:</strong> Optional end-to-end encrypted DMs over Nostr. Relays (ours or public) carry only ciphertext they can't read; a relay we run keeps encrypted messages ~30 days.</li>
|
||||
<li><strong className="text-[#fbeb0a]">Self-hostable:</strong> The v0.3 backend is open source — run your own and none of this backend data touches us.</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
@@ -198,7 +250,7 @@ export default function Privacy() {
|
||||
<h2 className="text-xl font-bold text-[#fbeb0a] mb-4">4. Third parties you choose to enable</h2>
|
||||
<p className="text-zinc-400">
|
||||
Some features connect you to independent third parties operated by others,
|
||||
not by us — Trocador for swaps, the blockchain indexers noted above, and any
|
||||
not by us — Trocador for swaps, the Electrum servers noted above, and any
|
||||
site you connect to through the <code>window.smirk</code> interface. Those
|
||||
endpoints see whatever your interactions with them entail, and each has its
|
||||
own privacy policy. We neither control nor monitor those connections, and we
|
||||
@@ -235,7 +287,7 @@ export default function Privacy() {
|
||||
</p>
|
||||
<p className="text-zinc-400">
|
||||
For data held by third parties you've used through Smirk (Trocador, node
|
||||
operators, blockchain indexers), contact those providers directly using the
|
||||
operators, Electrum servers), contact those providers directly using the
|
||||
privacy contact in their respective policies.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
+78
-2
@@ -33,7 +33,8 @@ export default function Terms() {
|
||||
Smirk is non-custodial wallet software published by Such Software LLC.
|
||||
You hold your own keys; we never take custody of your coins and cannot
|
||||
recover them for you. Some features route you to independent third
|
||||
parties (Trocador for swaps) that have their own terms. Crypto is risky
|
||||
parties (like Trocador for swaps) that have their own terms, and Smirk can
|
||||
send end-to-end encrypted messages over the Nostr network. Crypto is risky
|
||||
and largely irreversible. The software is provided "as is." These are
|
||||
the details.
|
||||
</p>
|
||||
@@ -176,7 +177,10 @@ export default function Terms() {
|
||||
our permission, or to introduce viruses, malware, or other harmful
|
||||
code;</li>
|
||||
<li>to infringe others' rights, impersonate others, provide false
|
||||
information, or harass, abuse, or harm others.</li>
|
||||
information, or harass, abuse, or harm others;</li>
|
||||
<li>to create, store, send, request, or distribute content that is unlawful —
|
||||
including child sexual abuse material (CSAM) or any content that sexually
|
||||
exploits or endangers a minor, and content that infringes intellectual property.</li>
|
||||
</ul>
|
||||
<p className="text-zinc-400 mt-4">
|
||||
We may suspend, restrict, or terminate your access to the Software (or to
|
||||
@@ -185,6 +189,44 @@ export default function Terms() {
|
||||
your license does not affect your ability to access your funds with your
|
||||
seed phrase in other compatible wallet software.
|
||||
</p>
|
||||
<p className="text-zinc-400 mt-4">
|
||||
<strong className="text-white">Usernames and identity.</strong> A Smirk username
|
||||
(which backs your name@smirk.cash handle) is assigned on a first-come basis and
|
||||
gives you no ownership of the name. You may not choose a username that impersonates
|
||||
another person or project or that infringes a trademark, and we may refuse, reclaim,
|
||||
or reassign usernames — including reserved names — to prevent impersonation or abuse.
|
||||
Your Nostr keys are derived from your seed and remain yours regardless.
|
||||
</p>
|
||||
<p className="text-zinc-400 mt-4">
|
||||
<strong className="text-white">Reporting unlawful content.</strong> We report child
|
||||
sexual abuse material to the National Center for Missing & Exploited Children
|
||||
(NCMEC) and cooperate with law enforcement and valid legal process as required by
|
||||
law. To report unlawful content or abuse, or to send a copyright or other legal
|
||||
notice, contact{' '}
|
||||
<a href="mailto:legal@such.software" className="text-[#fbeb0a] hover:underline">
|
||||
legal@such.software
|
||||
</a>
|
||||
.
|
||||
</p>
|
||||
<p className="text-zinc-400 mt-4">
|
||||
<strong className="text-white">Copyright (DMCA).</strong> Such Software LLC complies
|
||||
with the Digital Millennium Copyright Act. If you believe content made available
|
||||
through a service we operate infringes your copyright, send a notice containing the
|
||||
elements required by 17 U.S.C. § 512(c)(3) to our registered Designated Agent:
|
||||
</p>
|
||||
<p className="text-zinc-400 mt-2 ml-4">
|
||||
Such Software LLC — DMCA Designated Agent<br />
|
||||
[mailing address, as registered with the U.S. Copyright Office]<br />
|
||||
<a href="mailto:legal@such.software" className="text-[#fbeb0a] hover:underline">
|
||||
legal@such.software
|
||||
</a>
|
||||
</p>
|
||||
<p className="text-zinc-400 mt-2">
|
||||
We remove or disable access to material in response to valid notices and, in
|
||||
appropriate circumstances, terminate repeat infringers. If you believe your content
|
||||
was removed in error, you may submit a counter-notification under § 512(g) to the
|
||||
same contact.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
{/* Section 7 */}
|
||||
@@ -233,6 +275,18 @@ export default function Terms() {
|
||||
and we are never in custody of or in the settlement path for the swapped
|
||||
funds, we act as a referrer, not as a money transmitter or exchanger.
|
||||
</p>
|
||||
|
||||
<h3 className="text-lg font-semibold text-white mt-6 mb-3">7.2 Additional providers</h3>
|
||||
<p className="text-zinc-400">
|
||||
We may add other independent swap, exchange, or fiat on-ramp/off-ramp providers
|
||||
(and, in the future, peer-to-peer swap functionality) within the Software. Each such
|
||||
provider is operated by others, not by us, and your use of it is governed by that
|
||||
provider's own terms and privacy policy. Some providers — particularly fiat
|
||||
on-ramps — may require identity verification (KYC) and may decline service under
|
||||
their own policies and applicable law; any such verification is between you and that
|
||||
provider, and Such Software does not perform it or receive that verification data. We
|
||||
are not the counterparty to, and take no custody in, those transactions.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
{/* Section 8 */}
|
||||
@@ -268,6 +322,27 @@ export default function Terms() {
|
||||
</Link>
|
||||
.
|
||||
</p>
|
||||
|
||||
<h3 className="text-lg font-semibold text-white mt-6 mb-3">9.1 Messaging and the Nostr relay</h3>
|
||||
<p className="text-zinc-400 mb-4">
|
||||
Smirk supports optional end-to-end encrypted direct messages over the Nostr protocol.
|
||||
Messages are encrypted on your device; relays carry only ciphertext. Such Software may
|
||||
operate a Nostr relay that the Software can use, alongside independent public relays. A
|
||||
relay we operate transmits and briefly stores encrypted messages so your devices can
|
||||
retrieve them; we do not read, and cannot read, their contents.
|
||||
</p>
|
||||
<p className="text-zinc-400">
|
||||
Because a relay is a shared service, we may <strong className="text-white">rate-limit,
|
||||
refuse, or remove</strong> events and restrict who may publish, to protect the service
|
||||
and other users from spam, abuse, or unlawful use, and to comply with the law. We do
|
||||
not guarantee message delivery, ordering, or retention, and we are not the author of,
|
||||
and are not responsible for, messages that users send. You are solely responsible for
|
||||
the messages you send, and you must not use messaging for unlawful, abusive, or
|
||||
infringing content or for spam. Because gift-wrapped messages are encrypted end to
|
||||
end, we cannot read or proactively screen their contents; we act on reports and valid
|
||||
legal process, and report unlawful material as described in Section 6. You may use
|
||||
other Nostr relays instead of ours.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
{/* Section 10 */}
|
||||
@@ -493,6 +568,7 @@ export default function Terms() {
|
||||
<li><strong className="text-[#fbeb0a]">Non-Custodial:</strong> You control your keys. We cannot access or recover your funds.</li>
|
||||
<li><strong className="text-[#fbeb0a]">Your Responsibility:</strong> Back up your recovery phrase. Losing it means losing your funds forever.</li>
|
||||
<li><strong className="text-[#fbeb0a]">Swaps:</strong> Executed by Trocador, not us. We earn a ~1% referral commission that's already baked into the quoted rate.</li>
|
||||
<li><strong className="text-[#fbeb0a]">Messaging:</strong> Optional encrypted DMs over Nostr. Relays carry only ciphertext; we may rate-limit or refuse abuse, and aren't responsible for what users send.</li>
|
||||
<li><strong className="text-[#fbeb0a]">Irreversible:</strong> Cryptocurrency transactions cannot be cancelled or reversed.</li>
|
||||
<li><strong className="text-[#fbeb0a]">No Guarantees:</strong> We provide the service as-is. Use at your own risk.</li>
|
||||
<li><strong className="text-[#fbeb0a]">Be Legal:</strong> Don't use Smirk for illegal activities.</li>
|
||||
|
||||
Vendored
+3
-1
@@ -45,7 +45,9 @@ interface SmirkClaimResult {
|
||||
|
||||
interface SmirkPaymentRequest {
|
||||
asset: 'btc' | 'ltc' | 'xmr' | 'wow';
|
||||
amount: string; // Atomic-units string (avoid float)
|
||||
amount: string; // Human decimal amount in whole coins, e.g. "9" or "9.5". The
|
||||
// wallet converts to atomic units using the asset's decimals; do
|
||||
// NOT pre-compute atomic units yourself.
|
||||
address: string;
|
||||
memo?: string;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user