Blockchain (Bitcoin) come database?


16

Stavo leggendo questo articolo della BBC News e il seguente estratto, ha attirato la mia attenzione. Sembra gruppi di disponibilità sempre attiva o mirroring ad alta disponibilità, forse con la sicurezza inclusa automaticamente.

Blockchain è una soluzione di database potenzialmente praticabile per le applicazioni moderne e ad alto volume di transazioni?

È abbastanza facile vedere il suo valore per le transazioni a basso volume come le cartelle cliniche personali, ma per quanto riguarda i database ad alto volume?

Cos'è la blockchain?

Le blockchain si basano sulla crittografia per consentire a un set di computer di apportare modifiche a un record globale senza bisogno di un attore centrale.

La rimozione dell'intermediario riduce i costi in quasi tutti i settori.

La blockchain è un libro mastro che registra tutto ciò che accade a una raccolta di dati nota come "blocco" in un ordine cronologico o "catena".

Come valuta questa è una caratteristica importante perché consente agli utenti di essere certi che il loro denaro digitale sia unico nel suo genere, allo stesso modo in cui ogni nota nel tuo portafoglio è unica.

"La tecnologia Blockchain sarà il modo in cui creiamo risorse perché ti consente di trasferire informazioni digitali senza copiare", afferma Adam Ludwin, amministratore delegato di Chain.com, che crea reti blockchain.

Blockchain può essere utilizzato per tracciare la cronologia di tutti i tipi di informazioni e mantenerne il valore, quindi, ad esempio, i medici potrebbero usarlo per aggiornare le cartelle cliniche.

Poiché ogni modifica a una blockchain viene effettuata contemporaneamente su tutta la rete, nessuna informazione viene persa e poiché le modifiche non possono essere annullate, il sistema mantiene la sua trasparenza. È necessaria una chiave speciale per apportare modifiche a ciascun blocco, in modo che le persone possano tenere al sicuro i propri record proteggendo quella chiave.

Risposte:


15

Blockchain è una soluzione di database potenzialmente praticabile per le applicazioni moderne e ad alto volume di transazioni ?

La tecnologia blockchain in generale ha alcune caratteristiche che rendono difficile lavorare con volumi elevati.

Dai un'occhiata a Bitcoin per esempio. Le transazioni medie al giorno non sono mai state più di 300K: Transazioni al giorno (fonte blockchain.info)

inserisci qui la descrizione dell'immagine

Ancora più importante, il tempo di conferma mediano per una transazione è di circa 8 minuti !: Tempo di conferma della transazione mediana (solo con commissioni) e una bella immagine di Quandl :

inserisci qui la descrizione dell'immagine

Ora quanti computer in tutto il mondo sono responsabili della conservazione del database bitcoin? Non sono un esperto di bitcoin ma penso che la cronologia completa delle transazioni sia memorizzata nella catena di blocchi, quindi tutti i computer che partecipano alla rete bitcoin mantengono essenzialmente una copia dell'intero database (le transazioni sono ovviamente parte, non le informazioni sugli account e chiavi segrete, queste sono conservate nei portafogli personali).

Possiamo solo stimare quanti sono, ma immagino che siano più di un milione. 300.000 transazioni in un giorno con un milione di computer non sembrano volumi elevati. E 8 minuti per la conferma?

Un moderno RDBMS in un hardware decente può facilmente arrivare a 1K transazioni al secondo. Sono circa 86 milioni di transazioni al giorno. Il tempo di conferma? Dipende dalla dimensione della transazione (quante tabelle e righe influisce) ma per una piccola transazione del tipo bitcoin (rimuovi 42 monete dal conto A e aggiungi 42 monete al conto B), saranno millisecondi.

In conclusione, la differenza di volumi e tempo è oggi da 1000 a 100000 volte.

Se la tecnologia blockchain risolverà questo problema in futuro, potrebbe essere possibile utilizzarlo in applicazioni di volume medio o alto. Siamo in grado di leggere discussioni e suggerimenti su come risolvere il problema - molte delle aziende menzionate nei collegamenti stanno effettivamente lavorando a questi problemi - ma non abbiamo ancora visto una soluzione o un prodotto reale che offra volumi e velocità elevati.


un altro problema che ho con la blockchain è che è incoerente. È tutto sotto carico e il client che elabora le transazioni non è "dedicato", quindi potresti vedere un sacco di abbandoni o essere aggiunto. 8 minuti sembra giusto, forse gli ultimi 10 minuti sono stati un minuto o due in più per l'approvazione per raggiungere tutti i clienti? Non sono sicuro, chissà con più nodi forse è andato giù! Ad ogni modo ottimi collegamenti. Grazie.
Ali Razeghi,

2
Questo articolo technologyreview.com/s/540921/… afferma che esiste un limite concettuale di sette transazioni al secondo.
a_horse_with_no_name

Le catene laterali di @a_horse_with_no_name possono facilmente ridimensionarsi senza limiti rigidi e rimane da sincronizzare con la blockchain bitcoin, che può essere gestita in modo trasparente.
jangorecki,

