Blockchain (Bitcoin) como um banco de dados?

16

Eu estava lendo este artigo da BBC News e o seguinte trecho chamou minha atenção. Parece grupos de disponibilidade sempre ativa ou espelhamento de alta disponibilidade, talvez com a segurança incluída automaticamente.

O blockchain é uma solução de banco de dados potencialmente viável para aplicativos modernos e de alto volume de transações?

É muito fácil perceber o valor de transações de baixo volume, como registros médicos pessoais, mas e os bancos de dados de alto volume?

O que é blockchain?

As cadeias de bloco dependem da criptografia para permitir que um conjunto de computadores faça alterações em um registro global sem precisar de um ator central.

A remoção do intermediário reduz custos em quase todos os setores.

A blockchain é um livro que registra tudo o que acontece com uma coleção de dados conhecida como "bloco" em uma ordem cronológica ou "cadeia".

Como moeda, esse é um recurso importante, pois permite que os usuários tenham certeza de que seu dinheiro digital é único, da mesma forma que cada nota em sua carteira é única.

"A tecnologia Blockchain será a maneira como criamos ativos porque permite transferir informações digitais sem copiar", diz Adam Ludwin, executivo-chefe da Chain.com, que cria redes de blockchain.

O Blockchain pode ser usado para rastrear o histórico de todos os tipos de informações e manter seu valor, portanto, por exemplo, os médicos poderiam usá-lo para atualizar os registros médicos.

Como cada alteração em uma blockchain é feita simultaneamente em toda a rede, nenhuma informação é perdida e, como as alterações não podem ser desfeitas, o sistema mantém sua transparência. É necessária uma chave especial para fazer alterações em cada bloco, para que os indivíduos possam manter seus registros seguros, protegendo essa chave.

James Jenkins
fonte

Respostas:

15

O blockchain é uma solução de banco de dados potencialmente viável para aplicativos modernos e de alto volume de transações ?

A tecnologia blockchain em geral tem algumas características que dificultam o trabalho com grandes volumes.

Dê uma olhada no Bitcoin, por exemplo. A média de transações por dia nunca foi superior a 300 mil: transações por dia (fonte blockchain.info)

insira a descrição da imagem aqui

Ainda mais importante, o tempo médio de confirmação de uma transação é de cerca de 8 minutos !: Tempo médio de confirmação de transação (somente com taxa) e uma bela imagem de Quandl :

insira a descrição da imagem aqui

Agora, quantos computadores em todo o mundo são responsáveis ​​por manter o banco de dados bitcoin? Não sou especialista em bitcoin, mas acho que o histórico completo das transações é armazenado na cadeia de blocos. Portanto, todos os computadores que participam da rede bitcoin mantêm uma cópia de todo o banco de dados (as transações fazem parte, é claro, não as informações das contas). e chaves secretas, são mantidas nas carteiras pessoais).

Só podemos estimar quantos são, mas acho que são mais de um milhão. Transações de 300 mil em um dia com um milhão de computadores não soam como alto volume. E 8 minutos para confirmação?

Um RDBMS moderno em um hardware decente pode facilmente chegar a 1 mil transações por segundo. São cerca de 86 milhões de transações por dia. A hora da confirmação? Isso depende do tamanho da transação (quantas tabelas e linhas isso afeta), mas para uma pequena transação do tipo bitcoin (remova 42 moedas da conta A e adicione 42 moedas à conta B), será em milissegundos.

Em conclusão, a diferença de volumes e tempo é de 1000 a 100000 vezes hoje.

Se a tecnologia blockchain resolver esse problema no futuro, poderá ser possível usá-lo em aplicativos de volume médio ou alto. Podemos ler discussões e sugestões de como o problema deve ser resolvido - muitas das empresas mencionadas nos links estão realmente trabalhando nessas questões - mas ainda não vimos uma solução ou produto de trabalho que ofereça alto volume e velocidade.

ypercubeᵀᴹ
fonte
Outro problema que tenho com o blockchain é que ele é inconsistente. Está tudo em carga e o cliente que processa as transações não é 'dedicado' para que você possa ver um monte desistir ou ser adicionado. 8 minutos parece certo, talvez os 10 minutos finais tenham sido mais um ou dois minutos para a aprovação chegar a todos os clientes? Não tenho certeza, quem sabe com mais nós talvez tenha caído! De qualquer maneira, ótimos links. Obrigado.
Ali Razeghi
2
Este artigo technologyreview.com/s/540921/… afirma que há um limite conceitual de sete transações por segundo.
A_horse_with_no_name
As cadeias laterais @a_horse_with_no_name podem ser dimensionadas facilmente sem limites rígidos e ainda precisam ser sincronizadas com a blockchain do bitcoin, que pode ser manipulada de forma transparente.
Jangorecki 30/05
16

