Review 10_6

This commit is contained in:
namcios 2021-08-05 12:11:21 -03:00
parent 4f4b624b35
commit 11fb617d74
No known key found for this signature in database
GPG Key ID: 8E3A368317269AB4

View File

@ -2,22 +2,22 @@
Antes de encerrarmos esta visão geral das transações P2SH, vamos abordar como gastá-las. Esta seção é principalmente uma visão geral, referindo-se a uma seção anterior onde _já_ gastamos uma transação P2SH. Antes de encerrarmos esta visão geral das transações P2SH, vamos abordar como gastá-las. Esta seção é principalmente uma visão geral, referindo-se a uma seção anterior onde _já_ gastamos uma transação P2SH.
## Usando o script de resgate ## Usando o Script de Resgate
Como vimos na seção [§6.2: Gastando uma Transação com Multsig](06_2_Spending_a_Transaction_to_a_Multisig.md), gastar uma transação P2SH tem tudo a ver com ter aquela versão serializada do script de bloqueio, o chamado _redeemScript_. Portanto, o primeiro passo para poder gastar uma transação P2SH é ter certeza de salvar o _redeemScript_ antes de fornecer o endereço P2SH para todos. Como vimos na seção [§6.2: Gastando uma Transação com Multsig](06_2_Spending_a_Transaction_to_a_Multisig.md), gastar uma transação P2SH tem tudo a ver com ter aquela versão serializada do script de bloqueio, o chamado _redeemScript_. Portanto, o primeiro passo para poder gastar uma transação P2SH é ter certeza de salvar o _redeemScript_ antes de fornecer o endereço P2SH para todos.
### Coletando as variáveis ### Coletando as Variáveis
Como os endereços P2SH são diferentes dos endereços multisig especiais e Segwit aninhados não estão integrados no ```bitcoin-cli```, não haverá atalhos para gastarmos o P2SH como vimos na seção [§6.3: Enviando e Gastando um Multisig de Maneira Automatizada](6_3_Sending_an_Automated_Multisig.md) . Vamos precisar coletar todas as variáveis mais complexas por conta própria! Como endereços P2SH além dos endereços especiais multisig e nested Segwit não estão integrados no ```bitcoin-cli```, não haverá atalhos para gastarmos o P2SH como vimos na seção [§6.3: Enviando e Gastando um Multisig de Maneira Automatizada](6_3_Sending_an_Automated_Multisig.md) . Vamos precisar coletar todas as variáveis mais complexas por conta própria!
Isso significa que precisaremos coletar: Isso significa que precisaremos coletar:
* O ```hex``` do ```scriptPubKey``` para a transação que estamos gastando; * O ```hex``` do ```scriptPubKey``` para a transação que estamos gastando;
* O ```redeemScript``` serializado; * O ```redeemScript``` serializado;
* Quaisquer chaves privadas, já que assinaremos manualmente; * Quaisquer chaves privadas, já que assinaremos manualmente;
* Todos os ```txids```,```vouts``` e ```endereços``` regulares que precisarmos. * Todos os ```txids```,```vouts``` e ```addresses``` regulares que precisarmos.
## Criando a transação ## Criando a Transação
Como vimos na seção §6.2, a criação de uma transação é bem padrão: Como vimos na seção §6.2, a criação de uma transação é bem padrão:
``` ```
@ -27,7 +27,7 @@ $ echo $rawtxhex
``` ```
No entanto, a assinatura requer a inserção de informações extras para o (1) ```scriptPubKey```; (2) o ```redeemScript``` e; (3) quaisquer chaves privadas necessárias. No entanto, a assinatura requer a inserção de informações extras para o (1) ```scriptPubKey```; (2) o ```redeemScript``` e; (3) quaisquer chaves privadas necessárias.
Aqui está o exemplo de como fazer isso para aquele multisig P2SH integrado da seção §6.2: Aqui está o exemplo de como fazer isso para aquele multisig P2SH integrado na seção §6.2:
``` ```
$ bitcoin-cli -named signrawtransactionwithkey hexstring=$rawtxhex prevtxs='''[ { "txid": "'$utxo_txid'", "vout": '$utxo_vout', "scriptPubKey": "'$utxo_spk'", "redeemScript": "'$redeem_script'" } ]''' privkeys='["cNPhhGjatADfhLD5gLfrR2JZKDE99Mn26NCbERsvnr24B3PcSbtR"]' $ bitcoin-cli -named signrawtransactionwithkey hexstring=$rawtxhex prevtxs='''[ { "txid": "'$utxo_txid'", "vout": '$utxo_vout', "scriptPubKey": "'$utxo_spk'", "redeemScript": "'$redeem_script'" } ]''' privkeys='["cNPhhGjatADfhLD5gLfrR2JZKDE99Mn26NCbERsvnr24B3PcSbtR"]'
``` ```
@ -35,8 +35,8 @@ Com qualquer outro tipo de P2SH, incluiremos um ```redeemscript``` diferente, ma
## Resumo: Gastando uma Transação P2SH ## Resumo: Gastando uma Transação P2SH
Já gastamos um P2SH no Capítulo 6, quando reenviamos uma transação multsig da maneira mais difícil, que exigia alinhar as informações do ```scriptPubKey``` e do ```redeemScript```. Agora sabemos que o ```scriptPubKey``` é um script de bloqueio P2SH padronizado, enquanto o ```redeemScript``` corresponde a um hash nesse script de bloqueio e que precisamos ser capazes de executá-lo com as variáveis adequadas para receber um resultado ```True```. Mas além disso, não há nada de novo ao gastar uma transação P2SH, porque já fizemos isso! Já gastamos um P2SH no Capítulo 6, quando reenviamos uma transação multsig da maneira mais difícil, que exigia alinhar as informações do ```scriptPubKey``` e do ```redeemScript```. Agora sabemos que o ```scriptPubKey``` é um script de bloqueio P2SH padronizado, enquanto o ```redeemScript``` corresponde a um hash naquele script de bloqueio e que precisamos ser capazes de executá-lo com as variáveis adequadas para receber um resultado ```True```. Mas além disso, não há nada de novo ao gastar uma transação P2SH, porque já fizemos isso!
## O que vem depois? ## O Que Vem Depois?
Vamos avançar com os "Script do Bitcoin" no [Capítulo 11: Aumentando o poder do timelock com scripts do Bitcoin](11_0_Empowering_Timelock_with_Bitcoin_Scripts.md). Vamos avançar com "Programando Bitcoin" no [Capítulo 11: Capacitando Timelock com Scripts no Bitcoin](11_0_Empowering_Timelock_with_Bitcoin_Scripts.md).