Continuamos a limpar os arquivos com esta peça de Daz Bea, publicado pela primeira vez no Medium em julho de 2021. Algumas pequenas edições foram feitas para ajudar na clareza ... aproveite.
Talvez você seja novo no bitcoin, ou talvez esteja na toca do coelho por um tempo, mas nunca entendeu exatamente o que acontece nos bastidores, no blockchain. Espero desvendar o mistério por trás do blockchain, hashing, mineração de bitcoin e ledgers distribuídos em um simples artigo. Aperte o cinto, temos muito o que superar.
Hash SHA256
A rede bitcoin usa o algoritmo SHA256 para realizar funções de hash. Já está confuso? Não se preocupe, isso pode ser muito complexo e muito acima do meu salário, mas explicarei o básico da melhor maneira possível.
Pense no hash como a criação de uma impressão digital de um conjunto de dados. Os dados vão para o algoritmo (a entrada), o algoritmo faz sua mágica e cospe uma série de caracteres alfanuméricos (a saída). O que é realmente legal sobre o hashing é que não importa quantos dados você executa no algoritmo, a saída é sempre do mesmo tamanho, 64 caracteres hexadecimais para o algoritmo SHA256.
Figura 1 mostra a função hash SHA256 (nós nos referiremos a isso como hash daqui) do nome “Daz”. “Daz” é a entrada e 3445748836aa04e53fd5de81c41c4a370f0cf52004659abf87920abc0da1bbaf é a saída…
Simples, não?
Figura 1. Hash do nome “Daz”
Agora vou mudar o “D” maiúsculo para um “d” minúsculo (Figura 2) para demonstrar que uma simples e pequena alteração na entrada resulta em uma saída completamente nova. Entrada=daz, saída = ae5e9de1ed5510933a86705cb253b3cbd0b0891e70217c7a64603869aeaac093. Como você pode ver em nossa nova saída, quando comparados ao original, os personagens são completamente diferentes. Não há padrão discernível entre os dois.
Figura 2. Hash do nome “daz” com “d” minúsculo
Conforme mencionado anteriormente, o hash resultante tem 64 caracteres. Este é sempre o caso, não importa o tamanho dos dados que colocamos no algoritmo. Na Figura 3, colo um artigo inteiro da Wikipédia sobre Fender Stratocasters na entrada, a saída permanece com 64 caracteres. Esse recurso permaneceria verdadeiro se você colocasse todo o conteúdo da Internet no algoritmo, 64 caracteres de cada vez.
Figura 3. Hash de um artigo da Wikipedia sobre Fender Stratocaster (fonte: https://en.wikipedia.org/wiki/Fender_Stratocaster)
Um recurso da função de hash SHA256 é que, se refazermos o hash exatamente do mesmo conjunto de dados, obteríamos o mesmo hash desses dados todas as vezes. Isso é algo usado com frequência em todo o mundo para comparar vários grandes conjuntos de dados para garantir sua precisão. Comparar as saídas de hash é mais fácil do que comparar todo o conteúdo, caractere por caractere. Esse recurso é o que forma a base do blockchain do bitcoin. Vamos mergulhar na próxima peça desse quebra-cabeça... Blocos.
Blocos e Mineração
Podemos usar a função de hash SHA256 para começar a construir blocos de dados. Para cada bloco, temos a entrada (o conjunto de dados) e adicionamos alguns recursos diferenciadores a esses dados, como um número de bloco, por exemplo. E nós o executamos através da função hash.
Na figura 4, podemos ver que temos alguns campos de dados como o bloco #, um nonce (falaremos sobre isso em breve), e no momento nosso campo de dados está em branco. O Hash desses campos de dados inclusivos é: 0000f727854b50bb95c054b39c1fe5c92e5ebcfa4bcb5dc279f56aa96a365e5a
Figura 4. Bloco Exemplo 1
Você notará uma característica distintiva desse hash, observe que os 4 caracteres principais são todos 0s. Isso não é um acidente. Veja bem, o hash de saída do algoritmo SHA256 é na verdade um número muito grande. Na vida cotidiana, estamos acostumados a usar um sistema numérico chamado base10. Significando que nosso sistema numérico é um sistema baseado nos números de 0 a 9.
Existem vários sistemas numéricos diferentes, particularmente na ciência da computação. Base2 é outro sistema de numeração comum, você pode estar mais familiarizado com o termo Binário. Base 2 ou Binário é um sistema numérico comumente usado para a estrutura básica de sistemas de computador compostos pelos números 0 e 1.
A saída dos algoritmos SHA256 do bitcoin está em Base16, também conhecido como hexadecimal. A base 16 simplesmente usa o sistema numérico de base 10 de 0 a 9 e estende esse sistema numérico com as letras a através de f em letras minúsculas para criar um sistema numérico equivalente com valores de 0 a 15 ilustrados na tabela 1.
Tabela 1: Sistema de numeração de base 16 (hexadecimal).
Por que usar base16? Simplesmente, usamos a base 16 por uma questão de brevidade. Uma forma de representar números extremamente grandes enquanto reduz a quantidade total de caracteres.
Agora, vamos apresentar 2 novos termos relacionados à mineração de bitcoin. Dificuldade e Objetivo. Dificuldade e Alvo são maneiras pelas quais o protocolo bitcoin controla a dificuldade de encontrar blocos. Eu abordo isso até certo ponto em um dos meus artigos anteriores sobre o Ajuste de dificuldade, você pode ler isso aqui.
Por enquanto, basta entender que o programa que estamos usando para esta demonstração tem um "alvo" para fazer o hash de saída funcionar abaixo de um determinado número de destino, o que torna o nonce mais difícil de encontrar. Para o protocolo bitcoin, o alvo é ajustado a cada 2 semanas para regular uma liberação de taxa de bloqueio média de 1 x bloco a cada 10 minutos, à medida que mais poder computacional é lançado na rede Bitcoin, os blocos são resolvidos mais rapidamente, o protocolo olha para os blocos anteriores de 2016 e ajusta a dificuldade de minerar blocos diminuindo o valor alvo, tornando o nonce mais difícil de encontrar.
Não vamos nos aprofundar muito nisso neste artigo, vamos guardá-lo para outra hora. Hoje vamos nos concentrar mais no nonce e em como construir um blockchain.
De volta ao nosso exemplo em Figura 4. Agora vamos adicionar alguns dados a este bloco. vou adicionar a frase "Olá Mundo". Depois de adicionar esses dados, você notará que o fundo ficou vermelho (Figura 5), o programa não está satisfeito com nosso bloco agora. Lembre-se da Figura 4 que o hash desse conjunto de dados começou com 4 x 0s iniciais. Este programa específico que estou executando requer que o hash esteja sempre abaixo de um valor de destino com o hash de saída começando com 4 0s iniciais, sendo esse número em sua forma base16 completa: 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
Figura 5. Uma alteração nos dados invalidou o bloco.
Quando alterei os dados adicionando “Hello World” o algoritmo SHA256 forneceu um novo hash e, como podemos ver, meu novo hash não começa com 4 0s à esquerda, o hash de saída está acima do nosso valor de destino e, portanto, é inválido.
Há uma verdade fundamental nos algoritmos SHA256, pois há existe um conjunto de dados, que uma vez incluído em combinação com meus outros dados dentro do bloco, resultaria em um hash de saída abaixo do meu número de destino. De fato, pode haver mais de uma resposta; na verdade, é provável que haja muitas. A dificuldade (trocadilho intencional), no entanto, é quais dados poderiam ser para satisfazer o problema?
Este é o lugar onde o Nonce entra em jogo. Se dividirmos meu conjunto de dados dentro do bloco, teremos o número do bloco (1) e o Data (Hello World) e um campo adicional chamado nonce (atualmente com um valor de: 72608). E se houvesse um conjunto de dados que eu pudesse incluir como o valor nonce, que, uma vez adicionado ao restante dos dados, resultaria em um hash que satisfizesse o requisito do meu programa para que o hash de saída resultasse em um número menor que 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
A beleza da criptografia é que ela não pode ser calculada manualmente. Minha única opção é tentar adivinhar arbitrariamente quais podem ser esses dados. Posso alterar o valor nonce para 1? Ou alterá-lo para 2? ou posso tentar 2456395697 ou 45628496902074?…….. Posso ficar aqui um pouco.
Ou podemos usar o poder do meu computador. Podemos usar a capacidade do computador de processar informações rapidamente para começar a adivinhar quais dados poderíamos incluir no campo “Nonce”, que uma vez executado pela função hash, resultaria em um hash de saída abaixo de 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff!
Se eu clicar em “Mine” no meu programa, meu PC começará a adivinhar valores para o nonce, não há outra maneira de calcular esse valor além de adivinhar e verificar, adivinhar e verificar, até encontrarmos um valor nonce que atinja uma saída abaixo nosso valor alvo.
Uma vez encontrada uma solução, o programa verifica o resultado e o bloco fica verde novamente. É feliz. Este processo pode levar algum tempo, dependendo de como difícil é encontrar um conjunto de dados correspondente. Isso, em termos simples, é conhecido como mineração. Estamos “cavando” através de combinações de dados para encontrar uma solução para um problema matemático. Estamos tentando encontrar um valor do nonce que, quando acoplado aos nossos dados, produza um requisito predeterminado (no nosso caso, um hash de saída abaixo do valor numérico base16 de 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff). Figura 6 mostra como isso parece para o nosso exemplo, isso levou cerca de 3 segundos para ser concluído no meu computador desktop. O nonce era o número 24894.
Figura 6. Mineração de um novo nonce para satisfazer uma função de hash com 4 x zeros à esquerda.
Parabéns! Nós mineramos nosso primeiro bloco.
Blockchain
Um blockchain é…….espere por isso…….uma cadeia de blocos. É uma cadeia de blocos, assim como o primeiro bloco que mineramos acima, mas com algumas diferenças.
Um conjunto de dados é inserido no bloco 1, mineramos esse bloco para descobrir o nonce para satisfazer o requisito de dificuldade (um hash de saída abaixo do valor de destino). Isso produz um hash e nosso bloco está completo. Em seguida, criamos um novo bloco. Incluiremos um novo campo de dados neste novo bloco. Um campo de dados no qual incluímos o hash de saída do bloco de procedimento como dados de entrada no novo bloco.
podemos ver em Figura 7, que temos uma cadeia de 2 blocos. O primeiro bloco é uma cópia de nossos exemplos acima, mas temos um novo campo chamado “Anterior” contendo novos dados. O bloco 1 é o nosso bloco de gênese, ele contém informações arbitrárias no campo anterior. O bloco é extraído e nosso hash desses dados é obtido.
No bloco 2, incluímos o hash de saída do bloco 1 como dados de entrada para nosso novo bloco. Colocamos esses dados no campo “Anterior”. Adicionamos os novos dados que queremos incluir nesse segundo bloco e mineramos esse bloco. Ambos os nossos blocos estão felizes.
Figura 7. Construindo um Blockchain. O hash de saída do bloco 1 é adicionado ao campo “Prev” do bloco 2.
Agora vamos voltar e mudar algo no bloco 1. Vou adicionar um ponto final “.” aos dados. Podemos ver agora na Figura 8 que todo o blockchain não está feliz. Ambos os blocos são vermelhos. Eu mudei os dados e quebrei a corrente. O hash do bloco 1 não está mais abaixo do valor alvo. Adicionando o ponto final “.” to the data, has resulted in a new hash with a value above our target value of 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, and thus is not compatible with the program's requirements. Mas a saída do bloco 1 também é uma entrada para o bloco 2, invalidando assim também o hash do bloco 2. Nós quebramos a cadeia.
Figura 8. Uma alteração no Bloco 1 quebrou a cadeia.
A re-mineração do bloco 1 resolveu o programa para o bloco 1, mas, novamente, os dados foram alterados no bloco 2 devido à mudança no novo hash de saída do bloco 1, ainda não está satisfeito (Figura 9).
Figura 9. Remineramos o bloco 1, mas o bloco 2 ainda não está satisfeito.
Agora também devemos minerar novamente o bloco 2 para garantir que ele esteja em conformidade com o requisito de dificuldade. A Figura 10 mostra que novamente temos 2 x blocos felizes depois de refazer o trabalho para os 2 blocos. "Trabalhos" é um termo para descrever o poder computacional que exercemos através do processo de mineração. Você pode ter ouvido o termo Prova de Trabalho antes que se relaciona com este conceito de proteger o blockchain bitcoin através do processo de gasto de energia... o trabalho.
Figura 10. Mineração dos blocos 1 e depois 2. O programa está feliz mais uma vez.
Observe a necessidade de minerar os blocos em ordem. Reminerar o bloco 2 antes de satisfazermos o trabalho necessário para o bloco 1 resultaria na necessidade de reminerar o bloco 2 novamente.
Agora temos a base para nosso blockchain, um 3º e 4º bloco pode ser adicionado, minerando cada bloco com os novos dados de entrada, com o hash de saída do bloco 2 levando à entrada do bloco 3 e a saída do bloco 3 levando a a entrada do bloco 4 e assim por diante.
Se nosso blockchain tiver 4 blocos agora, e tentarmos novamente alterar os dados no bloco 1. Isso invalidará toda a cadeia. Nós então precisaríamos minerar novamente o bloco 1, então o bloco 2, então o bloco 3…..você vê aonde quero chegar com isso?
Agora temos uma boa compreensão de um blockchain e das peças que precisam se juntar para criar a cadeia. Agora vamos expandir esse pensamento e olhar para um blockchain distribuído.
Blockchain distribuído e consenso
Uma das coisas bonitas sobre o blockchain do bitcoin é o livro-razão distribuído. Chegaremos ao lado do “razão” em breve, por enquanto, vamos simplesmente olhar para um blockchain distribuído para entender o conceito.
Digamos que eu tivesse um blockchain, que continha uma série de blocos, cada bloco contendo alguns dados. Esses dados foram divididos em hash e encadeados, como vimos acima, para formar um blockchain. Eu mantenho uma cópia deste blockchain no meu computador. E se houvesse necessidade de comparar notas com outra pessoa? E se a integridade desses dados fosse realmente importante para mim e eu quisesse garantir que eles não fossem adulterados? E se eu quisesse ter certeza de que os dados que eu tinha eram uma versão verdadeira e correta dessa série de dados? Seria útil se houvesse uma cópia exata deste blockchain para eu comparar minha versão com a…. Certo?
É aqui que entra em jogo a beleza do blockchain distribuído. E se eu desse a outra pessoa uma cópia do meu blockchain para que eu pudesse comparar anotações a qualquer momento? E se eu escrevesse um programa que fizesse isso automaticamente para mim. Ele poderia comparar continuamente meu conjunto de dados com meus amigos e sinalizar quaisquer discrepâncias.
Para dar um exemplo reduzido. Digamos que eu tenha um blockchain, com apenas 3 blocos contendo alguns dados realmente importantes nos quais eu estava trabalhando. Eu poderia proteger esses dados em um blockchain distribuído mantendo uma cópia em casa (Figura 11 — Peer A) e dando a outra pessoa uma cópia ou simplesmente mantendo uma cópia em meu computador no escritório (Figura 11 — Peer B).
Figura 11. Exemplo de blockchain distribuído — O par A é a casa e o par B é o escritório.
Se eu deixar meu computador ligado e desbloqueado, e algum ator nefasto (eles estão por toda parte) aparecer e alterar os dados no bloco 2 (você consegue identificar as diferenças?). Eles poderiam minerar novamente cada bloco de 2 a 4 para que minha cópia do blockchain pareça OK em termos da cadeia e das funções de hash para cada bloco. No entanto, quando volto ao meu programa de blockchain distribuído, ele sinaliza que minha versão da verdade difere daquela no computador do meu escritório? Uma comparação rápida mostra que, de fato, o hash mudou desde o bloco 2 até o bloco 4. (Figura 12). Ambas as cadeias parecem ok por conta própria, ambas são verdes, mas meu programa de computador que compara cada versão distribuída sinalizou a discrepância entre os hashes e me alertou que eles não correspondem.
Figura 12. Os dados foram alterados no Bloco 2 do blockchain do Peer A, os blocos foram minerados novamente. Os hashes do bloco 2 agora são diferentes.
Mas qual versão está correta? É impossível dizer, a menos que eu saiba qual versão específica o invasor mudou.
Seria lógico, então, que seria útil se eu tivesse outra versão para comparar. Vou guardar uma cópia em casa (Figura 13a — Par A), uma cópia no escritório (Figura 13b — Par B) e outra na casa da minha sogra (Figura 13c — Par C).
Figura 13a — Versão do peer A do blockchain
Figura 13b — Versão do peer B do blockchain
Figura 13c — Versão do peer C do blockchain
Agora, o ator nefasto ataca novamente, eles alteram os dados na versão do meu PC doméstico novamente e remineram todos os blocos em casa. Mas agora tenho um mecanismo de consenso para comparar as versões. Eu tenho um sistema de votação. Eu tenho 3 cópias da verdade. O par A (Figura 14a) está me dizendo uma coisa e os outros 2 (Figura 14b) estão em consenso sobre uma versão diferente da verdade.
Figura 14a — Versão do Peer A (alteração feita no bloco 2)
Figura 14b — Peer B e Peer C estão em consenso.
Posso colocar um nível de confiança nesse consenso assumindo que o ator nefasto não seria capaz de:
- Conheça a localização física dos meus blockchains
- Ser capaz de invadir, alterar os dados e minerar novamente 2 dos 3 conjuntos deste blockchain.
Embora o cenário acima seja possível, não é muito provável.
Posso, assim, desconsiderar minha versão doméstica, fazer backup desta versão usando as versões do meu escritório e a versão da sogra e ter a certeza de que recuperei A versão CORRETA da verdade. Graças a Deus pela sogra e pela tecnologia blockchain.
Agora imagine que eu tivesse 10 de milhares de computadores (nós), distribuídos aleatoriamente em todo o mundo, executando este blockchain (afinal, esses dados são muito especiais para mim). Esse malfeitor teria que rastrear mais de 50% desses nós e mudar cada versão deles para lançar dúvidas sobre qual versão da cadeia era a verdadeira. Isso é altamente improvável, se não impossível. É exatamente assim que o blockchain do bitcoin funciona. Uma rede de nós distribuídos aleatoriamente, executados por pessoas comuns, em software em seus computadores ou pequenos dispositivos de hardware dedicados e baratos, armazenando uma versão da verdade e mantendo uns aos outros honestos. Isso é o que torna o bitcoin descentralizado e sem confiança. Não há uma parte que controle o blockchain, ele é administrado pela comunidade de participantes.
Bitcoins e o Ledger
A partir do conhecimento que construímos sobre blockchain até agora, entender o livro-razão é tão simples quanto poder formatar o conjunto de dados com o qual estamos jogando. Até agora, estivemos brincando com um campo de texto. E tão importante quanto a informação é que “Daz é muito legal”, acontece que ninguém mais se importa.
Mas o que seria útil é se utilizássemos o “campo de dados” para começar a registrar algo útil como transações. Vamos imaginar que agora temos um blockchain distribuído entre muitos nós, mas vamos olhar apenas para os pares A e B para ter uma ideia, mas na realidade existem milhares de nós executando o mesmo blockchain. Em nosso exemplo, substituímos o campo de texto livre de dados por uma série de campos de transação. A Figura 15 mostra os blocos 4 e 5 de Peer A e Peer B e podemos ver que há uma série de dados transacionais agora dentro de cada bloco.
Figura 15 — Peer A e Peer B com dados transacionais dentro de um blockchain.
No bloco 4, podemos ver que uma quantia de $ 62.19 foi enviada de alguém chamado Rick para alguém chamado Isla. Esta foi uma transação entre 5 transações totais incluídas naquele bloco. O bloco de dados é hash e minerado exatamente como vimos anteriormente.
Nosso nefasto ator ataca novamente, seu nome é Sam, e ele recebeu $ 97.13 de Rick. Sam conhece um pouco de codificação e decide que quer roubar algum $$ de Rick. Ele decide mudar sua versão da verdade e altera o valor da transação para $ 97,000.13. Ele reexamina sua versão (Figura 16), mas é inútil. A grande quantidade de nós da rede vê que essa é uma versão da verdade que está fora do consenso da maioria, essa versão é rejeitada pela rede. Boa tentativa Sam.
Figura 16. Sam tenta enganar Rick alterando o valor da transação. Isso é rejeitado pela rede de consenso.
Podemos ver um monte de transações entre as partes, mas como sabemos que Rick tinha $ 97.13 para gastar em primeiro lugar?
Coinbase - O Bloco Genesis
Se você está na comunidade bitcoin há algum tempo, sem dúvida já ouviu falar do infame bloco de gênese. Satoshi Nakamoto, (criador infame e pseudônimo do Bitcoin), minerou o primeiro bloco que continha uma recompensa de bloco de 50 Bitcoins. As recompensas em bloco formam a base de moedas do bitcoin, ou seja, para gastar as moedas, elas devem primeiro ser colocadas em circulação. O bloco Bitcoin Genesis foi realmente contado como bloco “0” e os primeiros 50 bitcoins não eram realmente gastáveis, mas do bloco 1 em diante eles formaram a base de moedas.
As moedas são introduzidas com cada bloco em um cronograma de lançamento rigidamente controlado. Este cronograma de lançamento é de 1 bloco aproximadamente a cada 10 minutos. A cada 210,000 blocos, a recompensa do bloco é reduzida pela metade. No momento em que este livro foi escrito em julho de 2021, a recompensa do bloco é de 6.25 BTC a cada ~ 10 minutos. Atualmente, existem $ 18.7 milhões em bitcoin em circulação, com o último 21 milhões de bitcoin estimado para ser extraído no ano de 2140.
O bloco 1 estabeleceu a base de moedas inicial, a mineração subsequente de outros blocos se expande na base de moedas por meio das recompensas de bloco. Olhando para o nosso exemplo, começo com o bloco número 1, isso forma minha base de moedas.
Se olharmos para o nosso exemplo de blockchain (Figura 17), podemos ver que eu me recompensei $ 100 em nosso primeiro bloco. Em parte porque sou um cara legal e em parte porque fui eu quem minerou o primeiro bloco. Quando passamos para o Bloco 2, começo a gastar minhas moedas.
O programa sempre verificará se minhas saídas de transação (as moedas que gasto) não excedem meu saldo na base de moedas. Eu incluo os dados transacionais no bloco 2 e minero esse bloco também, sou recompensado com mais moedas como recompensa do bloco para o Bloco 2.
A partir daqui, o blockchain continua construindo, mantendo uma cópia distribuída do ledger entre os nós e esses nós impõem as regras determinadas pelo programa. O bloco 3 é incluído com mais transações à medida que outros usuários começam a fazer transações. Lucas também está minerando, resolvendo o quebra-cabeça de dificuldade do bloco 3 e é recompensado com a recompensa de bloco desse bloco. E assim por diante a cadeia cresce.
Figura 17. Uma base de moedas agora é adicionada ao blockchain
Como é consistente, se os dados forem alterados, mesmo meu único caractere simples, seja nas próprias saídas de hash ou nos dados transacionais, se a cadeia de alguém estiver fora de consenso com a maioria, ela será simplesmente rejeitada.
Em termos de saldo, se eu tentar gastar mais do que o meu saldo, a rede rejeitará a transação. Em nosso exemplo anterior de Sam tentando alterar quanto Rick lhe enviou, há outra camada de segurança incorporada chamada criptografia de chave pública e privada, que será o assunto do próximo artigo. Na verdade, é impossível para Sam editar esta entrada, a menos que ele também possua a chave privada de Rick.
Se eu tentar alterar o histórico, a rede rejeitará o histórico comparando os hashes de cada bloco. Os nós são a fonte da verdade e mantêm todos honestos.
Os mineradores usam poder computacional para resolver os quebra-cabeças criptográficos de cada bloco, eles são recompensados com a recompensa do bloco por seus esforços. Mineração é uma função necessária da blockchain do bitcoin, sem mineração não há valor e nem segurança.
Os mineradores devem gastar energia para resolver os blocos, esse é um recurso realmente subestimado da segurança do Bitcoin. Ao longo deste artigo, falamos longamente sobre mineração e remineração de blocos onde as alterações são feitas. O que é realmente importante observar é a grande quantidade de poder computacional lançado no protocolo Bitcoin a cada minuto de cada dia. Se essa rede imensamente vasta levasse 10 minutos para encontrar o último bloco, quanto tempo levaria para um agente mal-intencionado, agindo sozinho para encontrar um nonce alternativo para minerar um bloco por conta própria, a fim de alterar os dados nele contidos. Quanta energia um estado-nação teria que capturar para mudar a história do blockchain do Bitcoin? E, juntamente com o ponto anterior sobre chaves públicas e privadas protegendo o livro-razão, a única coisa que o malfeitor seria capaz de conseguir é um gasto duplo das moedas que já possui, e eles teriam que ter mais poder computacional com a energia disponível para superar todo o resto da rede. Isso é praticamente impossível.
Isso também ajuda a explicar por que o Bitcoin é o único ativo digital ao qual vale a pena dedicar seu tempo, ele ganha apenas em termos de efeitos de rede. Compare a taxa de hash do Bitcoin com qualquer outro protocolo e eles empalidecem em comparação.
Para mais exemplos de todos esses recursos, recomendamos a leitura de nosso livro B é para Bitcoin, disponível na Amazon. Levamos você a tudo isso e muito, muito mais, para uma introdução aprofundada e acessível a tudo o que você precisa saber sobre o Bitcoin.
Conclusão
O que abordamos aqui é uma versão simplificada de exatamente como a rede bitcoin opera. Ledgers distribuídos, hashing, blockchains, nós e mineradores trabalhando em harmonia para fornecer uma rede monetária aberta, livre de confiança, resistente à censura, de código aberto, de contabilidade aberta. Ninguém pode alterar o livro-razão, ninguém pode interromper transações, ninguém pode reverter transações e ninguém pode gastar suas moedas em dobro. É nada menos que brilhante e está revolucionando completamente as finanças globais.
O histórico completo das transações está disponível para qualquer pessoa consultar e verificar. Obviamente, ao contrário dos nossos exemplos aqui de hoje, a blockchain do bitcoin não exibe as identidades das pessoas que realizam transações, apenas seus endereços. Os endereços serão o assunto do próximo artigo, é um tema muito grande para cobrir hoje.
Neste artigo, usei a plataforma incrivelmente interativa construída por Anders Brownworth, que ensinou blockchain no MIT. Visita aqui, jogue e obtenha uma compreensão mais profunda dos conceitos que abordamos neste artigo, você obterá uma compreensão muito mais profunda se brincar com tudo. Anders também tem um tutorial em vídeo muito bom com esse conteúdo também para ajudar a consolidar o aprendizado.
Em termos de adoção de bitcoin, se você está lendo isso, você já está à frente em termos de adoção de bitcoin. A adoção institucional está chegando e chegando rápido, ainda temos tempo de enfrentar os meninos grandes. Com meus artigos, estou tentando ajudar o cidadão comum a se educar sobre essa tecnologia para que possamos nos beneficiar dela. Nós vamos nos beneficiar mais, os caras nas trincheiras, lutando por salários. Comece a calcular a média do custo em dólar no bitcoin, compre um pouco todos os dias / todas as semanas. Trate o bitcoin como sua conta poupança e suba na onda, é o dinheiro mais difícil que já existiu e cresce exponencialmente a cada dia. (Não apenas para fins de aconselhamento financeiro, educação e entretenimento)
Empilhamento feliz, obrigado por ler
Daz Bea
Twitter @dazbea
Leitura recomendada:
B é para Bitcoin
“Dominando o Bitcoin”–Andreas M. Antonopoulos
Demonstração do Blockchain –Anders Brownworth