Como funciona o bitcoin? Eu criei um aplicativo para mostrar.

Enquanto Bitcoin aumentava para níveis sem precedentes, chamou minha atenção e curiosidade. Perguntei-me, como o bitcoin realmente funciona?

Ao descer o buraco do coelho de blocos, descobri que muitos recursos raramente ultrapassavam o diálogo “revolucionário” , “distribuído” e “imutável” . Muitos falam sobre o que , mas não tanto o porquê e como .

Recorreu a leitura de documentos técnicos e código-fonte para descobrir esta caixa preta. Comecei a compartilhar o que aprendi criando aplicativos que demonstraram o funcionamento interno da cadeia de blocos.

O que eu percebi foi bitcoin era apenas blockchain + transactions. Este artigo irá cobrir a parte das transações da equação. Se você quiser uma atualização no blockchain, marque o Blockchain Demo ou este artigo .

Um bloco no bloco possui as seguintes partes:

Um bloco na cadeia de blocos – https://blockchaindemo.io

  • Índice (bloco nº 1) : qual bloco é esse?
  • Hash (# 00001834d29f33 …) : o bloco é válido?
  • Previous Hash (# 000dc75 …) : o bloco anterior é válido?
  • Timestamp (Tue, 19 de dezembro de 2017 …) : Quando o bloco foi adicionado?
  • Data (I ?? freeCodeCamp) : quais informações são armazenadas no bloco?
  • Nonce (1263) : quantas iterações passamos antes de encontrar um bloco válido?

Em vez de ter texto (I ?? freeCodeCamp) como dados, as criptografia têm transações como dados.

O que é uma transação?

As transações são um registro de pagamento entre duas partes. Quando há uma troca de valor, uma transação é criada para gravá-la.

Por exemplo, digamos que Satoshi tem 100 moedas.

Ele quer pagar o Dean 5 moedas, com uma taxa de mineração de 1 moeda. Ele usa as 100 moedas que ele tem para fazer a transação. Ele espera ter 94 moedas em mudança.

Quando Satoshi mina um novo bloco com a transação acima, ele é recompensado com 100 novas moedas.

O exemplo acima criará as seguintes saídas de transação (a serem explicadas):

Saídas de transação – http://coindemo.io

Uma vez que as 100 moedas iniciais que Satoshi usou como entrada para criar a transação acima, as 100 moedas iniciais são gastas . (para ser explicado)

Saída da transação passada – http://coindemo.io

Os conceitos acima serão explicados a seguir.

Três tipos de transações:

  1. Recompensa – Satoshi recompensado com 100 moedas por novo bloqueio de mineração
  2. Regular – Satoshi pagou Dean 5 moedas com mudança de 94 moedas
  3. TaxaTaxa de mineração de 1 para quem mina a transação (Satoshi no exemplo acima)

Transação

Uma transação consiste em quatro partes:

  1. Entradas – De onde vem o valor
  2. Saídas – Onde o valor está indo para
  3. Hash – Inicialmente identifica a transação (usando entradas e saídas)
  4. Tipo – Recompensa, Regular ou Taxa

Saídas – Onde o valor está indo para

Uma saída tem duas partes:

  1. Endereço – Qual é o endereço da carteira pública para enviar as moedas?
  2. Montante – Quantas moedas?

Entradas – De onde vem o valor

Uma entrada deve vir de uma saída anterior . No entanto, uma saída só pode ser usada como entrada uma vez . Quando um resultado é usado, ele é considerado gasto . As saídas que não foram utilizadas como entrada são não utilizadas .

Uma entrada tem cinco partes:

  1. Transaction Hash -Transaction hash da saída (não utilizada)
  2. Índice de saída – O índice da saída (não utilizada) na transação
  3. Quantidade – Quantidade da saída (não utilizada)
  4. Endereço – Endereço da saída (não utilizada)
  5. Assinatura – Assinada pela chave privada do endereço

Transação de recompensa

As transações de recompensa são criadas como resultado de encontrar um bloco válido na cadeia de blocos. Como resultado, as transações de recompensa não possuem entradas porque cria novas moedas.

Por exemplo: Satoshi minou um novo bloco com uma recompensa de mineração de 100. A transação no bloco ficará assim:

Tipo: Recompensa

Entradas: Nenhuma

Saídas:

  • Endereço: endereço da carteira pública de Satoshi
  • Quantidade: 100 (recompensa especificada pela cryptocurrency)

Hash: ? (entradas + saídas) = ??000abcdefg …

Transação regular

Transações regulares são transações criadas quando uma parte paga outra.

Exemplo continuou: Satoshi usa a saída (não gasto) das operações de recompensa como um contributo para pagar Dean 5 moedas. Ele especifica uma taxa de mineração de 1 moeda.

Tipo: Regular

Entradas:

  • Transaction Hash: 000abcdefg … (hash of reward transaction above)
  • Índice de saída: 0 (o primeiro índice de saída é 0)
  • Quantidade: 100 (quantidade de saída)
  • Endereço: endereço da carteira pública de Satoshi (endereço de saída)
  • Assinatura: Satoshi assina essa entrada com sua chave privada

Saídas:

Saída 1 : (índice 0)

  • Endereço : endereço de Dean
  • Montante: 5 moedas

Saída 2 : (índice 1)

  • Endereço: endereço de Satoshi
  • Montante: 94 moedas = 100 – 5 (pagamento) – 1 (taxa)
  1. O primeiro resultado é o pagamento para Dean.
  2. O segundo resultado é a mudança voltada para Satoshi

Como o resultado da transação de recompensa de Satoshi (do exemplo anterior) foi usado como entrada para este pagamento, ele agora é gasto e não pode ser usado novamente . Se for usado de novo, então há gastos duplos .

Por que não se resume ???

O valor total da entrada é de 100.
O valor total da produção é 5 + 94 = 99.

No exemplo, Satoshi especificou uma taxa de mineração de 1 moeda. A diferença entre entradas e saídas de uma transação regular é a taxa de mineração .

As entradas devem ser maiores ou iguais às saídas. Se entradas e saídas forem iguais, então não há taxa de mineração .

Transação de taxa

Quem mina a transação regular acima adicionará a transação da taxa de mineração. Porque houve um déficit de 1 na transação regular, o valor da taxa é de 1.

Exemplo contínuo: Bob mata a transação de Satoshi e Dean.

Tipo: Taxa

Entradas: Nenhuma

Saídas:

  • Endereço: endereço de carteira pública de Bob
  • Montante: 1 (taxa, diferença de entrada e saída de transação regulares)

Como Bob minou esta transação para o novo bloco, haverá uma transação de recompensa de 100 para Bob.

Na cadeia de blocos:

1. Satoshi gasta sua saída de recompensa 2. Satoshi paga Dean 3. Bob mina a transação – http://coindemo.io

Saldos finais:

Satoshi: 94 = 100 (recompensa) – 5 (pagamento) – 1 (taxa)
Dean: 5 (pagamento de Satoshi)
Bob: 101 = 100 (recompensa do novo bloco de mineração com transação) + 1 (taxa)

Total de moedas em circulação: 200 = 94 (Satoshi) + 5 (Dean) + 101 (Bob)

Dois blocos foram minados, e cada bloco tem uma recompensa de 100, então deve haver 200 moedas em circulação.

Conclusão

Em um novo bloco, as entradas regulares e de taxas e os totais de saída devem ser iguais . Isso garante que apenas as transações de recompensa gerem novas moedas.

Os déficits de saídas normais são compensados ??com as saídas de transações de taxa. Deixando o único excedente de produção para ser uma transação de recompensa.

Experimente você mesmo em http://coindemo.io