Blockchain para o menor

Isenção de responsabilidade


Este texto não está vinculado a projetos criptográficos existentes e representa um "cavalo esférico no vácuo" para a primeira imersão no assunto. Os especialistas, provavelmente, não precisarão dessas verdades comuns. E sim, este é Longrid. Embora muito resta nos bastidores.


Introdutório


Primeiro de tudo, o blockchain está na moda. E esta é a principal razão pela qual eles estão interessados. Parece que essa é uma tecnologia "brincadeira" que pode e deve ser aplicada em qualquer lugar. Mas isso não é verdade. E para que você não tenha que aceitar minha palavra, vou lhe dizer o que realmente é o blockchain, onde é aplicável e onde é necessário, como um guarda-chuva para pescar.


Então ...


Blockchain


O termo vem do inglês "cadeia de blocos", que se traduz como "cadeia de blocos". Cada novo bloco contém o hash do bloco anterior, formando uma lista vinculada única na qual o hash de cada bloco é gravado no próximo bloco.


O hash do bloco depende de todos os blocos anteriores. Portanto, o hash do último bloco reflete o estado de todo o banco de dados. E a cadeia de hashes do último bloco ao primeiro é prova de sua imutabilidade. Quando um novo bloco é adicionado, ele é "vinculado" ao último bloco e seu hash se torna o novo estado do banco de dados.


Se qualquer bloco existente for alterado, a cadeia de hash será violada e o local da violação indicará o bloco alterado. Você pode recalcular e alterar todos os hashes até o final da cadeia - a conectividade criptográfica permanecerá, mas o hash do último bloco será alterado. Se o estado do banco de dados - e esse é o hash do último bloco - for bem conhecido, a falsificação será impossível.


Isso, de fato, é tudo.


Banco de Dados


Já sabemos que o blockchain é apenas uma maneira de proteger o banco de dados contra interferências. Qual deve ser o próprio banco de dados? De fato, pode ser qualquer um - SQL, BigTable, Key-Value, sistema de arquivos. Mas o uso da blockchain impõe suas limitações.


O banco de dados protegido por blockchain das quatro propriedades CRUD ("Criar, Ler, Atualizar, Excluir") permite apenas as duas primeiras. Você não pode alterar ou excluir dados desse banco de dados - porque ele perderá imediatamente a integridade criptográfica. O Blockchain permite apenas ler e criar novos blocos.


Essa base defeituosa é chamada de registro. Para fluxo de trabalho, atividade de patentes e - é claro! - criptomoedas esse modelo é aceitável e orgânico. Mas usá-lo como um banco de dados de uso geral é quase impossível.


A palavra-chave aqui é "quase". Existe uma maneira de reconciliar um banco de dados blockchain "completo" e esse método é chamado de "log de transações".


Tomemos, por exemplo, um banco de dados simples de valor-chave que armazena entidades arbitrárias associadas a uma chave exclusiva. Eles podem ser criados e excluídos, lidos e feitos alterações.


Para cada entidade, calcule o hash e, em seguida, ordene (classifique em ordem alfabética) a lista resultante. Para cada par de hashes, calcule o hash da soma literal (concatenação) desses hashes. Em seguida, na lista resultante, faça o mesmo. E assim por diante até construirmos uma árvore de hash, sobre a qual haverá um único valor. Esse mecanismo é chamado de árvore Merkle e, na parte superior, haverá um hash que reflete o estado do banco de dados.


Em seguida, criaremos uma lista vinculada de acordo com todas as regras da blockchain, que conterão registros sobre o estado do banco de dados, a chave e o novo valor da entidade. Bem, e o hash da entrada anterior, é claro. Já será um blockchain - um blockchain de transações, cada qual associada ao estado do banco de dados e contém a essência das alterações feitas por essa transação.


Se a chave for nova, a entidade será criada. Se existir, ele muda. Se o novo valor for zero, a entidade será excluída. Cada alteração leva a uma recontagem dos ramos afetados da árvore Merkle e a um novo estado da base.


Em princípio, o mesmo esquema pode ser implementado para um banco de dados relacional e para qualquer outro - se necessário. O log de transações registrará as alterações, a árvore Merkle comprovará sua confiabilidade. Nada mal, né?


Descentralização de dados


Por que se preocupar com todos esses mecanismos de autenticação? Dessa forma, você poderá criar um banco de dados distribuído em que possa confiar. Mesmo se os próprios nós da rede em que esse banco de dados estiver armazenado, não confiaremos.


Bancos de dados descentralizados são replicados e distribuídos. Cada banco de dados replicado por usuário é armazenado de maneira igual e completa, e os bancos de dados distribuídos são armazenados de forma diferente e parcial. A vantagem da primeira abordagem está no controle total do banco de dados e a menos está em altos requisitos para volumes de armazenamento. Os prós e os contras da segunda abordagem são espelhados - o volume de todo o banco de dados pode ser muitas vezes maior que as capacidades de um único usuário, mas ao custo de controle insuficiente e, consequentemente, uma diminuição da confiança em sua confiabilidade.


