Skip to content
Minerva. Post-quantum, proof of work.

Accounts

Minerva accounts

Every account is a contract at a CREATE2-derived address, controlled by an ML-DSA-65 key that is recorded on-chain and can be rotated. There are no externally owned accounts.

A monumental doorway
Smart accounts

Account lifecycle

  1. 1

    Create

    An account address is derived with CREATE2 from the factory, the initial ML-DSA-65 key and a salt. It can receive funds before any contract exists, and it can deploy itself with its own first transaction.

  2. 2

    Authorize

    Every native transaction carries the account, the public key, the algorithm, the policy version and a signature over a hash that binds chain id, nonce and the whole envelope. The node verifies it against the account's control record before gas is charged.

  3. 3

    Rotate

    rotatePQKey, signed by the current key, writes the new key commitment and increments the policy version in the Account Control Registry. From that block the previous key is rejected on the native path at every policy version.

  4. 4

    Delegate

    Device keys are enrolled with scopes: allowed targets or any, a value limit per window, an expiry, and protected targets no scope can include. Consensus admits a device key only for zero-value self-calls; the account contract enforces the scope.

  5. 5

    Recover

    Today recovery means restoring the encrypted ML-DSA key from the Recovery Kit and rotating. Policy-based recovery (guardians) would end in the same registry write; it is planned, not shipped.

The diagram follows the implemented model. The steps marked as planned are design targets and are labeled as such on the Core v1 page.

Overview graphics

Native transaction

MinervaPQTxV1 is the only transaction type a Minerva network accepts. Legacy Ethereum types are invalid by consensus, so no ECDSA path exists for any account.

Type byte
0x4D
Fields
chainId, nonce, fees, gas, account, factorySalt, to, value, data, accessList, pqAlgorithm, pqPublicKey, policyVersion, pqSignature
Signing context
MINERVA_PQ_TX_V1
Account context
MINERVA_ACCOUNT_V1 (executePQ, rotatePQKey, isValidSignature)
Authorizing key in-contract
MINERVA_TX_CONTEXT precompile at 0x0000000000000000000000000000000000004D01
Control record
AccountControlRegistry at 0x…0204: commitment, algorithm, policyVersion

Account control in Minerva Wallet

AccountSample data · not connected

Identity

Address
0x7D3488118952dD7A7d087Ff7845151fd3C1A5829
Network
Minerva Testnet · chain 77138
Control Key
on-chain record · policy v1
Key commitment
0xdff7…90b9
Authorization policy
native-only · 0 device keys
Recovery configuration
Recovery Kit (encrypted key backup)
Last confirmed update
0x9c4e…a1d7 · block 12,418
ReceiveSend

Control actions

  • Control Key rotationConfirmed · v1

    Shows the key that is authoritative now, read from the Account Control Registry, not the key the account was created with.

  • Pending rotationRequested · not effective

    A requested rotation is listed separately until its block confirms. The previous key stays valid until then.

  • Recovery policyRecovery Kit

    An encrypted backup of the ML-DSA key with a rehearsal flow. Guardian-based recovery is specified, not shipped.

  • Device keys0 enrolled

    Scoped keys limited to zero-value self-calls; revocation takes effect at consensus.

This page never asks for a key or a Recovery Kit. Signing and recovery happen in Minerva Wallet 0.1.2; the account model is described under Accounts.

Documentation