Skip to content

Commit 4330d0f

Browse files
committed
Review 09_2
1 parent e35c5ae commit 4330d0f

File tree

1 file changed

+26
-26
lines changed

1 file changed

+26
-26
lines changed

pt/09_2_Running_a_Bitcoin_Script.md

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
1-
# 9.2: Executando um script do Bitcoin
1+
# 9.2: Executando um Script no Bitcoin
22

3-
Os scripts de Bitcoin podem não parecer tão intuitivos no começo, mas sua execução é bastante simples usando a notação polonesa reversa e uma pilha.
3+
Os scripts de Bitcoin podem não parecer tão intuitivos no começo, mas sua execução é bastante simples usando a notação polonesa reversa e uma pilha (_stack_).
44

5-
## Compreendendo a linguagem do script
5+
## Compreendendo a Linguagem de Programação
66

7-
Um script Bitcoin possui três partes: Uma linha de entrada; uma pilha para o armazenamento e; comandos específicos para execução.
7+
Um script Bitcoin possui três partes: uma linha de entrada; uma pilha para o armazenamento; e comandos específicos para execução.
88

9-
### Compreendendo o pedido
9+
### Compreendendo a Ordem
1010

11-
Os scripts do Bitcoin são executados da esquerda para a direita. Para nós é fácil, porque é a mesma na qual lemos. No entanto, podemos ser o elemento mais não intuitivo do script do Bitcoin, porque significa que as funções não têm a aparência que nós esperávamos. Ao invés disso, _os operandos vêm antes do operador._
11+
Os scripts do Bitcoin são executados da esquerda para a direita. Para nós é fácil, porque é a mesma ordem na qual lemos. No entanto, pode na verdade ser o elemento menos intuitivo do Bitcoin Script, porque significa que as funções não têm a aparência que esperaríamos. Ao invés disso, _os operandos vêm antes do operador._
1212

1313
Por exemplo, se estivéssemos somando "1" e "2", nosso script do Bitcoin ficaria ```1 2 OP_ADD```, e _não_"1 + 2". Como sabemos que o operador OP_ADD recebe duas entradas, sabemos que as duas entradas anteriores são os operandos.
1414

15-
> :warning: **ATENÇÃO:** Tecnicamente, tudo no script do Bitcoin é um opcode, portanto, seria mais apropriado registrar o exemplo acima como ```OP_1 OP_2 OP_ADD```. Em nossos exemplos, não nos preocupamos sobre como as constantes serão avaliadas, pois esse é um tópico de tradução, como é explicado no capítulo [§10.2: Construindo a estrutura do P2SH](10_2_Building_the_Structure_of_P2SH.md). Alguns escritores preferem também não usar o prefixo "OP" nos operadores, mas optamos por não fazê-lo.
15+
> :warning: **ATENÇÃO:** Tecnicamente, tudo em Bitcoin Script é um opcode, portanto, seria mais apropriado registrar o exemplo acima como ```OP_1 OP_2 OP_ADD```. Em nossos exemplos, não nos preocupamos sobre como as constantes serão avaliadas, pois esse é um tópico de tradução, como é explicado em [§10.2: Construindo a Estrutura do P2SH](10_2_Building_the_Structure_of_P2SH.md). Alguns escritores preferem também retirar o prefixo "OP" de todos os operadores, mas nós optamos por não fazê-lo.
1616
17-
### Compreendendo a pilha
17+
### Compreendendo a Pilha
1818

1919
Na verdade, não é correto dizer que um operador se aplica às entradas anteriores. Na verdade, um operador se aplica às entradas principais na pilha do Bitcoin.
2020