Qualquer usuário do banco de dados pode adicionar seu próprio bloco. Mas a base é confiável somente quando todas as suas instâncias são iguais. A sincronização é uma maneira de manter a confiabilidade de um banco de dados. É possível realizar qualquer operação com ele - leitura ou escrita - desde que seja relevante o suficiente para que as mesmas ações com ele levem aos mesmos resultados.


Em geral, a sincronização consiste em obter o último estado do banco de dados, seguido pela obtenção sequencial dos elementos ausentes até que a integridade seja totalmente restaurada.


Rede distribuída


A descentralização garante a estabilidade do sistema contra influências destrutivas - tanto de hackers individuais quanto de corporações e estruturas dominantes. Um sistema descentralizado permanecerá enquanto houver uma conexão entre seus elementos.


Os participantes de uma rede distribuída formam um gráfico, cujos nós são computadores conectados à Internet e as arestas entre eles são conectadas por arestas. Cada nó tem um identificador exclusivo - uma conta, uma chave pública de uma assinatura eletrônica ou qualquer outra coisa. Esse identificador é usado para endereçar mensagens, e como encaminhá-las depende da arquitetura da rede.


A arquitetura mais simples é um gráfico totalmente conectado, no qual cada identificador corresponde a um endereço de rede real e existe a possibilidade de comunicação de todos com todos. Mas em uma infraestrutura de rede real, a possibilidade de conectar todos com todos pode não ser. Além disso, devido à necessidade de notificar todos os participantes, com o crescimento da rede, o tráfego aumentará proporcionalmente ao número de participantes. Cedo ou tarde, chegará a um limite de eficiência, além do qual a degradação da rede começará, até sua completa parada.


Um modelo mais complexo é um gráfico cíclico direcionado. Os identificadores são organizados em uma única lista, que é repetida para que cada nó tenha "vizinhos" à esquerda e à direita. Recebendo uma mensagem dos vizinhos à esquerda e enviando-a para a direita, os nós a entregam por retransmissão. Esse esquema não depende do tamanho da rede, porque os nós interagem com um número fixo relativamente pequeno de vizinhos. Esse esquema pode ser aprimorado e complementado, mas o ponto é que cada nó irá interagir apenas com sua própria sub-rede, que, sobrepondo-se parcialmente, implementa um gráfico conectado de tamanho ilimitado.


Mas isso não fornece uma solução para situações nas quais os nós podem se conectar a outros unilateralmente. Em redes privadas ocultas atrás dos roteadores de Network Address Translation (NAT), eles podem enviar mensagens, mas não podem recebê-los. Para eles, é necessário implementar um modelo no qual eles estabelecem uma conexão e as mensagens são recebidas em resposta a uma solicitação. O "problema de passagem da NAT" pode ter uma solução na forma de roteadores "beacon" separados ou outros nós que implementam essas funções. O padrão com roteadores é semelhante ao padrão em estrela da arquitetura de rede.


As arquiteturas em anel e estrela podem ser aprimoradas e usadas em combinação, mas a arquitetura de rede em malha é a mais eficiente, que transforma o gráfico totalmente conectado original em um gráfico não conectado, reduzindo as conexões e transformando as conexões diretas em uma “rota” de várias intermediárias. Para fazer isso, cada nó deve poder, se necessário, tornar-se um roteador para vizinhos. Caminhos e desligamentos de nós particularmente inacessíveis são assustadores para essa arquitetura - a rede reconstruirá rotas danificadas e se auto-reparará. E é mais eficaz em termos de desempenho.


Mas você tem que pagar por tudo. O aparato matemático das redes de malha (do inglês. Mesh - "cell") é muito mais complicado e provavelmente evitarei descrevê-lo aqui. Quem estiver interessado, vou me referir ao "problema do vendedor ambulante" e, se isso não os afasta, à teoria dos jogos. Há todas as respostas lá - para quem pode obtê-las.


Problema de ramificação


O blockchain tem um defeito fatal - onde existem simplesmente listas conectadas, árvores podem existir. Isso não contradiz nada, porque vários subseqüentes podem se referir ao mesmo bloco. Cada ramificação resultante é confiável, mantém a integridade criptográfica e possui seu próprio estado. Mas a base como um todo entra em uma superposição de todos esses estados e se torna incerta.


Esse problema é especialmente relevante em um sistema descentralizado, em que diferentes nós independentemente podem fazer alterações no banco de dados, causando garfos (do fork inglês - "fork"). Há duas maneiras de lidar com isso - evitando a situação de gravação simultânea e eliminando as consequências.


