In the past few months, there were a few stories about tokens being sent to the wrong address. Among them, Optimism Foundation sent 20 million OP tokens to a Wintermute multisig that wasn’t deployed or the Juno whale who sent $36 million Juno tokens to the wrong address due to a typo. There are many more such cases that you can encounter simply while exploring token contracts on Etherscan (E.g: 411K USDT are sitting on the USDT contract)
With transactions being immutable on most blockchains, this becomes an important problem. In most cases, there is no way to recover the tokens. Therefore there is no solution once tokens are sent to the wrong address but, there is a solution to prevent it.
What if instead of sending tokens, you set a specific amount that the receiver can “claim” using his wallet? The best thing about this method is that it makes mistakes easy to correct as you will only need to revoke the approval.
There are two ways to do so, one is manual and the other is through a free open-source tool called SafeTransfer. Both methods will be presented in the following lines.
This guide will walk you through how to use Etherscan to transfer your tokens safely. This method also works with any EVM blockchain explorer such as Polygonscan, BscScan, Snowtrace, FtmScan, etc.
Alternatively, the following video is available and explains the process step-by-step:
In order to send tokens in the way described previously, you will need to approve the amount you want to send and select the receiver.
Head to the Coingecko or CoinMarketCap to find the token you want to transfer:
In our case we will use Ethereum hence we'll be copying the Ethereum contract address.
Go to Etherscan or to the EVM blockchain explorer of the blockchain you use.
Select the “Contract” tab, click on “Write Contract” and connect your wallet by clicking on “Connect to Web3”. This should display a similar page as the one in the screenshot below
Once you’re connected, look for the “approve” function and expend it. You should see two fields. One for the spender’s address and one for the amount you want to approve. As I was used to multiply by 10**18 every amount I want to transfer, I didn’t notice beforehand that it was different with the USDT contract as the USDT token only supports 6 decimals.
In the amount field, multiply the amount you want to transfer by 10**6 with 6 being the decimal places of the USDT ERC-20 token that you’re transferring.
By default, ERC20 uses a value of 18 for decimals. Always check in the token page on your EVM blockchain explorer.
In the screenshot below, I am approving 40 USDT to be spent by 0x9d….7A6D. The next step is to click on “Write” and complete the approval on your wallet.
To receive the tokens, send the token contract page to your receiver
Your receiver will then have to connect his wallet to Etherscan and go the “Write Contract” the same way the sender did but, this time, the receiver has to look for the “transferFrom” function.
After filling the fields, the receiver should something similar to the screenshot below.
Voilà! The receiver was finally able to “claim” tokens directly from your wallet. With this method, there is no way to send tokens to the wrong address. The biggest limitation of this method is how time consuming it can be. It also requires you to know how to interact with contracts on Etherscan (which can be a great thing). The second method follows the same pattern but makes all this process easier.
SafeTransfer is a free and open-source solution that does all of the above for you. This guide will walk you through how to use Polygonscan to transfer your tokens safely.
Alternatively, the following video is available and explains the process step-by-step:
Go to safetransfer.cash. Connect your wallet, select the network, put the receiver’s address, select the token and the amount you want to transfer.
Lastly, click on “Approve” and complete the approval in your wallet. This should generate a link that you can send to your receiver. You should have something similar to the screenshot below.
If you open the link yourself, you should also be able to cancel the approval.
That’s it, as simple as that. Both methods work the same. Feel free to use the one you like to make your token transfers safer than ever before.