Wouldn’t reduce it only to the Ethereum accounts with zero outgoing transactions and some balance?
Yes, you’re correct. The anonymity pool will include all valid Ethereum EOA accounts with a non-zero balance for the current block minting transactions. Additionally, as new accounts join the network and receive ETH, they will contribute to the anonymity pool for future block minting transactions. This approach addresses the current privacy protocol issue and, from the bootstrapping day, solves the problem of having a small anonymity pool.
Given your suggested EIP, how can the receiver not be trackable by a regulator?**
At first glance, this approach solves the problem of making the sender and receiver unknown addresses, making it difficult to track them via on-chain data. However, the receiver of a mint transaction is still publicly visible on-chain, meaning anyone can track their addresses.
We have considered addressing this issue with another idea. Besides enhancing privacy, this EIP also offers a scalability approach. Major custodians, such as large centralized exchanges, need to provide unique addresses for each of their users to track deposits accurately. With over 2 million active users, these entities send numerous on-chain transactions to aggregate user-deposited assets into their cold wallets, consuming a significant amount of gas.
What if these entities provided unique burn addresses for their users and implemented proof aggregation in the Ethereum node for proof of burn addresses? They could then keep the secret of the burn address. During the aggregation phase, they could send a single transaction with aggregated proof for multiple addresses to consolidate assets into a single mint transaction (this was our initial idea, and we haven’t work on it).
This approach would save a lot of gas, allowing for more transactions on the network. If major players adopt this method, it would make it more challenging for regulators to target individuals receiving assets through mint transactions.
However, we still face the ERC20 token problem. In an ideal world, if this approach were implemented in ERC20 contracts (like Keyvan’s implementation for proof of burn for ERC20: GitHub - nobitex/burnth), it could further support this goal.
In conclusion, while the receiver remains publicly known, the source remains unknown, benefiting from a large anonymity pool and this idea can’t solve directly the problem you mention.
I’m not sure where 123
is coming from, but it doesn’t look secure to me. I understand that only providing h(s)
would reveal the burn address. Maybe another solution would be to use a different hashing function h3
and use as nullifier h3(s)
?
It was just an example. You can consider “0x000000000000000000000000000000000000dead” as a point on the elliptic curve that no one could find a private key for. This was the initial idea, but @eawosika did a great job explaining the our alternative approach in his blog post: [Generating the Provable Unspendable Address]