Como funciona a rede Bitcoin? Como minerar?
Fala, pessoal. Aqui é o Daniel Scocco do canal criptos.com.br. No vídeo passado eu fiz um apanhado geral sobre o que é o Bitcoin, tentando explicar para uma pessoa que nunca ouviu nada sobre o assunto. Recomendo assistir esse vídeo antes, porém um resumo que a gente pode descrever o Bitcoin com três principais pontos ou características:
O Bitcoin é uma moeda digital.
O Bitcoin é uma moeda descentralizada.
E é uma moeda que se baseia em criptografia, ou seja, uma criptomoeda.
Falei de uma maneira muito superficial sobre cada uma dessas características, e neste vídeo o objetivo é a gente investigar um pouco mais o que está acontecendo por baixo do pano.
Então, o que é uma carteira de Bitcoin, o que acontece quando você envia ou recebe um pagamento, como funciona a BlockChain, que é a estrutura de dados que mantém todo esse funcionamento da rede em pé, o que é o processo de mineração que vai gerar novos Bitcoins, brotam novos Bitcoins em circulação, porque é importante para manter o sistema de pé, e assim por diante.
Então vamos lá.
Imagine que nós temos a Alice, que nunca usou Bitcoin, mas está querendo começar a usar. Ela quer comprar um Bitcoin e à direita a gente tem o Bob, amigo da Alice, que vai vender um Bitcoin pra ela. Então vamos mostrar como vai funcionar essa transação.
Primeiro passo é a Alice criar uma carteira. Isso quer dizer que ela vai ter que instalar algum software ou no celular ou no computador dela, ou usar algum serviço de carteira online, e esse software vai gerar pra ela um par de chaves criptográficas, a chave pública e a chave privada ou secreta. Aqui eu estou usando os termos em inglês, PK (public key) e SK (secret key).
Essas chaves nada mais são do que números, para simplificar, a gente está falando que a chave pública dela é 123 e a chave privada ou secreta é 456. Na verdade, obviamente, são números muito maiores. No caso do Bitcoin são números de 256 bits cada um desses. E números que respeitam algumas propriedades matemáticas para que a criptografia funcione, mas a gente não precisa entrar nesses detalhes.
Então depois que a Alice criar essa conta e fizer essa ativação, o software dela vai gerar essa chave. Então agora ela tem uma carteira que tem 0 Bitcoins. Obviamente acabou de ser criada. Aí o que ela vai fazer? Ela vai pagar o valor proporcional e atual de 1 Bitcoin para o Bob. O Bob, uma vez que recebeu esse valor, por exemplo, a Alice faz um TED para ele ou paga em mãos, em espécie, o que for. O Bob vai falar Beleza, então agora eu vou transferir pra Alice esse 1 Bitcoin. Note que aqui eu estou falando BTC, isso nada mais é do que o símbolo usado para o Bitcoin, a abreviação. Então, zero BTC na carteira da Alice, e o Bob, vamos supor que ele tenha 10 BTC na carteira dele.
Como você pode ver, o Bob também tem na carteira dele, obviamente uma chave pública e uma chave secreta. Então, o Bob vai fazer o que? Ele vai lá no software que ele usa de carteira, ele vai dizer que quer enviar para este endereço aqui, ou seja, para esta chave pública, ele quer enviar para o endereço 123 um BTC. Então ele só vai colocar esses dados lá e clicar enviar. O software vai fazer o resto pra ele.
O que é esse resto? O software vai criar primeiro uma transação. Imagine como se fosse um arquivo de Word onde vão estar escritos esses dados. Obviamente é uma outra formatação um pouco mais complexa, mas para entender, facilita deste jeito. Então, a carteira do Bob, esse software vai criar um arquivo lá com esses dados. T de transação, remetente 489, ou seja, qual é a chave pública ou endereço que está enviando essa quantia em Bitcoin. Então note que a chave pública, ela pode ser vista também como endereço da sua carteira, ou endereço da sua conta, ou o número que identifica a sua conta. Então o software vai colocar: Remetente 489, que é o endereço da carteira do Bob, ou a chave pública dele. Destinatário 123, que é a chave pública ou endereço da Alice. Quantidade 1 Bitcoin. Então o software vai criar essa transação, um arquivo, vai pegar esse arquivo de Word ou texto e vai passar em um algoritmo de cifragem, um algoritmo de criptografia usando, como você está vendo aqui, a chave secreta do Bob. Ao fim desse processo, este algoritmo aqui vai cuspir fora um outro arquivo, desta vez um arquivo binário, um arquivo codificado, que representa a assinatura do Bob em cima dessa transação. Aí o software ou a carteira do Bob vai fazer o que? Vai pegar esses dois arquivos, empacotá-los em um arquivo só e vai mandar para a rede Bitcoin. Ou seja, vai enviar esse arquivo empacotado para algum nó, algum computador na Internet que está rodando o software de Bitcoin que ele conhece. Todas as carteiras têm que manter uma lista dos possíveis nós que estão em operação.
Uma vez que esse arquivo chega aqui, este nó vai inspecionar. Então ele vai olhar aqui e vai falar: este endereço aqui é válido de remetente? Sim. O destinatário é válido? Sim. A assinatura está correta, ou seja, está provado que a pessoa que está enviando de fato controla os fundos que estão neste endereço aqui, 489? Sim. Beleza. Vamos controlar se tem fundos também. Então ele vai ver se esta carteira 489 tem pelo menos 1 Bitcoin para enviar. Sim. Passou todos esses testes, quer dizer que é uma transação válida, então ele vai passar, ou repassar no caso essa transação para todos os outros nós da rede que ele conhece, que estão na lista dele, que ele tem contato. Alguns pontos importantes: note que a chave secreta. ou chave privada do Bob nunca é revelada. Aqui o que vai ser enviado para a rede vão ser os dados da chave pública, ou seja, o endereço da carteira dele, os dados da chave pública da carteira da Alice e a assinatura dessa transação. Então a chave privada do Bob foi usada para assinar neste processo, quando passa pelo algoritmo que vai fazer essa codificação. Mas essa assinatura, ela não revela qual é a chave secreta do Bob. A única coisa que essa assinatura diz é que quem realizou essa assinatura de fato controla, tem acesso à chave privada para esta chave pública. Ou seja, essa assinatura diz que quem enviou esta transação de fato é o detentor dessa carteira aqui. Portanto, pode usar esses fundos.
Obviamente, se esta chave secreta do Bob, se alguém tomar conhecimento dela, vamos supor que ela fala pra um amigo, ou ele publica na Internet, qualquer pessoa que tiver acesso à esta chave secreta dele vai conseguir usar esses fundos que estão na carteira dele.
Outro ponto importante: a esta altura do campeonato, esta transação do Bob já foi enviada para a rede, os nós da rede Bitcoin já têm conhecimento dela, mas ela ainda não foi confirmada. Ela vai entrar numa lista de transações pendentes. Imagine que você tem lá todos os nós, todos os computadores que estão rodando o software Bitcoin, eles tem uma lista de todas as transações pendentes. Conforme vão chegando essas transações, eles vão adicionando elas à lista, mas não está confirmado ainda.
O software da carteira da Alice pode até notificar a Alice, falando: Olha, chegou uma transação na rede do endereço 489 que supostamente vai transferir para você 1 BTC. Você pode até querer fazer alguma coisa com essa informação, falando isso pra Alice, mas essa transação ainda não está confirmada, então o saldo dela continuaria mostrando zero.