Estrutura de dados do bloco de bitcoin


Detalhes técnicos. Como tudo isso realmente funciona e quem governa tudo. No contexto da Bitcoin, o blockchain é um livro público compartilhado no qual toda a rede Bitcoin se baseia. Tem uma estrutura de dados de lista vinculada, com cada bloco contendo um hash do bloco anterior. Cada bloco é formado por algoritmos de prova de trabalho, através dos quais o consenso desse sistema distribuído pode ser obtido através da cadeia mais longa possível. O blockchain fornece a base para o sistema distribuído sem confiança do Bitcoin e é extensível de muitas maneiras através de modificações dos parâmetros da cadeia. O que é o Blockchain? A explicação simples é uma "cadeia" de blocos. Um bloco é um conjunto agregado de dados. Os dados são coletados e processados ​​para caber em um bloco através de um processo chamado de mineração. Cada bloco pode ser identificado usando um hash criptográfico (também conhecido como impressão digital). O bloco formado conterá um hash do bloco anterior, de modo que os blocos podem formar uma cadeia do primeiro bloco de sempre (conhecido como o Bloco Gênesis) ao bloco formado. Desta forma, todos os dados podem ser conectados através de uma estrutura de lista vinculada. Uma ilustração visual da cadeia de blocos.


Fonte: Bitcoin: um sistema de caixa eletrônico ponto-a-ponto, S. Nakamoto. O que está dentro de um bloco? Em palavras simples, os dados estão contidos dentro de blocos, bem como um inteiro arbitrário (chamado nounce) que é necessário para produzir a prova de trabalho. Em bitcoin blockchain, o bloco contém um cabeçalho e dados relevantes da transação. Uma árvore merkle de transações é criada e o hash da raiz está incluído no cabeçalho. Uma árvore merkle é uma árvore binária completa de valores de hash. No nível inferior da árvore, cada transação tem um nó contendo seu valor de hash. Depois disso, a árvore é construída de forma a que o nó pai tenha um valor do hash dos dados contidos em seus filhos concatenando juntos. A estrutura de dados da árvore merkle permite uma validação rápida, construindo um caminho da árvore merkle do nível inferior da árvore até o nó raiz. Uma vez que cada saída de transação bitcoin pode ser gasto apenas uma vez, desde que a saída seja gasto, ela pode ser apagada da estrutura da árvore usando alguns algoritmos de poda.


Desta forma, o uso do disco pode ser reduzido enquanto as funções de validação preservam. Uma ilustração visual de uma árvore merkle. Fonte: Mastering bitcoin. Antonopoulos A. Como os blocos são encadeados? Cada bloco contém um hash de seu bloco anterior. Em bitcoin blockchain, o cabeçalho do bloco tem um campo para o hash do bloco anterior. Assim, todos os blocos conterão uma referência de seu bloco anterior, e isso poderá criar uma cadeia de blocos. Às vezes, um garfo na cadeia do bloco pode ocorrer. Isto é devido a dois blocos calculados em um intervalo de tempo muito curto. Os blocos subseqüentes podem se basear em ambos os blocos e ambas as cadeias permanecem válidas. No subseqüente processo de mineração, um garfo seria mais longo do que o outro garfo, neste caso, a cadeia mais longa seria aceita pela rede e o curto não seria usado a menos que seu comprimento excedesse a cadeia mais longa no futuro.


Características do Blockchain. Tempo de geração de bloco controlado. O bloco está concebido de forma a que o tempo médio para um bloco a ser gerado permaneça bastante constante. Na cadeia de bitcoin, o tempo médio para um bloco gerar é de 10 minutos. Outras cadeias de bloco podem ter um tempo diferente, e. 30 segundos, 5 minutos, etc. O tempo de geração controlada do bloco é conseguido adicionando um valor de dificuldade dentro do bloco. Em bitcoin, o hash do bloco deve ser estritamente menor do que um valor determinado a ser aceito. O valor dado varia de acordo com o poder de computação total da rede. Quanto mais poderosa é a rede, menor será o valor dado e, portanto, mais difícil é gerar o bloco. Bitcoin Transactions suporta uma função de modo que as mensagens possam ser enviadas com bitcoins em uma transação (via o operador OP_RETURN no script de desbloqueio). Este recurso estende o bloco de bitcoin para mais usos do que o processamento de transações.


Um remetente para escolher incluir um texto em uma transação, uma vez que a transação está incluída em um bloco anexado ao bloco. A mensagem pode ser recuperada do bloco por todos e dificilmente pode ser modificada a menos que o bloco inteiro seja reescrito (veja abaixo). Isso pode fornecer armazenamento confiável para textos curtos. Por exemplo, um hash de um arquivo pode ser incluído em uma transação. Os usuários do arquivo podem verificar o campo de mensagem anexado e verificar se o arquivo em sua mão não foi comprimido e permaneceu original. Bitcoin blockchain é uma cadeia pública compartilhada. Isso significa que todos teriam acesso à cadeia, não só ler as informações da cadeia, mas também acrescentar novos blocos na cadeia, ou seja, todos têm acesso total sobre a cadeia. Isso é conhecido como cadeia não interrompida. A cadeia também pode ser modificada para que seja aplicado um controle de acesso mais rígido. O controle de acesso mais estrito é que apenas o proprietário da cadeia poderia ter acesso total da cadeia, enquanto outros não têm acesso a todos. Isso pode ser semelhante à forma como um banco de dados central armazena dados confidenciais. No entanto, em muitos cenários, entre uma cadeia pública compartilhada e uma cadeia privada, devem ser os casos que se assemelham a usos do mundo real.


Através da criptografia de chave pública, o controle de acesso pode ser implementado durante a configuração da cadeia, de modo que o controle de acesso diferente possa ser aplicado. Um exemplo seria a informação de saúde do indivíduo. Isso deve ser acessado apenas pelo paciente ou por qualquer pessoa que tenha recebido acesso pelo paciente; apenas um corpo confiável poderia acrescentar novos dados à cadeia. Isso é conhecido como cadeia de permissões. Níveis Differnet de Permissões. Fonte: Distributed Ledger Technology: além da cadeia de bloqueios, Government Office for Science. Bitcoin blockchain usa um algoritmo de prova de trabalho para chegar a um consenso. A função hash criptográfica de cada bloco deve ser menor do que um valor específico para ser considerado valor. Por isso, um nonce está incluído no bloco para esse recurso. Ao usar o método de prova de trabalho, para alterar os dados em um bloco, todos os sucessores desse bloco devem ser reescritos e uma grande quantidade de cálculo é necessária.


Além disso, a cadeia mais longa seria aceita pela rede, enquanto as mais curtas seriam descartadas na situação dos ramos da cadeia. Isso tornou os dados em blocos praticamente não modificáveis ​​e, além disso, quanto mais blocos são construídos com o bloco em que os dados estão contidos, mais difícil o processamento de sobrescrever os dados. No entanto, o bloco pode usar outros métodos de consenso. Por exemplo, uma cadeia de blocos pode usar o Scrypt para algoritmo de prova de trabalho em vez de funções de hash. Além disso, a cadeia de blocos poderia ser estendida para computação científica, onde uma solução correta para um determinado problema poderia atuar no método de validação. Desta forma, o poder de computação pode ser usado para ajudar a resolver problemas científicos e contribuir com pesquisas científicas. Computação Distribuída. Bitcoin blockchain é um livro público compartilhado. Cada usuário executando um nó completo no computador baixará uma cópia completa de toda a cadeia de blocos, que incluirá dados de todas as transações das bitcoins registradas na cadeia de blocos.


