Evitando o projeto blockchain inútil

Nó Fonte: 1577766

Como determinar se você encontrou um caso de uso real de blockchain

Blockchains são exagerados. Pronto, eu disse isso. A partir de Sibos para moneyxnumx / 20 para cobrir histórias de The Economist e Euromoney, todo mundo parece estar subindo a bordo do vagão blockchain. E, sem dúvida, como outros no espaço, estamos vendo um número cada vez maior de empresas construindo provas de conceito em nossa plataforma e / ou pedindo nossa ajuda.

Como uma jovem startup, você pensaria que estaríamos nas nuvens. Certamente agora é a hora de levantar uma tonelada de dinheiro e construir aquela plataforma de blockchain de próxima geração de alto desempenho que já projetamos. O que diabos estamos esperando?

Eu te direi uma coisa. Estamos esperando para obter uma compreensão mais clara de onde os blockchains genuinamente agregar valor à TI corporativa. Você vê, uma grande proporção desses novos projetos têm nada a ver com blockchains. É assim que funciona. Uma grande empresa ouve que os blockchains são o próximo grande sucesso. Grande empresa encontra internamente algumas pessoas interessadas no assunto. Uma grande empresa lhes dá um orçamento e diz a eles para fazerem algo blockchainy. Logo eles vêm bater à nossa porta, acenando notas de um dólar, pedindo us para ajudar eles pense em um caso de uso. Dizer o que agora?

Já para quem tem um projeto em mente, qual é o problema? Em muitos casos, o projeto pode ser implementado perfeitamente bem usando um banco de dados relacional regular. Você sabe, grandes gigantes de ferro como Oracle e SQL Server, ou para os mais abertos, MySQL e postgres. Então, deixe-me começar definindo as coisas:

Se seus requisitos são atendidos pelos bancos de dados relacionais de hoje, seria insano usar um blockchain.

Porque? Porque produtos como Oracle e MySQL têm décadas de desenvolvimento por trás deles. Eles foram implantados em milhões de servidores executando trilhões de consultas. Eles contêm alguns dos códigos mais exaustivamente testados, depurados e otimizados do planeta, processando milhares de transações por segundo sem suar a camisa.

E o que dizer de blockchains? Nós vamos, nosso produto foi um dos primeiros a chegar ao mercado e está disponível há exatamente 5 meses, com alguns milhares de downloads. Na verdade, é extremamente estável, porque nós o construímos Bitcoin Core, o software que alimenta o bitcoin. Mas mesmo assim, toda esta categoria de produtos ainda está em suas fraldas.

Então, estou dizendo que blockchains são inúteis? Absolutamente não. Mas antes de embarcar nesse projeto de blockchain brilhante, você precisa ter uma ideia muito clara de por que você está usando um blockchain. Existem várias condições que precisam ser cumpridas. E se não forem, você deve voltar para a prancheta. Talvez você possa definir melhor o projeto. Ou talvez você possa economizar muito tempo e dinheiro para todos, porque você não precisa de um blockchain.

1. O banco de dados

Aqui está a primeira regra. Blockchains são uma tecnologia para bancos de dados compartilhados. Portanto, você precisa começar sabendo por que está usando um banco de dados, ou seja, um repositório estruturado de informações. Isso pode ser um tradicional banco de dados relacional, que contém uma ou mais tabelas semelhantes a planilhas. Ou pode ser o mais moderno NoSQL variedade, que funciona mais como um sistema de arquivos ou dicionário. (Em um nível teórico, os bancos de dados NoSQL são apenas um subconjunto de bancos de dados relacionais de qualquer maneira.)

Um razão para ativos financeiros pode ser expresso naturalmente como uma tabela de banco de dados em que cada linha representa um tipo de ativo de propriedade de uma entidade específica. Cada linha tem três colunas contendo: (a) o identificador do proprietário, como um número de conta, (b) um identificador para o tipo de ativo, como "USD" ou "AAPL", e (c) a quantidade desse ativo detido por aquele proprietário.

Os bancos de dados são modificados por meio de “transações” que representam um conjunto de alterações no banco de dados que devem ser aceitas ou rejeitadas como um todo. Por exemplo, no caso de um razão de ativos, um pagamento de um usuário para outro é representado por uma transação que deduz a quantidade apropriada de uma linha e a adiciona a outra.