Mineração


Você provavelmente já ouviu falar que os usuários de BitCoin queimam eletricidade na maioria das vezes, desperdiçando recursos de computação para resolver um problema de matemática inútil? Se não, agora você sabe que ...


Um número aleatório é adicionado a cada novo bloco. É aleatório, mas o hash do bloco resultante deve atender às condições. Por exemplo, comece com 10 zeros. E agora os nós que desejam escrever uma nova classificação de bloco nesses números até que o hash atenda às condições de complexidade especificadas. E "fazendas" de computadores, placas de vídeo ou dispositivos especialmente projetados absorvem quilowatts e produzem calor. Bem, e os hashes necessários, é claro.


Por que tudo isso? Mas muito simples. Dos muitos participantes da teoria das probabilidades, o hash é encontrado a cada 10 minutos por uma pessoa. Ele escreve o bloco. Essa é a maneira mais fácil de se proteger contra ramificações.


E o mais ineficiente, porque apesar da complexidade da tarefa, os "garfos" acontecem. Então, quem encontrar o garfo remove os blocos do ramo mais curto e o transfere sequencialmente para o final do ramo mais longo.


E para que os participantes da rede estejam interessados ​​em fazer tudo isso, pelos recursos que gastam recebem moedas do criptomoeda "do nada". Isso é mineração (do inglês. "Mining" - trabalho na mina).


PoW, PoS, DPoS ...


O cálculo de hashes é apenas uma maneira de escolher uma dentre muitas. Esta é a prova de trabalho, que significa "prova de trabalho realizada". Ao calcular o hash desejado, os participantes fazem o trabalho, e o hash encontrado é essa mesma evidência. Prova de eletricidade desperdiçada.


Quando os greens falaram sobre isso, poucas pessoas se importaram. Mas quando o dinheiro novo começou a ameaçar o antigo, os governos recordaram a ecologia. No entanto, a inutilidade da mineração na época não era entendida apenas por quem recebia dinheiro por isso. É hora de mudar alguma coisa ...


E apareceu Prova de participação, "prova de propriedade". Tudo é simples, quem é mais rico - ele está certo. De fato, tudo é um pouco mais complicado, mas não importa - a criação de blocos (e a recompensa por eles!) Nas mãos daqueles com maior participação acionária.


Depois vieram o DPoS (PoS delegado com democracia e votação), PoI ("prova de importância" com base em algumas métricas como atividade de atividade e tempo de atividade) e mais, e mais e mais ...


A essência permanece a mesma - é necessário um mecanismo que permita que apenas um escreva um novo bloco em uma cadeia em cada intervalo de tempo. Por que ele deveria de alguma forma provar que é digno e geralmente melhor do que ninguém?


E se não provar?


E aqui paramos e lembramos por que é tão crítico para nós que a gravação tenha sido feita por uma pessoa. Sim, para que a corrente não se divida em uma árvore. Mas porque?


Se uma cadeia tiver dois blocos finais, o banco de dados estará em dois estados ao mesmo tempo. E se mais - então em uma superposição de todos os estados possíveis. A base está se tornando incerta. Toda a base, na sua totalidade. Precisamos de uma integridade monolítica da base? Para verificar a autenticidade de um elemento, a base inteira não é necessária - apenas as partes dele associadas a ele são necessárias.


E se alterarmos independentemente o banco de dados em locais diferentes e cada alteração for suportada pela integridade criptográfica, teremos um banco de dados indefinido, cujos subconjuntos serão determinísticos. E se, além da ramificação, também lidamos com ramificação, a medida da incerteza aumentará e diminuirá ao mesmo tempo. E qualquer nó pode adicionar qualquer bloco à cadeia a qualquer momento, se você primeiro tentar trazer todos os estados dos elementos afetados para um subconjunto determinístico do banco de dados.


Esta é uma blockchain sem blockchain. Mais precisamente, um registro em um gráfico direcionado acíclico.


Criptomoeda


Dizemos "criptomoeda" - queremos dizer "blockchain", dizemos "blockchain" ... mas não, o contrário não é verdadeiro. O que é criptomoeda?


Imagine um banco de dados que contenha entradas com os campos "conta do remetente", "conta do destinatário" e "valor". Nada mais, apenas essas três colunas. Com cada entrada na conta do remetente, a quantidade de dinheiro se torna menor pela quantidade indicada e, na conta do destinatário, mais. Se você coletar todos os registros nos quais o dinheiro é transferido para uma única conta e adicioná-los e subtrair do valor recebido todas as operações nas quais o dinheiro é transferido da conta, obtemos o valor que está agora nessa conta. A cada nova entrada, o dinheiro é transferido de conta para conta e assim por diante.


