Protocol

Security Model

What stays on your device

The 24-word recovery phrase is created on your device. It derives the wallet, MORID name and messenger keys, as well as the relay owner key. The apps do not send your phrase, private wallet keys or conversation decryption keys to servers. Wallet and conversation keys are stored in an encrypted database on the device, protected with Argon2id, SQLCipher and XChaCha20-Poly1305. There is no cloud recovery.

What the apps verify

The gateway. The gateway provides blockchain data to the app. It does not receive the wallet’s private keys and cannot decrypt the user’s private payments. The wallet checks block headers and cryptographic proofs and rejects data that fails those checks. A gateway can withhold a response or show an outdated chain. To independently check the chain’s freshness and cumulative work, compare it with another gateway or your own node.

By default, the wallet syncs using block filters (BIP157/158) without sending its transparent addresses to the gateway. If the gateway does not support filters, the wallet requests address history and shows a warning: in this mode, the gateway can see the addresses.

Relays. These are the servers that deliver messenger messages. Relays do not have the keys to decrypt users’ conversations, so they cannot read them. A relay sees the encrypted envelope, the mailbox identifier and the envelope size, rounded up to one of a set of fixed sizes. All relays on the closed testnet are operated by the project. Some metadata is still visible to their operators. Further protection of this data is planned for the open testnet. See known limitations.

How network rules change

Each Morana node checks blocks and transactions against the rules in its installed software. Changing those rules requires a software update. Miners and operators decide whether to install it on their nodes.

An emergency shutdown of private transfers also requires an update. The new version specifies the block height from which the node stops accepting them, and the change is announced in advance. There is no key that can remotely disable private transfers on nodes already running.

Backups

A .morbak backup is encrypted, bound to its network and contains no recovery phrase or private keys. Restore the wallet with the same 24-word phrase before importing the backup. A backup from another wallet or network cannot be imported.

Network status and the limits of privacy

Morana is a closed testnet: participation is by invitation, and testnet coins are worth nothing. Z → Z transfers hide the private addresses and amount on chain, but metadata, habits and public transfers can still reveal information.

Responsible disclosure

Found a vulnerability? Report it privately through the vulnerability disclosure channel before public disclosure, and give the developers reasonable time to respond.

Before mainnet

  1. Closed testnet. Participation is by invitation. This stage includes four weeks of testing relay and name economics, followed by a report with measurements.
  2. Stress testing. Malformed transactions, extended fuzzing runs, reference-vector checks and tests of the emergency switch. Before the open testnet, a week of attack and service-failure exercises checks the network’s resilience. Reported bugs are investigated and fixes are checked again.
  3. Open testnet. Open participation and publication of the source code, with testing by users outside the project.
  4. Mainnet. Launch once the readiness conditions are met. The working target is Q1–Q2 2027, not a promised date.

Testnet coins and state do not carry over to mainnet.