2. Vários escritores

Este é fácil. Blockchains são uma tecnologia para bancos de dados com vários gravadores. Em outras palavras, deve haver mais de uma entidade que está gerando as transações que modificam o banco de dados. Você sabe quem são esses escritores?

Na maioria dos casos, os gravadores também executam "nós" que mantêm uma cópia do banco de dados e retransmitem as transações para outros nós em um peer-to-peer moda. No entanto, as transações também podem ser criadas por usuários que não estão executando um nó. Considere, por exemplo, um sistema de pagamentos que é mantido coletivamente por um pequeno grupo de bancos, mas tem milhões de usuários finais em dispositivos móveis, comunicando-se apenas com os sistemas de seus próprios bancos.

3. Ausência de confiança

E agora para a terceira regra. Se várias entidades estão gravando no banco de dados, também deve haver algum grau de desconfiança entre essas entidades. Em outras palavras, blockchains são uma tecnologia para bancos de dados com vários escritores não confiáveis.

Você pode pensar que a desconfiança só surge entre organizações distintas, como os bancos que negociam em um mercado ou as empresas envolvidas em uma cadeia de suprimentos. Mas também pode existir dentro de uma única grande organização, por exemplo, entre departamentos ou operações em diferentes países.

O que quero dizer especificamente com desconfiança? Quero dizer que um usuário não está disposto a permitir que outro modifique as entradas do banco de dados que ele “possui”. Da mesma forma, quando se trata de ler o conteúdo da base de dados, um utilizador não aceitará como evangelho a “verdade” relatada por outro utilizador, porque cada um tem diferentes incentivos económicos ou políticos.

4. Desintermediação

Portanto, o problema, conforme definido até agora, é habilitar um banco de dados com vários gravadores não confiáveis. E já existe uma solução bem conhecida para este problema: o intermediário de confiança. Ou seja, alguém em quem todos os escritores confiam, mesmo que não confiem totalmente uns nos outros. Na verdade, o mundo está repleto de bancos de dados dessa natureza, como o livro-razão de contas de um banco. Seu banco controla o banco de dados e garante que toda transação é válida e autorizada pelo cliente cujos fundos ela movimenta. Não importa o quão educadamente você peça, seu banco nunca permitirá que você modifique seu banco de dados diretamente.

Blockchains eliminam a necessidade de intermediários confiáveis, permitindo bancos de dados com vários gravadores não confiáveis ​​para serem modificados diretamente. Nenhum gatekeeper central é necessário para verificar as transações e autenticar sua origem. Em vez disso, a definição de uma transação é estendida para incluir uma prova de autorização e uma prova de validade. As transações podem, portanto, ser verificado de forma independente e processado por cada nó que mantém uma cópia do banco de dados.

Mas a pergunta que você precisa fazer é: Você quer ou precisa dessa desintermediação? Dado o seu caso de uso, há algo de errado em ter uma parte central que mantém um banco de dados autorizado e atua como o guardião da transação? Boas razões para preferir um banco de dados baseado em blockchain em vez de um intermediário confiável podem incluir custos mais baixos, transações mais rápidas, reconciliação, novo regulamento ou simples incapacidade de encontrar um intermediário adequado.

5. Interação de transação

Portanto, os blockchains fazem sentido para bancos de dados compartilhados por vários escritores que não confiam inteiramente uns nos outros e que modificam esse banco de dados diretamente. Mas isso ainda não é suficiente. Blockchains realmente brilham onde há algum interação entre as transações criado por esses escritores.

O que quero dizer com interação? No sentido mais amplo, isso significa que as transações criadas por diferentes escritores geralmente dependem um do outro. Por exemplo, digamos que Alice envie alguns fundos para Bob e, em seguida, Bob envie alguns para Charlie. Nesse caso, a transação de Bob depende da transação de Alice e não há como verificar a transação de Bob sem verificar primeiro a de Alice. Por causa dessa dependência, as transações pertencem naturalmente juntas em um banco de dados único compartilhado.

Levando isso adiante, um bom recurso do blockchains é que as transações podem ser criadas colaborativamente por vários escritores, sem que nenhuma das partes se exponha ao risco. Isso é o que permite entrega versus pagamento liquidação a ser realizada com segurança em um blockchain, sem a necessidade de um intermediário confiável.

