Grant Proposal for all in one ETH wallet migrator to fresh ETH wallet

Every ethereum user has a long trail of transactions behind their main wallet. I would like to build a very simple all in one dapp that lets a user come with one Metamask wallet and in one single contract send all of their ETH as well as a checkbox of supported ERC20s to a new freshly created wallet (or two or three wallets).

All gas fees would be paid up front - Take into account high gas but there will need to be a buffer to be returned later if not all gas is used.

This is the method that would provide the most anonymity.

Step 1
User selects amount of ETH and Tokens they wish to send

Step 2
Gas fees are estimated and user authorizes a high end fee for the whole process, user will approve in metamask / a keplr account will not be needed

Step 3 (background)
New secret wallet is created unique to this transaction and destroyed afterwards
ETH (from wallet 1) → secretETH (newly wallet address)

Second secret wallet is created (again will be destroyed after)
secretETH is sent from scrt wallet 1 to scrt wallet 2

A randomized waiting period will have portions of the unwrapping and deposit the unwrapped and sent to address specified for fresh metamask wallet 2 (user has private keys)

All temp scrt wallets will be destroyed, any unused gas fees will be returned. An email can be sent with a report of all tx’s and fees to a specified email address.

  • Options for more obfuscation / number of unwraps (will be higher gas fees)

  • Options to send to binance account instead (much lower fees, no need to go to ERC 20, could stay SCRT → secretSCRT - > new secretSCRT wallet → SCRT to new fresh non kyc binance

  • Option to use alternate chain (BSC / IBC?)

  • Option to do other coins supported by bridge (again more fees)

This will mainly be for users who have large balances and gas fees do not inhibit their use.

Any user could do this process by themselves, but by using only Metamask we make it very simple for our users.

1 Like

The analogy of the secret island is that the new metamask wallet will be a purely fresh informational “island” with absolutely no traceable inbound or outbound metadata linking it to anything besides a generic scrt smart contract.

:desert_island:

This is eventually a mixer.

I am not sure how you do all the secret network TXs w/o user having a Keplr wallet. Who is adding information to SN? How does Alice send gas to the new ETH wallet? Ideally ETH and ERC20s should be deposited to a contract (Similar to bridge) and recipient address should be sent to SN, randomized and sent back to ETH bridge so that deposited tokens + ETH for gas can be distributed to randomized addresses.

We did a lot of work on mixers in Enigma Discovery days. Wasabi is a great solution to look into. It’s a BTC wallet + mixer. The mixing is done centrally and each time you mix, you get your BTC in new wallets that you control. Check out this repo: GitHub - enigmampc/salad: A coinjoin implementation for the Enigma Discovery network

1 Like

I really don’t see either how you can do this without having the user sign transactions on Keplr to authorize the transfer from one secret wallet to another. I don’t see how you can make this a trustless solution without this.

When you use the ETH bridge from ETH - secretETH you don’t approve it on your keplr wallet and a secret transaction is executed so it is doable. The gas gets budgeted from the ETH gas fee I think.

It would need to essentially create a private key / wallet, fund it with SCRT to cover gas from some “gas fund”, then execute the tx, then delete the private key / wallet. single use wallet for the tx.

This will require you to give permission to an external party (like the bridge operators) to do something on your behalf with your SNIP20.

permit is an ERC20 function that allows you to let someone else (e.g., a relayer) submit a transaction on your behalf, and you only let them how much they can spend, etc… We can add this to SNIP20 specs and create a proxy contract to migrate all existing snip20s.

We have explored this with other Ethereum projects to have users only interact with their metamask by signing a nonce. @assafmo has more info on this than I have. This is meaningful amount of work and would be a good grant project

Would there be an advantage to a cross chain Liquidity provider that holds x ETH and x secretETH , and can essentially “convert” eth gas fees to scrt gas fees without having to actually bridge?