Your keys never leave your device.
Keys are generated in your browser using libsodium. They are encrypted with a password you choose (Argon2id + XSalsa20-Poly1305) before being stored. No Morphit server ever sees them.
What we promise, and what that means for you.
Keys are generated in your browser using libsodium. They are encrypted with a password you choose (Argon2id + XSalsa20-Poly1305) before being stored. No Morphit server ever sees them.
No cookies. No analytics. No third-party scripts. No IP logging. No telemetry. Morphit never sees or logs your IP address. Look at the Network tab in your browser: your orders, your chat, and your balances all go to Morphit and nowhere else.
Morphit is built so an operator can run a node that never touches the clearnet internet — not once. Every outbound path rides Tor and I2P instead: chain reads over hidden-service RPC, prices from the federation rather than a clearnet API, and upgrades fetched from other operators' hidden IPFS gateways and verified against the on-chain hash. This is verified, not asserted — a node only earns the "Zero use of clearnet internet" badge in the directory when all seven independent outbound legs are provably hidden, and any single unproven leg keeps it off. It is a per-node posture: a clearnet instance still uses clearnet by design. But the capability is real and running today — morphitlat operates over Tor and I2P only and shows the badge live. For an operator in a censored region, that is a node whose IP is never exposed and that cannot be dropped by blocking the open internet.
Every message uses X25519 key agreement plus ChaCha20-Poly1305 authenticated encryption (libsodium primitives) with a fresh ephemeral key per message. Plaintext exists only inside your browser and your trading partner's browser. Morphit's servers, the underlying chain, and anyone in between see only ciphertext. The full protocol — including the deliberate tradeoffs we accept (no per-message forward secrecy) — is in docs/adr/0015-chat-crypto.md.
Every release is tagged; every asset is fingerprinted; SRI protects every script. You can rebuild from source and compare — we publish the hashes alongside each release.
The full threat model is in the repo's docs/SECURITY.md. We're explicit about what we protect against and what we don't — because pretending otherwise would be worse than honesty.
We run a discretionary security recognition program. Every actionable finding gets reviewed by a real engineer, gets an answer, and — if it materially improves Morphit's security posture — gets rewarded in BLURT (paid from @morphit-fees) or BTC, scaled to severity and the report's quality. No fixed tier table; case-by-case adjudication. Hall of fame credit available even when payment isn't. The full scope, severity guidance, payment workflow, and what we won't do (no NDA, no exclusive disclosure) is documented in SECURITY.md.
We publish a weekly warrant canary signed with the operator's PGP key. The canary explicitly declares no NSL / FISA / gag-order / backdoor demand has been served. Freshness proofs include a current blockchain head, a current Bitcoin chain head, and a current news headline (proves the canary cannot be pre-generated). If the canary stops updating for more than 14 days, treat it as silent: the operator may be under coercive pressure, and you should switch to a different federated operator.