Depois disso, cada nó pode ser executado de forma independente para processar quaisquer transações recebidas e propagar a transação ainda mais. O nó também pode contribuir para o estabelecimento do consenso pela mineração - para incluir dados de transações em um bloco e, em seguida, para encontrar uma prova de trabalho para o bloco. Não há um nó central que processa os dados e distribua os dados, mas cada nó pode ser executado de forma independente e transmitir qualquer trabalho que seja comprovado. Este modelo de computação distribuída poderia ser estendido para muitos outros serviços, como o Servidor de Nomes de Domínio. Visualização de diferentes tipos de paradigmas. Fonte: On Distributed Communications Networks, Paul Baran, 1962. Estrutura de dados do bloco de caracteres. Informações sobre a estrutura de dados do bloco de dados. Cadeia de bloqueio (banco de dados) Uma cadeia de blocos é uma loja de dados distribuídos que mantém uma lista cada vez maior de registros de dados que são endurecidos contra adulteração e revisão, mesmo por operadores dos nós da loja de dados. A aplicação mais conhecida de uma cadeia de blocos é o razão geral das transações para criptografia, como a bitcoína. Este registro é aplicado de forma criptográfica e hospedado em máquinas que executam o software. A tecnologia é a base de todas as criptografia.


Data (/ deɪtə / DAY-tə, / dætə / ​​DA-tə, ou / dɑːtə / DAH-tə) é um conjunto de valores de variáveis ​​qualitativas ou quantitativas; Atualizados, os dados são dados individuais. Os dados são medidos, coletados e relatados e analisados, após o que podem ser visualizados usando gráficos ou imagens. Os dados como um conceito geral referem-se ao fato de que alguma informação ou conhecimento existente é representado ou codificado de alguma forma adequado para melhor uso ou processamento. Os dados brutos, ou seja, dados não processados, são uma coleção de números, caracteres; O processamento de dados geralmente ocorre por etapas e os "dados processados" de um estágio podem ser considerados os "dados brutos" do próximo. Dados de campo são dados brutos que são coletados em um ambiente in situ não controlado. Os dados experimentais são dados gerados no contexto de uma investigação científica por observação e gravação. A palavra "dados" costumava ser considerada o plural do "datum", e ainda é por alguns falantes de inglês. Hoje em dia, porém, "dados" é mais comumente usado no singular, como um substantivo de massa (como "informação", "areia" ou "chuva"). A estrutura é uma noção fundamental, tangível ou intangível referente ao reconhecimento, observação, natureza e permanência de padrões e relações de entidades.


Essa noção pode ser um objeto, como uma estrutura construída, ou um atributo, como a estrutura da sociedade. Da descrição verbal de uma criança de um floco de neve, à análise científica detalhada das propriedades dos campos magnéticos, o conceito de estrutura é agora, muitas vezes, um fundamento essencial de quase todos os modos de investigação e descoberta em ciência, filosofia e arte. No início do século 20 e pensamento anterior, a forma geralmente desempenha um papel comparável ao da estrutura no pensamento contemporâneo. O neo-kantianismo de Ernst Cassirer (ver sua Filosofia das Formas Simbólicas, completada em 1929 e publicado na tradução inglesa na década de 1950) às vezes é considerado um precursor da mudança posterior para o estruturalismo e o pós-estruturalismo. A descrição da estrutura implicitamente oferece uma conta do que é feito um sistema: uma configuração de itens, uma coleção de componentes ou serviços inter-relacionados. Uma estrutura pode ser uma hierarquia (uma cascata de relacionamentos de um para muitos), uma rede que possui links de muitos para muitos ou uma rede com conexões entre componentes que são vizinhos no espaço. BlockShow declara Token Sale - Fim do ICO 1.0 Era & rarr; Bitcoin Price Holds Steady! & rarr; Os marcadores de vídeo têm mais benefícios com estas novas cadeias Blockchain e rarr; Qual é o seguinte para o Bitcoin Cash? & rarr; Deixe uma resposta Cancelar resposta. Popular. Fundo Comunitário de Bitcoin Europeu lançado no dia 22 de novembro | por bitcoin BlockShow declara Token Sale - Fim da ICO 1.0 Era 22 de novembro | por Bitcoin Bitcoin Price Holds Steady!


22 de novembro | por bitcoin Adquirir a Indústria da Hardware de Mineração 22 de novembro | por bitcoin Os marcadores de vídeo têm mais benefícios com essas novas cadeias Blockchain 22 de novembro | por bitcoin. Últimas notícias do mundo de Bitcoin, Cryptocurrency e Blockchain. <h1> Estrutura de dados do bloco de bits Bitcoin </ h1> Obter através da App Store Leia esta publicação em nosso aplicativo! Qual é a estrutura de dados exata de cada bloco? Existe algum documento / diagrama que descreva a estrutura de blocos Ethereum de forma semelhante a https://en. bitcoin. it/wiki/Block? Eu sei que posso encontrar a implementação em https://github. com/ethereum/pyethereum/blob/develop/ethereum/blocks. py mas ainda estou faltando alguma informação como bytesize e similar.


Aqui estão os principais pedaços de um bloco eo YP tem todos os tamanhos: 4.3. O bloco. O bloco em Ethereum é a coleção de informações relevantes (conhecido como o cabeçalho do bloco), H, juntamente com informações correspondentes às transações compreendidas, T e um conjunto de outros cabeçalhos de bloco U que são conhecidos por ter um pai igual a o pai dos pais do bloco atual. Aqui está uma ilusão adaptada de outra resposta -> definições resumidas do papel amarelo: Veja também a Equação (35) do papel amarelo. No github aqui, formato Latex: Capítulo 7. O Blockchain. A estrutura de dados do bloco de cadastro é uma lista de blocos de transações ordenados e re-ligados. O bloco pode ser armazenado como um arquivo plano, ou em um banco de dados simples. O cliente do Bitcoin Core armazena os metadados de cadeias de blocos usando o banco de dados LevelDB do Google. Os blocos estão ligados "de volta", cada um referente ao bloco anterior da cadeia. A cadeia de blocos é muitas vezes visualizada como uma pilha vertical, com blocos em camadas em cima uns dos outros e o primeiro bloco servindo como base da pilha. A visualização de blocos empilhados um ao lado do outro resulta no uso de termos como "altura" para se referir à distância do primeiro bloco e "superior" ou "dica" para se referir ao último bloco adicionado. Cada bloco dentro da cadeia de blocos é identificado por um hash, gerado usando o algoritmo de hash criptográfico SHA256 no cabeçalho do bloco.


Cada bloco também faz referência a um bloco anterior, conhecido como o bloco pai, através do campo "hash do bloco anterior" no cabeçalho do bloco. Em outras palavras, cada bloco contém o hash de seu pai dentro de seu próprio cabeçalho. A seqüência de hashes que liga cada bloco a seu pai cria uma cadeia que volta todo o caminho até o primeiro bloco já criado, conhecido como o bloqueio de gênese. Embora um bloco tenha apenas um dos pais, pode ter várias crianças temporariamente. Cada uma das crianças refere-se ao mesmo bloco que seu pai e contém o mesmo hash (pai) no campo "hash do bloco anterior". Múltiplas crianças surgem durante um "garfo" de cadeias de blocos, uma situação temporária que ocorre quando diferentes blocos são descobertos quase simultaneamente por diferentes mineiros (ver "Bloqueio Forks"). Eventualmente, apenas um bloco infantil se torna parte da cadeia de blocos e o "garfo" é resolvido. Mesmo que um bloco possa ter mais de uma criança, cada bloco pode ter apenas um dos pais. Isso ocorre porque um bloco possui um único campo "hash anterior do bloco" referenciando seu pai único. O campo "hash do bloco anterior" está dentro do cabeçalho do bloco e, desse modo, afeta o hash do bloco atual. A própria identidade da criança muda se a identidade dos pais mudar. Quando o pai é modificado de qualquer maneira, o hash do pai muda. O hash alterado dos pais necessita de uma alteração no ponteiro do "hash anterior do bloco" da criança.


Isso, por sua vez, faz com que o hash da criança mude, o que requer uma mudança no ponteiro do neto, que por sua vez altera o neto, e assim por diante. Esse efeito de cascata garante que uma vez que um bloco tenha muitas gerações seguindo, ele não pode ser alterado sem forçar um recálculo de todos os blocos subsequentes. Como esse recálculo exigiria uma computação enorme, a existência de uma longa cadeia de blocos torna a história profunda do bloco de caracteres imutável, o que é uma característica fundamental da segurança do bitcoin. Uma maneira de pensar sobre o bloqueio é como camadas em uma formação geológica ou amostra de núcleo geleira. As camadas superficiais podem mudar com as estações, ou até mesmo serem destruídas antes de terem tempo para se instalarem. Mas uma vez que você vai algumas centímetros de profundidade, as camadas geológicas se tornam cada vez mais estáveis. Quando você olha alguns metros para baixo, você está olhando um instantâneo do passado que permaneceu inalterado por milhões de anos. Na cadeia de blocos, os últimos blocos podem ser revisados ​​se houver um recálculo da cadeia devido a um garfo. Os seis blocos superiores são como alguns centímetros da camada superficial do solo.