Um bom caso também pode ser feito para situações em que as transações de diferentes gravadores são correlacionadas entre si, mesmo que permaneçam independentes. Um exemplo pode ser um banco de dados de identidade compartilhado no qual várias entidades validam diferentes aspectos das identidades dos consumidores. Embora cada certificação seja independente, o blockchain fornece uma maneira útil de reunir tudo de uma forma unificada.

6. Defina as regras

Esta não é realmente uma condição, mas sim uma consequência inevitável dos pontos anteriores. Se tivermos um banco de dados modificado diretamente por vários gravadores e esses gravadores não confiarem totalmente uns nos outros, o banco de dados deve conter regras incorporadas restringindo as transações realizadas.

Essas regras são fundamentalmente diferentes do restrições que aparecem em bancos de dados tradicionais, porque se relacionam com o legitimidade das transformações em vez do estado do banco de dados em um determinado momento. Cada transação é verificada em relação a essas regras por cada nó da rede, e aquelas que falham são rejeitadas e não retransmitidas.

Os livros de registro de ativos contêm um exemplo simples desse tipo de regra para evitar que as transações criem ativos do nada. A regra estabelece que a quantidade total de cada ativo no razão deve ser a mesma antes e depois de cada transação.

7. Escolha seus validadores

Até agora, descrevemos um banco de dados distribuído no qual as transações podem se originar em muitos lugares, se propagam entre os nós de forma ponto a ponto e são verificadas por cada nó independentemente. Então, onde entra um “blockchain”? Bem, o trabalho de um blockchain é ser o log de transações final autoritativo, em cujo conteúdo todos os nós comprovadamente concordam.

Por que precisamos desse log? Primeiro, ele permite que nós recém-adicionados calculem o conteúdo do banco de dados do zero, sem a necessidade de confiar em outro nó. Em segundo lugar, ele aborda a possibilidade de que alguns nós possam perder algumas transações, devido ao tempo de inatividade do sistema ou a uma falha de comunicação. Sem um log de transações, isso faria com que o banco de dados de um nó divergisse dos outros, prejudicando o objetivo de um banco de dados compartilhado.

Terceiro, é possível que duas transações estejam em conflito, de modo que apenas uma pode ser aceita. Um exemplo clássico é um gasto duplo em que o mesmo ativo é enviado a dois destinatários diferentes. Em um banco de dados ponto a ponto sem autoridade central, os nós podem ter opiniões diferentes sobre qual transação aceitar, porque há nenhuma resposta certa objetiva. Ao exigir que as transações sejam “confirmadas” em um blockchain, garantimos que todos os nós convergem para a mesma decisão.

Finalmente, em Ethereum-style blockchains, o preciso ordenação de transações desempenha um papel crucial, porque cada transação pode afetar o que acontece em cada um subsequente. Neste caso, o blockchain atua para definir a cronologia oficial, sem a qual as transações não podem ser processadas.

Um blockchain é literalmente uma cadeia de blocos, em que cada bloco contém um conjunto de transações que são confirmadas como um grupo. Mas quem é o responsável por escolher as transações que vão para cada bloco? No tipo de “blockchain privado” que é adequado para aplicativos corporativos, a resposta é um grupo fechado de validadores (“mineradores”) que assinam digitalmente os blocos que eles criam. Essa lista branca é combinada com alguma forma de esquema de consenso distribuído para evitar que uma minoria de validadores assuma o controle da cadeia. Por exemplo, MultiChain usa um esquema chamado diversidade mineira, em que os mineiros permitidos trabalham em um rodízio moda, com algum grau de leniência para permitir nós que não funcionam.

Não importa qual esquema de consenso seja usado, os nós de validação têm muito menos poder do que o proprietário de um banco de dados centralizado tradicional. Os validadores não podem falsificar transações ou modificar o banco de dados, violando suas regras. Em um livro-razão de ativos, isso significa que eles não podem gastar o dinheiro de outras pessoas, nem alterar a quantidade total de ativos representados. No entanto, ainda existem duas maneiras pelas quais os validadores podem influenciar indevidamente o conteúdo de um banco de dados:

  • Censura de transação. Se um número suficiente de validadores conspirar maliciosamente, eles podem evitar que uma transação específica seja confirmada no blockchain, deixando-a permanentemente no limbo.
  • Resolução de conflito tendenciosa. Se houver conflito de duas transações, o validador que cria o próximo bloco decide qual transação é confirmada no blockchain, fazendo com que a outra seja rejeitada. A escolha justa seria a transação vista primeiro, mas os validadores podem escolher com base em outros fatores sem revelar isso.

