Technical questions, Etherscan, fees, L2

I have a few technical questions:

When I send a token to my incognito wallet (BAT for example), the wallet gives me an address (a new address every time if I recall correctly). I then wrap into pBAT. What is visible on Etherscan, the send to my wallet then send to a smart contract or just send to a wallet?

When I unwrap, are pBAT returned to the same Ethereum address incognito gave me in my wallet? Is a smart contract interaction visible on Etherscan for the unwrapping or send to my incognito wallet?

What are the fees for wrapping, unwrapping, and then withdrawing BAT from incognito to my personal trust wallet?

I’m trying to figure out what Ethereum can see because from what I can determine now, a normal off-chain L2 wallet would also allow private transfers and wouldn’t require ZK-SNARKs.

5 Likes

For the shielding direction (or wrapping as your word), on Etherscan you can see both, the send to temporary Incognito address and the call to Incognito contract. An example of the latter might find here https://etherscan.io/tx/0x2aba233f7b2c0ca9c9b0f7a70966bddc93b164605b3aa4965fa81ae3053a71d4

When I unwrap, are pBAT returned to the same Ethereum address incognito gave me in my wallet? Is a smart contract interaction visible on Etherscan for the unwrapping or send to my incognito wallet?

For the unshielding direction (or unwrapping), you can specify the Ethereum receiving address. Yes, the smart contract interaction would be visible on Etherscan, another example for unwrapping here https://etherscan.io/tx/0x8178d6630fc06740cb854ee3b8e41adab811d4ac3de3ab722b83313975d9b1a3

What are the fees for wrapping, unwrapping, and then withdrawing BAT from incognito to my personal trust wallet?

For the wrapping, you just need to pay for the send ETH/ERC20 to Incognito’s temporary address for now. Conversely, for the unwrapping, you need to pay for both pToken (ex: pBAT) burning transaction over Incognito chain (very cheap now) and smart contract call for BAT withdrawal in PRV - the Incognito native token.

1 Like

So what is visible on Etherscan is user sends to a contract. People could inspect the contract and see it’s incognito, which would throw up a red flag but the send from the incognito wallet is from a different Ethereum address and if you send to a different wallet than what you deposited with then you could not track the transaction (unless the withdrawal was immediate or for the same token and amount).

In this case the ZK-SNARKs wrapper doesn’t matter. What matters is that you had a contract interaction and wallets changed. You could do the same thing in a L2 wallet or platform for privacy on Ethereum.

To anonymize Ethereum withdrawals better you could batch withdrawals and/or standardize withdrawal amounts (only .1, .5, 1, 10, 50, 100).

1 Like

I like the way your brian is working. From what I have learned so far the way incognito works for eth and erc20 tokens is that someone is given a unique deposit address—then the funds are swept into one big smart contract. Then unshielding occurs from sending coins from the one big smart contract.

This is only slightly different from an exchange…you send funds to an exchange and they sweep them into their main wallet from time to time. Then funds are generally sent from their one main wallet. You get the same exact privacy as withdrawing funds from an exchange. The key here is that a user can receive a unique wallet address for each deposit. Also the exchange is probably tracking some info on you. I’m sure incognito is too (or at least has the ability to) but not to the point of kyc, locking funds, etc.

What route are you thinking about for ZK-SNARKs? You would send them from Layer 1 to layer 2, then send coins to a different wallet on layer 2, then withdraw back to layer 1? And in this case the layer 2 transaction is not seen publicly because it’s a rollup of transactions?

I guess it’s a brain exercise and not really an argument. I’m trying to understand how this all looks on Ethereum, I have no doubts about incognito chain privacy in general.

If a L2 off-chain or zk-rollup was used, I think it would have the same effect in that anyone looking on Etherscan would see a L2 contract interaction. The withdrawal to a different wallet would appear as a completely different contract interaction not tied to the first. The benefit incognito has in this comparison is that it gives you a new deposit address before a contract interaction.

The drawback for using both of these techniques would be that transaction sizes are not standardized, time delayed, or batched. If those types of features were added to incognito Ethereum withdrawals I think it would increase privacy.