21-
> :book: ***O que é uma pilha?*** Uma pilha é uma estrutura de dados LIFO (last in, first out, ou no português, primeiro a entrar, último a sair). Possui duas funções de acesso: Push e Pop. Empurrar (Push) coloca um novo objeto no topo da pilha, empurrando para baixo tudo que está abaixo dele. Retirar (Pop) remove o objeto superior da pilha.
21+
> :book: ***O que é uma pilha?*** Uma pilha é uma estrutura de dados LIFO (last in, first out, ou no português, primeiro a entrar, último a sair). Possui duas funções de acesso: push e pop. Empurrar (push) coloca um novo objeto no topo da pilha, empurrando para baixo tudo que está abaixo dele. Retirar (pop) remove o objeto superior da pilha.
2222
2323
Sempre que o script do Bitcoin encontrar uma constante, ele a coloca na pilha. Portanto, o exemplo acima de ```1 2 OP_ADD``` seria realmente parecido com o que foi processado:
2424
```
@@ -31,13 +31,13 @@ Stack: [ 1 ]
3131
Script: OP_ADD
3232
Stack: [ 1 2 ]
3333
```
34-
_ Observe que, neste e nos exemplos seguintes, o topo da pilha está à direita e a parte inferior à esquerda._
35-
34+
_Observe que, neste e nos exemplos seguintes, o topo da pilha está à direita e a parte inferior à esquerda._
35+
3636
### Compreendendo os Opcodes
3737

3838
Quando um script do Bitcoin encontra um operador, ele o avalia. Cada operador retira zero ou mais elementos da pilha como entradas, geralmente um ou dois. Em seguida, ele os processa de uma maneira específica antes de colocar zero ou mais elementos de volta na pilha, geralmente um ou dois.
3939

40-
> :book: ***O que é um Opcode?*** O Opcode significa "código de operação". É normalmente associado ao código de linguagem de máquina e é uma função simples (ou "operador").
40+
> :book: ***O que é um Opcode?*** O Opcode significa "código de operação" (no inglês, "_operation code_"). É normalmente associado a código de linguagem de máquina e é uma função simples (ou "operador").
4141
4242
OP_ADD retira dois itens da pilha (no nosso caso: 2 depois 1), adiciona-os e coloca o resultado de volta na pilha (no exemplo: 3).
4343
```
@@ -46,7 +46,7 @@ Running: 1 2 OP_ADD
4646
Stack: [ 3 ]
4747
```
4848

49-
## Colocando mais complexidade
49+
## Construindo Complexidade
5050

5151
Scripts mais complexos são criados executando mais comandos em ordem. Eles precisam ser avaliados cuidadosamente da esquerda para a direita, para que possamos entender o estado da pilha conforme cada novo comando é executado. Ele mudará constantemente, como resultado de operadores anteriores:
5252
```
@@ -71,15 +71,15 @@ Running: 5 4 OP_SUB
7171
Stack: [ 1 ]
7272
```
7373

74-
## Compreendendo o uso do script do Bitcoin
74+
## Compreendendo o Uso do Bitcoin Script
7575

76-
Acima, você viu basicamente, o que é o script do Bitcoin... Além de algumas complexidades de como essa, a linguagem script interage com o próprio Bitcoin.
76+
É basicamente programar no Bitcoin ... além de algumas complexidades de como essa linguagem de programação interage com o próprio Bitcoin.
7777

78-
### Compreendendo o scriptSig e scriptPubKey
78+
### Compreendendo scriptSig e scriptPubKey
7979

80-
Como vimos anteriormente, cada entrada da transação de Bitcoin contém um ```scriptSig``` que é usado para desbloquear o ```scriptPubKey``` para o UTXO associado. Eles são _efetivamente_ concatenados, o que significa que o ```scriptSig``` e o ```scriptPubKey``` são executados juntos, nessa ordem.
80+
Como vimos anteriormente, cada entrada de uma transação no Bitcoin contém um ```scriptSig``` que é usado para desbloquear o ```scriptPubKey``` para o UTXO associado. Eles são _efetivamente_ concatenados, o que significa que o ```scriptSig``` e o ```scriptPubKey``` são executados juntos, nessa ordem.
8181

82-
Então, podemos presumir que um UTXO foi bloqueado com um ```scriptPubKey``` que ```OP_ADD 99 OP_EQUAL```, exigindo como entrada dois números que somam noventa e nove, e podemos presumir que o ```scriptSig``` de ```1 98``` foi executado para desbloquear. Os dois scripts seriam efetivamente executados em ordem como ```1 98 OP_ADD 99 OP_EQUAL```.
82+
Então, presuma que um UTXO foi bloqueado com um ```scriptPubKey``` que leia ```OP_ADD 99 OP_EQUAL```, exigindo como entrada dois números que somam noventa e nove, e presuma que o ```scriptSig``` de ```1 98``` foi executado para desbloqueá-lo. Os dois scripts seriam efetivamente executados em ordem como ```1 98 OP_ADD 99 OP_EQUAL```.
8383

