Aztec
Aztec is a Layer 2 project that implements private transactions. Its system works as follows: based on the underlying PLONK proof system, it enables anonymous transactions between accounts and achieves private interactions with DeFi projects through gateway contract integration.
In Aztec's data structure, all note states are stored in two Merkle Trees. One is the note tree, which stores all notes that have ever been created, and the other is the nullifier tree, which stores all notes that have been destroyed. "Owning" a note means that the corresponding note exists in the note tree but does not exist in the nullifier tree.
When a user wants to make a transaction, they need to destroy and create corresponding notes, then transfer note ownership. For this private transaction, the user needs to generate a "privacy proof" locally. Subsequently, 28 private transactions are aggregated into an inner Rollup proof, and then 32 such inner Rollup proofs are aggregated into an outer Rollup proof. The outer Rollup proof is ultimately submitted to L1 for node verification. In other words, a single final Rollup proof can contain 28 * 32 = 896 transactions.

Aztec's advantage lies in: it implements privacy functionality with a high security level that can interact with DeFi projects.
However, the special privacy functionality also significantly limits the project: on one hand, Aztec relies on integrated gateway contracts to interact with DeFi projects, which reduces deployment difficulty but also reduces flexibility, making it more suitable for capital-intensive projects with simple operations in the short term; on the other hand, to achieve privacy, a privacy proof must be generated for every single transaction. Although the project distributes storage space through a two-layer Rollup approach, Aztec's transaction fees remain the highest among all L2s, and the barrier for users is relatively high, making it more suitable for large holders.