Estou muito familiarizado com criptomoeda e bancos de dados e posso dizer que não é um ótimo mecanismo de banco de dados.

Usando o blockchain como um banco de dados ativo:

Pense nisso como uma primeira forma normalizada sem qualquer capacidade de pesquisa ou indexação realmente boa, tanto quanto o blockchain. Basicamente, uma planilha do Excel sem recursos de computação que fornece apenas recursos de 'leitura / gravação' com muita verificação e validação. Um blockchain é uma ótima maneira de validar que seus dados sejam higienizados e corretos antes de colocá-los em um banco de dados que permite consultá-lo de maneira diferente, indexá-lo etc.

Benefícios da blockchain:

O blockchain, nesse caso, é puramente um razão e uma API para solicitações PUT e GET. É sobre isso. O blockchain é interessante porque você precisa da maioria dos nós para passar a transação como válida e não há reversões, uma vez confirmadas, confirmadas. Portanto, se alguém tentar fazer uma transação falsa, ela será capturada, a menos que a pessoa que a tenha tenha um pool com uma participação majoritária forte. Em seguida, eles podem validá-lo em seu pool antes que alguém possa rejeitá-lo. Esse é o ponto forte da blockchain. Verificação de que os dados estão corretos. Também é tipicamente bem lento. Você está olhando cerca de 10 minutos sob carga normal para que seja validado. Sob carga pesada, o tempo sobe bastante.

Depois de validar que as transações são válidas e não fraudulentas usando o blockchain, você pode importar esses dados para um banco de dados e trabalhar com eles da maneira que desejar. Eu tenho alguma experiência com isso, mas observe que todas as transações na arquitetura atual do bitcoin serão registradas, portanto, há algumas informações interessantes para analisar.

Consultando dados fora do esquema blockchain em um DBMS:

Aqui está o diagrama de bitcoin que você pode usar para criar o esquema no PostgreSQL. Usando isso, você pode colocá-lo em um DBMS relacional: https://bitcointalk.org/index.php?topic=38246 insira a descrição da imagem aqui

Esse repositório de código também é útil se você deseja importar os dados para um RDBMS real: https://github.com/bitcoin-abe/bitcoin-abe

Quanto ao DBMS em que você deve inseri-lo, isso depende do seu caso de uso. Se você deseja analisar os IDs de transações / carteira para ver alguns padrões ou o trabalho de BI, eu recomendaria um banco de dados relacional. Se você deseja configurar uma ingestão ao vivo com várias criptomoedas, recomendo algo que não precise do log de transações, para que uma solução MongoDB seja boa. Eu não acho que você precise se preocupar com o Elastic Search, a menos que queira começar a gravar ao vivo de todas as criptomoedas ao mesmo tempo e usá-lo para fazer transações automáticas ou algo igualmente louco. :)

Ali Razeghi
fonte
8

Em 2014, criamos o ascribe.io com a premissa de usar o Bitcoin como um banco de dados para reivindicações de propriedade intelectual. No lançamento, conectamos a rede porque ela não suportava a taxa de transferência, a latência era de pelo menos 10 minutos e estávamos limitados pelo que poderíamos colocar no OP_RETURN, forçando-nos a armazenar o arquivo digital real relacionado à reivindicação no Amazon S3 . Percebemos que o Bitcoin em sua forma atual nunca poderia ser um banco de dados de transações alto.

Mas a ideia de podermos ter um banco de dados no estilo blockchain - controle descentralizado, imutabilidade (resistência a violações) e ativos ativos na rede ficou conosco. Então, em meados de 2014, começamos a trabalhar no BigchainDB

Para encurtar a história - podemos processar 100k tps com 100mS de latência e ter petabytes de capacidade. O código é nosso BigchainDB Github, documentação técnica aqui e o pensamento fundamental em nosso whitepaper .

Se você tem um caso de uso para um banco de dados descentralizado e com alta transação - criamos o BigchainDB exatamente para isso.

Bruce Pon
fonte
2

Blockchain derivado do Bitcoin é lento e caro; a quantidade de dados que podem ser armazenados em um bloco é muito modesta. Os mecanismos por trás das blockchains (distribuir ledgers) destinam-se a fornecer um armazenamento de dados incorruptível e altamente replicado; ponto a ponto é menos uma característica essencial do que um "requisito político" para evitar a aparência de controle central. Trabalho há 18 meses para produzir um livro distribuído de alto desempenho (veja metrognomo.com por uma instanciação) que utiliza o mínimo possível de Bitcoin. No final, porém, um livro distribuído se parece muito com um arquivo seqüencial que pode ser adicionado, mas não editado, após a adição. Isso é algo valioso para alguns aplicativos, mas não o que a maioria das pessoas pensa como um banco de dados.

Londres
fonte