quinta-feira, 12 de maio de 2016

Como recuperar uma transação Bitcoin travada por falta de taxa

As vezes, por falha humana ou de software, podemos realizar uma transação bitcoin sem taxa (fee) ou com uma taxa muito abaixo do recomendado. O resultado disso é que os mineradores vão rejeitar essa transação e ela pode ficar por dias, até semanas como "não confirmado", consequentemente, seu dinheiro fica preso no limbo.

A única solução é ou esperar que um dia essa transação seja finalmente confirmada (e isso dependendo do caso pode levar muitos dias), ou criar um gasto duplo (double spending) na rede. O gasto duplo não é bem visto na rede bitcoin, mas é a única solução pratica pra resolver esse problema.

Então para isso, você vai precisar do endereço onde os BTC estão presos (não para onde foi feita a transação), e da chave privada deste endereço. A maioria das carteiras (wallets) tem processo para exportar chave privada, pesquise como isso é feito, na que você usa.

Primeiramente, vamos ter que criar a transação manualmente, pra isso existe um excelente software on-line na página:


Entre nessa página, e vá em "New/Transaction", depois insira o endereço onde os BTC estão presos, no campo: "Address, WIF key or Multisig Redeem Script:" e clique em "Load", agora em "Address", coloque outro endereço, do qual você quer que os BTC sejam transferidos, recomendo que seja um endereço seu, pois pega mal mandar transação com gasto duplo para outra pessoa. Agora vem a parte mais importante, digite em "Amount" a quantia a ser transacionada, mas deixe pelo menos 0.0001 BTC como taxa sobrando. A taxa (fee) vai ser mostrada no campo "Transaction Fee", agora clique em"Submit" e você terá a transação, ainda não assinada, assim como mostra no exemplo abaixo:

Clique na imagem para ampliar

Copie todo o texto da transação, e vá em "Sign" no menu acima. Agora você vai precisar da chave privada para assinar a transação. Insira a chave privada em "Private Key" e cole o texto da transação ainda não assinada na caixa de texto abaixo e clique em "Submit". Agora você terá a transação pronta e assinada na caixa de texto abaixo, em "Signed transaction", copie todo texto desta caixa:


O ultimo passo é transmitir essa transação na rede Bitcoin, você pode tentar nesse site mesmo no menu "Broadcast", mas ele poderá dar erro, pois ele vai perceber que essa transação é de gasto duplo, sendo assim, teremos que achar outro site, ou serviço que simplesmente transmita a transação sem checar nada. Aparentemente um site que funciona assim é o explorador de blocos do localbitcoins:


Agora cole a transação assinada na caixa de texto (da página de broadcast da localbitcoins por exemplo) e clique em "Send transaction".

Assim que a transação for enviada, ele vai lhe fornecer o "transaction id" que é a identificação da transação na rede, vá em qualquer explorador de blocos, como por exemplo o blockchain.info e insira a transaction id em "pesquisa" e dê um Enter. Como a transação acabou de ser feita, ela ainda vai aparecer como "Não confirmada", e além disso, ele já marca ela como "Gasto Duplo" (gastar em dobro), como a outra transação está travada for falta de taxa (fee) e essa tem uma taxa aceita pelos mineradores, dentro de uns 30 minutos as primeiras confirmações vão começar a aparecer.

Repare que mesmo com a transação confirmada, ela ainda aprece como "Gastar o dobro!"

Assim que você tiver +3 confirmações, poderá utilizar os BTC normalmente. Lembre-se que transações de gasto duplo não são bem vistas na rede BTC, por isso somente use essa técnica para si mesmo.