Mas uma vez que você vai mais profundamente na cadeia de blocos, além de seis blocos, os blocos são cada vez menos propensos a mudar. Depois de 100 blocos de volta, há tanta estabilidade que a transação da moeda - a transação que contém bitcoins recém-minados - pode ser gasto. Alguns milhares de blocos de volta (um mês) e a cadeia de blocos são história estabelecida, para todos os propósitos práticos. Enquanto o protocolo sempre permite que uma cadeia seja desfeita por uma cadeia mais longa e enquanto a possibilidade de qualquer bloco que está sendo revertido sempre existe, a probabilidade de tal evento diminuir à medida que o tempo passa até se tornar infinitesimal. Estrutura de um bloco. Um bloco é uma estrutura de dados de contêineres que agrega transações para inclusão no livro público, a cadeia de blocos. O bloco é feito de um cabeçalho, contendo metadados, seguido por uma longa lista de transações que compõem a maior parte de seu tamanho. O cabeçalho do bloco é de 80 bytes, enquanto a transação média é de pelo menos 250 bytes e o bloco médio contém mais de 500 transações. Um bloco completo, com todas as transações, é, portanto, mil vezes maior que o cabeçalho do bloco.


A Tabela 7-1 descreve a estrutura de um bloco. O tamanho do bloco, em bytes, seguindo este campo. Vários campos formam o cabeçalho do bloco. 1-9 bytes (VarInt) Quantas transações seguem. As transações registradas neste bloco. O cabeçalho do bloco consiste em três conjuntos de metadados do bloco. Primeiro, há uma referência a um bloco anterior de bloco, que conecta esse bloco ao bloco anterior na cadeia de blocos. O segundo conjunto de metadados, a saber, a dificuldade, o timestamp e o nonce, relacionam-se com a competição de mineração, conforme detalhado no Capítulo 8. A terceira parte dos metadados é a raiz da árvore merkle, uma estrutura de dados utilizada para resumir de forma eficiente todas as transações no quadra. A Tabela 7-2 descreve a estrutura de um cabeçalho de bloco. Um número de versão para acompanhar as atualizações de software / protocolo. Previous Hash do bloco.


Uma referência ao hash do bloco anterior (pai) na cadeia. Um hash da raiz da árvore merkle das transações deste bloco. O tempo aproximado de criação deste bloco (segundos da Época Unix) O algoritmo de prova de trabalho dificulta o alvo para este bloco. Um contador usado para o algoritmo de prova de trabalho. O nonce, o alvo de dificuldade eo timestamp são usados ​​no processo de mineração e serão discutidos com mais detalhes no Capítulo 8. Identificadores de bloco: bloqueio do cabeçalho do bloco e altura do bloco. O identificador principal de um bloco é o seu hash criptográfico, uma impressão digital, feita por hashing o cabeçalho do bloco duas vezes através do algoritmo SHA256. O hash de 32 bytes resultante é chamado de hash de bloco, mas é mais preciso o hash do cabeçalho do bloco, porque apenas o cabeçalho do bloco é usado para computá-lo. Por exemplo, 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f é o hash de bloco do primeiro bloco bitcoin já criado. O bloco hash identifica um bloco de forma exclusiva e inequívoca e pode ser derivado de forma independente por qualquer nó, simplesmente com o cabeçalho do bloco. Observe que o hash do bloco não está realmente incluído dentro da estrutura de dados do bloco, nem quando o bloco é transmitido na rede, nem quando é armazenado no armazenamento de persistência de um nó como parte da cadeia de blocos. Em vez disso, o hash do bloco é calculado por cada nó à medida que o bloco é recebido da rede. O hash do bloco pode ser armazenado em uma tabela de banco de dados separada como parte dos metadados do bloco, para facilitar a indexação e recuperação mais rápida dos blocos do disco. Uma segunda maneira de identificar um bloco é pela sua posição na cadeia de blocos, chamada de altura do bloco. O primeiro bloco já criado está na altura do bloco 0 (zero) e é o mesmo bloco que foi anteriormente referenciado pelo seguinte bloco hash 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f.


Um bloco pode assim ser identificado de duas maneiras: fazendo referência ao hash do bloco ou fazendo referência à altura do bloco. Cada bloco subseqüente adicionado "no topo" desse primeiro bloco é uma posição "mais alta" na cadeia de blocos, como caixas empilhadas uma sobre a outra. A altura do bloco em 1 de janeiro de 2014 foi de aproximadamente 278.000, o que significa que havia 278.000 blocos empilhados em cima do primeiro bloco criado em janeiro de 2009. Ao contrário do hash do bloco, a altura do bloco não é um identificador exclusivo. Embora um único bloco tenha sempre uma altura de bloco específica e invariante, o inverso não é verdadeiro - a altura do bloco nem sempre identifica um único bloco. Dois ou mais blocos podem ter a mesma altura do bloco, competindo pela mesma posição na cadeia de blocos. Este cenário é discutido em detalhes na seção "Blockchain Forks". A altura do bloco também não faz parte da estrutura de dados do bloco; não está armazenado dentro do bloco. Cada nó identifica dinamicamente a posição de um bloco (altura) na cadeia de blocos quando é recebida da rede bitcoin.


A altura do bloco também pode ser armazenada como metadata em uma tabela de banco de dados indexada para uma recuperação mais rápida. O bloco hash de um bloco sempre identifica um único bloco de forma exclusiva. Um bloco também tem sempre uma altura de bloco específica. No entanto, nem sempre é o caso de uma altura de bloco específica poder identificar um único bloco. Em vez disso, dois ou mais blocos podem competir por uma única posição na cadeia de blocos. O primeiro bloco na cadeia de blocos é chamado de bloqueio de gênese e foi criado em 2009. É o antepassado comum de todos os blocos na cadeia de blocos, o que significa que, se você começar em qualquer bloco e seguir a cadeia para trás, você chegará no bloco de gênese. Cada nó sempre começa com uma cadeia de blocos de pelo menos um bloco porque o bloqueio da gênese está codificado estáticamente dentro do software do cliente bitcoin, de modo que não pode ser alterado. Cada nó sempre "conhece" o hash e a estrutura do bloco de gênese, o tempo fixo criado e até a única transação dentro. Assim, cada nó tem o ponto de partida para a cadeia de blocos, uma "raiz" segura a partir da qual construir uma cadeia de bloqueios confiável.


Veja o bloco de gênese codificado estáticamente dentro do cliente Bitcoin Core, em chainparams. cpp. O seguinte identificador hash pertence ao bloco de gênese: Você pode procurar esse hash de bloco em qualquer site do explorador de blocos, como blockchain. info, e você encontrará uma página descrevendo o conteúdo deste bloco, com uma URL contendo esse hash: Usando o cliente de referência do Bitcoin Core na linha de comando: O bloco de gênese contém uma mensagem oculta dentro dele. A entrada da transação da moeda coincide com o texto "The Times 03 / Jan / 2009 Chanceler à beira do segundo resgate dos bancos". Esta mensagem foi destinada a oferecer uma prova da primeira data em que este bloco foi criado, referenciando o título do jornal britânico The Times. Ele também serve como um lembrete linguístico da importância de um sistema monetário independente, com o lançamento do bitcoin ocorrendo ao mesmo tempo que uma crise monetária mundial sem precedentes. A mensagem foi incorporada no primeiro bloco por Satoshi Nakamoto, criador do bitcoin. Ligando blocos no Blockchain. Os nodos completos da Bitcoin mantêm uma cópia local da cadeia de blocos, começando no bloqueio da gênese.


