Getting Started with Privacy App Development on Aztec I Josh Crites
ETHGlobal·Tue, Dec 9, 2025, 12:00 AM
Join Josh Critesv for a workshop titled "Getting Started with Privacy App Development on Aztec", featured at ETHGlobal Buenos Aires 2025! _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 🇦🇷 *ETHGlobal Buenos Aires* This workshop is specifically for ETHGlobal Buenos Aires, a 3-day hackathon held November 21-23 at the Centro de Convenciones Buenos Aires, bringing together the most skilled web3 developers, designers and product builders from all around the globe for a weekend-long adventure to advance the Ethereum ecosystem! Watch the full ETHGlobal New Delhi 2025 playlist here: https://www.youtube.com/playlist?list=PLXzKMXK2aHh76O7FfAHPJkZcqTIfYpoyf _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ✅ *Follow ETHGlobal* X: https://x.com/ETHGlobal Warpcast: https://warpcast.com/ethglobal Website: https://ethglobal.com YouTube: https://www.youtube.com/c/ETHGlobal _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _Are you interested in Ethereum development and entrepreneurship?_ 👉 Sign up for the next ETHGlobal event: https://ethglobal.com/events 🎁 Get exclusive access and perks with ETHGlobal Plus! https://ethglobal.com/plus 📣 Want us to throw an event in your city? Tell us where! https://ethglobal.com/city
Transcript
did like get some software on your guys' computers and give you some reference repositories so you can dig deeper because we only have 20 minutes, not a lot of time to get into all of the details of Aztec. Um, but at a high level, Aztec is a privacy focused layer 2 on Ethereum. Um so that means we have private state and private execution on our rollup. Um as well as public public state and public execution. Um so public state and public execution look very similar to Ethereum or other roll-ups just public blockchains in general.
Um private state and private execution is actually very different. Um the architecture is very different. So we can have strong privacy. Um, and the way that you'll basically there's implications for how all the software tools we use are um, the way we write smart contracts, our SDKs. Um, so what I want to do here is introduce you guys to the tooling that you'll need to install if you want to start building on Aztec, like how you get a local environment running.
Um, and then some repositories that have example contracts, um, example scripts for how to do things. and we can go into like some of the higher level concepts that will be helpful as you dig into actual development that will just like um hopefully help you understand how to start building with this. So um to start we'll install we'll do a highle overview and then we'll go into some references. Actually I'm going to start with the references if you guys want to pull this up on your phone. This is a one pager that's linked on the ETH global website um on the Aztec sponsor page.
One of our links is like a it's just called something one pager of of references or resources. Um it's a hackmd. It's got actually let me just pull it up because we can go over it. I'll go over some of the Aztec starter in this workshop.
Forbidden. Okay. Um no this is good good information. It should be linking to this. Can you guys in that QR code?
Did it work for other people or was it all?
Okay. Um, but here's this is just linking to this. So, if you want to get this QR code, this should work. Yeah, it's also on the ETH global site. Um, but essentially, we'll just quickly go over these resources and we can go into some of the details.
Um, I'm going to go over the Aztec starter and some of the scripts in this repository, but this Aztec starter repo is meant to be a resource to get started learning about Aztec. So, it's a simple voting contract. Um, there's some scripts here that help you compile contracts using the tooling that we'll install. Um, shows you how to set up test wallets for deploying accounts. Um, using sponsored fee payment contracts, which is how you'll pay fees on our DevNet.
Um, so you don't need to use a faucet. We just have we have fee abstraction. So this contract will just take care of fees for you. Um, there's end toend TypeScript tests as well as unit tests in the contract. So there's a link to the GitHub there.
There's Aztec boilerplate which is built by one of our community teams. Um, D5 Wonderland has made this. This boiler plate is actually meant to be a starting point for building applications. So once you want to like start writing a contract, um, this Aztec boiler plate is a good place to start. It comes with like benchmarking um more testing stuff.
Um we have an Aztec examples repo which is a collection of contracts and circuits written in noir that's designed to make learning some of these concepts easier. Um we have these are a bit more advanced. So um if you want to see how to like recursively verify noir proofs in an Aztec contract, there's a working example in this repost. So you can just um yeah check out this repo, see how to do that. Um so something that might be useful or or cool to build here um we have an identity prize track.
Um I don't know if you guys are familiar with ZK Passport, but ZK passport uses Noir and the same proving system as the Aztec blockchain. So you can verify ZK Passport proofs in Aztec contracts. So you could like do identity checks as in private execution. um with ZK Bassport that then authorize actions in contracts which is pretty cool. Um there's also an example of how to generate a noir proof of sending an Aztec note to somebody.
So you do an Aztec transaction um and if you want to prove that you did something on Aztec later, not necessarily onchain, you could just do this as part of like a web 2 application to say, "Hey, I want to prove that I did something on Aztec." You could create a noir proof of this. There's an example of how to do this sort of interaction in that uh repo as well. We also have some pull requests on this examples repo with some more stuff. So like we have account abstraction on Aztec where there are no externally owned accounts.
It's all smart contracts and the way that you initiate transactions on the network is you have um essentially authorization logic in a contract that says hey somebody just needs to prove that they meet the authorization criteria to initiate a transaction. So that could be proof of password which is what we have a PR for which is like very simple. So we talk about like getting rid of private keys and blockchains like we can literally just have password controlled accounts on Aztec which is pretty cool. Um, you could also do like ZK passport controlled accounts or ZK email controlled accounts. Um, really if you can generate a proof of it, you can use that as authorization logic for an account contract.
Um, that's a more advanced use case like it's non-trivial to like implement these and like generate interfaces and stuff, but we have an example here of doing it with a simple password. So, if that looks interesting, um, check it out. Um and then also creating custom notes which is essentially like creating custom data structures um for private state. Um so yeah the Aztec examples repo is cool but it's a bit more advanced concept. So um I'd say get started with the Aztec starter.
Um we have a bunch of bridging resources. So in addition to our identity identity track we also have a crosschain track. Um, we're kind of exploring this narrative of exporting privacy from Aztec, the rollup, to other chains. So, as part of our core protocol, we can pass messages from Aztec to Ethereum and Ethereum to Aztec. Um, so the idea is we can have Defi living on L1 or DeFi on like Optimism or Arbitum and we can initiate transactions from Aztec accounts that then trigger DeFi actions on other chains.
So the idea is um you get account privacy. The when you're doing DeFi on public chains, obviously tokens that you're interacting with and token amounts have to be public. Um but we can get account level privacy. So if you're looking at block explorers, all you'll see is someone from Aztec is initiating like DeFi interactions on some other chain. So slightly better privacy than what we get on public blockchains today, but um not as good as if we were just like all Aztec native.
So we have this Substance Labs EVM bridge, um the Nethermind wormhole bridge, and then train protocol. They're helping us, they're like in our community building, um SDKs and tooling to make it easier to manage these like crosschain messages. So like with these bridges, you can actually just interact directly with base from Aztec and it handles all of the message passing complexity of like, okay, how is this um going from an asset contract to a corresponding Ethereum contract and then passing messages on to other protocols. So um check those out. I mentioned identity resources uh ZK passport.
We also have a um D5 Wonderland's also building just like standardized contracts. So they have token contracts. Um they've also built an NFT NFT contract standard there. So um I'm lumping NFTs into uh identity resources because I think we can easily use NFTTS and proofs of NFTTS to uh yeah build interesting identity systems. Additional resources a handbook from DeFi Wonderland, our official documentation.
Um, the awesome noir repo has a massive list of libraries and tooling for noir specifically, but a lot of these things can be used in Aztec contracts as well because Aztec contracts are written in noir. Um, how many of you guys are familiar with noir like independent of Aztec? Okay, so yeah, noir is a language that can be used to generate zero knowledge proofs. Um, and you can build applications using noir for like web applications. It doesn't even need to be blockchain applications.
Um, we can also easily generate solidity verifier contract. So when we're generating proofs with noir um we could deploy a corresponding verifier to any EVM chain and then just as part of an athereum transaction verify these uh ZK proofs for for the sort of conditional logic um just like access control or um yeah anything we'd want to like check in a privacy preserving way while doing an Ethereum transaction. Um but Aztec just takes this to another level where we can do complete private computation. All of our inputs can be private. We have full smart contract composability between all of the contracts written on Aztec.
So token contracts, NFTts like AMMs, um yeah, these bridging protocols like we it's much easier to build composable components um when we're building on Aztec versus doing this in like an EVM context or just like a web two application with offchain component. Um so yeah, I'm going through this extremely quickly because I don't have a ton of time. Um, that's a quick run through of the resources. I will add to this list as things come to mind, but like this is quite comprehensive for the hackathon currently, so will be a good resource throughout the weekend. Um, getting into actually installing the tooling.
Um, this is the command to install Aztec tooling. If we just go to docs.asc.network, network. Um, one of the difficulties with Aztec right now is we're in quite uh rapid development.
So, like I don't know if you guys saw earlier this week, but we launched our ignition network on Ethereum mainet. So, that is this version of the docs at the bottom 2.1.5. I think it's actually 2.
1.7 now. We just had some patch updates. Um, but we have a bunch of versions of the protocol and we're under rapid development. So like um the version that we're going to want to be developing on throughout the weekend I'd say is this DevNet version.
So when you're going to the docs, click on this DevNet version. We have a public DevNet deployed and we're just running the node for this. Um but it is publicly available. So if you guys are deploying contracts, anybody else can interact with these contracts. Um and we can test them in a public way.
We can look at the DevNet block explorers and see our transactions. Um so use DevNet version of the docs. Um and then getting started on sandbox is the place to go um to install the tooling. You can copy this command and this will install the Aztec up tooling. Um I already have it installed.
So if I just run Aztec up um it's going to pull the latest tag. The latest tag is actually for the current um okay this is actually going to install the whole thing. I'm not going to do this because this is actually going to install the latest version for ignition which is 2.1.7 right now.
What we want to do is do Aztec up 3.0.0-devet and.5 is the latest one. Pretty much any of the like patch version at the end will work.
But do 3.0.0 DevNet.5. um that will install the proper version for working with DevNet and then you'll basically get the run script.
This is all Dockerized so you'll need Docker for this to work. Um but it gets all this tooling, the Aztec command line tool, the Aztec up for getting new versions. Aztec Nargo is just a specific tag of the Nargo release that we use with every release. um Aztec pro postprocess contract um does some post-processing on compiled contracts for transpolation and verification key generation. Um and then there's a Aztec wallet utility for interacting with the network.
Um I typically don't use the Aztec wallet for interacting with the network that much. It's just like there's a lot of flags and options you have to pass to do things frequently. Um, and the route that I go is using the uh this Aztec starter. So, I've this frozen. Um, this is the Aztec starter and it's all set up to work with DevNet.
5. Like if we look at our package JSON, um, all of our package versions are on 3.0 DevNet.5. Um so all these scripts will just work.
Um you can run the local development environment by just running aztec sandbox or Aztec dart- sandbox. And this is going to start a local anvil network. So local L1. Um then it's going to deploy a bunch of protocol contracts for the the Aztec rollup to work. Um, it's going to deploy like the pre-ompiles for the Aztec network.
Um, it's going to deploy a few initial accounts, but basically it sets up a local development environment that mimics DevNet. It's just happening locally. You don't actually have to generate proofs of transactions or anything when you're doing this. It just automatically accepts everything. So, you can just get in a rapid development cycle and um, send transactions, compile your contracts, make changes.
Um, and yeah, it's the place to do your actual contract development because you can do it more quickly. And then once you're like once you've got your contract dialed in, you can do a a deployment to DevNet, um, which we have scripts for in this Aztec starter. So in the Aztec starter, we have examples of deploying accounts, um, deploying a contract. This one comes with a contract in SRC file or folder. Um, and then this is just like a simple private voting contract, but you could put something else here.
Um, you'd modify this and then you can use the scripts in the package JSON for like um, there's a compile command which will do the contract compilation and post-processing and then codegen command for generating the TypeScript bindings for your contract. And then you can just um use like the private voting contract your compiled artifact um directly in these scripts like this script will deploy an account set up sponsored fee payments and then do deploy the private voting contract. So if you just point this at DevNet instead of your local development environment, you can get it all all deployed. Um this is all in the readme. So check out the starter.
Um yeah, and you can come find Aztec folks. We've got like four or five of us here today and we'll have a table tomorrow, but we're hanging out at um a table just behind like the main stage area. There's like a wall right behind the main stage area. We're just hanging out um at some of the high tops right behind that wall. So, if you guys start going through this and you're hitting errors, you're just like, "This isn't working."
Um come find us there. And I did update this yesterday. So this Docker file should work in a GitHub code space. I know the internet isn't super good here, so you might not want to be doing too much work in a code space, but um this is set up to work in GitHub code space. So if you guys are using like um containers at all, this should work.
So all right, I think I'm right on time. Uh any question do I have time for questions? Any questions? Not yet. Um, you mean like when we're just running the sand the local development environment?
Yeah. Uh, yeah. Like when you just ran the sandbox command is like I saw some L1 in the output like how how much of that L1 is or how much of the L1 is simulated or just all the L2?
It's running Anvil, you know, like the foundry tool. So it's like just it's it's Anvil. Um, so pretty much all of it. Okay.
Thank you. Yeah. Sorry, I might have missed this, but wallet wise, I assume you can't just use MetaMask. Is there like a wallet?
We have our own wallets for Aztec. Um, since we have all this private computation that's happening client side that actually is done by the wallet. Um, so wallets are actually quite heavy software compared to like a MetaMask where it's just a key store and assigner. Um, there's examples here about like deploying an account. Um the way it looks in Typescript is um
is there a production one?
Yeah, we have Asgard and Obsidian. Um I will have to get the details. I'll add it to the HackMD of how to set up Asgard. Um for typical development and there is uh resource here, this Aztec web starter.
Yeah. Um, in this web starter, we have an embedded wallet. So, it's not like an external wallet, but we just kind of like create a wallet in the web app itself that can be used. And then the interface that Asgard uses is the same as the embedded wallet. So, you could just like swap out Asgard with the wallet.
So, um, check out this web starter as a place to start. And then we can talk later about getting Asgard integrated or something. Sounds
good. Thank you.
Yep. You're welcome. Okay. Can we Let's I think we're out of time, so let's chat right outside. Yeah.
Automatic transcript — names and jargon may be misspelled.