A brief history of blockchain privacy
Bitcoin
The original blockchain.
Programmability:
None.
Transfer bitcoin only.
Privacy:
None.
Ethereum
Programmability:
Turing complete smart contracts.
Privacy:
Originally: None.
Now: some specific apps, deployed via L2, like zk.money and Aztec Connect (see below).
ZCash
Programmability:
None.
Transfer ZCash only.
Privacy:
Transfers of shielded zcash are private.
zk.money
Programmability:
Any custom ERC20 token (on Ethereum L1) can be deposited to L2, transferred within L2, and withdrawn from L2.
Privacy:
Transfers of the ERC20 tokens within the L2 are private.
Aztec Connect
Programmability:
The functionality of zk.money, plus:
Tokens can be sent from the L2 shielded pool to many L1 defi contracts, and the resulting tokens can be re-shielded. This gives anonymity to L1 defi users.
Privacy:
Transfers of the ERC20 tokens within the L2 are private.
User defi interactions are anonymous.
Aztec
Programmability:
Fully programmable private smart contracts:
- private functions which can edit general private state
- cheap L2 public functions
- L1 (public) functions.
Privacy:
Executing private functions grants:
- Function privacy
- Input privacy
- User anonymity
Executing a private function which calls a public function grants varying degrees of privacy, depending on the application someone deploys. (Similar to how deposits and withdrawals to/from shielded pools can leak privacy).