8484
Avaliando o resultado:
8585
```
@@ -103,23 +103,23 @@ Script:
103103
Running: 99 99 OP_EQUAL
104104
Stack: [ True ]
105105
```
106-
Esta abstração não é muito precisa, já que, por razões de segurança, o ```scriptSig``` é executado, então o conteúdo da pilha é transferido para o ```scriptPubKey``` para ser executado, mas é preciso o suficiente para entender como a chave do ```scriptSig``` se encaixa o bloqueio de ```scriptPubKey```.
106+
Esta abstração não é muito precisa: por razões de segurança, o ```scriptSig``` é executado, então o conteúdo da pilha é transferido para o ```scriptPubKey``` para ser executado, mas é precisa o suficiente para entender como a chave do ```scriptSig``` se encaixa no cadeado de ```scriptPubKey```.
107107

108-
> :warning: **AVISO:** O exemplo acima é um tipo de transação incomum. Na verdade, não seria aceito por nós que executamos o Bitcoin Core com as configurações padrões. Na seção [§10.1: Construindo um script do Bitcoin com P2SH](10_1_Understanding_the_Foundation_of_P2SH.md) iremos discutir como realmente _podemos_ executar um Script Bitcoin como este, usando o poder do P2SH.
108+
> :warning: **AVISO:** O exemplo acima é um tipo de transação não-padrão. Na verdade, não seria aceito por nós que executamos o Bitcoin Core com as configurações padrões. Na seção [§10.1: Compreendendo a Base do P2SH](10_1_Understanding_the_Foundation_of_P2SH.md) iremos discutir como realmente _poderíamos_ executar um Script Bitcoin como este, usando o poder do P2SH.
109109
110-
### Obtendo os resultados
110+
### Obtendo os Resultados
111111

112112
O Bitcoin irá verificar uma transação e permitir que o UTXO possa ser gasto novamente se dois critérios forem atendidos ao executar o ```scriptSig``` e o ```scriptPubKey```:
113113

114114
1. A execução não foi marcada como inválida em nenhum ponto, por exemplo, com um OP_VERIFY com falha ou com o uso de um opcode desativado;
115115
2. O item no topo da pilha no final da execução é verdadeiro (diferente de zero).
116-
116+
117117
No exemplo acima, a transação seria bem-sucedida porque a pilha tem um ```True``` no final. Mas, seria igualmente permitido terminar com uma pilha completa e o número ```42``` no topo (os leitores do Guia do Mochileiro das Galáxias pegaram a referência).
118118

119-
## Resumo: Executando um script do Bitcoin
119+
## Resumo: Executando um Script no Bitcoin
120120

121-
Para processar um script do Bitcoin, um ```scriptSig``` é executado seguido pelo ```scriptPubKey``` que está desbloqueando. Esses comandos são executados em ordem, da esquerda para a direita, com constantes sendo colocadas em uma pilha e os operadores retirando elementos dessa pilha e, em seguida, enviando os resultados de volta para ela. Se o Script não parar no meio e se o item no topo da pilha no final for diferente de zero, o UTXO será desbloqueado.
121+
Para processar um script no Bitcoin, um ```scriptSig``` é executado seguido pelo ```scriptPubKey``` que ele está desbloqueando. Esses comandos são executados em ordem, da esquerda para a direita, com constantes sendo colocadas em uma pilha e os operadores retirando elementos dessa pilha e, em seguida, enviando os resultados de volta para ela. Se o script não parar no meio e se o item no topo da pilha no final for diferente de zero, então o UTXO será desbloqueado.
122122

123-
## O que vem depois?
123+
## O Que Vem Depois?
124124

125-
Vamos continuar "Apresentando os Scripts no Bitcoin" na seção [§9.3: Testando o Script do Bitcoin](09_3_Testing_a_Bitcoin_Script.md).
125+
Vamos continuar "Apresentando Scripts no Bitcoin" na seção [§9.3: Testando um Script no Bitcoin](09_3_Testing_a_Bitcoin_Script.md).

0 commit comments

Comments
 (0)