Agora, vamos deixar o Infocoin e virar para o verdadeiro protocolo do Bitcoin. O Bitcoin não tem muita diferença do Infocoin que acabamos de construir passo a passo, exceto uma mudança óbvia.
Para usar o Bitcoin, você primeiro tem que instalar uma carteira no computador. Para melhor entender, o gráfico abaixo é um screenshot de uma carteira chamada Multibit. Você pode ver no canto superior esquerdo o saldo do Bitcoin em 0.06555555 bitcoins, que no momento do gráfico representava quase US $ 70 no preço do negócio.
Suponha que você é um comerciante e que você está pronto para uma loja online e decide permitir que os clientes paguem com Bitcoin. Tudo o que você precisa fazer é gerar um novo endereço Bitcoin com o seu programa de carteira. Ele gerará automaticamente um par de chaves públicas e privadas e depois hashará o seu público para formar o seu endereço Bitcoin.
Em seguida, você envia seu endereço de Bitcoin para a pessoa que está prestes a pagar. Você pode usar o e-mail ou colocá-lo diretamente em sua página web. Isso é seguro, pois seu endereço é apenas um hash de chave pública, e você pode estar confiante de divulgá-lo a qualquer pessoa.
Agora, a pessoa que está pronta para pagar precisa criar uma nova transação. Vejamos um verdadeiro dado de transação de transferência de 0.319 bitcoins. Abaixo, este é quase o dado original, e há três mudanças: 1) os dados não são continuados; 2) os números de linha são adicionados para melhor compreensão; 3) uma longa sequência de números de hash data é omitida, mantendo apenas os primeiros 6 dígitos.
1. {"hash":"7c4025...",
2. "ver":1,
3. "vin_sz":1,
4. "vout_sz":1,
5. "lock_time":0,
6. "size":224,
7. "in":[
8. {"prev_out":
9. {"hash":"2007ae...",
10. "n":0},
11. "scriptSig":"304502... 042b2d..."}],
12. "out":[
13. {"value":"0.31900000",
14. "scriptPubKey":"OP_DUP OP_HASH160 a7db6f OP_EQUALVERIFY OP_CHECKSIG"}]}
Deixe-nos explicar uma a uma.
A primeira linha, o hash da transação ((16 intransito), ele é o único símbolo usado para representar essa transação.
A segunda linha diz-nos que a transação é feita com a primeira versão do protocolo Bitcoin.
As linhas 3 e 4 nos dizem que a transação tem uma entrada e uma saída.
A linha 5, um tempo de bloqueio (lock_time), pode ser usado para controlar quando a transação é concluída. Hoje em dia, a maioria das transações de Bitcoin tem um tempo de bloqueio zero, ou seja, a transação é concluída imediatamente.
A linha 6 nos diz quantos bytes é o tamanho da transação.
As linhas 7 a 11, que definem a parte de entrada do negócio, exatamente, as linhas 8 a 10 nos dizem que o valor de entrada do dinheiro a ser desviado é o dinheiro do valor de saída do negócio anterior. Essa é a 2007ae... que é o hash de 16 bits do último negócio, usado para indicar um negócio para cima.
É notável que a parte de entrada não diz quantos bitcoins da transação anterior serão transferidos para a próxima. Na verdade, todos os bitcoins da saída n = 0 da transação anterior foram transferidos. Por exemplo, se a primeira saída n = 0 da transação anterior tiver 2 bitcoins, esses dois bitcoins serão gastos na nova transação.
As linhas 12 a 14 definem a saída da transação. Especificamente, a linha 13 nos diz a quantidade de dinheiro que foi emitido, que é 0.319 bitcoins. A linha 14 é mais complexa, e é interessante notar que a string a7db6f... é o endereço de cobrança de bitcoins.
Agora, você pode ver como o Bitcoin resolve o problema de onde vieram os números de sequência de hashes que mencionamos anteriormente. Primeiro, o Bitcoin não é um único bitcoin separado, mas uma longa série de transações que existem no blockchain.
Podemos ir e voltar por toda a cadeia de transações. No final, há duas possibilidades. Primeiro, você pode chegar ao primeiro Bitcoin transação, que existe em um bloco, que chamamos de bloco Genesis. É uma transação especial, que não tem entrada, apenas 50 bitcoins de saída.
O segundo resultado da sequência de transações pode ser que você chegue a uma transação conhecida como o "coinbase" de bitcoin. Além do bloco Genesis, cada bloco começa com uma transação de bitcoin especial. Esta transação é usada para recompensar os mineradores que verificam a transação no bloco.
A descrição acima não é muito clara sobre o que é que é digitalmente assinado em 11 linhas. A maneira mais óbvia é fazer com que o pagador assine digitalmente a transação inteira. Por enquanto, não é assim, algumas transações são ignoradas. Isso torna uma parte das transações plastificáveis, ou seja, elas podem ser modificadas mais tarde.
No parágrafo anterior, nós falamos sobre um transação com apenas uma entrada e uma saída. Na verdade, a maioria das transações de Bitcoin são com várias entradas ou múltiplas saídas.
1. {"hash":"993830...",
2. "ver":1,
3. "vin_sz":3,
4. "vout_sz":2,
5. "lock_time":0,
6. "size":552,
7. "in":[
8. {"prev_out":{
9. "hash":"3beabc...",
10. "n":0},
11. "scriptSig":"304402... 04c7d2..."},
12. {"prev_out":{
13. "hash":"fdae9b...",
14. "n":0},
15. "scriptSig":"304502... 026e15..."},
16. {"prev_out":{
17. "hash":"20c86b...",
18. "n":1},
19. "scriptSig":"304402... 038a52..."}],
20. "out":[
21. {"value":"0.01068000",
22. "scriptPubKey":"OP_DUP OP_HASH160 e8c306... OP_EQUALVERIFY OP_CHECKSIG"},
23. {"value":"4.00000000",
24. "scriptPubKey":"OP_DUP OP_HASH160 d644e3... OP_EQUALVERIFY OP_CHECKSIG"}]}
Como antes, explicamos uma linha por linha, a maior parte do que acabamos de explicar.
A primeira linha, o valor de hash da transação, é usado como o único marcador dessa transação.
A linha 2, versão do protocolo Bitcoin, primeira edição.
As linhas 3 e 4 dizem que há 3 entradas e 2 saídas nesta transação.
A linha 5, tempo de bloqueio ((como antes) ‖.
A linha 6, o tamanho do byte da transação.
As linhas 7 a 19 definem todas as entradas, cada uma correspondendo à saída da transação anterior. A primeira entrada é de linhas 8 a 11. O seu formato de conteúdo é o mesmo do anterior. A segunda entrada é de linhas 12 a 15 e a terceira é de linhas 16 a 19.
As linhas 20 a 24 definem todas as saídas, sendo que a primeira saída é 21 e 22, e, como antes, a 21 diz que há 0.01068 bitcoins nela. A 22 é a linguagem de script do bitcoins. A string e8c30622... é o endereço do destinatário.
Parece um pouco estranho que, embora cada saída tenha um registro de quantidade de bitcoins, a entrada não tenha. Claro que cada entrada tem quanto bitcoin pode ser obtido de sua transação anterior. Em uma transação Bitcoin comum, a soma de todos os valores de entrada é maior do que a quantidade de saídas (exceto o bloco Genesis e o bloco Coinbase).
A função de várias entradas e saídas é encontrar zero. Suponha que eu quero dar-lhe 0.15 bitcoins. Eu posso gastar os 0.2 bitcoins que recebi antes. Claro, eu não quero dar-lhe todos os 0.2, então a solução é que eu lhe envie 0.15 bitcoins e depois envie 0.05 bitcoins para o meu outro endereço bitcoins.
O conceito básico por trás do Bitcoin é descrito. É claro que eu também ignoro muitos detalhes. Este não é um manual formal, afinal.
Embora as regras por trás do Bitcoin sejam simples e fáceis de entender, isso não significa que todos os resultados possíveis sejam fáceis de entender.
Quão anônimo é o Bitcoin? Muitas pessoas dizem que o Bitcoin pode ser usado de forma anônima. Essa afirmação surgiu em mercados negros como o Silk Road. No entanto, esta afirmação é fictícia. O Blockchain é público, o que significa que qualquer pessoa pode ver todas as transações de Bitcoin. Embora os endereços do Bitcoin não correspondam diretamente à identidade de uma pessoa no mundo real, os cientistas de computadores já fizeram muito trabalho para decifrar as redes sociais anônimas.
Você pode ficar rico com o Bitcoin? Sim, Tim O'Reilly disse que ganhar dinheiro é como um tanque de óleo no carro que você precisa prestar atenção, ou você ficará preso na beira da estrada, mas a vida não gira em torno de um posto de gasolina! A maioria do interesse em Bitcoin parece vir de pessoas cujo objetivo na vida é apenas encontrar um grande posto de gasolina. Eu tenho que admitir que isso é confuso.
Detalhes que eu ignoro: Embora este artigo descreva os principais conceitos por trás do Bitcoin, há muitos detalhes que eu não mencionei. Um deles é a ótima técnica de economia de espaço no protocolo, baseada em uma estrutura de dados chamada árvore de Merkle. É um detalhe, mas é um detalhe incrivelmente interessante, que vale a pena ver se você gosta de estrutura de dados.
O script do Bitcoin: Neste artigo, expliquei o Bitcoin como uma moeda eletrônica online. Mas essa é apenas uma pequena parte de uma história maior e mais interessante. Como vimos, cada transação de Bitcoin possui um script do Bitcoin. O script foi simplificado neste artigo para algo semelhante a:
Se você achar que é útil, recomendo que você dê uma dica ao autor original deste artigo, Michael Nielsen, em 17ukkKt1bNLAqdJ1QQv8v9Askr6vy3MzTZ. Você também pode segui-lo no Twitter. Ou siga o primeiro capítulo de seu novo livro sobre redes neurais e aprendizado profundo.
Se houver algum problema, por favor, perdoe-me.
O que é que a Bíblia diz sobre o assunto?