A cópia local do blockchain é constantemente atualizada à medida que novos blocos são encontrados e usados ​​para ampliar a cadeia. À medida que um nó recebe blocos de entrada da rede, ele irá validar esses blocos e, em seguida, vinculá-los à cadeia de blocos existente. Para estabelecer um link, um nó examinará o cabeçalho do bloco recebido e procurará o "hash do bloco anterior". Vamos supor, por exemplo, que um nó tenha 277.314 blocos na cópia local da cadeia de blocos. O último bloco em que o nó conhece é o bloco 277.314, com um cabeçalho de cabeçalho de bloco de 00000000000000027e7ba6fe7bad39faf3b5a83daed765f05f7d1b71a1632249. O nó Bitcoin recebe um novo bloco da rede, que ele analisa da seguinte maneira: Olhando para este novo bloco, o nó encontra o campo anteriorblockhash, que contém o hash de seu bloco pai. É um hash conhecido pelo nó, aquele do último bloco na cadeia em altura 277.314. Portanto, esse novo bloco é um filho do último bloco na cadeia e amplia a cadeia de blocos existente. O nó adiciona este novo bloco ao final da cadeia, tornando o bloco mais longo com uma nova altura de 277.315. A Figura 7-1 mostra a cadeia de três blocos, ligados por referências no campo anteriorblockhash. Cada bloco na cadeia de bloco bitcoin contém um resumo de todas as transações no bloco, usando uma árvore merkle. Uma árvore merkle, também conhecida como uma árvore hash binária, é uma estrutura de dados usada para resumir e verificar a integridade de grandes conjuntos de dados. As árvores Merkle são árvores binárias contendo hashes criptográficos. O termo "árvore" é usado em ciência da computação para descrever uma estrutura de dados de ramificação, mas essas árvores geralmente são exibidas de cabeça para baixo com a "raiz" na parte superior e as "folhas" na parte inferior de um diagrama, como você verá em os exemplos que se seguem. As árvores Merkle são usadas em bitcoin para resumir todas as transações em um bloco, produzindo uma impressão digital global de todo o conjunto de transações, fornecendo um processo muito eficiente para verificar se uma transação está incluída em um bloco. Uma árvore de Merkle é construída por pares de hash recursivamente hash até que haja apenas um hash, chamado raiz ou raiz do Merkle.


O algoritmo de hash criptográfico usado em merkle trees de bitcoin é aplicado em SHA256 duas vezes, também conhecido como double-SHA256. Quando N elementos de dados são hash e resumidos em uma árvore merkle, você pode verificar se qualquer elemento de dados está incluído na árvore com no máximo 2 cálculos de log 2 (N), tornando esta uma estrutura de dados muito eficiente. A árvore merkle é construída de baixo para cima. No exemplo a seguir, começamos com quatro transações, A, B, C e D, que formam as folhas da árvore Merkle, conforme mostrado na Figura 7-2. As transações não são armazenadas na árvore merkle; Em vez disso, os dados deles são hash e o hash resultante é armazenado em cada nó da folha como H A, H B, H C e H D: Os pares consecutivos de nós de folha são então resumidos em um nó pai, concatenando os dois hashes e subindo juntos. Por exemplo, para construir o nó pai H AB, os dois hashes de 32 bytes dos filhos são concatenados para criar uma string de 64 bytes. Essa string é então de dois hash para produzir o hash do nó pai: O processo continua até existir apenas um nó no topo, o nó conhecido como a raiz Merkle. Esse hash de 32 bytes é armazenado no cabeçalho do bloco e resume todos os dados nas quatro transações. Porque a árvore merkle é uma árvore binária, ele precisa de um número par de nós de folha. Se houver um número ímpar de transações para resumir, o último hash da transação será duplicado para criar um número par de nós de folha, também conhecida como uma árvore equilibrada. Isso é mostrado na Figura 7-3, onde a transação C é duplicada.


O mesmo método para construir uma árvore de quatro transações pode ser generalizado para construir árvores de qualquer tamanho. No bitcoin, é comum ter várias centenas para mais de mil transações em um único bloco, que são resumidas exatamente da mesma maneira, produzindo apenas 32 bytes de dados como a única raiz do Merck. Na Figura 7-4, você verá uma árvore criada a partir de 16 transações. Observe que, embora a raiz pareça maior do que os nós das folhas no diagrama, é exatamente o mesmo tamanho, apenas 32 bytes. Se existe uma transação ou cem mil transações no bloco, a raiz do Merkle sempre as resume em 32 bytes. Para comprovar que uma transação específica está incluída em um bloco, um nó precisa produzir log-2 (N) hashes de 32 bytes, constituindo um caminho de autenticação ou caminho merkle que conecta a transação específica à raiz da árvore. Isso é especialmente importante à medida que o número de transações aumenta, porque o logaritmo base-2 do número de transações aumenta muito mais devagar. Isso permite que os nós de bitcoin produza eficientemente caminhos de 10 ou 12 hashes (320-384 bytes), o que pode fornecer uma prova de uma única transação de mais de mil transações em um bloco de tamanho de megabyte. Na Figura 7-5, um nó pode provar que uma transação K está incluída no bloco, produzindo um caminho merkle que é apenas quatro hashes de 32 bytes (128 bytes no total).


O caminho consiste nos quatro hashes (observados em azul na Figura 7-5) H L, H IJ, H MNOP e H ABCDEFGH. Com esses quatro hashes fornecidos como um caminho de autenticação, qualquer nó pode provar que o HK (observado em verde no diagrama) está incluído na raiz do Merkle ao computar quatro hashes par pares adicionais H KL, H IJKL, H IJKLMNOP e o Merckle raiz da árvore (delineada em uma linha pontilhada no diagrama). O código no Exemplo 7-1 demonstra o processo de criação de uma árvore merkle a partir do nó da folha hashes até a raiz, usando a biblioteca libbitcoin para algumas funções auxiliares. O exemplo 7-2 mostra o resultado da compilação e execução do código Merkle. A eficiência das árvores merckle torna-se óbvio à medida que a escala aumenta. A Tabela 7-3 mostra a quantidade de dados que precisam ser trocados como um caminho merckle para provar que uma transação faz parte de um bloco. Como você pode ver a partir da tabela, enquanto o tamanho do bloco aumenta rapidamente, de 4 KB com 16 transações para um tamanho de bloco de 16 MB para atender a 65.535 transações, o caminho merkle necessário para provar a inclusão de uma transação aumenta muito mais devagar, de 128 bytes para apenas 512 bytes. Com as árvores merkle, um nó pode baixar apenas os cabeçalhos dos blocos (80 bytes por bloco) e ainda ser capaz de identificar a inclusão de uma transação em um bloco, recuperando um pequeno caminho merkle de um nó completo, sem armazenar ou transmitir a grande maioria blockchain, que pode ter vários gigabytes de tamanho. Os nós que não mantêm uma cadeia de blocos completa, chamados de verificação de pagamento simplificada (nós SPV), usam caminhos merkle para verificar transações sem baixar blocos completos. Merkle Trees e Verificação de Pagamento Simplificado (SPV) As árvores de Merkle são usadas extensivamente por nós SPV. Os nós SPV não possuem todas as transações e não baixam blocos completos, basta bloquear cabeçalhos. Para verificar se uma transação está incluída em um bloco, sem ter que baixar todas as transações no bloco, eles usam um caminho de autenticação ou caminho de merkle. Considere, por exemplo, um nó SPV que esteja interessado em pagamentos recebidos para um endereço contido em sua carteira. O nó SPV estabelecerá um filtro bloom em suas conexões para pares para limitar as transações recebidas apenas para aqueles que contenham endereços de interesse.


