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 on L1
- some specific apps, deployed via L2, like zk.money and Aztec Connect.
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 private.
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 privacy
- 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).