Participantes: Yan Victor, Walysson Duarte, Vinicius Jose, The Gama (Ingrid)
Capítulos 6 e 7 do Mastering Bitcoin
- Quais são os diferentes componentes de uma transação de Bitcoin?
Uma transação de Bitcoin é composta por:
Entradas (Inputs): Referem-se às UTXOs (Unspent Transaction Outputs) que serão usadas para criar a nova transação. Cada entrada é uma referência a uma saída de uma transação anterior. Saídas (Outputs): Definem para onde os bitcoins estão sendo enviados, especificando o endereço do destinatário e o valor. Assinaturas digitais (scriptSig): Verificam a legitimidade da transação, garantindo que o remetente tem a chave privada para gastar o UTXO. Taxas (Fees): A diferença entre o valor total das entradas e o valor total das saídas. O minerador recebe essa diferença como uma taxa.
Com segwit:
Função do Marker e Flag O marker e o flag trabalham juntos para garantir compatibilidade retroativa. Quando nós que não são compatíveis com SegWit encontram transações com marker e flag, eles simplesmente ignoram os dados da testemunha, permitindo que essas transações ainda sejam válidas e processadas de maneira convencional.
Resumo O marker é uma parte essencial da transação SegWit, e seu valor 0x00 indica que a transação segue o novo formato. Juntamente com o flag (0x01), ele sinaliza ao sistema que deve haver uma seção adicional de dados de testemunha. Esse design permite melhorar a escalabilidade e resolver o problema de maleabilidade de transações, sem quebrar a compatibilidade com implementações antigas.
- O que são entradas de transação e como elas são construídas? O que são scripts de desbloqueio (unlocking scripts)?
Entradas de Transação (Transaction Inputs): São referências às UTXOs que o remetente deseja gastar. Cada entrada inclui uma referência à transação anterior e um script de desbloqueio (scriptSig) que valida que o remetente tem o direito de gastar esses fundos. Scripts de Desbloqueio (Unlocking Scripts ou scriptSig): São assinaturas digitais que provam a posse das chaves privadas correspondentes aos UTXOs sendo gastos. Esses scripts desbloqueiam os fundos para que possam ser transferidos. 3. Quais partes da estrutura de transação foram afetadas com a atualização SegWit? Houve novos campos adicionados à estrutura de transação?
A atualização SegWit (Segregated Witness) separou as assinaturas digitais (witness data) da transação, o que reduziu o tamanho das transações e aumentou a capacidade de transações por bloco. Novos campos incluídos foram:
Testemunho (Witness Field): Contém as assinaturas (scripts testemunhas) separadas da estrutura principal da transação. Marcação de Transação SegWit (Flag Field): Indica que a transação é compatível com SegWit. 4. Compare uma transação coinbase com uma transação normal de bitcoin e destaque as diferenças entre as duas.
Transação Normal: Tem entradas que referenciam UTXOs anteriores e saídas que especificam os destinatários dos fundos. Transação Coinbase: É a primeira transação de cada bloco, usada para recompensar o minerador com novos bitcoins e taxas de transação. Não tem entradas porque cria novos bitcoins, e apenas contém saídas. 5. O que são UTXOs (Unspent Transaction Outputs) e como o saldo de uma carteira é calculado?
UTXOs: São as saídas de transações anteriores que ainda não foram gastas e podem ser usadas como entradas em novas transações. Cálculo do Saldo: O saldo de uma carteira é o somatório de todos os UTXOs associados aos endereços controlados pela chave privada da carteira. 6. Qual a diferença entre um script de bloqueio (scriptPubKey) e um script de desbloqueio (scriptSig)? Qual a diferença entre um script de resgate (redeem script) e um script testemunha (witness script)?
Script de Bloqueio (scriptPubKey): Define as condições necessárias para gastar um UTXO, como o endereço do destinatário ou um requisito de assinatura.
Script de Desbloqueio (scriptSig): Fornece a assinatura digital necessária para desbloquear o UTXO conforme especificado no script de bloqueio.
Redeem Script: Utilizado em transações P2SH (Pay-to-Script-Hash), ele contém o script completo que deve ser satisfeito para gastar os fundos. O scriptPubKey apenas contém o hash desse script.
Witness Script: Introduzido com o SegWit, é semelhante ao redeem script, mas as assinaturas são movidas para a testemunha (witness field), fora da estrutura principal da transação.
- O que é P2PKH? Como ele é construído?
P2PKH (Pay-to-Public-Key-Hash): É o formato de transação mais comum, onde a transação é enviada para um endereço Bitcoin, que é o hash da chave pública do destinatário. Construção: O scriptPubKey contém o hash da chave pública do destinatário, e o scriptSig contém a chave pública e a assinatura digital que corresponde ao hash, provando a posse da chave privada. 8. O que é P2SH? Como ele é construído? Quais os benefícios de usar P2SH sobre P2PKH? Quais são as desvantagens?
P2SH (Pay-to-Script-Hash): Permite que o remetente envie bitcoins para um script complexo (como um multisig ou contrato inteligente), em vez de apenas um endereço público. O script de resgate (redeem script) deve ser fornecido quando os fundos forem gastos. Construção: O scriptPubKey contém o hash do script completo, e o scriptSig contém o script de resgate e as assinaturas necessárias para satisfazê-lo. Benefícios: Facilita o uso de scripts mais complexos, pois o remetente só precisa se preocupar com o hash do script, enquanto o destinatário fornece os detalhes ao gastar. Desvantagens: O tamanho das transações pode aumentar, tornando-as mais caras em termos de taxas. 9. O que é um script multisig? Como ele é construído?
Script Multisig (Multisignature Script): É um tipo de script que exige várias assinaturas para liberar os fundos. Por exemplo, uma transação pode exigir 2 de 3 assinaturas possíveis para ser válida. Construção: O script define um número mínimo de assinaturas válidas que devem ser fornecidas, junto com as chaves públicas associadas. Isso é útil para garantir segurança adicional, pois múltiplas partes precisam autorizar a transação.