Bitcoin Forum

Local => Desenvolvimento & Discussões Técnicas => Topic started by: girino on March 06, 2016, 09:10:27 PM



Title: Como fazer um double spend?
Post by: girino on March 06, 2016, 09:10:27 PM
Recebi a seguinte pergunta em PM. Como não tenho uma resposta definitiva, trouxe a questão em publico porque isso beneficia mais gente e dá a mais pessoas a oportunidade de opinar. A pergunta foi assim (devidamente anonimizada):

Quote
Gostaria de saber se você me ensinaria a executar um double spend pela carteira BitcoinQT
Tenho uma transação em que coloquei um valor de taxa muito baixo e por isso a mesma não foi confirmada...
pelo que entendi, a carteira que estou usando vai continuar a reenviar a transação para a blockchain até que essa seja confirmada... Tem como eu quebrar esse loop?

Vamos começar pelo fácil: como quebrar o loop?
- Excluindo a transação diretamente na carteira com ferramentas "avançadas" como essa: https://github.com/jackjack-jj/pywallet (obs. nunca usei, então não sei nem se funciona com as versões atuais)
- Exportando todas as PK da carteira e importando em uma nova carteira. (veja aqui como exportá-las (http://bitcoin.stackexchange.com/questions/7536/how-do-i-export-my-private-keys-from-my-bitcoin-qt-client) e aqui como importá-las (https://en.bitcoin.it/wiki/How_to_import_private_keys)).

Lembrando que é necessário deixar a carteira offline por 48 a 72h para que a rede "esqueça" a transação. Senão sua carteira vai recer a transação de outro node e começar o loop todo de novo.

Agora existe a solução de fazer o double spend. (nunca fiz, então minha reposta é só uma indicação do caminho a seguir, mas vc vai precisar trilhar ele sozinho). Após a versão 0.12.0 o bitcoin-qt permite a substituição de transações por outra com fee maior. Só que ela não te dá uma interface pra fazer isso, então vc tem de criar a transação "manualmente". Existe essa ferramenta que encontrei, desenvolvida pelos proprios devs do bitcoin para testar essa funcionalidade: https://github.com/petertodd/replace-by-fee-tools

Se você quer apenas que a transação se complete, use essa ferramenta para aumentar a fee.

Eu passei por um problema semelhante, mas como meu full node estava desatualizado, no tempo que eu levei para sincronizar meu bitcoin-qt a transação original foi confirmada, então acabei não tendo a oportunidade de testar.

Se mais alguem tiver ideias de como tratar esse problema, sintam-se a vontade de postar abaixo.


Title: Re: Como fazer um double spend?
Post by: trvorts on March 08, 2016, 02:43:27 AM
Boa noite a todos!

 Gostaria de agradecer ao Girino e ao Adriano pelo retorno à mensagem que lhes enviei em PM, que rendeu este post e também rendeu um aprendizado muito valioso! Havia pesquisado um pouco pelo assunto (sem um  resultado claro) e de certa forma fiquei receoso de postar diretamente aqui no fórum com medo de ser um assunto delicado.


 Depois de ler a contribuição do Girino, resolvi seguir as dicas deixadas aqui por ele. Pesquisei mais um pouco sobre o pywallet e achei esse post:

 https://bitcointa.lk/threads/guide-delete-your-0-unconfirmed-transactions-in-30-seconds.28870/ (https://bitcointa.lk/threads/guide-delete-your-0-unconfirmed-transactions-in-30-seconds.28870/)

 No mesmo, o autor enumera os passos para se eliminar as transações não confirmadas da carteira:

Quote
Ultimate way to delete your forever unconfirmed transactions

  • Backup your wallet just in case
  • Download Pywallet
  • Run './pywallet.py --web'
  • Go to http://localhost:8989 in your browser
  • Fill the Delete form like this:
  • Wallet Directory: /your/wallet/directory
  • Wallet Filename: yourwalletfilename
  • Key: all
  • Type: leave 'Transaction'
  • Click the Delete button
  • Run 'bitcoin -rescan'
  • Done, no more unconfirmed tx's

Bem,depois de fazer o backup da carteira,  segui os passos acima deletando a transação não confirmada...

Logo depois reiniciei BitcoinQT (criei um atalho na área de trabalho para que abrisse com a opção -scan), e para minha feliz surpresa, lá estava meu saldo de volta! (um alívio sem precedentes!!! kkkkk)

Agora, depois de quebrar o loop do BitcoinQT, só me resta efetuar uma nova transação... Nesse ponto persiste uma dúvida: Mesmo depois de recuperar meu saldo na carteira e de quebrar o loop, ainda assim preciso exportar as PK's da carteira e transferí-las para uma nova?

Qual seria o risco de efetuar uma transação pela mesma carteira?

PS: descobri mais uma coisa...

https://bitcointa.lk/threads/guide-delete-your-0-unconfirmed-transactions-in-30-seconds.28870/page-2#post-5411143 (https://bitcointa.lk/threads/guide-delete-your-0-unconfirmed-transactions-in-30-seconds.28870/page-2#post-5411143)

Quote
New method with 0.9+ built directly into core client:

-rescan Rescan the block chain for missing wallet transactions
-zapwallettxes Clear list of wallet transactions (diagnostic tool; implies -rescan)

It does exactly what it says - it rebuilds the transaction list from the officially confirmed blocks.

Naturally, get a reliable wallet backup first.


TRVORTS.
 


Title: Re: Como fazer um double spend?
Post by: girino on March 08, 2016, 03:18:50 AM
(...)
Agora, depois de quebrar o loop do BitcoinQT, só me resta efetuar uma nova transação... Nesse ponto persiste uma dúvida: Mesmo depois de recuperar meu saldo na carteira e de quebrar o loop, ainda assim preciso exportar as PK's da carteira e transferí-las para uma nova?

Qual seria o risco de efetuar uma transação pela mesma carteira?
(...)

Não necessita, os dois procedimentos são "alternativas", se vc usa um não precisa usar o outro. (ou seja, se vc usou o pywallet nao precisa importar as chaves em uma nova carteira, e vice versa).


Title: Re: Como fazer um double spend?
Post by: jhonnymitnick on June 21, 2016, 06:48:22 PM
Boa tarde Pessoal!

Sou bem novato (pra não usar outra palavra) no ramo de bitcoins, porém estou gostando bastante.
Ontem, por falta de habilidade e conhecimento, acabei fazendo um pagamento com bitcoins com uma taxa muito baixa (0.00000799), pois era o que restaria na carteira e a biticoinQT adicionou o que tinha.
Pois bem, até agora (umas 18h depois) ainda não confirmou, pois os mineiros não vão trabalhar por tão pouco né..rsrs
Estive lendo as vossas postagens e achei que o método mais simples para mim, e para que eu consiga ter o saldo de volta e reenvie o pagamento com uma fee mior é o descrito pelo GIRINO, porém o hyperlink "aqui como importá-las" não está funcionando.
Alguém poderia me auxiliar a resolver esse problema? eu até mando uns satoshis pela ajuda. rsrsrs (é sério).
Meu e-mail é: jhonnymitnick@msn.com

ABS,

Jhonnatan