mirror of
				https://github.com/ChristopherA/Learning-Bitcoin-from-the-Command-Line.git
				synced 2025-10-31 02:17:24 +00:00 
			
		
		
		
	Revise chapter 8 titles, fix typos
This commit is contained in:
		
							parent
							
								
									1b7776a040
								
							
						
					
					
						commit
						d0ccb881a2
					
				| @ -1,4 +1,4 @@ | ||||
| # Capítulo 8: Expandindo Transações de Bitcoin de Outras Maneiras | ||||
| # Capítulo 8: Expandindo Transações no Bitcoin de Outras Maneiras | ||||
| 
 | ||||
| A definição de transações básicas descrita no [Capítulo Seis](06_0_Expanding_Bitcoin_Transactions_Multisigs.md) diz que enviamos os _fundos_ _imediatamente_, mas esses são os dois elementos que podem ser alterados. Esta seção final sobre _Expandindo transações de Bitcoin_ fala sobre como enviar coisas que não sejam moedas e como fazer isso em um momento diferente do atual. | ||||
| 
 | ||||
| @ -15,7 +15,7 @@ Os objetivos secundários incluem a capacidade de: | ||||
|  * Planejar usando o poder do Locktime; | ||||
|  * Planejar usando o poder de OP_RETURN. | ||||
|     | ||||
| ## Tabela de conteúdo | ||||
| ## Tabela de Conteúdo | ||||
| 
 | ||||
|  * [Seção Um: Enviando uma transação com Locktime](08_1_Sending_a_Transaction_with_a_Locktime.md) | ||||
|  * [Seção Dois: Enviando uma transação com dados](08_2_Sending_a_Transaction_with_Data.md) | ||||
|  * [Seção Um: Enviando uma Transação com um Locktime](08_1_Sending_a_Transaction_with_a_Locktime.md) | ||||
|  * [Seção Dois: Enviando uma Transação com Dados](08_2_Sending_a_Transaction_with_Data.md) | ||||
| @ -1,8 +1,8 @@ | ||||
| # 8.1: Enviando uma transação com Locktime | ||||
| # 8.1: Enviando uma Transação com um Locktime | ||||
| 
 | ||||
| Os capítulos anteriores mostraram duas maneiras diferentes de enviar fundos de várias máquinas e para vários destinatários. Mas, existem duas outras maneiras de alterar fundamentalmente as transações básicas. A primeira delas é variar o tempo, escolhendo um tempo de bloqueio ou mais conhecido pela expressão em inglês locktime. Isso nos dá a capacidade de enviar transações brutas em algum momento no futuro. | ||||
| 
 | ||||
| ## Entendendo como o Locktime funciona | ||||
| ## Entendendo Como o Locktime Funciona | ||||
| 
 | ||||
| Ao criar uma transação do tipo locktime, a bloqueamos com um número que representa a altura do bloco (se for um número pequeno) ou um carimbo de data/hora usando o padrão UNIX (se for um número grande). Isso informa à rede Bitcoin que a transação não pode ser colocada no bloco até que o tempo especificado chegue ou a blockchain tenha atingido a altura especificada. | ||||
| 
 | ||||
| @ -16,11 +16,11 @@ Quando uma transação do tipo locktime está esperando para entrar em um bloco, | ||||
| 
 | ||||
