Como o blockchain funciona
Agora que sabemos as noções básicas do blockchain, vamos ver como ele funciona nos bastidores. Essas informações devem ajudar você a decidir se o blockchain funcionará em seu cenário.
Como os dados são distribuídos?
Em nosso cenário, há várias empresas. Poderíamos ter um banco de dados centralizado na empresa de processamento de laticínios. No entanto, nenhum participante deseja ser a autoridade central. Poderíamos usar razão distribuído de blockchain. O uso do blockchain elimina a necessidade de uma autoridade central. Além disso, cada participante com um nó de blockchain tem uma cópia do razão para que possa fazer a própria auditoria e integração em seus sistemas. No entanto, não há um requisito para que cada empresa tenha um nó próprio. Os parceiros podem compartilhar nós.
Cada nó é conectado a outros nós usando uma rede de blockchain. Por exemplo, a Dalia Pelayo Farms, a fábrica de sorvetes e as sorveterias têm o próprio nó para gerenciar. A Contoso West e a Contoso East são parceiros separados que compartilham a mesma empresa pai. A Contoso tem um nó. Não precisa haver uma relação de um para um de nós e empresas.
Alterando o estado
Os dados em um blockchain representam o estado. É por isso que tokens digitais, como criptomoeda, são uma boa opção para o blockchain. Se pensarmos na propriedade da moeda física, uma moeda poderá estar apenas no bolso de uma pessoa por vez. Se a moeda estiver em seu bolso, o estado de propriedade será seu. Se você der a moeda ao seu amigo, o estado mudará para o amigo que receber a moeda. Em nosso cenário, as remessas se movem pela cadeia de suprimentos. A responsabilidade pelo produto deve ser transferida. Os dados que nos interessam são a parte responsável, a temperatura e se o produto está em conformidade.
O blockchain usa transações para alterar o estado dos dados de um valor para outro. Por exemplo, precisamos saber se o sorvete está armazenado abaixo da temperatura de congelamento. Em uma remessa de sorvete, um sensor de temperatura relata a temperatura periodicamente. A temperatura relatada é uma transação que é enviada para um nó de transação de blockchain.
No cenário do sorvete, quando uma remessa é enviada por meio da cadeia de fornecedores, uma transação é enviada toda vez que o status é alterado. Por exemplo, a ilustração mostra transações para uma remessa típica para a fábrica de sorvetes. Cada transação altera a parte responsável ou a temperatura. O estado atual do razão é aplicação das transações em uma ordem.
Ao enviar uma transação, você a envia para um nó de transação do blockchain. Vamos supor que a Dalia Pelayo Farms envie uma remessa de leite usando a Contoso West Shipping. O sistema de remessa da Dalia Pelayo Farms envia uma transação para o nó de blockchain. A transação atualiza a responsabilidade pela remessa do fazendeiro para a Contoso West Shipping.
O blockchain envia a transação pela rede de blockchain. Cada nó obtém uma cópia da transação.
Cada nó processa a transação, mas ainda será necessária a validação usando um mecanismo de consenso. O consenso proporciona consistência e confiança para o Razão distribuído.
Como confiar que os dados do razão são consistentes?
Em uma rede distribuída, é difícil determinar o que é verdadeiro porque as alterações de dados devem ocorrer em todos os nós. O que acontecerá se o nó da fábrica de sorvetes não obtiver uma transação de envio? Como eles saberão se o leite foi enviado da fazenda? E se o caminhão refrigerado da transportadora falhar e o leite estragar? A empresa transportadora poderia modificar o razão para evitar a responsabilidade?
O blockchain usa um mecanismo de consenso para validar e concordar com os dados em todos os nós do blockchain. O consenso oferece uma forma para que todos os nós descentralizados cheguem ao mesmo estado. Ao transferir valor ou responsabilidade, a ordem é importante. Por exemplo, se você transferir a propriedade de um carro para o seu amigo, não poderá transferir a mesma propriedade para um colega no trabalho. Esse problema é conhecido como o problema de gasto duplo que o consenso resolve. O consenso garante a ordem correta das transações e a integridade do blockchain. Como parte do consenso, um grupo de transações é validado como um bloco e a rede deve concordar se esse bloco deve ser incluído no blockchain.
Há vários algoritmos de consenso de blockchain, incluindo prova de trabalho, prova de participação e prova de autoridade. Cada algoritmo resolve a consistência de maneira diferente. Em termos simples, o consenso fornece uma forma para que o Razão distribuído alcance um estado comum.
O que é um bloco?
Um bloco é um cluster de dados dentro do blockchain, que armazena informações de transação. O número de transações em um bloco geralmente é baseado no tempo. Por exemplo, a ilustração a seguir mostra um bloco que contém transações que ocorreram nos últimos 10 minutos:
Por meio do consenso, blocos validados são adicionados ao blockchain em cada nó. Como todos os nós têm os mesmos blocos na cadeia, o razão é consistente em toda a rede. Como resultado, todos os nós contêm os mesmos dados validados em uma ordem acordada.
Como confiar que razão é imutável?
Você pode imaginar que, se tiver o controle de razão em seu nó, poderá simplesmente alterar os dados em sua cópia. Como isso pode ser imutável?
O blockchain usa um hash criptográfico para criar um link entre blocos. Ao vincular blocos, a ordem das transações pode ser acordada por meio do algoritmo de consenso. Um hash criptográfico é um algoritmo que mapeia dados de um tamanho arbitrário para uma representação de bit de tamanho fixo. Você pode considerar isso como uma impressão digital eletrônica. O Bitcoin usa o algoritmo de hash SHA-256. Se você usar uma função de hash SHA-256 em um documento de 100 páginas, a saída da função será um valor de hash de 256 bits. Se você alterou apenas um caractere no documento e regerou o hash, a saída será um valor de hash de 256 bits diferente. Agora, imagine se usarmos um bloco como a entrada para a função de hash. A saída será um valor de hash exclusivo para os dados no bloco.
O blockchain usa hashes para detectar se foram feitas alterações nos blocos. Ao incluir o valor de hash do bloco anterior ao gerar o hash do próximo bloco, os blocos são encadeados por meio de hashes.
O blockchain proporciona confiança por meio do uso de hashes para provar que o histórico de dados não foi alterado. Com a inclusão do hash do bloco anterior ao criar um bloco, uma cadeia imutável de transações é criada na ordem.
Se qualquer bloco for modificado na cadeia, os blocos posteriores terão um hash diferente. Como resultado, a validação descobre a discrepância.
Lógica confiável
O blockchain nos permite armazenar dados que sejam consistentes e confiáveis. Como adicionar lógica que execute a mesma coisa em cada nó?
Em nosso cenário, precisamos de lógica para transferir a responsabilidade do produto de um participante para outro. Também precisamos usar dados de sensores de temperatura IoT para saber se a temperatura está muito alta.
Um aplicativo descentralizado (DApp) é um aplicativo em um sistema de computação distribuída. Neste módulo, vamos nos concentrar no uso do protocolo de blockchain Ethereum. Os DApps do Ethereum são chamados de contratos inteligentes. Um contrato inteligente contém a lógica que é executada como parte de uma transação. No Ethereum, você programa a lógica usando uma linguagem de programação chamada Solidity.
Os contratos inteligentes são implantados no blockchain e são referenciados por um endereço. Para usar um contrato inteligente, você cria uma instância. Uma instância de contrato inteligente contém dados de estado e lógica de programa. Em nosso cenário, uma instância de contrato inteligente contém dados como o participante responsável, a localização e se a temperatura do produto está fora de conformidade. Podemos executar funções para transferir a responsabilidade ou receber telemetria de temperatura de uma instância.
Quando a responsabilidade do produto é transferida para outra parte, uma transação é executada. A lógica do contrato inteligente atualiza os dados de estado. Em nosso cenário de sorvete, o sistema de transporte da fábrica de sorvete cria uma instância de contrato inteligente para uma nova remessa de sorvete. O sistema de transporte da fábrica envia uma transação que chama a função TransferResponsibility para transferir a responsabilidade da remessa para o transporte da Contoso East. A rede blockchain envia a transação para todos os nós. A lógica do contrato inteligente é executada em cada nó.
E se, durante a remessa, a unidade de refrigeração falhar e a temperatura do sorvete ficar acima da temperatura de congelamento? Um sensor de temperatura IoT monitora a temperatura do sorvete e envia transações periodicamente. Se a temperatura estiver acima do congelamento, a lógica do contrato inteligente marcará a remessa como fora de conformidade.
Como a transação está incluída em uma cadeia de blocos, há um registro imutável de quando a remessa ficou fora de conformidade. A sorveteria pode recusar a entrega e pode evitar problemas com a segurança dos alimentos.
Assim como os dados no blockchain, um contrato inteligente é imutável. Uma vez implantada, a lógica não pode ser alterada. Portanto, você pode confiar que a lógica do contrato inteligente sempre executa da mesma forma em todos os nós. Qualquer alteração de código exige que um novo contrato inteligente seja implantado em um novo endereço.