Il difetto dell'IPFS

Quando si tratta di archiviazione decentralizzata dei dati, l’InterPlanetary File System, noto come IPFS, è un progetto che non può essere aggirato.

Essendo uno dei progetti di archiviazione decentralizzata più importanti, IPFS utilizza la struttura dati del Merkle DAG (Directed Acyclic Graph), una modifica basata sul Merkle Tree. Con questa struttura dati, IPFS implementa l'indirizzamento del contenuto e il download di frammenti di file.

Nello specifico, IPFS assegna un valore hash univoco a ciascun file, simile all'impronta digitale di un file. Ogni file radice punta a più file nodo e, una volta che il contenuto di un file nodo cambia, il valore hash cambia di conseguenza, causando la modifica anche dell'hash del file root.

In questo modo, IPFS archivia e trova i file in un indirizzamento univoco basato sul contenuto anziché sull'indirizzo. Ciò significa che se stai cercando un file, non hai bisogno di sapere dove si trova, ma solo cosa contiene. IPFS genera un hash univoco per ogni file e quando l'utente deve recuperare questo file, deve solo chiedere a IPFS chi ha questo hash per completare il recupero. Poiché gli hash impediscono l'archiviazione duplicata, i file con lo stesso contenuto non vengono duplicati da IPFS. Questo approccio ottimizza l'archiviazione e migliora le prestazioni della rete.

Il meccanismo di indirizzamento dei contenuti è uno dei principali vantaggi di IPFS, ma ogni medaglia ha due facce e presenta anche uno svantaggio. In IPFS, una volta archiviato un file, non può essere modificato nel sistema perché la modifica del contenuto del file modifica l'hash del file e l'utente non riesce a trovare il file modificato in base al valore hash originale. Questo è un punto dolente ampiamente criticato: IPFS non è in grado di archiviare file che devono essere aggiornati e modificati di volta in volta.

Sebbene IPFS funzioni bene per l'archiviazione di file statici, manca della capacità di calcolo e di gestione dello stato per funzionalità più avanzate simili a database come mutabilità, controllo della versione, controllo degli accessi e logica programmabile, necessarie per consentire agli sviluppatori di creare servizi decentralizzati completi di tutte le funzionalità. applicazioni. Pertanto, esiste un urgente bisogno di una soluzione efficiente e decentralizzata per archiviare dati dinamici: Ceramic risolve questo problema con un database simile a NoSQL per consentire agli sviluppatori di archiviare contenuti strutturati e modificabili.

Costruito per contenuti mutevoli

Il design dello storage di Ceramic si basa su IPFS e lo estende con un livello di storage dinamico decentralizzato.

Su Ceramic, ogni informazione è rappresentata come un registro di commit di sola aggiunta, chiamato "Stream", che viene mostrato come la combinazione di quadrati grigi nella figura seguente. Lo Stream è concettualmente simile agli alberi Git: lo stato iniziale (Genesis Commit) e ogni successiva modifica (Commit) sono tutti archiviati in IPLD (InterPlanetary Linked Data, il livello di IPFS dedicato alle strutture dati), e questi record sono combinati per formare un Flusso. Poiché gli Stream registrano "modifiche" anziché "istantanee" dello stato risultante, è necessario solo elaborare tutti gli eventi sullo Stream per ottenere lo stato più recente del registro.

Ad esempio, il modello record di Ceramic è il seguente: inizialmente, Alice e Bob hanno $ 10 ciascuno; il secondo giorno, Alice trasferisce $ 5 a Bob; il terzo giorno, Bob trasferisce $ 3 ad Alice. Anche questo è molto simile a un registro blockchain, in cui il registro non indica il saldo di ciascun utente e tutti i processi intermedi devono essere calcolati per ottenere il saldo finale dell'utente.

In confronto, il modello di record tradizionale di IPFS è: nel file a, Alice e Bob hanno ciascuno $ 10; nel file b, Alice ha $ 5 e Bob ha $ 15; e nel file c, Alice ha $8 e Bob ha $12. In questo caso, ogni record è un'istantanea dello stato risultante e una nuova istantanea deve essere generata non appena si verifica una modifica.

Grazie a questo design, Ceramic garantisce che ogni registro abbia un ID flusso univoco, con una denominazione uniforme globale e che non vengano apportate modifiche al nome a causa di modifiche del contenuto. Ogni scrittura richiede l'autorizzazione dell'utente e l'intero processo è simile alla contabilità blockchain, tranne per il fatto che ciò che viene scritto non sono dati di transazione, ma altri contenuti modificabili, come le informazioni sull'account utente.

Componibilità dei dati

La ceramica raggiunge la componibilità dei dati tra applicazioni diverse principalmente attraverso l'uso di una nuova astrazione, chiamata modelli di dati.

I modelli di dati rappresentano in genere una singola funzionalità logica dell'applicazione come un profilo utente, un grafico sociale o un blog. Ad esempio, puoi immaginare che ogni implementazione decentralizzata di Twitter venga eseguita su alcuni modelli di dati condivisi: uno per i tweet di ciascun utente, uno per il suo grafico sociale, uno per i suoi DM, ecc. Adottando gli stessi modelli di dati sottostanti, le applicazioni sono in grado per interagire nativamente sugli stessi dati.

In un certo senso, puoi confrontare l’uso da parte di Ceramic degli standard del modello di dati con l’uso degli standard dei token per i registri delle risorse. Su Ethereum, ad esempio, l’introduzione degli standard dei token fungibili ERC20 e dei token non fungibili ERC721 hanno dato origine a interi ecosistemi di token e applicazioni finanziarie che interagiscono nativamente. La ceramica trasferisce questo stesso concetto ai dati.

