Enygma Public

Enygma Public brings shielded payments to the Rayls Public Chain. Anyone can use it, people and businesses alike: tokens move between accounts without the public seeing who paid whom or how much, while the deployment's auditor can read every payment. It runs as smart contracts on the Public Chain, with the cryptography in the user's browser, so it needs no Rayls Sovereign ledger and no Private Network.

👍

Live on testnet

Enygma Public is live on the Rayls Public Chain testnet at enygma-testnet.rayls.com. It runs on test tokens with no value. See Try Enygma Public on testnet.

What Enygma Public does

  • Shielded balances. An account shields public ERC-20 tokens, such as USDr and RLS, into a shielded balance, and unshields them back to any address.
  • Shielded payments. An account pays another registered account from its shielded balance. The chain checks a zero-knowledge proof made in the sender's browser and doesn't learn the sender, the recipient or the amount.
  • An auditor for every deployment. When an account registers, a copy of its view key is encrypted to the deployment's auditor, so the auditor can read every shielded payment: shielded from the public, not from the auditor. The auditor can read, but it can't freeze or move funds.
  • Passkey accounts. A passkey creates the account and approves every transaction, with no seed phrase and no browser extension to install. An existing EVM wallet can be used instead.
  • Gas in RLS. Every transaction pays its gas in RLS through a relayer, and the wallet shows the fee before you confirm. Shielded payments pay it from shielded RLS, so no address of the sender's appears onchain.
  • Invites. An account can send a link that starts a new account with shielded tokens in it, so the newcomer's address never receives a public token.
  • Quantum-private. Notes and escrowed view keys are encrypted with ML-KEM-768, the post-quantum key encapsulation standard from the US National Institute of Standards and Technology (NIST).

How it differs from Enygma Sovereign

Enygma SovereignEnygma Public
ForInstitutions in a Rayls Private NetworkAnyone on the Rayls Public Chain
Proofs and keysWith each institution's Rayls Sovereign ledgerIn the user's browser, from a passkey
Settles onThe Private Network HubThe Rayls Public Chain
Shielded balancesA commitment per participantNotes in a vault contract
Reads every transactionThe Private Network operatorThe deployment's auditor
GasNoneRLS, through a relayer

Components

ComponentRun byRole
WalletThe user, in a browserDerives the keys from a passkey, finds the account's notes, makes the zero-knowledge proofs and signs requests. The keys never leave the browser tab.
Vault contractsOnchainHold shielded tokens as notes in Merkle trees, check each proof and record which notes are spent. A shared vault takes any ERC-20 token.
RegistryOnchainHolds each account's public keys, its username, and its view key escrowed to the auditor.
VerifierOnchainChecks the zero-knowledge proofs for the vaults.
Gas forwarderOnchainLets the relayer submit a request the account signed (ERC-2771), and charges its gas in RLS.
RelayerRaylsSubmits every transaction, pays the chain's gas, charges the account in RLS, and runs the testnet faucet.
Owner multisigThe deployment's ownersUpgrades the registry and the shared vault, registers vaults and adds verifying keys. A change waits until enough owners sign it.
Auditor viewThe deployment's auditorsOpens every account's escrowed view key and shows every shielded transaction.

One auditor per deployment

An Enygma Public deployment is one set of these contracts with one auditor key. A deployment can be set up per country, so that each auditor reads only its own country's activity. An account registers separately in each deployment it uses. The testnet site runs one deployment, and Rayls is its auditor.

In principle, Enygma Public could also be deployed without an auditor, with a registry that doesn't escrow view keys. That isn't the focus today: Enygma Public is built for payments that stay open to oversight.

In this section


Did this page help you?