Veja como é simples? Apenas uma tabela de três colunas - e já temos nosso próprio sistema financeiro. E tudo seria assim, se não fosse por um problema. No início, quando a tabela está vazia, todas as contas têm o mesmo valor - zero. E isso significa que nenhuma operação pode ser executada. Bem, porque, caso contrário, algumas contas teriam um valor negativo, e isso ... está errado? Ou não?


Edição


Se considerarmos que o papel-moeda é uma receita do governo, então a quantidade total de notas é a dívida total do estado para com seus cidadãos. E se em suas contas números diferentes com um sinal de mais, então na "conta de estado" condicional - sua soma com um sinal de menos. Então tudo converge.


Os contadores chamam esse saldo de "saldo", também possuem contas ativas (estritamente negativas) e passivas (estritamente positivas). Eles também têm contas passivas ativas, mas se a razão e a vida são caras para você, fique longe de turfeiras da contabilidade, porque elas ainda têm um “saldo em contas extrapatrimoniais”, cuja existência nem toda mente pode suportar.


O significado é o seguinte. Devido ao fato de as contas dos emissores poderem ser negativas, elas transferem dinheiro que não possuem e, assim, as imprimem. Teoricamente, eles podem fazer isso em qualquer quantidade. Na prática, o emissor faz parte de um sistema que deve regular o suprimento de dinheiro. Como fazer isso - cada projeto decide por si mesmo.


Inflação


Todo o valor total do sistema é estimado na dívida total dos participantes entre si. A unidade monetária é o quantum dessa dívida total. Quanto mais unidades monetárias forem colocadas em circulação, menor será o custo de cada uma delas. E quanto menor o valor objetivo da economia de cada participante.


A inflação é um efeito colateral de qualquer questão. Se possível, deve ser evitado.


Deflação


Se qualquer quantia for transferida para a conta do emissor, esse dinheiro será "queimado". A quantidade de oferta monetária diminuirá, o valor da unidade monetária aumentará e todos os participantes do sistema se tornarão um pouco mais ricos. Além disso, o filantropo, é claro, que tirou o dinheiro da circulação.


Um mecanismo de incentivo pode ser anexado a esse mecanismo. Por exemplo, para fornecer a capacidade de executar algumas ações para uma comissão que é debitada dos participantes na troca de dinheiro. Por exemplo, queimando seu próprio dinheiro, um participante cobra uma comissão pelo processamento de pagamentos de remetentes de fundos.


A remoção de parte da oferta monetária da circulação aumenta o valor da parte restante. E esse processo vale a pena estimular, mas não muito ativamente, porque o suprimento de dinheiro deve ser grande o suficiente para garantir toda a atividade necessária.


O principal, como em tudo, é o equilíbrio e um senso de proporção.


Não só dinheiro


Quando falamos sobre blockchain, mencionamos bancos de dados arbitrários, e não apenas os registros de conta-soma-soma. Assim, podemos armazenar qualquer informação em um banco de dados distribuído. Isso abre grandes oportunidades. Um banco de dados público que não pode ser destruído e falsificado encontrará aplicativos em qualquer lugar.


Você só precisa encontrar um incentivo para os participantes fazerem sentido em manter seus computadores ligados.


Contratos inteligentes


Tecnicamente, é o mesmo que procedimentos armazenados nos bancos de dados. Ou seja, código executável em alguma linguagem de programação, que pode fazer alterações no banco de dados. E o nome é porque ele se desenvolveu historicamente.


Nas criptomoedas, um contrato inteligente é um tipo de participante que não é uma pessoa viva, mas um autômato cujo comportamento é definido pelo código. Quando uma operação de transferência de dinheiro é realizada para esse membro, o código é executado. Ele pode fazer qualquer coisa - transferir o valor recebido para outros participantes em parcelas, economizar o dinheiro recebido até a hora X e depois escolher alguém sozinho e transferir todo o dinheiro para ele. A última, a propósito, é uma implementação clássica de todos os tipos de roletas, loterias e sorteios. Você pode simplesmente salvar informações no banco de dados que algum participante pagou pelo serviço e outro participante conectado poderá receber essas informações e fornecer o serviço.


Existe uma certa variedade desses "autômatos" chamados "oráculos". ( , ) . "" , . , , .


, . - , , .


, — , .


Assim, podemos criar uma máquina virtual distribuída dentro de uma base distribuída. O mesmo confiável (ou seja, verificável), como todo o resto.


Conclusão


Isso, de fato, é tudo.Um grande número de inovações nada mais é do que implementações mais eficazes das idéias descritas aqui, de uma forma ou de outra. Se lhe dizem algo "revolucionário", saiba que eles querem enganá-lo.


A propósito, pirâmides do tipo MMM já apareceram na cripta.


Obrigado pela atenção.

Source: https://habr.com/ru/post/pt480220/


All Articles