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

Smart contracts
Composable smart contracts with privacy built in, deployed without permission on a network no single party controls.
Runs on the user’s device and proves execution without publishing the inputs.
Runs on the sequencer, against state everyone can read.
An unconstrained read for your interface. Never changes state.
Each variable is declared private or public.
#[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() }}One payroll payment, seen three ways.
A public payroll payment
A private payment on Aztec
A receipt you choose to share
Private functions execute locally, against notes only you can decrypt.
Your machine proves that every rule in the contract was followed.
The proof, note commitments, nullifiers, and any public calls.
The sequencer runs the public part, the epoch is proven, Ethereum settles it.
Bring more activity onchain without putting it all on display.
Private calls stay confidential down the whole call chain, then hand off to public in the same transaction.
Keep the shared parts public and useful. Keep what identifies you out of sight.
Portal contracts put existing assets and liquidity in reach.
Pay a salary or an invoice without publishing the amount or the counterparty.
Reveal one fact to one party, and nothing else to anyone.
Count every vote in public. Keep every ballot private.
A game is not much of a game when every hand is face up.
Swap, lend, and earn without handing your position to a front-runner.
Prove you are over 18, a member, or accredited without handing over the document.
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.
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.