16

Conosco molto bene criptovaluta e database e posso dirti che non è affatto un ottimo motore DB.

Utilizzo della blockchain come database live:

Pensalo come una prima forma normalizzata senza capacità di ricerca o indicizzazione davvero valide per quanto riguarda la blockchain. Fondamentalmente un foglio Excel senza alcuna capacità di calcolo che ti offre solo capacità di "lettura / scrittura" con molte verifiche e validazioni. Una blockchain è un ottimo modo per convalidare e correggere i tuoi dati prima di metterli in un database che ti consente di interrogarli in modo diverso, indicizzarli, ecc.

Vantaggi della blockchain:

La blockchain in questo caso è puramente un libro mastro e un'API per richieste PUT e GET. Questo è tutto. La blockchain è interessante perché è necessaria la maggior parte dei nodi per passare la transazione come valida e non ci sono rollback, una volta eseguito il commit viene eseguito il commit. Pertanto, se qualcuno tenta di effettuare una transazione falsa, verrà catturato a meno che la persona che lo fa non abbia un pool con una forte maggioranza. Quindi possono convalidarlo nel loro pool prima che qualcuno possa rifiutarlo. Questo è il punto di forza della blockchain. Verifica che i dati siano accurati. In genere è anche piuttosto lento. Stai guardando circa 10 minuti a carico normale per essere convalidato. Sotto carico pesante il tempo aumenta un po '.

Dopo aver verificato che le transazioni sono valide e non fraudolente utilizzando la blockchain, puoi quindi importare quei dati in un database e lavorare con esso come preferisci. Ho una certa esperienza con questo, ma noto che ogni singola transazione sull'attuale architettura bitcoin verrà registrata, quindi ha alcune informazioni interessanti da analizzare.

Richiesta di dati dallo schema blockchain in un DBMS:

Ecco il diagramma bitcoin che puoi usare per creare lo schema in PostgreSQL. Usandolo puoi quindi inserirlo in un DBMS relazionale: https://bitcointalk.org/index.php?topic=38246 inserisci qui la descrizione dell'immagine

Questo repository di codice è utile anche se si desidera importare i dati in un RDBMS reale: https://github.com/bitcoin-abe/bitcoin-abe

Per quanto riguarda quale DBMS dovresti inserirlo, dipende dal tuo caso d'uso. Se si desidera analizzare gli ID transazioni / portafoglio per vedere alcuni schemi o fare funzionare la BI, consiglierei un DB relazionale. Se vuoi impostare un ingest live con più criptovalute, consiglierei qualcosa che non ha bisogno del registro delle transazioni, quindi una soluzione MongoDB sarebbe buona. Non penso che tu debba preoccuparti della ricerca elastica a meno che tu non voglia iniziare a registrare dal vivo tutti i criptovaluti allo stesso tempo e lo userai per fare trading automatico o qualcosa di altrettanto folle. :)


8

Nel 2014 abbiamo creato ascribe.io con la premessa di utilizzare Bitcoin come database per i reclami sulla proprietà intellettuale. Al momento del rilascio, abbiamo collegato la rete perché non era in grado di gestire la velocità effettiva, la latenza era di almeno 10 minuti ed eravamo limitati da ciò che potevamo inserire in OP_RETURN, costringendoci a memorizzare il file digitale effettivo relativo al reclamo in Amazon S3 . Ci siamo resi conto che Bitcoin nella sua forma attuale non potrebbe mai essere un database di transazioni elevato.

Ma l'idea se potessimo avere un database in stile blockchain - controllo decentralizzato, immutabilità (resistenza alla manomissione) e risorse attive sulla rete bloccati con noi. Quindi, a metà 2014, abbiamo iniziato a lavorare su BigchainDB

Per farla breve: possiamo elaborare 100k tps con latenza 100mS e avere petabyte di capacità. Il codice è il nostro BigchainDB Github, la documentazione tecnica qui e il pensiero di base nel nostro white paper .

Se hai un caso d'uso per un database decentralizzato con transazioni elevate, abbiamo creato BigchainDB proprio per questo.


2

Blockchain derivato da Bitcoin è lento e costoso; la quantità di dati che possono essere memorizzati in un blocco è molto modesta. I meccanismi alla base delle blockchain (distribuire registri) hanno lo scopo di fornire un archivio di dati incorruttibile, altamente replicato; peer to peer è meno una caratteristica essenziale di un "requisito politico" per evitare l'apparenza di controllo centrale. Ho lavorato per circa 18 mesi per produrre un libro mastro distribuito ad alte prestazioni (vedi metrognomo.com per un'istanza) che prende il meno possibile da Bitcoin. Alla fine, tuttavia, un libro mastro distribuito assomiglia più o meno a un file sequenziale che può essere aggiunto ma non modificato dopo l'aggiunta. Questa è una cosa preziosa per alcune applicazioni, ma non quello che la maggior parte della gente pensa come un database.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.