[ ] TODO: Refund tokens, and remove proof if the receiver didn't accept the EVM didn't accept the tokens. This may happen if the target ERC20 tokens is not deployed yet.
[x] TODO: Measure how much gas is used by function, and use more accurate upper bounds.