You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: pt/10_4_Scripting_a_Multisig.md
+31-30Lines changed: 31 additions & 30 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,4 @@
1
-
# 10.4: Criando scripts multisig
1
+
# 10.4: Programando um Multisig
2
2
3
3
Antes de encerrarmos esta introdução ao script P2SH, vale a pena examinar um exemplo mais realista. Desde a seção [§6.1](06_1_Sending_a_Transaction_to_a_Multisig.md), dissemos casualmente que a interface ```bitcoin-cli``` envolve nossa transação multisig em uma transação P2SH. Na verdade, esta é a metodologia padrão para a criação dos multisigs na Blockchain do Bitcoin. Veja como isso funciona, com mais detalhes.
4
4
@@ -7,38 +7,38 @@ Antes de encerrarmos esta introdução ao script P2SH, vale a pena examinar um e
7
7
As transações multisig são criadas no Bitcoin usando o código ```OP_CHECKMULTISIG```. O ```OP_CHECKMULTISIG``` espera uma longa sequência de argumentos que se parece com isto: ```0 ... sigs ... <m> ... endereços ... <n> OP_CHECKMULTISIG```. Quando o ```OP_CHECKMULTISIG``` é executado, ele faz o seguinte:
8
8
9
9
1. Retira o primeiro valor da pilha (```<n>```);
10
-
2. Retira os valores "n" da pilha como endereços Bitcoin (chaves públicas com hash);
10
+
2. Retira "n" valores da pilha como endereços Bitcoin (hash de chaves públicas);
11
11
3. Retira o próximo valor da pilha (```<m>```);
12
-
4. Retira os valores "m" da pilha como assinaturas potenciais;
13
-
5.Retire um `0` da pilha devido a um erro na codificação original;
12
+
4. Retira "m" valores da pilha como assinaturas potenciais;
13
+
5.Retira um `0` da pilha devido a um erro na codificação original;
14
14
6. Compara as assinaturas com os endereços de Bitcoin;
15
15
7. Coloca ```True``` ou ```False``` dependendo do resultado.
16
16
17
17
Os operandos do ```OP_MULTISIG``` são tipicamente divididos, com o ```0``` e as assinaturas vindo do script de desbloqueio e o "m", "n" e endereços sendo detalhados pelo script de bloqueio.
18
18
19
19
O requisito para que o ```0``` seja o primeiro operando para o ```OP_CHECKMULTISIG``` é uma regra de consenso. Como a versão original do ```OP_CHECKMULTISIG``` acidentalmente retirou um item extra da pilha, o Bitcoin deve seguir esse padrão para sempre, para que os scripts de resgate complexos daquele período de tempo não sejam acidentalmente quebrados, tornando fundos antigos irrecuperáveis.
20
20
21
-
> :book:***O que é uma regra de consenso?*** Estas são as regras que os nodes do Bitcoin seguem para trabalharem juntos. Em grande parte, eles são definidos pelo código do Bitcoin Core. Essas regras incluem muitas regras óbvias, como o limite de quantos Bitcoins são criados para cada bloco e as regras de como as transações podem ser respondidas. No entanto, eles também incluem correções para bugs que apareceram ao longo dos anos, porque uma vez que um bug foi introduzido na base de código do Bitcoin, ele deve ser continuamente suportado, para que os antigos Bitcoins não se tornem impossíveis de serem gastos.
21
+
> :book:***O que é uma regra de consenso?*** Estas são as regras que os nodes do Bitcoin seguem para trabalharem juntos. Em grande parte, eles são definidos pelo código do Bitcoin Core. Essas regras incluem muitas regras óbvias, como o limite de quantos Bitcoins são criados para cada bloco e as regras de como as transações podem ser respondidas. No entanto, eles também incluem correções para bugs que apareceram ao longo dos anos, porque uma vez que um bug foi introduzido na base de código do Bitcoin, ele deve ser continuamente suportado, para que os antigos bitcoins não se tornem impossíveis de serem gastos.
22
22
23
-
## Criando uma Transação Multisig Bruta
23
+
## Criando um Multisig Bruto
24
24
25
-
Conforme discutido na seção [§10.2: Construindo a Estrutura de P2SH](10_2_Building_the_Structure_of_P2SH.md), os multisigs são um dos tipos de transação padrão do Bitcoin. Uma transação pode ser criada com um script de bloqueio que usa o comando ```OP_CHECKMULTISIG``` bruto e será aceito em um bloco. Esta é a metodologia clássica para usar multisigs no Bitcoin.
25
+
Conforme discutido na seção [§10.2: Construindo a Estrutura do P2SH](10_2_Building_the_Structure_of_P2SH.md), os multisigs são um dos tipos de transação padrão do Bitcoin. Uma transação pode ser criada com um script de bloqueio que usa o comando ```OP_CHECKMULTISIG``` bruto e será aceita em um bloco. Esta é a metodologia clássica para usar multisigs no Bitcoin.
26
26
27
-
Como exemplo, iremos revisitar o multisig criado na seção [§8.1](08_1_Sending_a_Transaction_with_a_Locktime.md) uma última vez e construir um novo script de bloqueio para ele usando esta metodologia. Como devemos nos lembrar, essa transação era uma multisig 2 de 2 construída a partir do```$address1``` e ```$address2```.
27
+
Como exemplo, iremos revisitar o multisig criado na seção [§8.1](08_1_Sending_a_Transaction_with_a_Locktime.md) uma última vez e construir um novo script de bloqueio para ele usando esta metodologia. Como devemos nos lembrar, essa transação era uma multisig 2 de 2 construída a partir de```$address1``` e ```$address2```.
28
28
29
-
Como o script de bloqueio ```OP_CHECKMULTISIG``` requer o "m"(```2```), os endereços, e o "n"(```2```), poderíamos escrever o seguinte ```scriptPubKey```:
29
+
Como o script de bloqueio ```OP_CHECKMULTISIG``` requer o "m"(```2```), os endereços, e o "n"(```2```), poderíamos escrever o seguinte ```scriptPubKey```:
30
30
```
31
31
2 $address1 $address2 2 OP_CHECKMULTISIG
32
32
```
33
-
Se isso parece familiar, é porque é o multisig que desserializamos no [§10.2: Construindo a Estrutura de P2SH](10_2_Building_the_Structure_of_P2SH.md).
33
+
Se isso parece familiar, é porque é o multisig que desserializamos no [§10.2: Construindo a Estrutura do P2SH](10_2_Building_the_Structure_of_P2SH.md).
> **AVISO:** Para assinaturas `OP_CHECKMULTISIG` clássicas, o "n"deve ser ≤ 3 para que a transação seja padrão.
37
+
> **AVISO:** Para assinaturas `OP_CHECKMULTISIG` clássicas, o "n"deve ser ≤ 3 para que a transação seja padrão.
38
38
39
-
## Desbloqueando uma Transação Multisig Bruta
39
+
## Desbloqueando um Multisig Bruto
40
40
41
-
O ```scriptSig``` para um endereço multisig padrão deve então enviar os operandos ausentes para o ```OP_CHECKMULTISIG```: Um```0``` seguido por assinaturas "m". Por exemplo:
41
+
O ```scriptSig``` para um endereço multisig padrão deve então enviar os operandos ausentes para o ```OP_CHECKMULTISIG```: um```0``` seguido por "m" assinaturas. Por exemplo:
42
42
```
43
43
0 $signature1 $signature2
44
44
```
@@ -80,29 +80,29 @@ Então, mais um item é retirado por engano:
80
80
Running: OP_CHECKMULTISIG
81
81
Stack: [ ]
82
82
```
83
-
Depois, o ```OP_CHECKMULTISIG``` completa a operação comparando as assinaturas "m" aos endereços "n":
83
+
Depois, o ```OP_CHECKMULTISIG``` completa a operação comparando as "m" assinaturas aos "n" endereços:
84
84
```
85
85
Script:
86
86
Stack: [ True ]
87
87
```
88
-
## Compreendendo as limitações de scripts multisig brutos
88
+
## Compreendendo as Limitações dos Scripts Multisig Brutos
89
89
90
90
Infelizmente, a técnica de incorporar um multisig bruto em uma transação tem algumas desvantagens notáveis:
91
91
92
-
1. Como não há formato de endereço padrão para as multisigs, cada remetente deve: inserir um script multisig longo e complicado; ter um software que permite fazer isso e; ser confiável para não bagunçar nada.
93
-
2. Como os multisigs podem ser muito mais longos do que os scripts padrão de bloqueio, isso significa mais custos. Isso requer taxas de transação mais altas para o remetente e cria mais incômodo para cada node.
92
+
1. Como não há formato de endereço padrão para os multisigs, cada remetente deve: inserir um script multisig longo e complicado; ter um software que permite fazer isso; e ser confiável para não bagunçar nada.
93
+
2. Como os multisigs podem ser muito mais longos do que os scripts padrão de bloqueio, a blockchain aumenta o custo. Isso requer taxas de transação mais altas para o remetente e cria mais incômodo para cada node.
94
94
95
-
Geralmenteeram problemas com qualquer tipo de script complexo do Bitcoin, mas rapidamente se tornaram problemas muito reais quando aplicados as multisigs, que foram alguns dos primeiros scripts complexos a serem amplamente usados na rede Bitcoin. As transações P2SH foram criadas para resolver esses problemas, começando em 2012.
95
+
Geralmente, esses eram problemas com qualquer tipo de script complexo do Bitcoin, mas rapidamente se tornaram problemas muito reais quando aplicados aos multisigs, que foram alguns dos primeiros scripts complexos a serem amplamente usados na rede Bitcoin. As transações P2SH foram criadas para resolver esses problemas, começando em 2012.
96
96
97
-
> :book:***O que é um multisig P2SH?***As Multisigs P2SH foram a primeira implementação de transações P2SH. Elas simplesmente empacotam uma transação multisig padrão em uma transação P2SH padrão. Isso permite a padronização de endereços, reduz o armazenamento de dados e, aumenta as contagens "m" e "n".
97
+
> :book:***O que é um multisig P2SH?***Os Multisigs P2SH foram a primeira implementação de transações P2SH. Eles simplesmente empacotam uma transação multisig padrão em uma transação P2SH padrão. Isso permite a padronização de endereços, reduz o armazenamento de dados e, aumenta as contagens "m" e "n".
98
98
99
-
## Criando um P2SH Multisig
99
+
## Criando um Multisig P2SH
100
100
101
-
As Multisigs P2SH são a metodologia moderna para a criação de multisigs na Blockchain. Elas podem ser criadas de forma muito simples, usando o mesmo processo visto nas seções anteriores.
101
+
Os Multisigs P2SH são a metodologia moderna para a criação de multisigs na Blockchain. Elas podem ser criadas de forma muito simples, usando o mesmo processo visto nas seções anteriores.
102
102
103
-
### Criando a Bloqueio para o P2SH Multisig
103
+
### Criando o Bloqueio para o Multisig P2SH
104
104
105
-
Para criar uma multisig P2SH, siga as etapas padrão para criar um script de bloqueio P2SH:
105
+
Para criar um multisig P2SH, siga as etapas padrão para criar um script de bloqueio P2SH:
4. Teremos êxito se o ```<serializedMultisig>``` corresponder ao ```<hashedMultisig>```.
130
131
131
-
### Executando a segunda rodada de validação do P2SH
132
+
### Executando a Segunda Rodada de Validação do P2SH
132
133
133
134
Em seguida, vamos executar o script multisig:
134
135
@@ -140,10 +141,10 @@ Em seguida, vamos executar o script multisig:
140
141
141
142
Agora sabemos como a transação multisig da seção [§6.1](06_1_Sending_a_Transaction_to_a_Multisig.md) foi realmente criada, como foi validada para ser gasta e o motivo pelo qual o ```redeemScript``` foi tão importante.
142
143
143
-
## Resumo: Criando scripts multisig
144
+
## Resumo: Programando um Multisig
144
145
145
-
As multisigs são um tipo de transação padrão, mas são um pouco complicadas de serem usadas. Então, eles são regularmente incorporadas em transações P2SH, como foi o caso na seção [§6.1](06_1_Sending_a_Transaction_to_a_Multisig.md) quando criamos nossas primeiras multisigs. O resultado é mais limpo, menor e mais padronizado, porém, o mais importante, é um ótimo exemplo do mundo real de como os scripts P2SH realmente funcionam.
146
+
Os multisigs são um tipo de transação padrão, mas são um pouco complicados de serem usados. Então, eles são regularmente incorporados em transações P2SH, como foi o caso na seção [§6.1](06_1_Sending_a_Transaction_to_a_Multisig.md) quando criamos nossos primeiros multisigs. O resultado é mais limpo, menor e mais padronizado, porém, e mais importante, é um ótimo exemplo do mundo real de como os scripts P2SH realmente funcionam.
146
147
147
-
## O que vem depois?
148
+
## O Que Vem Depois?
148
149
149
-
Vamos continuar "Incorporando Scripts em Transações P2SH no Bitcoin" na seção [§10.5: Crigando um script Segwit](10_5_Scripting_a_Segwit_Script.md).
150
+
Vamos continuar "Incorporando Scripts em Transações P2SH no Bitcoin" na seção [§10.5: Programando um Script Segwit](10_5_Scripting_a_Segwit_Script.md).
0 commit comments