Quando um peer vê uma transação que corresponde ao filtro bloom, ele enviará esse bloco usando uma mensagem de merkleblock. A mensagem merkleblock contém o cabeçalho do bloco, bem como um caminho merkle que liga a transação de interesse à raiz merkle no bloco. O nó SPV pode usar esse caminho merkle para conectar a transação ao bloco e verificar se a transação está incluída no bloco. O nó SPV também usa o cabeçalho do bloco para vincular o bloco ao restante da cadeia de blocos. A combinação desses dois links, entre a transação e o bloco, e entre o bloco e a cadeia de blocos, prova que a transação está registrada na cadeia de blocos. Em suma, o nó SPV receberá menos de um kilobyte de dados para o cabeçalho do bloco e o caminho Merkle, uma quantidade de dados que é mais do que mil vezes menor que um bloco completo (cerca de 1 megabyte atualmente). Block Parsers: Como ler a cadeia de bloco Bitcoin. Um Block Parser lê a cadeia de blocos Bitcoin. Não há criptografia dos dados armazenados na cadeia de blocos.


Bitcoin é um sistema pseudônimo. Significado, os pares de chaves ECDSA são usados ​​para abstrair a identidade dos usuários. No entanto, os dados binários na cadeia de blocos podem ser lidos. A cadeia de blocos é uma base de dados de transações. Todo o nó completo que participa na rede Bitcoin tem a mesma cópia. O protocolo Bitcoin determina sua estrutura e é o meio pelo qual cada nó mantém uma cópia duplicada. Em geral, a cadeia de blocos é apenas uma estrutura de dados para armazenar blocos. A cadeia de blocos armazena blocos em uma série, começando com o bloqueio da gênese. Um analisador de bloco simples. Este exemplo é uma abordagem mínima. No total, 138 linhas de código Python são usadas para construir este analisador de blocos. Em alguns lugares, codificação e endianness são desconhecidos ou para trás. Apesar destes pequenos problemas de formatação, abaixo é uma abordagem iniciante para um analisador de bloco Bitcoin.


O projeto começou com a construção das ferramentas necessárias para analisar os dados binários. O protocolo determina as ferramentas que serão necessárias. Essas funções irão ler números inteiros não assinados da cadeia de blocos. Essas ferramentas serão usadas para criar classes para representar os blocos e as transações. Cada função lê uma parte da cadeia de blocos e analisará os dados binários. Este teste de unidade irá ler o primeiro bloco e a transação em um arquivo de bloco. Quando usado com blk000000.dat, ele fornece a seguinte saída: Parsing a Block Parser. O protocolo orienta o desenvolvimento das aulas. A estrutura de dados do bloco corresponde à descrição do protocolo. O analisador de blocos começa pela leitura do número mágico. O número mágico é o primeiro quatro bytes.


É sempre d9b4bef9 ou f9beb4d9. Os quatro bytes seguintes são o tamanho do bloco e representam o número de bytes até o final do bloco. Os 80 bytes a seguir são o cabeçalho do bloco. Observe que apenas o hash do bloco anterior e a Root Merkle residem no cabeçalho do bloco. Um hash de bloco é um valor calculado. Após o cabeçalho do bloco é um contador de transações. O contador é um inteiro variável. O número de bytes que ele ocupa varia de acordo com o número de bytes necessários para representar as transações totais. As transações são armazenadas em uma lista. Para cada transação, há uma lista de entradas e saídas.


Uma entrada é uma referência a uma saída em uma transação anterior. Id é o índice do resultado na transação. O ScriptSig é evidência de propriedade sobre a chave privada que corresponde ao resultado. As saídas são instruções para o envio de bitcoins. O valor denomina o saldo em Satoshis. ScriptPubKey é a primeira metade de um ScriptSig, usado com uma entrada futura para gastar as moedas. Colocando o Parser do bloco juntos. Aqui está o meu código de analisador de bloco desleixado. Este script será executado até o final do arquivo.


A saída será semelhante à. Para testar os loops, tentei o analisador de blocos nos primeiros cinco megabytes do arquivo de bloco 65. Tudo limpo. A fonte completa está disponível no github. Imagens do World of Computing, Bi5tcoin Wiki e Shutterstock. Bits em blocos. Pensamentos sobre a tecnologia blockchain. Uma introdução gentil à tecnologia blockchain. Este artigo é uma introdução gentil à tecnologia blockchain e assume um conhecimento técnico mínimo. Ele tenta descrever o que é em vez de porque eu me importo, o que é algo para uma publicação futura. Peças mais curtas para isso são: PARTE 1 - RESUMO EXECUTIVO. As pessoas usam o termo "tecnologia blockchain" para significar coisas diferentes, e pode ser confuso. Às vezes eles estão falando sobre o Bitcoin Blockchain, às vezes é The Ethereum Blockchain, às vezes são outras moedas virtuais ou tokens digitais, às vezes são contratos inteligentes. Na maioria das vezes, eles estão falando de livros contábeis distribuídos, ou seja, uma lista de transações que são replicadas em vários computadores, em vez de serem armazenadas em um servidor central.


Os temas comuns parecem ser uma loja de dados que: geralmente contém transações financeiras é replicada em uma série de sistemas em quase tempo real geralmente existe em uma rede peer-to-peer usa criptografia e assinaturas digitais para provar identidade, autenticidade e impor direitos de acesso de leitura / gravação podem ser escritos por certos participantes podem ser lido por certos participantes, talvez um público mais amplo, e tem mecanismos para dificultar a mudança de registros históricos, ou pelo menos, fáceis de detectar quando alguém está tentando fazê-lo. Eu vejo a "tecnologia blockchain" como uma coleção de tecnologias, um pouco como uma bolsa de Lego. Do saco, você pode tirar diferentes tijolos e colocá-los de diferentes formas para criar resultados diferentes. Eu vejo a tecnologia blockchain como um saco de Lego ou tijolos. Qual a diferença entre um bloco e um banco de dados normal? Muito vagamente, um sistema blockchain é um pacote que contém um banco de dados normal mais alguns softwares que adicionam novas linhas, valida que novas linhas estão em conformidade com as regras pré-acordadas, e escuta e transmite novas linhas para seus pares em uma rede, garantindo que todos os pares tem os mesmos dados em suas bases de dados. PARTE 2 - INTRODUZINDO O BLOQUEIO DE BITCOIN. O ecossistema Bitcoin Blockchain. Como um primário sobre bitcoin, pode ajudar a revisar uma introdução gentil ao bitcoin. O ecossistema Bitcoin Blockchain é, na verdade, um sistema bastante complexo devido aos seus objetivos duplos: que qualquer pessoa possa escrever no The Bitcoin Blockchain; e que não deve haver qualquer poder ou controle centralizado. Relaxe estes, e você não precisa de muitos dos mecanismos complicados do Bitcoin. Dito isto, vamos começar com o ecossistema Bitcoin Blockchain e, em seguida, tente provocar o bit de bloco de bloco a partir do bitcoin bit. Bancos de dados replicados. O ecossistema Bitcoin Blockchain atua como uma rede de bancos de dados replicados, cada um contendo a mesma lista de transações de bitcoin passadas.


Membros importantes da rede são chamados de validadores ou nós que passam dados de transações (pagamentos) e dados de bloco (adições ao razão). Cada validador verifica independentemente os dados de pagamento e bloqueio que são transmitidos. Existem regras para que a rede funcione conforme o previsto. A complexidade de Bitcoin vem da sua ideologia. O objetivo do bitcoin deveria ser descentralizado, ou seja, não ter um ponto de controle e ser relativamente anônimo. Isso influenciou a forma como o bitcoin se desenvolveu. Nem todos os ecossistemas de cadeias de bloco precisam ter os mesmos mecanismos, especialmente se os participantes podem ser identificados e confiáveis ​​para se comportar. Veja como Bitcoin aborda algumas das decisões: Cadastro de cadastro público e privado. Existe uma grande diferença em quais tecnologias você precisa, dependendo se você permite que alguém escreva para sua cadeia de blocos ou participantes conhecidos e examinados. Bitcoin, em teoria, permite que qualquer pessoa escreva para o seu livro (mas, na prática, apenas cerca de 20 pessoas / grupos realmente fazem). Cadastro de cadastro público. Ledgers podem ser "públicos" em dois sentidos: Qualquer pessoa, sem permissão concedida por outra autoridade, pode escrever dados.