Por causa desses problemas, ao implantar um banco de dados baseado em blockchain, você precisa ter uma ideia clara de quem são seus validadores e por que você confia neles, coletivamente, se não sozinho. Dependendo do caso de uso, os validadores podem ser escolhidos como: (a) um ou mais nós controlados por uma única organização, (b) um grupo central de organizações que mantém a cadeia ou (c) cada nó da rede.

8. Apoie seus ativos

Se você chegou até aqui, deve ter percebido que costumo me referir a blockchains como bancos de dados compartilhados, em vez dos mais comuns “livros contábeis compartilhados”. Porque? Porque, como tecnologia, os blockchains podem ser aplicados a problemas muito além do rastreamento da propriedade de ativos. Qualquer banco de dados que tenha vários gravadores não confiáveis ​​pode ser implementado em um blockchain, sem a necessidade de um intermediário central. Os exemplos incluem calendários compartilhados, colaboração no estilo wiki e fóruns de discussão.

Dito isso, por enquanto, parece que os blockchains interessam principalmente àqueles que rastreiam a movimentação e a troca de ativos financeiros. Posso pensar em duas razões para isso: (a) o setor financeiro está respondendo à ameaça (em retrospecto, minúscula) de criptomoedas como bitcoin, e (b) um livro-razão de ativos é o exemplo mais simples e natural de um banco de dados compartilhado com transações interdependentes criadas por várias entidades não confiáveis.

Se você deseja usar um blockchain como um razão de ativos, precisa responder a uma pergunta crucial adicional: Qual é a natureza dos ativos que estão sendo movidos? Com isso, não me refiro apenas a dinheiro, títulos ou conhecimentos de embarque, embora isso também seja importante. A questão é sim: Quem está por trás dos ativos representados na blockchain? Se o banco de dados disser que possuo 10 unidades de algo, quem me permitirá reivindicar essas 10 unidades no mundo real? Quem devo processar se não conseguir converter o que está escrito no blockchain em ativos físicos tradicionais? (Veja isso acordo de ativos Por exemplo.)

A resposta, é claro, varia de acordo com o caso de uso. Para ativos monetários, pode-se imaginar os bancos de custódia aceitando dinheiro na forma tradicional e, em seguida, creditando as contas dos depositantes em um livro razão distribuído alimentado por blockchain. No financiamento do comércio, as cartas de crédito e os conhecimentos de embarque seriam garantidos pelo banco do importador e pela empresa de transporte, respectivamente. E mais no futuro, podemos imaginar uma época em que o emissão primária de títulos corporativos ocorre diretamente em um blockchain pela empresa que busca levantar fundos.

Conclusão

Como mencionei na introdução, se o seu projeto não cumprir cada uma dessas condições, você não deve usar um blockchain. Na ausência de qualquer um dos cinco primeiros, você deve considerar um dos seguintes: (a) armazenamento regular de arquivos, (b) um banco de dados centralizado, (c) mestre-escravo replicação de banco de dados, ou (d) múltiplos bancos de dados para os quais os usuários podem Inscreva-se.

E se você cumprir os cinco primeiros, ainda há trabalho a fazer. Você precisa ser capaz de expressar as regras de seu aplicativo em termos das transações que um banco de dados permite. Você precisa ter certeza sobre quem pode confiar como validadores e como definirá o consenso distribuído. E, finalmente, se você pretende criar um livro-razão compartilhado, precisa saber quem fará o backup dos ativos representados por esse livro-razão.

Tem todas as respostas? Parabéns, você tem um caso de uso de blockchain real. E adoraríamos ouvir de você.

Por favor, poste comentários no LinkedIn. Veja também este acompanhamento: Quatro casos de uso genuínos de blockchain.

Carimbo de hora:

Mais de Multichain