Pessoal, estava dando uma olhada pela aba gringa e vi
esse post do @LoyceV que achei interessante. Pesquisei sobre como fazer o procedimento na Electrum e não encontrei nada que me ajudasse, aliás, a Electrum só atrapalha porque a forma como ela informa o raw nenhum decodificador de raw entende, então tive que criar uma forma de driblar
Bem. Para que serve o
nLocktime? Basicamente você cria uma transação que só pode ser minerada após um bloco determinado por você. No caso do post original, o LoyceV dá uma exemplo para utilizá-lo como herança. Ou seja, seria uma forma se você deixar uma transação programada para ser efetuada somente após sua morte em um bloco pré-determinado.
Outro caso de utilização seria você fazer uma espécie de poupança para os seus filhos, onde você deixaria programada uma transação para que daqui a 10 ou 15 anos eles pudessem gastar os valores pré-determinados por você.
Vamos começar.
Primeiramente eu gerei um endereço aleatório no bitadress.org, o resultado foi o seguinte:
No próximo passo, vamos para a Electrum e preenchemos os campos de recebedor, quantia a ser enviada e a taxa da transação. Ao invés de enviarmos, clicamos em Visualização:
Nessa tela, clicamos no botão Copiar para copiar o Raw da nossa transação, que no caso é o seguinte:
45505446ff000200000002af306a60f051058bf0345ebcccc2c0c4909472a5b5500c3af63cc9e321129c82020000004401ff4104b335e40e60df76503bce9c883b4dee96274bf4e7df381e9d0b8a4ff2c750c0229c134a690968c1ad702ba9f09b6abc9ddc5d513c097f35c0b3c87bb6e863bf8afdffffffb741a298b5759a03bc80f2aac994fb4591c5f5193d2730024e9be0ddc8465adf000000004401ff4104b335e40e60df76503bce9c883b4dee96274bf4e7df381e9d0b8a4ff2c750c0229c134a690968c1ad702ba9f09b6abc9ddc5d513c097f35c0b3c87bb6e863bf8afdffffff02a0860100000000001976a914a6cdacbede3ea7b0112d3c326e261f5362c3e7a188ac09531200000000001976a914bfb4a1c24e764627a45156b5c96d1fe9634b974188acd3620900
Os últimos 4 bytes (8 digitos) ou seja "d3620900" representam o nLocktime da transação ou seja o bloco onde ela poderá ser gasta. Uma maneira fácil de modificá-lo é através desse site aqui:
https://freedomnode.com/btc/nlocktimeComo disse acima, o padrão raw informado pela Electrum possuem seus primeiros bytes de forma que esse site e outros decodificadores de raw não entendem. Para utilizá-lo precisamos retirar esses primeiros bytes "45505446ff00". O que colaremos no primeiro campo "Raw Transaction" é então o resto do texto:
0200000002af306a60f051058bf0345ebcccc2c0c4909472a5b5500c3af63cc9e321129c82020000004401ff4104b335e40e60df76503bce9c883b4dee96274bf4e7df381e9d0b8a4ff2c750c0229c134a690968c1ad702ba9f09b6abc9ddc5d513c097f35c0b3c87bb6e863bf8afdffffffb741a298b5759a03bc80f2aac994fb4591c5f5193d2730024e9be0ddc8465adf000000004401ff4104b335e40e60df76503bce9c883b4dee96274bf4e7df381e9d0b8a4ff2c750c0229c134a690968c1ad702ba9f09b6abc9ddc5d513c097f35c0b3c87bb6e863bf8afdffffff02a0860100000000001976a914a6cdacbede3ea7b0112d3c326e261f5362c3e7a188ac09531200000000001976a914bfb4a1c24e764627a45156b5c96d1fe9634b974188acd3620900
No segundo campo, escolheremos o bloco em que queremos que a transação possa ser gasta. Eu calculei o bloco 616127 que é vai ser minerado a mais ou menos daqui 1 semana a partir de hoje.
Clicamos em Calculate. O resultado é dado pelo site:
0200000002af306a60f051058bf0345ebcccc2c0c4909472a5b5500c3af63cc9e321129c82020000004401ff4104b335e40e60df76503bce9c883b4dee96274bf4e7df381e9d0b8a4ff2c750c0229c134a690968c1ad702ba9f09b6abc9ddc5d513c097f35c0b3c87bb6e863bf8afdffffffb741a298b5759a03bc80f2aac994fb4591c5f5193d2730024e9be0ddc8465adf000000004401ff4104b335e40e60df76503bce9c883b4dee96274bf4e7df381e9d0b8a4ff2c750c0229c134a690968c1ad702ba9f09b6abc9ddc5d513c097f35c0b3c87bb6e863bf8afdffffff02a0860100000000001976a914a6cdacbede3ea7b0112d3c326e261f5362c3e7a188ac09531200000000001976a914bfb4a1c24e764627a45156b5c96d1fe9634b974188acbf660900
Verifiquem que apenas os últimos 4 bytes foram modificados.
Agora vamos importar a transação para a Electrum novamente. Para isso vá no campo Ferramentas > Carregar transação > De texto
Você deverá ver a transação exatamente como via antes apenas com o Locktime modificado.
Se tudo estiver correto, assine a transação e copie novamente o Raw ou faça a exportação para um arquivo. De posse da transação assinada, o destinatário estará apto a gastar os fundos quando o bloco definido por você for minerado.
O raw da transação assinada neste tutorial é o seguinte:
0200000002af306a60f051058bf0345ebcccc2c0c4909472a5b5500c3af63cc9e321129c82020000008b48304502210093f43d2af5755eb832123fdc791d203beb3c42ca85ecad92d7cc834ba8080f2e0220387018a8493a21d9c4c3a21a2d7910bba1bb7a2da04f3900e5e85c6a07ef959f014104b335e40e60df76503bce9c883b4dee96274bf4e7df381e9d0b8a4ff2c750c0229c134a690968c1ad702ba9f09b6abc9ddc5d513c097f35c0b3c87bb6e863bf8afdffffffb741a298b5759a03bc80f2aac994fb4591c5f5193d2730024e9be0ddc8465adf000000008a473044022009c8e0e3e7caf067e4c0c073009e97b214f4a9f22ce3e0d80b21640d1a53393902206198e1f7208425a0f50ce53614e4fd232cfc3d3cffcd14693684494dcfdba23f014104b335e40e60df76503bce9c883b4dee96274bf4e7df381e9d0b8a4ff2c750c0229c134a690968c1ad702ba9f09b6abc9ddc5d513c097f35c0b3c87bb6e863bf8afdffffff02a0860100000000001976a914a6cdacbede3ea7b0112d3c326e261f5362c3e7a188ac153b1200000000001976a914bfb4a1c24e764627a45156b5c96d1fe9634b974188acbf660900
É necessário somente carregar novamente a partir de um texto a transação para a Electrum e então a transação pode ser transmitida e minerada se o a altura do bloco já foi alcançada.
Para quem leu até o final, se você entendeu todo o processo, deve ter percebido que qualquer um que estiver lendo esse tutorial estará apto a conseguir 0.001 BTC. Boa sorte
Edit: O bloco 616127 foi minerado hoje, dia 05/02/2020, como podem ver abaixo o @alegotardo estava monitorando e assim que o bloco foi minerado a transação que eu criei pôde ser transmitida e minerada. O endereço que eu criei recebeu os 0.001 BTC e como o @alegotardo tinha a chave privada que eu deixei no tópico, ele resgatou os satoshis para um endereço de sua posse. Com isso, o intuito do tutorial foi concluído com sucesso. Obrigado também ao tg88 que demonstrou que não foi possível gastar antes do prazo que eu determinei.
Fico grato se apontarem algum erro ou correção