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/11_0_Empowering_Timelock_with_Bitcoin_Scripts.md
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,9 +1,9 @@
1
1
2
-
# Capítulo 11: Expandindo o timelock com scripts do Bitcoin
2
+
# Capítulo 11: Capacitando Timelock com Scripts do Bitcoin
3
3
4
4
O recurso ```nLockTime``` da seção [§8.1](08_1_Sending_a_Transaction_with_a_Locktime.md) foi apenas o começo dos Timelocks. Quando começamos a escrever scripts do Bitcoin, dois opcodes de timelocks ficam disponíveis.
5
5
6
-
## Objetivos deste capítulo
6
+
## Objetivos deste Capítulo
7
7
8
8
Depois de trabalhar neste capítulo, um desenvolvedor será capaz de:
9
9
@@ -18,6 +18,6 @@ Os objetivos secundários do capítulo incluem a capacidade de:
18
18
19
19
## Índice
20
20
21
-
*[Seção 1: Compreendendo as Opções de Timelocks](11_1_Understanding_Timelock_Options.md)
22
-
*[Seção 2: Usando o CLTV nos Scripts](11_2_Using_CLTV_in_Scripts.md)
23
-
*[Seção 3: Usando o CSV nos Scripts](11_3_Using_CSV_in_Scripts.md)
21
+
*[Seção 1: Compreendendo As Opções de Timelock](11_1_Understanding_Timelock_Options.md)
22
+
*[Seção 2: Usando CLTV em Scripts](11_2_Using_CLTV_in_Scripts.md)
23
+
*[Seção 3: Usando CSV em Scripts](11_3_Using_CSV_in_Scripts.md)
Copy file name to clipboardExpand all lines: pt/11_1_Understanding_Timelock_Options.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,8 +1,8 @@
1
-
# 11.1: Compreendendo as Opções de Timelocks
1
+
# 11.1: Compreendendo As Opções de Timelock
2
2
3
3
Na seção [§8.1: Enviando uma transação com Locktime](08_1_Sending_a_Transaction_with_a_Locktime.md), o ```nLocktime``` ofereceu uma ótima opção inicial para bloquear as transações para que não pudessem ser gastas até algum ponto no futuro, com base no tempo (data/hora) ou na altura do bloco. Mas, essa não é a única maneira de colocar um timelock em uma transação.
4
4
5
-
## Compreendendo as limitações do nLockTime
5
+
## Compreendendo as Limitações do nLockTime
6
6
7
7
O ```nLockTime``` é uma maneira simples e poderosa de bloquear uma transação, mas possui algumas limitações:
8
8
@@ -13,7 +13,7 @@ O ```nLockTime``` é uma maneira simples e poderosa de bloquear uma transação,
13
13
14
14
O último item costumava ser o _dealbreaker_ para o ```nLockTime```. Isso evitou que uma transação fosse gasta, mas não impediu que os fundos fossem usados em uma transação diferente. Então, havia certos usos, mas todos dependiam de confiança.
15
15
16
-
## Compreendendo as possibilidades dos scripts de Timelock
16
+
## Compreendendo as Possibilidades dos Scripts de Timelock
17
17
18
18
Nos últimos anos, o Bitcoin Core foi expandido para permitir a manipulação dos timelocks no nível do opcode com os _OP_CHECKLOCKTIMEVERIFY_ (CLTV) e _OP_CHECKSEQUENCEVERIFY_ (CSV). Ambos trabalham sob uma nova metodologia que fortalece ainda mais o Bitcoin.
19
19
@@ -23,19 +23,19 @@ _Eles bloqueiam as saídas._ Por serem opcodes incluídos nas transações como
23
23
24
24
Aqui está um ponto importante sobre a utilização dos timelocks: _Eles são bloqueios de mão única._ Os bloqueios de tempo são projetados para desbloquear fundos em um determinado momento. Eles não podem bloquear novamente um fundo: Uma vez que um fundo bloqueado por tempo está disponível, ele ficará disponível para ser gasto.
25
25
26
-
### Compreendendo as possibilidades do CLTV
26
+
### Compreendendo as Possibilidades do CLTV
27
27
28
28
O _OP_CHECKLOCKTIMEVERIFY_ ou CLTV é compativel com o clássico recurso ```nLockTime```, mas no novo paradigma baseado em opcode. Ele permite que uma UTXO se torne acessível em um determinado momento ou em uma determinada altura de bloco.
29
29
30
30
O CLTV foi detalhado pela primeira vez no [BIP 65](https://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki).
31
31
32
-
### Compreendendo as possibilidades do CSV
32
+
### Compreendendo as Possibilidades do CSV
33
33
34
34
O _OP_CHECKSEQUENCEVERIFY_ ou CSV depende de um novo tipo de "locktime relativo", que é definido no campo _nSequence_ da transação. Como de costume, ele pode ser definido como uma data/hora ou uma altura de bloco. Se for definido como um tempo "n", então uma transação bloqueada em um tempo relativo pode ser gasta "n x 512" segundos depois que a UTXO foi minerada, e se for definido como um bloco "n", então uma transação bloqueada em tempo relativo pode ser gasta em "n" blocos depois que a UTXO foi minerada.
35
35
36
36
O uso do ```nSequence``` para um bloqueio de tempo relativo foi detalhado primeiramente no [BIP 68](https://github.com/bitcoin/bips/blob/master/bip-0068.mediawiki), e o opcode CSV foi adicionado no [BIP 112](https://github.com/bitcoin/bips/blob/master/bip-0112.mediawiki).
37
37
38
-
## Resumo: Compreendendo as Opções de Timelocks
38
+
## Resumo: Compreendendo As Opções de Timelock
39
39
40
40
Agora possuímos quatro opções de Timelocks:
41
41
@@ -46,4 +46,4 @@ Agora possuímos quatro opções de Timelocks:
46
46
47
47
## O Que Vem Depois?
48
48
49
-
Vamos continuar "Aumentando o poder do timelock com scripts do Bitcoin" na seção [§11.2: Usando o CLTV nos Scripts](11_2_Using_CLTV_in_Scripts.md).
49
+
Vamos continuar "Aumentando o poder do timelock com scripts do Bitcoin" na seção [§11.2: Usando CLTV em Scripts](11_2_Using_CLTV_in_Scripts.md).
Copy file name to clipboardExpand all lines: pt/11_2_Using_CLTV_in_Scripts.md
+8-8Lines changed: 8 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,4 @@
1
-
# 11.2: Usando o CLTV nos Scripts
1
+
# 11.2: Usando CLTV em Scripts
2
2
3
3
O ```OP_CHECKLOCKTIMEVERIFY``` (ou CLTV) é o complemento natural para o ```nLockTime```. Ele muda a ideia de bloquear transações por um tempo absoluto ou altura de bloco para o âmbito dos opcodes, permitindo o bloqueio das UTXOs individuais.
4
4
@@ -21,7 +21,7 @@ O ```OP_CHECKLOCKTIMEVERIFY``` funciona dentro do mesmo paradigma de altura de b
21
21
22
22
Como o CLTV é apenas parte de um script (e presumivelmente parte de uma transação P2SH), uma transação CLTV não é mantida fora da mempool como uma transação ```nLockTime```. Logo, assim que for verificado, ele vai para a blockchain e os fundos são considerados gastos. O truque é que todas as saídas que foram bloqueadas com o CLTV não estão disponíveis para _serem gastas_ até que o CLTV permita.
23
23
24
-
### Compreendendo um CLTV de tempo absoluto
24
+
### Compreendendo um CLTV de Tempo Absoluto
25
25
26
26
É assim que o ```OP_CHECKLOCKTIMEVERIFY``` seria utilizado para verificar o locktime de 24 de maio de 2017:
27
27
```
@@ -36,7 +36,7 @@ Ou assim:
36
36
<AbsoluteTime> OP_CHECKLOCKTIMEVERIFY
37
37
```
38
38
39
-
### Compreendendo um CLTV de altura de bloco absoluta
39
+
### Compreendendo um CLTV de Altura de Bloco Absoluta
40
40
41
41
É assim que o ```OPCHECKLOCKTIMEVERIFY``` compararia a uma altura de bloqueio alcançada no dia 24 de maio de 2017:
42
42
```
@@ -47,7 +47,7 @@ Mas geralmente vamos abstrair assim:
47
47
<AbsoluteBlockHeight> OP_CHECKLOCKTIMEVERIFY
48
48
```
49
49
50
-
### Entendendo como o CLTV realmente funciona
50
+
### Entendendo como o CLTV Realmente Funciona
51
51
52
52
A explicação acima é suficiente para usar e entender o CLTV. No entanto, o [BIP 65](https://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki) apresenta todos os seguintes detalhes.
53
53
@@ -71,7 +71,7 @@ O seguinte script de bloqueio simples pode ser usado para transformar uma saída
Obviamente, como acontece com quaisquer scripts Bitcoin complexos, este script CLTV seria realmente codificado em um script P2SH, conforme explicado na seção [§10.1: Entendendo a Fundação do P2SH](10_1_Understanding_the_Foundation_of_P2SH.md) e na [§10.2: Construindo a Estrutura de P2SH](10_2_Building_the_Structure_of_P2SH.md).
77
77
@@ -116,7 +116,7 @@ No caso do exemplo acima, o script de desbloqueio abaixo seria suficiente, desde
116
116
<signature> <pubKey>
117
117
```
118
118
119
-
### Executando um script CLTV
119
+
### Executando um Script CLTV
120
120
121
121
Para executar o Script, primeiro devemos concatenar os scripts de desbloqueio e bloqueio:
Finalmente, o restante do script é executado, que é uma verificação normal de uma assinatura e chave pública.
144
144
145
-
## Resumo: Usando o CLTV nos Scripts
145
+
## Resumo: Usando CLTV em Scripts
146
146
147
147
O ```OP-CHECKLOCKTIMEVERIFY``` é um opcode simples que olha para um único argumento, o interpreta como uma altura de bloco ou timestamp UNIX, e só permite que a UTXO seja desbloqueada se àquela altura de bloco ou timestamp UNIX estiver no passado. Definir o ```nLockTime``` na transação de gastos é o que permite ao Bitcoin fazer este cálculo.
148
148
149
149
> :fire:***Qual é o poder do CLTV?*** Já vimos que os tempos de bloqueio simples eram uma das bases dos Contratos Inteligentes. O CLTV dá o próximo passo. Agora podemos garantir que uma UTXO não possa ser gasta antes de um certo tempo _e_ podemos garantir que ela também não será gasta. Em sua forma mais simples, isso poderia ser usado para criar um fundo que alguém só poderia ter acesso aos 18 anos ou um fundo de aposentadoria que só poderia ser acessado quando fizesse 50 anos. No entanto, o verdadeiro poder vem quando combinado com condicionais, onde apenas o CLTV apenas é ativado em certas situações.
150
150
151
151
## O Que Vem Depois?
152
152
153
-
Vamos continuar "Aumentando o poder do timelock com scripts do Bitcoin" na seção [§11.3: Usando o CSV nos Scripts](11_3_Using_CSV_in_Scripts.md).
153
+
Vamos continuar "Capacitando Timelock com Scripts no Bitcoin" na seção [§11.3: Usando CSV em Scripts](11_3_Using_CSV_in_Scripts.md).
Copy file name to clipboardExpand all lines: pt/11_3_Using_CSV_in_Scripts.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,4 @@
1
-
# 11.3: Usando o CSV nos Scripts
1
+
# 11.3: Usando CSV em Scripts
2
2
3
3
O ```nLockTime``` e o ```OP_CHECKLOCKTIMEVERIFY``` (ou CLTV) são apenas um lado da equação do timelock. Do outro lado estão o ```nSequence``` e o ```OP_CHECKSEQUENCEVERIFY```, que podem ser usados para verificar tempos relativos ao invés de tempos absolutos.
4
4
@@ -55,7 +55,7 @@ $ echo $relativevalue
55
55
```
56
56
Se convertermos de volta, teremos o valor de 4224679 = 10000000111011010100111. O 23º dígito é definido como "1", enquanto os primeiros 2 bytes, 0111011010100111, são convertidos em 76A7 em hexadecimal ou 30375 em decimal. Multiplicando isso por 512, teremos 15,55 milhões de segundos, o que de fato é 180 dias.
57
57
58
-
## Criando uma transação com um timelock relativo
58
+
## Criando uma Transação com um Timelock Relativo
59
59
60
60
Então desejamos criar uma transação simples com um timelock relativo? Tudo que precisamos fazer é emitir uma transação onde o ```nSequence``` de uma entrada é definido como mostramos acima: Com o ```nSequence``` para essa entrada definido de forma que os primeiros dois bytes definam o timelock, o 23º bit define o tipo do timelock, e o 32º bit é definido como sendo falso.
61
61
@@ -87,7 +87,7 @@ Neste caso, usaremos uma abreviatura:
87
87
88
88
> :warning:**ATENÇÃO:** Lembre-se de que um timelock relativo é um intervalo de tempo desde a mineração da UTXO usada como uma entrada. _Não_ é um intervalo de tempo após a criação da transação. Se usarmos uma UTXO que já foi confirmada cem vezes, e colocarmos um timelock relativo de 100 blocos nela, ela será elegível para mineração imediatamente. Os timelocks relativos têm alguns usos muito específicos, mas provavelmente não se aplicam se nosso único objetivo for determinar algum tempo definido no futuro.
89
89
90
-
### Entendendo como o CSV realmente funciona
90
+
### Entendendo como o CSV Realmente Funciona
91
91
92
92
O CSV tem muitas das mesmas sutilezas de uso que CLTV:
93
93
@@ -99,7 +99,7 @@ O CSV tem muitas das mesmas sutilezas de uso que CLTV:
99
99
100
100
Assim como no CLTV, quando estiver usando uma UTXO com um CSV em condições de bloqueio, devemos definir o ```nSequence``` para habilitar a transação. Normalmente, o configuraremos com o valor exato no script de bloqueio.
101
101
102
-
## Escrevendo um script CSV
102
+
## Escrevendo um Script CSV
103
103
104
104
Assim como o ```OP_CHECKLOCKTIMEVERIFY```, o ```OP_CHECKSEQUENCEVERIFY``` inclui um ```OP_VERIFY``` implícito e deixa os argumentos na pilha, exigindo um ```OP_DROP``` quando finalizar tudo.
105
105
@@ -108,7 +108,7 @@ Um script que bloquearia fundos por até seis meses após a mineração e que ex
Ao codificar um script CSV, precisamos tomar cuidado ao codificar o valor inteiro para o timelock relativo. Deve ser passado como um número inteiro de 3 bytes, o que significa que iremos ignorar o maior byte, o que pode desativar o timelock relativo. Como é um número inteiro, precisamos nos certificar de convertê-lo para little-endian.
114
114
@@ -137,12 +137,12 @@ Hexcode: 03a77640
137
137
138
138
Para gastar uma UTXO bloqueado com um script CSV, devemos definir o ```nSequence``` dessa entrada para um valor maior que o requerido no script, mas menor que o tempo entre a UTXO e o bloco atual. Isso mesmo, isso significa que precisamos saber o requisito exato no script de bloqueio. Mas temos uma cópia do ```redeemScript```, então se não conhecermos os requisitos, podemos desserializá-lo e, em seguida, definir o ```nSequence``` como sendo o número que é mostrado lá.
139
139
140
-
## Resumo: Usando o CSV nos Scripts
140
+
## Resumo: Usando CSV em Scripts
141
141
142
142
O ```nSequence``` e o CSV oferecem uma alternativa para o ```nLockTime``` e o CLTV onde bloqueamos uma transação com base em um tempo relativo desde que a entrada foi extraída, ao invés de basear o bloqueio em um tempo definido no futuro. Eles funcionam quase de forma idêntica, exceto pelo fato de que o valor do ```nSequence``` é codificado de forma ligeiramente diferente do valor do ```nLockTime```, com bits específicos significando coisas específicas.
143
143
144
144
> :fire: ***Qual é o poder do CSV?*** O CSV não é apenas uma maneira preguiçosa de bloquear uma transação, quando não queremos calcular um tempo no futuro. Ele é um paradigma totalmente diferente, um bloqueio que usaríamos se fosse importante criar uma duração mínima específica entre o momento em que uma transação é minerada e o momento em que os fundos podem ser gastos. O uso mais óbvio é (mais uma vez) para uma conta de garantia, quando desejamos um tempo preciso entre a entrada dos fundos e a saída. No entanto, ele tem possibilidades muito mais poderosas em transações fora da rede, incluindo canais de pagamento. Esses aplicativos são, por definição, construídos em transações que não são realmente colocadas na blockchain, o que significa que, se forem posteriormente colocados em um bloco, um período de tempo pode ser muito útil. Os [Hashed Timelock Contracts](https://en.bitcoin.it/wiki/Hashed_Timelock_Contracts) foram uma dessas implementações, dando a base para a rede de pagamento Lightning. Eles serão discutidos na seção [§13.3: Expandindo os Scripts do Bitcoin](13_3_Empowering_Bitcoin_with_Scripts.md).
145
145
146
146
## O Que Vem Depois?
147
147
148
-
Vamos avançar "Criando Scripts do Bitcoin" no capítulo [12: Expandindo os Scripts do Bitcoin](12_0_Expanding_Bitcoin_Scripts.md).
148
+
Vamos avançar em "Programando no Bitcoin" com o [Capítulo 12: Expandindo os Scripts do Bitcoin](12_0_Expanding_Bitcoin_Scripts.md).
0 commit comments