My Trezor destroyed over 1000€!


I recently wanted to sell some ETH while it was at its peak. To make sure the little bit of crypto I have doesn't get stolen or destroyed, I keep it in my Trezor. 
So I logged in to my Trezor wallet, switched to Ethereum (which uses the beta wallet) and tried to transfer 1 Ether to the exchange's wallet. It left my Trezor - but never arrived at the exchange :(

So - what happened?

If you're familiar with Bitcoin you know that there are transaction fees. The transaction fees are an incentive to the miners to include your transaction in the blockchain. Paying more will get your transaction processed faster. Paying little or no fees will cause the transaction to be delayed, potentially for weeks, months or not go through at all. If this happens it's a bit complicated but there are ways to recover the money.

But this is not what happened.

Transactions on Bitcoin and Ethereum are actually tiny computer programs, not just a record saying "transfer X amount of money to Y". This allows for some nifty stuff such as Multisig and escrow wallets.
With Bitcoin however those programs are quite limited, they have conditionals (if) but no loops (for/while). This is intentional to prevent having too complex programs which might delay or halt processing altogether as every client will have to execute them. (See: Halting problem. Programs on the blockchain always halt)

Ethereum took this a step further and allows you to write complex tasks which get executed and validated by each node participating in the Ethereum network. However the introduction of loops and complex programming methods needs some way to deal with rogue programs which enter an infinte loop (don't halt) or take too long to process. The solution is as old as the first mainframes - you pay for each instruction executed which is called the "gas". This is completely separate to transaction fees, which apply as well. In the transaction you specify how much gas you are willing to use and how much you pay for it. The default limit is 21000 gas. Now what happens when the gas runs out? Your transaction is abandoned and all the money gets lost.

This is intentional, to prevent someone from just spamming the network with gas guzzling programs and a high gas limit. 

I get the idea, but it sucks if you just want to send some money from A to B without any smart contract stuff. Also I have no idea why the Trezor wallet created a transaction which ran out of gas.

So, having burned so much Eth I had to sell a smaller amount. To make sure it doesn't happen again I increased the gas limit by an order of magnitude to 210000 and it went through.

But still.... I'm so mad!!!

Add new comment