Qualquer pessoa, sem permissão concedida por outra autoridade, pode ler dados. Normalmente, quando as pessoas falam sobre cadeias de bloqueio público, elas significam qualquer um, podem escrever. Como o bitcoin é projetado como um bloco de bloqueio de "qualquer um-pode-escrever", onde os participantes não são examinados e podem adicionar ao livro de contas sem necessidade de aprovação, ele precisa de formas de arbitrar discrepâncias (não há "chefe" para decidir) e defesa mecanismos contra ataques (qualquer um pode se comportar mal com relativa impunidade, se houver um incentivo financeiro para fazê-lo). Isso cria custos e complexidade para executar esta cadeia de blocos. Cadeias de bloqueio privadas. Por outro lado, uma rede de blocos "privada" é onde os participantes são conhecidos e confiáveis: por exemplo, um grupo da indústria ou um grupo de empresas de propriedade de uma empresa de guarda-chuva. Muitos dos mecanismos não são necessários - ou melhor, são substituídos por contratos legais - "Você se comportará porque você assinou este documento". Isso altera as decisões técnicas sobre quais tijolos são usados ​​para construir a solução. Outra maneira de descrever o público / privado pode ser sem permissão contra os participantes identificados ou pseudônimo vs identificados. PARTE 3 - MAIS PROFUNDIDADE, POR FAVOR. Atenção: esta seção não é tão gentil, pois ele entra em detalhes em cada um dos elementos acima. Eu recomendo obter uma xícara de chá. ARMAZENAMENTO DE DADOS: o que é um bloqueio? Um bloco é apenas um arquivo. Um bloqueio por si só é uma estrutura de dados.


Ou seja, como os dados são logicamente juntos e armazenados. Outras estruturas de dados são bancos de dados (linhas, colunas, tabelas), arquivos de texto, valores separados por vírgulas (csv), imagens, listas e assim por diante. Você pode pensar em uma cadeia de blocos concorrendo mais de perto com um banco de dados. Blocos em uma cadeia = páginas em um livro. Por analogia, um livro é uma cadeia de páginas. Cada página de um livro contém: o texto: por exemplo, a informação da história sobre si mesma: na parte superior da página geralmente existe o título do livro e às vezes o número ou título do capítulo; na parte inferior é geralmente o número da página que diz onde você está no livro. Este 'dados sobre dados' é chamado de meta-dados. Da mesma forma, em um bloco de bloqueio, cada bloco possui: O conteúdo do bloco, por exemplo, na bitcoína é as transações de bitcoin e a recompensa de incentivo do mineiro (atualmente 25 BTC). um 'cabeçalho' que contém os dados sobre o bloco. Na bitcoína, o cabeçalho inclui algumas informações técnicas sobre o bloco, uma referência ao bloco anterior e uma impressão digital (hash) dos dados contidos neste bloco, entre outras coisas. Este hash é importante para pedidos.


Os blocos em uma corrente referem-se a blocos anteriores, como números de página em um livro. Veja esta infografia para uma visualização dos dados na cadeia de blocos da Bitcoin. Bloquear ordenação em uma cadeia de blocos. Página por página. Com livros, números de página previsíveis facilitam a identificação das páginas. Se você rasgou todas as páginas e as arrasou, seria fácil colocá-las novamente na ordem correta, onde a história faz sentido. Bloque por bloco. Com blockchains, cada bloco faz referência ao bloco anterior, não por "número de bloco", mas pela impressão digital do bloco, que é mais inteligente do que um número de página porque a própria impressão digital é determinada pelo conteúdo do bloco. A referência aos blocos anteriores cria uma cadeia de blocos - uma cadeia de blocos! Consistência interna. Ao usar uma impressão digital em vez de um carimbo de data / hora ou uma seqüência numérica, você também obtém uma boa maneira de validar os dados. Em qualquer cadeia de blocos, você pode gerar as impressões digitais do bloco usando alguns algoritmos.


Se as impressões digitais são consistentes com os dados e as impressões digitais se juntam em uma cadeia, então você pode ter certeza de que a cadeia de bloqueio é consistente internamente. Se alguém quiser interferir com qualquer um dos dados, eles precisam regenerar todas as impressões digitais desse ponto para frente e a cadeia de bloqueios parecerá diferente. Uma olhadela dentro de um bloco de blocos: as impressões digitais são exclusivas do conteúdo do bloco. Isso significa que, se for difícil ou lento criar esta impressão digital (veja a seção "tornando difícil para coisas ruins para ser ruim"), então também pode ser difícil ou lento reescrever uma cadeia de blocos. A lógica em bitcoin é: Tornar difícil gerar uma impressão digital que satisfaça as regras do Bitcoin Blockchain Portanto, se alguém quiser reescrever partes do The Bitcoin Blockchain, levará muito tempo, e eles precisam se recuperar e ultrapassar o resto da rede honesta. DISTRIBUIÇÃO DE DADOS: Como os novos dados são comunicados? Peer to peer é uma maneira de distribuir dados em uma rede. Outra maneira é cliente-servidor. Você pode ter ouvido falar de compartilhamento de arquivos peer-to-peer na rede BitTorrent onde os arquivos são compartilhados entre usuários, sem um servidor central que controle os dados. É por isso que o BitTorrent permaneceu resiliente como uma rede: não há servidor central para desligar. No ambiente do escritório, muitas vezes os dados são mantidos em servidores e, sempre que você logar, você pode acessar os dados. O servidor possui 100% dos dados e os clientes confiam em que os dados são definitivos. A maioria da internet é cliente-servidor onde o site é mantido no servidor, e você é o cliente quando você acessá-lo. Isso é muito eficiente e um modelo tradicional em computação.


Em modelos peer-to-peer, é mais como uma rede de fofocas onde cada par possui 100% dos dados (ou o mais próximo possível) e as atualizações são compartilhadas. Peer-to-peer é, de certa forma, menos eficiente do que o cliente-servidor, uma vez que os dados são replicados muitas vezes; uma vez por máquina, e cada alteração ou adição aos dados cria muita fofoca barulhenta. No entanto, cada par é mais independente e pode continuar operando até certo ponto se perder a conectividade com o resto da rede. Também as redes peer-to-peer são mais robustas, pois não existe um servidor central que possa ser controlado, então o fechamento de redes peer-to-peer é mais difícil. Os problemas com peer-to-peer. Com os modelos peer-to-peer, mesmo que todos os pares sejam "confiáveis", pode haver um problema de acordo ou consenso - se cada par está atualizando a diferentes velocidades e tiver estados ligeiramente diferentes, como você determina o "real" ou Estado "verdadeiro" dos dados? Pior, em uma rede peer-to-peer "não confiável" onde você não pode necessariamente confiar em nenhum dos pares, como você garante que o sistema não possa ser facilmente corrompido por colegas ruins? CONSENSO: como você resolve conflitos? Um conflito comum é quando vários mineiros criam blocos aproximadamente ao mesmo tempo. Como os blocos demoram tempo para serem compartilhados em toda a rede, qual deve ser o bloco legítimo? Exemplo. Digamos que todos os nós na rede sincronizaram suas cadeias de bloqueio e estão todos no bloco número 80. Se três mineiros em todo o mundo criarem 'Block 81' em aproximadamente o mesmo tempo, quais 'Block 81' devem ser considerados válidos?


Lembre-se de que cada 'bloco 81' parecerá um pouco diferente: certamente conterá um endereço de pagamento diferente para a recompensa do bloco 25 BTC; e eles podem conter um conjunto diferente de transações. Vamos chamá-los 81a, 81b, 81c. Qual bloco deve contar como o legítimo? Como você resolve isso? Regra de cadeia mais longa. Em bitcoin, o conflito é resolvido por uma regra chamada "regra de cadeia mais longa". No exemplo acima, você assumiria que o primeiro 'Bloco 81' que você vê é válido. Digamos que você veja 81a primeiro. Você pode começar a construir o próximo bloco sobre isso, tentando criar 82a: Trate o primeiro bloco que você vê como legítimo. No entanto, em alguns segundos, você pode ver 81b. Se você vê isso, fique atento a isso. Se mais tarde você vê 82b, a "regra de cadeia mais longa" diz que você deve considerar a cadeia 'b' mais longa como a válida (... 80, 81b, 82b) e ignorar a cadeia mais curta (... 80, 81a). Então, pare de tentar fazer 82a e, em vez disso, comece a tentar fazer 83b: Regra de cadeia mais longa: se você vir vários blocos, trate a cadeia mais longa como legítima.