| > O Bitcoin Script capacita ainda mais os dois tipos de timelocks, permitindo o bloqueio de saídas individuais ao invés de toda a transação. Os timelocks absolutos (como Locktime) estão vinculados ao opcode Script OP_CHECKLOCKTIMEVERIFY, que é definido no [BIP 65](https://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki) e que será estudado na seção [§11.2: Usando CLTV em Scripts](11_2_Using_CLTV_in_Scripts.md), enquanto os timelocks relativos (como o Timelock) estão vinculados ao opcode de Script OP_CHECKSEQUENCEVERIFY, que é definido no [BIP 112](https://github.com/bitcoin/bips /blob/master/bip-0112.mediawiki) e que também será abordado na seção [§11.3](11_3_Using_CSV_in_Scripts.md). | ||||
| 
 | ||||
| ## Criando uma transação de Locktime | ||||
| ## Criando uma Transação com Locktime | ||||
| 
 | ||||
| Para criar uma transação com locktime, precisamos primeiro determinar como definiremos o tempo. | ||||
| 
 | ||||
| ### Descobrindo nosso tempo de bloqueio usando o carimbo de data/hora do UNIX | ||||
| ### Descobrindo Nosso Locktime Usando o Carimbo de Data/Hora do UNIX | ||||
| 
 | ||||
| Provavelmente, iremos definir com muito mais frequência o nosso tempo de bloqueio usando um carimbo de data/hora do tipo UNIX que representa uma data e hora específica. Podemos calcular um carimbo de data/hora UNIX usando sites que fazem essa conversão, como o [UNIX Time Stamp](http://www.unixtimestamp.com/) ou o [Epoch Convertor](https://www.epochconverter.com/). No entanto, seria melhor [escrevermos nosso próprio script](https://www.epochconverter.com/#code) em nossa máquina local, para que saibamos que o carimbo de data/hora UNIX que recebemos está correto (lembre-se, não confie, verifique). Se não fizermos isso, pelo menos seria interessante verificar em dois sites diferentes para ter a certeza que tudo está correto. | ||||
| 
 | ||||
| @ -28,7 +28,7 @@ Provavelmente, iremos definir com muito mais frequência o nosso tempo de bloque | ||||
| 
 | ||||
| > :warning: **AVISO:** O Locktime com carimbos de data/hora tem menos flexibilidade, pois a liberação de blocos não é regular e os tempos de bloqueio podem ser duas horas antes do tempo real, então um locktime significa "mais ou menos nesta data e nesta hora". | ||||
| 
 | ||||
| ### Descobrir o locktime usando a altura do bloco | ||||
| ### Descobrindo Nossoo Locktime Usando a Altura do Bloco | ||||
| 
 | ||||
| Como alternativa, podemos definir o locktime usando um número menor, que representa a altura de um bloco. Para calcular a altura do bloco futuro, precisamos primeiro saber qual é a altura do bloco atual. O ```bitcoin-cli getblockcount``` nos dirá a altura do bloco atual baseado na blockchain da máquina local. Podemos verificar um explorador do Bitcoin como a [mempool.space](https://mempool.space/). | ||||
| 
 | ||||
| @ -38,7 +38,7 @@ Depois de descobrir a altura atual, podemos decidir até que ponto no futuro ire | ||||
| 
 | ||||
| > :warning: **AVISO:** Se desejamos definir um locktime usando a altura do bloco, devemos definir o tempo de bloqueio para menos de 500 milhões. Se definirmos como sendo 500 milhões ou mais, nosso número será interpretado como um carimbo de data/hora. Como o carimbo de data/hora usando o padrão UNIX com valor de 500 milhões era dia 5 de novembro de 1985, provavelmente significa que nossa transação será permitida a qualquer momento a entrar na blockchain. | ||||
| 
 | ||||
| ## Escrevendo a transação | ||||
| ## Escrevendo a Transação | ||||
| 
 | ||||
| Depois de descobrir o locktime, tudo o que precisamos fazer é escrever uma transação bruta padrão, com uma terceira variável para o ```locktime```: | ||||
| ``` | ||||
| @ -104,7 +104,7 @@ Observe que o número de sequência (```4294967294```) é menor que ```0xfffffff | ||||
| 
 | ||||
| > :warning: **ATENÇÃO:** Se estivermos criando uma transação bruta com locktime por algum outro meio que não seja o ```bitcoin-cli```, teremos que definir a sequência para um valor menor que ```0xffffffff``` manualmente. | ||||
| 
 | ||||
| ## Enviando a transação | ||||
| ## Enviando a Transação | ||||
| 
 | ||||
| Agora, já estamos familiarizados com a parte final, que é enviar a transação para a rede: | ||||
| ``` | ||||
| @ -120,11 +120,11 @@ Desde 2013, geralmente não podemos colocar a transação usando um timelock na | ||||
| 
 | ||||
| Assim que o bloqueio de tempo expirar, qualquer pessoa pode enviar a transação assinada para a rede, e o destinatário receberá o saldo como esperado... Desde que a transação não tenha sido cancelada. | ||||
| 
 | ||||
| ## Cancelando uma transação com timelock | ||||
| ## Cancelando uma Transação com Locktime | ||||
| 
 | ||||
| Cancelar uma transação de tempo de bloqueio é _muito_ simples: precisamos apenas enviar uma nova transação usando pelo menos um dos UTXOs. | ||||
| 
 | ||||
| ## Resumo: Enviando uma transação com Locktime | ||||
| ## Resumo: Enviando uma Transação com um Locktime | ||||
| 
 | ||||
| O Locktime oferece uma maneira de criar uma transação que _precisa_ esperar e que _não será aceita_ até que um determinado bloco chegue ou um momento pré-definido passe. Enquanto isso, ela pode ser cancelada simplesmente reutilizando um dos UTXO da transação. | ||||
| 
 | ||||
| @ -132,4 +132,4 @@ O Locktime oferece uma maneira de criar uma transação que _precisa_ esperar e | ||||
| 
 | ||||
| ## O que vem depois? | ||||
| 
 | ||||
| Vamos continuar "Expandindo transações de Bitcoin" na seção [§8.2: Enviando uma transação com dados](08_2_Sending_a_Transaction_with_Data.md). | ||||
| Vamos continuar "Expandindo Transações no Bitcoin" na seção [§8.2: Enviando uma Transação com Dados](08_2_Sending_a_Transaction_with_Data.md). | ||||
| @ -1,10 +1,10 @@ | ||||
| # 8.2: Enviando uma transação com dados | ||||
| # 8.2: Enviando uma Transação com Dados | ||||
| 
 | ||||
| O último jeito de variar a forma como enviamos uma transação simples é usar a transação para enviar dados ao invés de saldos (ou, na prática, enviar algo além dos saldos). Isso nos dá a capacidade de inserir informações na blockchain. Isso é feito através de um comando especial, o ```OP_RETURN```. | ||||
| 
 | ||||
| A pegadinha? Só podemos armazenar 80 bytes por vez! | ||||
| 
 | ||||
| ## Criando nossos dados | ||||
| ## Criando Nossos Dados | ||||
| 
 | ||||
| A primeira coisa que precisamos fazer é criar os 80 bytes (ou menos) de dados que iremos gravar no nosso ```OP_RETURN```. Isso pode ser tão simples quanto preparar uma mensagem ou podemos usar o hash dos dados existentes. Por exemplo, o ```sha256sum``` produz 256 bits de dados, que são apenas 32 bytes, bem abaixo do nosso limite: | ||||
| ``` | ||||
| @ -14,7 +14,7 @@ $ op_return_data="b9f81a8919e5aba39aeb86145c684010e6e559b580a85003ae25d78237a12e | ||||
| ``` | ||||
| > :book: _O que é um OP_RETURN?_ Todas as transações Bitcoin são construídas com scripts que iremos ver mais a fundo no próximo capítulo. O ```OP_RETURN``` é um script simples que define o OUTPUT como sendo inválido. A convenção resultou no uso dele para incorporar dados na blockchain. | ||||
| 
 | ||||
| ## Separando algumas moedas | ||||
| ## Separando Algumas Moedas | ||||
| 
 | ||||
| Nosso objetivo ao criar uma transação de dados não é enviar dinheiro para alguém, mas colocar dados dentro da blockchain. No entanto, _devemos_ gastar algumas moedas para fazer isso. Só precisamos usar um endereço de troco como sendo nosso _ único_ destinatário. Em seguida, podemos identificar um UTXO e enviá-lo para nosso endereço de troco, sem esquecer da taxa de transação, ao mesmo tempo que usamos a mesma transação para criar um OP_RETURN. | ||||
| 
 | ||||
| @ -41,7 +41,7 @@ $ utxo_vout=$(bitcoin-cli listunspent | jq -r '.[0] | .vout') | ||||
| $ changeaddress=$(bitcoin-cli getrawchangeaddress) | ||||
| ``` | ||||
| 
 | ||||
| ## Escrevendo uma transação bruta | ||||
| ## Escrevendo uma Transação Bruta | ||||
| 
 | ||||
| Agora podemos escrever uma nova transação bruta com duas saídas: uma é o nosso endereço de alteração para recuperar (a maior parte) do nosso saldo, a outra é um endereço de dados, que é uma variável ```bitcoin-cli``` para um OP_RETURN. | ||||
| ``` | ||||
| @ -97,18 +97,18 @@ Esta é a cara da transação: | ||||
| ``` | ||||
| Como podemos observar, ela envia a maior parte do dinheiro de volta para o endereço de troco (`tb1qnx9fkrksw6aaaswc3kj0gademhn4ud3q7cz4fm`) menos a taxa de transação. Mais importante, a primeira saída mostra um OP_RETURN com os dados (`b9f81a8919e5aba39aeb86145c684010e6e559b580a85003ae25d78237a12e75`) logo depois. | ||||
| 
 | ||||
| ## Enviando uma transação bruta | ||||
| ## Enviando uma Transação Bruta | ||||
| 
 | ||||
| Assine a transação bruta e envie-a, e logo esse OP_RETURN será incorporado a blockchain! | ||||
| 
 | ||||
| ## Verificando nosso OP_RETURN | ||||
| ## Verificando Nosso OP_RETURN | ||||
| 
 | ||||
| Novamente, podemos olhar para essa transação usando um explorador da blockchain: | ||||
| [https://mempool.space/pt/testnet/tx/a600148ac3b05f0c774b8687a71c545077ea5dfb9677e5c6d708215053d892e8/] | ||||
| 
 | ||||
| Podemos observar um aviso sobre os dados estarem em um "protocolo desconhecido". Se estivermos projetando algum uso regular dos dados ```OP_RETURN```, provavelmente iremos marcar com um prefixo especial, para marcar esse protocolo. Então, os dados OP_RETURN reais podem ser algo como "CONTRACTS3b110a164aa18d3a5ab064ba93fdce62". Este exemplo não usa um prefixo para evitar qualquer tipo de confusão com os espaços de dados. | ||||
| 
 | ||||
| ## Resumo: Enviando uma transação com dados | ||||
| ## Resumo: Enviando uma Transação com Dados | ||||
| 
 | ||||
| Podemos usar o ```OP_RETURN``` para armazenar até 80 bytes de dados na blockchain. Fazemos isso com a palavra-código ```data``` em um ```vout```. Ainda precisaremos enviar alguns satoshinhos, mas basta enviá-lo de volta para um endereço de troco, retirando a taxa de transação. | ||||
| 
 | ||||
| @ -116,6 +116,6 @@ Podemos usar o ```OP_RETURN``` para armazenar até 80 bytes de dados na blockcha | ||||
| 
 | ||||
| Observe que há alguma controvérsia sobre o uso da blockchain do Bitcoin usando-a para este fim. | ||||
| 
 | ||||
| ## O que vem depois? | ||||
| ## O Que Vem Depois? | ||||
| 
 | ||||
| Vamos conhecer mais sobre o "Script no Bitcoin" no [Capítulo Nove: Apresentando os Scripts no Bitcoin](09_0_Introducing_Bitcoin_Scripts.md). | ||||
| Vamos conhecer mais sobre "Programando no Bitcoin" no [Capítulo Nove: Apresentando os Scripts do Bitcoin](09_0_Introducing_Bitcoin_Scripts.md). | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user