Este tutorial foi inspirado
neste tópico aqui do
zasad@, que por sua vez foi inspirado
neste tópico aqui do
igor72. Obrigado aos dois
Este tutorial consiste em utilizar o script OP_RETURN que possibilita que nós utilizemos para registrar até 80 bytes de informação "aleatória" em uma transação. O tutorial original ensina a como guardar a sua seed na blockchain do Bitcoin, vou fazer um tutorial primeiro de como guardar qualquer texto e depois faço uma breve tradução do procedimento indicado para salvar a seed.
1. Como gravar qualquer texto no OP_RETURN
Abra a sua carteira na Electrum e vá até a aba Enviar.
No campo Pagar para (Pay To) você utilizará o seguinte código:
OP_RETURN seutexto, 0
Lembre-se que o seu texto deverá estar em formato hexadecimal, então, o que devemos fazer é utilizar um "conversor" de String para Hexa como temos nesse site aqui:
https://codebeautify.org/string-hex-converterO texto que escolhi é "Ola Bitcointalk" que gerou o seguinte valor em hexadecimal:
4f6c6120426974636f696e54616c6b
Nosso campo "Pagar para" na Electrum será então:
OP_RETURN 4f6c6120426974636f696e54616c6b, 0
A fee você pode escolher como se fosse uma transação normal, o tempo de mineração será de acordo com a fee/byte que você escolher.
A transação para essa operação foi a seguinte:
https://blockstream.info/tx/48e619e4e5ae0e241f225fa528b159a54db319c1ca20244cda518a5c31a49be1?expandAo ver a sua transação em um blockexplorer, você verá no campo OP_RETURN (geralmente embaixo) o hexadecimal do seu texto, mas há exploradores como o blockstream.info que já identificam que o hex significa um texto e converte novamente para String, ficando então seu texto registrado para todo o sempre na Blockchain do Bitcoin. Como podem ver abaixo
Se não quiser fazer uma transação só pra isso, você pode enviar no meio de outras transações que fizer utilizando mais de uma saída na Electrum.
2. Tradução do Tópico ensinando a guardar a sua seed na blockchain
Este tutorial foi desenvolvido para linux com algumas ferramentas pré instaladas, se você baixá-las poderão utilizá-las no windows da mesma maneira
2.1Vamos encriptar a seed com openssl e obter uma string hexadecimal.
Todas as operações com a seed devem ser feitas utilizando um computador seguro. Supondo que eu não tivesse um, então eu desliguei fisicamente a internet e dei boot a partir de um
flash drive Tails (esse é um dos sistemas linux mais seguros e anonimos para pen drive).
Crie um arquivo de texto seed.txt com a seed phrase (por exemplo:
runway exist coconut cinnamon attack laptop oil wild yellow drink lawn cattle). Para diminuir o tamanho da linha, vou salvar apenas as 4 primeiras letras de cada palavra (isso é o suficiente para identificação) e remova os espaçoes. O resultado: (
runwexiscococinnattalaptoil_wildyelldrinlawncatt) é salvo no arquivo. Na pasta que contem o arquivo, abra o terminal e rode o comando:
openssl enc -aes-256-cbc -in seed.txt -out enc.txt -nosalt -k bitcointalk -iter 21000000
Eu usei o password ruim "bitcointalk" como um exemplo, na realidade você precisa escolher um password bom e único, longo (pelo menos 12 caracteres), mas preferencialmente fácil de relembrar.
21000000 é o número de iterações da função pbkdf2, eu escolhi esse número tão alto porque eu posso relembrá-lo facilmente. Este parâmetro diminui muito o tempo para encoding / decoding (meu computador velho demorou quase 2 minutos), o que torna a força bruta não-realista e habilita usar um password não tão complicado. Então, nós obtivemos um arquivo com a seed encriptada, agora nós temos que obter uma sequência de bytes (dump).
Dê o comando:
xxd -ps -c 1000 enc.txt enc_hex.txt
-c 1000 - é o número de colunas, escolhido arbitrariamente (80 poderia ter sido usado). Sem esse valor, os dados será dividido por 32 bytes por linha, e nós precisamos de uma linha. Nós salvamos o arquivo enc_hex.txt para um pen drive USB ou no HD do computador, desligue o computador, remova o pen drive USB, ligue a internet e carregue o sistema operacional.
2.2 Nós temos que ter certeza que a transação com os dados encriptados são fáceis de encontrar posteriormente. Você pode fazer isso de diferentes maneiras, você pode somente escrevê-la. Mas eu tentei não escrever nada, e então eu escolhi a opção de criar um endereço a partir do hash da minha palavra / frase favorita e pesquisar o endereço no blockexplorer. Para isso, eu usei
brainwallet (você pode usar qualquer outro), na linha "Brain Wallet Input" nós colocaremos uma palavra chave inesquecível, por exemplo, o nome da mulher amada, cachorro, etc. Segurança não é importante aqui, se essa chave privada for roubada, não há nenhum problema. Por exemplo, eu usei a palavra "bitcointalk" e obtive a private key
L1AHAuRLxZ14PspT4UjooZa3Jx2Y9hcKfuQpC19b4AqHq8V12u9o.
Nós vamos importar isso para Electrum (criando uma nova wallet a partir da chave privada, eu prefiro endereços bech32, então eu importei com o prefixo
p2wpkh:L1AHAuRLxZ14PspT4UjooZa3Jx2Y9hcKfuQpC19b4AqHq8V12u9o,
(você pode usar um endereço legacy, isso não afetará o resultado).
Nós obtemos o endereço
bc1qc0kwr8clxgj63dp77sr4ql9zhexq2a6aw85ltw, vamos utilizar 300 satoshi de fee (para um endereço segwit, isso deve ser suficiente). Desse endereço enviaremos a transação com OP_RETURN.
2.3Copie a string hexadecimal salva no arquivo
enc_hex.txt para a Electrum e crie a transação.
Preencha a linha "Pagar para" assim:
OP_RETURN our_string, 0
(não se esqueça da vírgula com o 0 no fim).
Enviamos o pagamento.
Essa é minha transação https://www.blockchain.com/en/btc/tx/0e0546d004f3373822178ceddb3084247912e400b75e5971e66522f6b398f123
Como restaurar a seed phrase original?2.4 Relembre a palavra ("bitcointalk" nesse exemplo) e obtenha o endereço (assim como em
2.2). Nós inserimos o endereço em um Block Explorer e faciilmente encontramos nossa transação. Clica nela e abra os detalhes, no fim da página encontraremos nosso código encriptado
3222e79b5c94efcea7b8e1704e1bdd8fb9257baf7bbecf1a9bb5b5a5b8da094ad570dddc7754220
c2e2359081956d238ba24429639c90b2348f15f052617aab
Salve essa linha em um arquivo de texto (eu fiz em enc_hex.txt) e salve em um pen drive.
2.5Desligue a internet, reinicie o computador e use o sistema operacional Tails. Adiante, copie o arquivo encriptado do pen drive e abra o terminal na pasta em que está o arquivo e rode o seguinte comando:
xxd -ps -r enc_hex.txt enc.txt
Próximo comando:
openssl enc -aes-256-cbc -d -in enc.txt -out seed.txt -nosalt -k bitcointalk -iter 21000000
(o valor do parâmetro -iter parameter deve coincidir com aquele utilizado durante a primeira fase de encriptação, então é importante não esquecer, melhor escrever em algum lugar).
É isso, abra o arquivo seed.txt e reescreva a seed phrase em um pedaço de papel (dividindo as palavras a cada 4 letras). Se a wallet não fornecer a opção de completar as palavras ao digitar, você encontrará as palavras completas no
dicionário BIP 39.
(Obrigado
bomj pelas correções).
Se você tem de salvar uma seed de 24 palavras, elas não caberão em 80 bytes. Nesse caso, a encriptação hexadecimal da string deverá ser dividida em 2 partes e 2 saídas OP_RETURNs deverão ser criadas. Ou utilize outra conversão para encaixar essa informação em 80 bytes.
P.S. Se alguém deseja repetir, pratique primeiro, tente não encher a blockchain com coisas inúteis.
_______________________________________________________________________________
______________________________
Loganota aqui
Se tiverem alguma dúvida, ficarei feliz em ajudá-los. Se você encontrar erros, escreva nesse post e eu consertarei.
Obrigado