A "regra de cadeia mais longa" é a regra que o ecossistema bitcoin blockchain usa para resolver esses conflitos que são comuns nas redes distribuídas. No entanto, com uma rede de cadeias de bloco mais centralizada ou confiável, você pode tomar decisões usando um validador confiável ou senior para arbitrar nesses casos. UPGRADES: Como você muda as regras? Como uma rede como um todo, você deve concordar em frente de que tipo de dados é válido para ser passado, e o que não é. Com bitcoin, há regras técnicas para transações (Você preencheu todos os campos de dados necessários? Está no formato certo? Etc.), e há regras de negócios (Você está tentando gastar mais bitcoins do que você? Você está tentando? para passar os mesmos bitcoins duas vezes?). Mudança de regras. À medida que essas regras evoluem ao longo do tempo, como os participantes da rede concordarão com as mudanças? Haverá uma situação em que a metade da rede pensa que uma transação é válida, e a outra metade não pensa assim por diferenças de lógica? Em uma rede privada e controlada, onde alguém tem controle sobre as atualizações, este é um problema fácil de resolver: "Todos devem atualizar para a nova lógica até 31 de julho". No entanto, em uma rede pública, descontrolada, é um problema mais desafiante.


Com bitcoin, existem duas partes para atualizações. Sugerir a alteração (BIPs). Primeiro, há a fase de proposta em que as melhorias são propostas, discutidas e redigidas. Uma proposta é referida como um "BIP" - uma "proposta de melhoria de Bitcoin". Se ele for escrito no software do núcleo Bitcoin no Github, ele pode então fazer parte de uma atualização - a próxima versão do "núcleo Bitcoin", que é a "implementação de referência" mais comum do protocolo. Adote a mudança (mineiros). A atualização pode ser baixada por nodos e criadores de blocos (mineiros) e executar, mas apenas se eles quiserem (você poderia imaginar uma mudança que reduz a recompensa de mineração de 25 BTC por bloco para 0 BTC. Veremos quantos mineiros Escolha executar isso!). Se a maioria da rede (na bitcoína, a maioria é determinada pelo poder computacional), escolha executar uma nova versão do software, então os blocos de estilo novo serão criados mais rapidamente do que a minoria e a minoria será forçada a mudar ou tornam-se irrelevantes em um "garfo de blocos". Assim, os mineiros com muito poder computacional têm um bom "dizer" quanto ao que é implementado.


ESCRIBIR ACESSO: como você controla quem pode escrever dados? Na rede bitcoin, teoricamente, qualquer um pode baixar ou escrever algum software e começar a validar transações e criar blocos. Basta acessar https://bitcoin. org/en/download e executar o software "Bitcoin core". Seu computador atuará como um nó completo, o que significa: Conexão à rede de bitcoins Baixando o bloco de bloqueio Armazenando a cadeia de blocos Ouvindo para transações Validando transações Passando em transações válidas Ouvindo para blocos Validando blocos Passando em blocos válidos Criando blocos 'Minando' os blocos. O código-fonte deste software "Bitcoin core" é publicado no Github: https://github. com/bitcoin/bitcoin. Se você está tão inclinado, você pode verificar o código e compilá-lo e executá-lo em vez de baixar o software pré-embalado no bitcoin. org. Ou você pode até mesmo escrever seu próprio código, desde que este esteja em conformidade com o protocolo. O Ethereum funciona de forma semelhante a este respeito - veja uma introdução gentil ao Ethereum. Observe que você não precisa se inscrever, fazer login ou se candidatar para se juntar à rede. Você pode seguir em frente e participar. Compare isso com a rede SWIFT, onde você não pode simplesmente baixar algum software e começar a ouvir mensagens SWIFT.


Desta forma, alguns chamam bitcoin 'permissível' vs SWIFT que seria 'permissivo'. Sem permissão não é o único caminho. Você pode querer usar a tecnologia blockchain em uma rede privada confiável. Você pode não querer publicar todas as regras do que uma transação ou bloco válido se parece. Você pode querer controlar como as regras de rede são alteradas. É mais fácil controlar uma rede privada confiável do que um bitcoin público sem confiança e gratuito para todos. DEFESA: Como você dificulta os maldosos? Um problema com uma rede sem permissão ou aberta é que eles podem ser atacados por qualquer pessoa. Portanto, deve haver uma maneira de tornar a rede como um todo confiável, mesmo que atores específicos não sejam. O que pode e não pode fazer malfeitores? Um mineiro desonesto pode: Recusar a retransmissão de transações válidas para outros nós Tentativa de criar blocos que incluam ou excluam transações específicas de sua escolha Tentando criar uma "cadeia mais longa" de blocos que fazem blocos previamente aceitos, se tornam "órfãos" e não fazem parte da cadeia principal.


Crie bitcoins fora do ar * Roube bitcoins da sua conta Faça pagamentos em seu nome ou finja ser você. * Bem, ele pode, mas apenas sua versão do livro maior terá essas transações. Outros nós devem rejeitar isso, e é por isso que é importante confirmar uma transação em vários nós. Com as transações, o efeito que um mineiro desonesto pode ter é muito limitado. Se o resto da rede for honesto, eles rejeitarão quaisquer transações inválidas que vieram dele, e eles ouvirão sobre transações válidas de outros nós honestos, mesmo que ele se recuse a passá-los. Com blocos, se o miscreant tiver poder de criação de bloco suficiente (e isso é o que tudo depende), ele pode atrasar sua transação, recusando-se a incluí-la em seus blocos. No entanto, sua transação ainda será conhecida por outros nós honestos como uma "transação não confirmada", e ela irá incluí-la em seus blocos. Mas, pior ainda, é se o malvado pode criar uma cadeia de blocos mais longa do que o resto da rede e invocar a "regra de cadeia mais longa" para expulsar as cadeias mais curtas. Isso permite que ele desenhem uma transação. Veja como você pode fazê-lo: Crie dois pagamentos com os mesmos bitcoins: um para um revendedor online, o outro para você (outro endereço que você controla). Apenas transmita o pagamento que paga o varejista. Quando o pagamento é adicionado em um bloco honesto, o revendedor envia seus bens. Crie secretamente um cadeia mais longa de blocos que exclui o pagamento ao revendedor e inclui o pagamento para si mesmo. Publique a cadeia mais longa. Se os outros nós estiverem jogando pela regra da "regra de cadeia mais longa", eles ignorarão o bloco honesto com o pagamento do varejista e continuarão a construir sua cadeia mais longa.


O bloco honesto é dito ser "órfão" e não existe para todos os efeitos. O pagamento original ao revendedor será considerado inválido pelos nós honestos porque esses bitcoins já foram gastos (em sua cadeia mais longa) O ataque "duplamente gasto". Isso é chamado de "gasto duplo" porque os mesmos bitcoins foram gastos duas vezes - mas o segundo foi o único que se tornou parte da eventual cadeia de blocos, e o primeiro acabou sendo rejeitado. Como você dificulta os mineiros desonesto para criar blocos? Lembre-se, este é apenas um problema para os livros oficiais em que os fabricantes de blocos não são confiáveis. Essencialmente, você quer torná-lo difícil, ou caro para baddies para adicionar blocos. Em bitcoin, isso é feito tornando computacionalmente caro adicionar blocos. Computativamente caro significa que "leva muito poder de processamento de computadores" e se traduz financeiramente caro (como os computadores precisam ser comprados e depois executados e mantidos). A computação em si é um jogo de adivinhação onde os criadores de blocos precisam adivinhar um número que, quando crunched com o resto do conteúdo dos dados do bloco, resulta em um hash / impressão digital menor que um determinado número. Esse número está relacionado à "dificuldade" de mineração que está relacionada ao poder total de processamento de rede. Quanto mais computadores se juntando para processar blocos, mais difícil é, em um ciclo de auto-regulação.