Ceramic adotta un approccio guidato dalla comunità per creare questi modelli di dati, consentendo a qualsiasi sviluppatore di definire, condividere e riutilizzare facilmente i propri modelli con altri sviluppatori nell'ecosistema. Man mano che la community crea sempre più modelli di dati, vedrai una continua espansione nella quantità e nella varietà di applicazioni create con dati componibili.

La componibilità eseguita in questo modo migliora anche l'esperienza dello sviluppatore. Costruire un'applicazione su Ceramic è come esplorare un mercato di modelli di dati, collegarli alla tua app e ottenere automaticamente l'accesso a tutti i dati sulla rete archiviati in questi modelli. Utilizzando Ceramic, gli sviluppatori non dovranno preoccuparsi di avviare la propria applicazione con i propri utenti e dati isolati. Il tasso di integrazione dell’innovazione tra gli sviluppatori accelererà notevolmente.

Scalabilità

Ceramic raggiunge la scalabilità attraverso un ambiente di esecuzione frammentato. Tutti i flussi su Ceramic mantengono il proprio stato in modo indipendente e i nodi della rete eseguono transazioni di flusso in parallelo. Questo approccio, a differenza della maggior parte delle blockchain, consente a Ceramic di operare con la scalabilità richiesta per le versioni decentralizzate di applicazioni social come Twitter o Facebook.

A differenza dei tradizionali sistemi blockchain in cui la scalabilità è limitata a un singolo ambiente di esecuzione virtuale globale e lo stato di un singolo registro è condiviso tra tutti i nodi, ciascun nodo Ceramic agisce come un ambiente di esecuzione individuale per eseguire calcoli e convalidare transazioni sui flussi: non esiste un ambiente di esecuzione globale registro. Questo sharding di esecuzione “integrato” consente alla Ceramic Network di scalare orizzontalmente per parallelizzare l’elaborazione di un numero crescente di transazioni di flusso simultanee all’aumentare del numero di nodi sulla rete. Un progetto di questo tipo è necessario per gestire la portata dei dati mondiali, che è ordini di grandezza maggiore del throughput necessario su una blockchain finanziaria. Un altro vantaggio di questo progetto è che un nodo ceramico può eseguire transazioni di flusso in un ambiente prima offline e successivamente sincronizzare gli aggiornamenti con il resto della rete quando torna online.

Soluzione DID

Ceramic offre anche una soluzione di identità flessibile e solida chiamata IDX, la prima soluzione di identità decentralizzata (DID) completamente funzionale.

IDX è un protocollo di identità cross-chain per applicazioni aperte con identità decentralizzata e dati utente interoperabili, che consente agli utenti di creare un'identità digitale unificata composta da tutti i loro dati, consentendo allo stesso tempo agli sviluppatori di abbattere i silos e condividere liberamente i dati utente tra le applicazioni. Come mostrato nella figura seguente, fornisce un indice decentralizzato che consente di associare i dati strutturati a un identificatore decentralizzato (DID) e i dati sono definiti da definizioni e archiviati in record.

Inoltre, IDX può essere utilizzato con qualsiasi tipo di archivio dati come Ceramic, Textile, OrbitDB, IPFS, Sia, Arweave, registri blockchain o anche database centralizzati e supporta l'autenticazione da qualsiasi tipo di portafoglio Web3.

IDX è ottimo per associare profili utente, grafici sociali portatili, punteggi di reputazione, affermazioni verificabili, contenuti generati dagli utenti, dati di applicazioni, impostazioni, nomi di dominio, indirizzi blockchain e account social Web2 a un utente in modo decentralizzato.

Conclusione

In sintesi, l’emergere di Ceramic ha notevolmente potenziato la costruzione di Web3 e sbloccato nuove funzionalità per gli sviluppatori Web3. Indipendentemente da quale blockchain pubblica (Ethereum, BSC, Polygon, Avalanche, ecc.) si stiano basando, gli sviluppatori possono sfruttare simultaneamente Ceramic per funzioni incentrate sui dati per migliorare le loro applicazioni. Inoltre, attraverso il sistema di account flessibile basato su DID di Ceramic, Ceramic si interfaccia naturalmente con i sistemi di account e chiave delle attuali principali blockchain, il che offre agli utenti grande comodità.

Fa piacere vedere che sono già tanti i progetti di piattaforme social DID e Web3 sviluppati su Ceramic. Tra questi per citare alcuni progetti degni di nota: CyberConnect, una piattaforma middleware di social graph; Orbis, una piattaforma Twitter Web3; e The Convo Space, una piattaforma di messaggistica istantanea, ecc. Attendiamo con impazienza le nuove possibilità che l’infrastruttura della rete dati di Ceramic può portare al livello dell’applicazione Web3.

Dichiarazione di non responsabilità: questa ricerca è solo a scopo informativo. Non costituisce un consiglio di investimento o una raccomandazione ad acquistare o vendere qualsiasi investimento e non deve essere utilizzato nella valutazione del merito di qualsiasi decisione di investimento.

🐦 @chestersigned

📅8 maggio 2022

Collegamenti:

https://developers.ceramic.network/learn/welcome/

https://blog.ceramic.network/what-is-ceramic/

https://multicoin.capital/2022/02/16/the-composable-web3-data-network/

https://blog.ipfs.io/2021-07-13-ceramic-mainnet-launch/