Smart contracts

Unstoppable private smart contracts.

Composable smart contracts with privacy built in, deployed without permission on a network no single party controls.

Write smart contracts that seamlessly blend private and public state.

  1. Runs on the user’s device and proves execution without publishing the inputs.

  2. Runs on the sequencer, against state everyone can read.

  3. An unconstrained read for your interface. Never changes state.

  4. Each variable is declared private or public.

Aztec.nrnoir
#[aztec]pub contract Token {    #[storage]    struct Storage<Context> {        // Public. Anyone can read it.        total_supply: PublicMutable<u128, Context>,        // Private. Encrypted notes, only        // the owner holds the keys.        balances: Owned<BalanceSet<Context>, Context>,    }     // Runs on the sender's own device.    // Proves the transfer without publishing the amount.    #[external("private")]    fn transfer(to: AztecAddress, amount: u128) {        self.storage.balances.at(self.msg_sender()).sub(amount);        self.storage.balances.at(to).add(amount);    }     // Runs on the sequencer, exactly    // like an Ethereum contract.    #[external("public")]    #[view]    fn total_supply() -> u128 {        self.storage.total_supply.read()    }     // Runs on the user's device to read    // their own notes. Changes nothing.    #[external("utility")]    unconstrained fn balance_of_private(owner: AztecAddress) -> u128 {        self.storage.balances.at(owner).balance_of()    }}
Visit the Aztec docs to start building

You choose what to disclose.

One payroll payment, seen three ways.

A public payroll payment

From
0x71C7…f9a3
To
0x3fE2…b12c
Amount
25,000 USDC
Contract
Payroll
Visible to
Everyone, permanently

A private payment on Aztec

From
Hidden
To
Hidden
Amount
Hidden
Contract
Hidden
Proof
Valid

A receipt you choose to share

Amount
25,000 USDC
Purpose
Payroll
Visible to
Your chosen auditor
Other activity
Hidden

Prove on your device. Settled on Ethereum.

  1. 01

    Simulate

    Private functions execute locally, against notes only you can decrypt.

  2. 02

    Prove

    Your machine proves that every rule in the contract was followed.

  3. 03

    Submit

    The proof, note commitments, nullifiers, and any public calls.

  4. 04

    Settle

    The sequencer runs the public part, the epoch is proven, Ethereum settles it.

Programmable privacy, fully composable.

Bring more activity onchain without putting it all on display.

Contracts call contracts

Private calls stay confidential down the whole call chain, then hand off to public in the same transaction.

Public pool, private position

Keep the shared parts public and useful. Keep what identifies you out of sight.

Connected to Ethereum

Portal contracts put existing assets and liquidity in reach.

Apps that couldn't exist on a transparent chain.

Payment & Payroll

Pay a salary or an invoice without publishing the amount or the counterparty.

Selective disclosure

Reveal one fact to one party, and nothing else to anyone.

Private voting

Count every vote in public. Keep every ballot private.

Hidden-information games

A game is not much of a game when every hand is face up.

Private DeFi

Swap, lend, and earn without handing your position to a front-runner.

Identity

Prove you are over 18, a member, or accredited without handing over the document.

Questions, answered.

Where do private transactions execute?

On the user's device. Private functions execute locally and produce a proof the network can verify without seeing their private inputs. The application defines any information it reveals through public calls, outputs, or disclosure to other parties. Public functions execute on the network.

Can an Aztec contract combine private and public functions?

Yes, and most useful applications do. One contract can hold private state, public state, or both, and one transaction can touch both. An attribute on each function decides where it runs, and each storage variable is declared private or public.

Build what no single party controls.