Todos os 2.016 blocos (aproximadamente a cada 2 semanas), a rede bitcoin ajusta a dificuldade do jogo de adivinhação com base na velocidade que os blocos foram criados. Este jogo de adivinhação é chamado de "Prova de trabalho". Ao publicar o bloco com a impressão digital menor do que o número alvo, você está provando que você fez o suficiente trabalho de adivinhação para satisfazer a rede nesse momento. INCENTIVOS: como você paga validadores? A validação de transações e blocos é barata e rápida, a menos que você opte por torná-lo lento e caro (a bitcoin). Se você controla os validadores em sua própria rede, ou eles são confiáveis, então. você não precisa tornar mais caro adicionar blocos e, portanto, você pode reduzir a necessidade de incentivá-los. Você pode usar outros métodos, como "Nós pagamos pessoas para executar validadores" ou "Pessoas assinam um contrato para executar validadores e se comportam". Por causa da estrutura "pública" de bitcoin, precisa de uma defesa contra os malvados e, portanto, usa "prova de trabalho" para tornar computacionalmente difícil adicionar um bloco (ver seção de Defesa). Isso criou um custo (equipamentos e custos de funcionamento) da mineração e, portanto, uma necessidade de incentivo. Assim como o preço do ouro determina a quantidade de equipamento que você pode gastar em uma mina de ouro, o preço do bitcoin determina o quanto o poder de mineração é usado para proteger a rede.


Quanto maior o preço, mais mineração existe, e quanto mais um malvado tiver que gastar para intimidar a rede. Assim, os mineiros fazem muita mineração, aumentando a dificuldade e aumentando as paredes contra ataques de rede. Eles são recompensados ​​em bitcoin de acordo com um cronograma, e com o tempo, à medida que as recompensas de blocos se reduzem, as taxas de transação se tornam o incentivo que os mineiros coletam. A situação idealizada em Bitcoin, onde as recompensas de bloco são substituídas por taxas de transação. Tudo isso é muito bem em teoria, mas quanto mais você olha para isso, quanto mais interessante é, e com a solução bitcoin, os incentivos podem não ter funcionado como esperado. Isso é algo para outro artigo ... É útil entender as cadeias de bloqueio no contexto da bitcoína, mas você não deve assumir que todos os ecossistemas de cadeias de blocos precisam de mecanismos de bitcoína, como tokens, prova de mineração de trabalho, regra de cadeia mais longa, etc. Bitcoin é a primeira tentativa de manter um público descentralizado e público contabilidade sem controle formal ou governança. Ethereum é a próxima iteração de uma cadeia de blocos com contratos inteligentes. Há desafios significativos envolvidos. Por outro lado, os ledgers e as cadeias de bloqueios privados ou internos podem ser implantados para resolver outros conjuntos de problemas. Como sempre, existem compromissos e prós e contras para cada solução, e você precisa considerá-los individualmente para cada caso de uso individual.


Se você tiver um problema de negócios específico que você acha que pode ser resolvido com um bloqueio, eu adoraria ouvir isso: entre em contato comigo. Com agradecimentos a David Moskowitz, Tim Swanson, Roberto Capodieci. Erros, omissões e simplificações são meus. Espalhe o conhecimento: Relacionados. 17 pensamentos sobre & ldquo; Uma introdução suave à tecnologia blockchain & rdquo; Muito bom artigo. Eu gosto da coluna "outros métodos". Eu pessoalmente acho que esses outros métodos precisariam de uma análise aprofundada por um especialista em segurança, especialmente porque os modelos confiáveis ​​propostos não especificam como a autorização será implementada no modelo de confiança fechado versus o modelo de confiança aberto atual usado na cadeia de bitcoin blockchain. Além disso, os controles de segurança para proteger a nova cadeia de blocos precisam ser derivados com base em um modelo de ameaça para identificar os ataques e projetar os controles especificamente para proteger um cliente para a arquitetura blockchain do servidor versus o atual ponto a ponto como implementado na cadeia de bitcoin. Obrigado Marco, eu concordo que há muito para pensar: sem dúvida, a indústria terá coisas erradas durante o período de dentição, mas com muitas partes do sistema usando assinaturas criptográficas, estou confiante de que teremos mais segurança e transparência modelos no futuro do que atualmente fazemos.


Eu acho que seu artigo é excelente. Estou citando isso na minha tese de mestrado. Obrigado! Fico feliz que seja útil 🙂 Olá Sohana eu sou Tamim. Estou fazendo teses de mestrado no mesmo tópico. Será muito bom para mim se você compartilhe algumas idéias comigo. Aqui está o meu endereço de e-mail tamim2996@gmail. com. Revelou isto em Morin Innovation e comentou: Artigo muito interessante para entender a tecnologia blockchain. Obrigado. Simples e fácil de seguir a introdução do blockchain.


Obrigado por escrever finalmente sobre & gt; Uma introdução gentil à tecnologia blockchain | Bits em blocos e lt; Gostei! Obrigado por escrever este artigo; Estou começando a "obtê-lo" sobre a cadeia de bloqueios, depois de ouvir o termo e ler caracterizações crípticas, que foram igualmente desconcertantes em si, há anos. Eu acho que a maioria das pessoas não teve nenhuma idéia, como eu. Muitas cargas e muitas perguntas na minha mente (como quem cria uma moeda pequena? Como? Não é o requisito de manter toda a história de todos os blocos e todas as moedas de bits em todos os computadores de cada nó de rede, em vez de superar apenas para nos livrar da autoridade central? Parece ineficiente. O que acontece quando a maioria desses nós de rede se aborrecem com isso e desligar seus computadores? Qual é a visão do fim desta coisa? E outras questões), mas continuarei cavando e sei que alcançarei um nível de compreensão que satisfaça minha curiosidade. O artigo é impressionante e o Blockchain complexo é explicado da maneira simples e fácil.


Você poderia compartilhar as tecnologias para implementá-lo, é ethereum + solidez suficiente para desenvolver uma aplicação Blockchain. Oi, então, como os mineiros (ou o software que eles usam para construir os blocos) verificam que você está gastando bitcoins que você tem? Para fazer isso, eles devem saber quantas moedas antes da transação, o que sugere que eles tenham que olhar para toda a cadeia desde o início dos tempos (bem, o começo do BitCoin) e procurar todas as transações relacionadas à sua "conta" que deve levar enorme quantidades de armazenamento (para armazenar toda a cadeia de BitCoin) e poder de processamento (para qualquer ciclo de cada bloco individual de cada vez ou, em alternativa, manter uma gravação de quantas BitCoins cada participante tenha em qualquer momento. A única outra alternativa que eu posso imagine que cada transação inclui um saldo inicial e final para ambos os participantes, então tudo o que você precisa fazer é voltar pela cadeia até encontrar uma transação previamente verificada para cada participante e validar o saldo inicial para esta nova transação corresponder ao saldo final para o anterior para cada pessoa. Posso ver que essa pode ser a solução, pois cada bloco verificado está sendo confiável para que não precise encontrar nada antes do trans anterior ação para cada um. Desculpe, pois acho que respondi a minha própria pergunta, mas apenas em teoria, seria bom se você pudesse confirmar isso por mim 🙂 Obrigado por um excelente artigo e feliz que parece ter sido escrito por um colega britânico que aprecia o benefício de um Um copo de chá tem que entender o leitor. melhor descrição e explicação até agora 🙂 O que ocorre com os blocos que são descartados usando "regra de cadeia mais longa"? O remetente deve fazer a transação novamente? Por favor explique. Sua transação pode ter encontrado o caminho para o bloco incluído, ou se não, pode ser incluída em blocos futuros. Se a sua transação foi válida em primeiro lugar, e o bloco aceito não faz nada para invalidar sua transação (como incluindo uma transação que gaste essas moedas em outro lugar), sua transação ainda será incluída em um bloco futuro, então é mais como uma demora no processamento. Um artigo muito informativo, mas eu, pessoalmente, teria achado mais benéfico se o autor não voltasse entre blockchain e Bitcoin.


Comentários

Postagens mais visitadas deste blog

Obter o endereço bitcoin da chave privada

Planilha do rastreador de criptografia

Comprar preço do mercado bitcoin