logo
Un breve riassunto di tutto quel che riguarda Substrate e Polkadot

Un breve riassunto di tutto quel che riguarda Substrate e Polkadot

In Parity, siamo attualmente concentrati sullo sviluppo di tre principali tecnologie: Parity Ethereum (Eth 1.0 e Serenity), Parity Substrate e il progetto della Web3 Foundation, Polkadot. In definitiva, i nostri obiettivi con questi progetti è quello di rendere concreta la visione di ciò che viene considerato il Web3, tramite “un insieme inclusivo di protocolli per fornire elementi costitutivi per i realizzatori di applicazioni. Questi elementi prendono il posto delle tecnologie web tradizionali come HTTP, AJAX e MySQL, presentando un modo completamente nuovo di creare applicazioni. Queste tecnologie daranno all'utente garanzie sicure e verificabili sulle informazioni che stanno ricevendo, quali informazioni stanno inviando, cosa stanno pagando e cosa stanno ricevendo in cambio. Consentendo agli utenti di agire autonomamente all'interno dei mercati con poche limitazioni, garantiamo che la censura e la monopolizzazione avranno meno posti dove nascondersi" (Gavin Wood).

Leggi di più sulla visione di Web3 nel post originale di Gavin del 2014 e l'articolo di follow-up del 2017.

Ormai, esiste già una vasta base di informazioni sia su Polkadot che su Substrate. Questo articolo intende fare un riassunto e dare uno sguardo più approfondito alle due tecnologie per capire dove ci stiamo dirigendo e il perché, mostrando anche come le reti pubbliche come Ethereum o Zcash si possano ben inserire nel quadro della situazione.

Origini

Il Dr. Gavin Wood ha concepito l'idea originale per Polkadot nel 2016 in attesa di una nuova specifica di Ethereum che includesse lo sharding. Già allora, era chiaramente necessaria per una beacon/relay chain principale la possibilità di collegare gli shards e coordinare il messaggio in transito.

(Una narrazione di prima mano su come è nato Polkadot può essere trovata nell’episodio 259 di Epicenter.)

Facendo un ulteriore passo in avanti, Gavin ha ideato un sistema in cui gli shard collegati alla relay chain non fossero tutti uguali, ma che consentivano ai diversi nodi di eseguire diverse logiche applicative, rendendo ogni chain la propria piattaforma.

Ciò aumenterebbe la difficoltà del sistema complessivo e sarebbe molto più complicato da costruire. La chiave mancante per realizzare questa visione è stata trovata in WebAssembly: una specifica di macchina generica e astratta che potrebbe mediare tra blockchain con runtime diversi (la logica di applicazione delle chain).

La creazione di un sistema in cui le blockchain potessero coesistere e completarsi a vicenda potrebbe avere il potenziale per superare il massimalismo delle chain, in cui le blockchain competono per essere la migliore e la definitiva.

Se tutti gli shard di un sistema sharded potessero avere compiti diversi, essi permetterebbero un ecosistema di shard molto specializzati (cioè blockchain), senza i soliti compromessi che avvengono con blockchain specializzate e anche con i sistemi in generale. Diamo un'occhiata più da vicino.

L'interoperabilità come chiave per la specializzazione

In questo momento, parecchie blockchain cercano di fare un po’ qualunque cosa, incorporando di tutto, gli smart contract, una valuta, una governance, e altro ancora. Se costruite la vostra applicazione su di una di queste blockchain, siete legati ai limiti della piattaforma, colli di bottiglia e alle decisioni della governance. D'altra parte però, potreste trarre beneficio dalla base di utenti di quella blockchain..

Lasciando che chain specializzate scambino messaggi con altre chain specializzate, siamo in grado di recuperare gli effetti di rete che normalmente le ostacolerebbero..

Polkadot utilizza la relay chain per consentire il passaggio arbitrario di messaggi tra blockchain nel suo ecosistema.. La relay chain è abbastanza generica da permettere alle chain adiacenti, che chiamiamo parachain, di avere la propria logica applicativa. Si ha la libertà di scrivere la propria parachain in qualsiasi linguaggio (Rust, C/C++, C#, Go, ecc.). Basta solo implementare una specifica funzione di interfaccia che Polkadot può richiamare all’interno, permettendo la gestione dei messaggi che passano nella chain.

Polkadot collega una serie di blockchain, da generiche ad app-specifiche, per creare una piattaforma che consente applicazioni più avanzate. Alcuni esempi di tali applicazioni avanzate che sfruttano il passaggio del messaggio arbitrario cross-chain:

  • Servizio Oracle che inserisce i dati del mondo reale nella chain
  • Sistema di gestione dell'identità per collegare l'identità dell'utente in più app
  • Exchange decentralizzato a order books ed escrow
  • Rete IoT che riceve messaggi da altre reti o controller
  • Smart contract cross-chain
  • Messaggi che passano tra chain private e pubbliche

Scalabilità

Quando risolviamo il dilemma della specializzazione vs. generalizzazione introducendo l'interoperabilità, eliminiamo anche i colli di bottiglia della scalabilità. Oltre al throughput di transazione, le piattaforme di smart contract completamente generalizzate e indipendenti hanno un problema con la collisione di transazione. Di conseguenza, le operazioni sono spesso eseguite in sequenza anziché in parallelo. Attraverso una delega deliberata di compiti a diverse parachain, siamo in grado di eseguire transazioni in parallelo, senza timore di collisione.

Nella versione uno di Polkadot, questo significa che decine di blockchain possono agire in parallelo, collegate attraverso una relay chain. Il processo di sviluppo è ancora in corso; attualmente stimiamo che la relay chain sarà in grado di ospitare circa un centinaio di parachain, ma è immaginabile qualsiasi cosa tra dieci e mille slot.. Nel caso di decine di blockchain in grado di funzionare in parallelo, quel sistema avrebbe circa cento volte la scalabilità di un attuale sistema PoS.

Potenzialmente, una versione due di Polkadot potrebbe avere più relay chain collegate alla relay chain radice (livello zero). Ciò è particolarmente possibile dato che la relay chain di Polkadot è sviluppata con Substrate, lo stesso stack tecnologico con cui verrà costruita la maggior parte delle parachain. Con queste relay chain di livello uno, stiamo considerando una scalabilità da 1.000 a 10.000x rispetto agli attuali sistemi PoS. Tuttavia, questo sarà valutato solo in un secondo momento.

Sicurezza

Superare le limitazioni intrinseche dei singoli progetti blockchain sembra promettente finora, ma non abbiamo ancora discusso gli aspetti di sincronizzazione e consenso in un tale sistema. Polkadot consente la comprensione deterministica dei messaggi che passano tra parachain, ma come viene determinato l'ordine delle transazioni nella rete globale? Come è garantita la sicurezza in ogni parachain, ma anche in tutto il sistema? A prima vista, potrebbe non sembrare un problema. Se si collegano chain diverse, ognuna di esse porta il proprio set di validatori per rendere sicura la chain, come nel caso di scenari multi-chain ben noti come sidechain o Cosmos.

Sicurezza condivisa

Il primo problema che viene in mente quando due chain comunicano tra loro potrebbe essere il seguente scenario. Una transazione viene inviata da una chain PoS a un'altra. La chain 1 ha garanzie di sicurezza economica più deboli rispetto alla sua finalità. In un attacco, la transazione viene annullata e il blocco che la contiene viene abbandonato. La chain 1 vive su di un bivio differente, con il blocco corrispondente che non include più quella transazione.

Ma il suo valore effettivo è già stato trasferito alla chain 2. La minor sicurezza della chain 1 ha influenzato direttamente la chain 2. Effettivamente, questo apre la possibilità di attacchi ad entrambe le chain.

Immaginate non due, ma cento chain interconnesse con livelli individuali di sicurezza degli scambi differenti. La chain con la sicurezza minore definisce quindi la sicurezza del sistema nel suo complesso, e ne rappresenta l'anello più debole. È quindi preferibile avere le stesse garanzie di sicurezza per tutte le parachain. Ciò può essere ottenuto mettendo in comune la loro sicurezza che verrà delegata alla relay chain di Polkadot.

Il modello di sicurezza di Polkadot unisce le risorse, contrastando il problema dell'anello più debole della rete.

Inoltre, ogni validatore può solo impiegare una determinata quantità di risorse (potenza computazionale in PoW, o una partecipazione finanziaria in stake in PoS), aggravando il problema dell’anello più debole. Quando i validatori iniziano a mettere in sicurezza chain diverse, alcune di esse, prima di tutto quelle con strutture di incentivazione meno attraenti, finiscono con una minore sicurezza economica, rendendosi un obiettivo più facile per gli attori malintenzionati.

Un altro vantaggio della sicurezza condivisa è che non è necessario avviare una comunità di validatori per rendere sicura la vostra blockchain, ma ci si può concentrare completamente sui veri obiettivi della chain (per esempio il runtime), lasciando parte degli aspetti di sicurezza per la relay chain di Polkadot.

Facilitare lo sviluppo di blockchain

Quello che abbiamo imparato finora è che Polkadot è un protocollo multichain eterogeneo, che consente l'interoperabilità blockchain e la sicurezza condivisa delle parachain. Ora vediamo come possiamo sfruttare appieno le possibilità di Polkadot rendendo lo sviluppo effettivo delle parachain il più semplice possibile.

Quando abbiamo iniziato a realizzare Polkadot a Parity, ci siamo resi conto che stavamo ripetendo un sacco di sviluppo che avevamo fatto per i nostri clienti su Ethereum e Bitcoin, come la scrittura di componenti RPC e database. Persino le blockchain più specializzate hanno molti attributi in comune: un algoritmo di hashing, un database, il networking, ecc.

Mentre l'ideazione o la progettazione di una singola blockchain è un conflitto tra versatilità e specializzazione, il processo di creazione di molte chain diverse porta ad un altro tipo di compromesso. In un sistema con shard omogenei, il sistema può essere scalato duplicando gli shard. Con shard eterogenei come in Polkadot, ognuno di essi deve essere progettato e implementato individualmente, rendendo il processo di sviluppo di per sé non scalabile.

Substrate: un framework per costruire in modo efficiente diverse blockchain

Al fine di costruire in modo efficiente molte diverse blockchain, gli sviluppatori di Parity hanno messo tutte le funzionalità necessarie per costruire una blockchain in un framework chiamato Substrate. L'idea era di prendere tutto ciò che era stato imparato realizzando implementazioni su Ethereum e Bitcoin e rendere la creazione di una blockchain più facile e flessibile possibile. Substrate è stato creato in modo modulare per dare libertà tecnica, ma anche per rendere le funzionalità come gli account, i saldi, la governance e gli smart contract facili come collegare una libreria.

Nelle parole del co-fondatore di Polkadot Robert Habermeier, Substrate è: "un insieme di librerie per fare tutte le cose che sono davvero noiose nello scrivere blockchain." Substrate separa efficacemente le singole funzionalità di una blockchain come moduli e li generalizza abbastanza in modo che possano ancora essere utilizzati in modo efficace per diversi scenari, mentre la loro gestibilità consente l'implementazione immediata. Substrate è stato sviluppato per creare blockchain che si collegheranno facilmente a Polkadot.

Dal portatile nuovo di fabbrica ad una blockchain completamente funzionante in 30 minuti - Dr. Gavin Wood presenta Substrate sul palco al Web3 Summit 2018, Berlino.

Progettato per la massima libertà tecnica e facilità di sviluppo

L'architettura multilayer di Substrate consente agli sviluppatori di scegliere tra facilità di sviluppo e libertà tecnica. I tre layer sono Substrate Core (con integrazione Polkadot-Core), Substrate SRML e Substrate Node.

Per creare una blockchain e collegarla a Polkadot, tecnicamente, si potrebbe costruire la propria blockchain da zero e dotarla di una funzione di convalida blocco in WebAssembly. Da zero significa che è necessario implementare il proprio nodo, la sincronizzazione RPC, la rete, la crittografia, il database, l'archiviazione, il consenso, nonché funzionalità estese come un client leggero e la telemetria. Questo approccio puro e semplice è noto come Polkadot Core.

Se non si desidera creare tutto ciò da zero, si può iniziare con Substrate Core. Substrate Core fornisce tutte le funzionalità di cui sopra, richiedendo solo di codificare il proprio runtime (funzione di transizione di stato), ma offre anche la possibilità di personalizzare la rete, la creazione di blocchi e la funzionalità di coda di transazione.

Se si decide di utilizzare il Substrate Runtime Module Library (SRML), allora tutto quello che si deve fare è scegliere i moduli necessari dalla libreria e configurarli con i parametri desiderati. La tua blockchain funzionerà con strumenti come il tracking degli eventi e un blockchain explorer. Inoltre, è possibile modificare i moduli esistenti o scrivere i propri, se necessario.

L'equivalente del servizio in camera dello sviluppo blockchain è Substrate Node. Con Substrate Node, si ottiene una blockchain a smart contract completa unicamente fornendo un file di configurazione JSON.

Substrate offre gli strumenti per sviluppare rapidamente la propria blockchain senza dover gestire la complessità dietro ogni funzionalità. Scopri di più su cosa è possibile avere con Substrate.

Polkadot non è Substrate non è Polkadot

Anche se Substrate rende molto facile costruire blockchain pronte per Polkadot, le blockchain nella rete Polkadot non necessitano di essere realizzate con Substrate. E anche se non vuoi che la tua blockchain si connetta a Polkadot, troverai comunque in Substrate un framework molto utile per creare una blockchain all'avanguardia.

In futuro, potrebbero esserci framework ridondanti a Substrate, ottimizzati anche per l'integrazione con Polkadot, che danno agli sviluppatori un'alternativa o si potrebbe ancora poter costruire la propria parachain da zero.

Per ulteriori informazioni su come Polkadot e Substrate si relazionano, guarda il discorso di Fabian Gompf dal meetup Devcon IV Parity & Polkadot.

Integrazione di blockchain esistenti

Substrate e Polkadot non sono destinati a sostituire l'infrastruttura esistente. Piuttosto, servono a collegarla e colmare le lacune per quanto riguarda le possibilità ingegneristiche. Le parachain di Polkadot richiedono più impegno delle Dapp basate su smart contract e alcune applicazioni non giustificano la creazione di un’intera parachain, mentre altre sì. Ciò dipende dallo scopo di ogni applicazione e deve essere valutato ogni volta individualmente. A differenza delle parachain, gli smart contract rappresentano un ambiente sandbox e richiedono meno misure di sicurezza. Si può sostenere che le parachain sono ottimizzate per l'_inter_operabilità (comunicazione tra applicazioni/chain separate), mentre gli smart contract sono ottimizzati per l'_intra_operabilità (comunicazione all'interno di una chain runtime).

Le parachain, le blockchain della rete Polkadot, sono messe in sicurezza dalla relay chain di Polkadot e quindi non sono in grado di selezionare il proprio meccanismo di consenso. Se una blockchain vuole usare il proprio meccanismo di consenso, può usare una parachain come "bridge" per connettersi alla rete di Polkadot.

Una chain bridge permette ad una blockchain indipendente come Ethereum, con il suo particolare meccanismo di consenso, di connettersi alla rete Polkadot. Al contrario delle parachain, dove la sicurezza è in comune, una rete come Ethereum mainnet mantiene il proprio sistema di sicurezza indipendente.

Possibilità diverse di chain basate su Substrate

Il sistema di sicurezza in comune delle parachain in questo caso si estende solo al bridge, mentre Ethereum, connesso all'altro lato del bridge, è più assimilabile ad una sidechain con la capacità reciproca delle chain di interpretare le rispettive intestazioni dei blocchi, la transizione di stato e la finalità.

Per finalità in una blockchain Proof-of-Stake (PoS) si intende la condizione in cui il ripristino allo stato precedente si tradurrebbe in una notevole quantità di token in stake che incorrono nello slashing perché la maggioranza dei validatori della chain ha approvato lo stato finale. Sebbene l'annullamento di un blocco finalizzato sia tecnicamente possibile, esso rappresenterebbe un grande errore da parte del set di validatori. Non è possibile avere questo tipo di finalità - dove il ripristino rappresenta un errore da parte di una maggioranza dei validatori - in una chain PoW perché l'insieme dei validatori (miner) è teoricamente infinito. Le chain PoW, quindi, hanno finalità "probabilistica", perché ad un certo punto la probabilità di ripristino è considerata trascurabile.

Le chain bridge che hanno finalità probabilistica avranno anche implicazioni sulla latenza. Ciò significa che sarà necessario attendere un certo periodo di tempo per avere una transazione completa per esempio da Ethereum verso la relay chain. Le transazioni interne e provenienti dalla rete Polkadot con la sua finalità adattiva e progressiva possono essere invece completate molto più velocemente, quasi istantaneamente. Ciò comporta tempi di attesa per una transazione che esce da una chain bridgiata, ma quasi nessuna attesa per tutte le altre transazioni nella rete Polkadot.

Aggiornamenti di runtime forkless

Finora sono state evidenziate le implicazioni dell'interoperabilità di Polkadot su scalabilità e sicurezza. Tuttavia, è importante sottolineare ciò che accade nel caso di un fork. Una volta che le blockchain diventano interdipendenti, un fork ha un impatto tremendamente maggiore rispetto al caso di uno split di rete silos in due singole reti silos. Questo è vero per la relay chain così come per le parachain e ci porta a una delle caratteristiche più interessanti di Substrate, l'aggiornamento di runtime forkless.

Aggiornamenti di rete - la pratica comune

La pratica comune per l'aggiornamento di una rete blockchain è quella di cambiare le regole del protocollo sottostante. Questo viene fatto per introdurre nuove funzionalità o modificare le regole esistenti. Se l'aggiornamento non è compatibile con le versioni precedenti, questo forza i nodi ad aggiornarsi per continuare a partecipare alla versione corrente della rete. I nodi che non si aggiornano non saranno in grado di comprendere le nuove regole e saranno separati dalla rete, eventualmente formando una rete alternativa. Mentre i fork temporanei avvengono a causa della rete alla ricerca del consenso, i fork permanenti pianificati avvengono a causa di aggiornamenti della rete intenzionali. Si tratta essenzialmente di aggiornare la rete con un reset, il che è impraticabile in un ambiente interoperabile. La relay chain di Polkadot è il tornello di un ecosistema multichain eterogeneo, è facile quindi immaginare i problemi causati dall'avere due versioni della relay chain.

Aggiornamenti di rete - il metodo Substrate

Dal momento che Polkadot è realizzato su Substrate, si può utilizzare una pratica caratteristica di Substrate per aggirare i fork nella relay chain e anche ogni altra blockchain realizzata con Substrate. Come funzionano gli aggiornamenti on-chain su Substrate?

Se un blocco viene prodotto e propagato attraverso la rete, i nodi Substrate eseguiranno quel blocco dopo aver eseguito vari controlli generici su di esso. L'esecuzione di un blocco è compiuta dai nodi Substrate, ma l'impulso per farlo deriva dal runtime della chain.

Cosa implica l'esecuzione di un blocco? Una volta che il blocco è determinato valido per consenso, un nodo inizierà ad eseguire le transizioni di stato che contiene. In caso di successo, il nodo memorizzerà il blocco. Durante l'elaborazione delle transizioni di stato, il nodo accede effettivamente al suo database di archiviazione ad albero di Merkle, che è fondamentalmente un archivio di key-value. Substrate opera su questo archivio con le funzioni di base set_state e get_state. Ci può essere un caso speciale per set_state, vale a dire key :code e, in questo caso, Substrate prevede di essere fornito con un runtime WebAssembly (Wasm). Poiché il runtime della blockchain viene eseguito in Wasm stesso, esso può essere descritto come un nuovo blob binario di codice Wasm. Questa parte di codice verrà eseguita come parte delle transizioni di stato, causando l'aggiornamento del runtime come specificato nel blob.

Ogni volta che Substrate esegue un blocco, viene controllata la propria versione del codice, potendo passare dal runtime nativo al runtime Wasm on-chain nel caso in cui il nodo non stia eseguendo la versione più recente.

La governance on-chain svolgerà un ruolo importante in Polkadot. I meccanismi per governare la rete sono in fase di progettazione e saranno centrati su schemi di voto basati sullo staking. Diverse misure aggiuntive come un consiglio, la ponderazione dei voti, sistemi alternativi di conteggio dei voti e il voto delegato garantiranno che i processi di governance siano efficienti, realizzabili nella pratica e che rispettino sufficientemente le opinioni delle minoranze nella rete. La governance deve essere vincolante e le decisioni provenienti dai referendum devono essere emanate direttamente on-chain, richiedendo il runtime di Polkadot per l'aggiornamento.

Il meccanismo di governance di una chain può essere responsabile del :code key. Ciò significa che gli aggiornamenti di runtime possono essere attivati solo da decisioni di governance. Ad esempio, in caso di esito positivo del voto, la key predefinita viene automaticamente inserita nell'insieme delle transizioni di stato, rendendo vincolanti le decisioni di governance sulla chain.

In conclusione

L'articolo ha ripreso i concetti fondamentali dietro a Polkadot e Substrate, come sono nati, e cosa possono significare per l'ecosistema blockchain nel suo complesso. Come abbiamo visto, Substrate e Polkadot si completano perfettamente a vicenda. Mentre quest'ultimo permette di collegare chain altrimenti disparate e con caratteristiche diverse, Substrate ci permette di creare queste chain in modo efficiente, sicuro e relativamente facile.

TL;DR

  • Polkadot è un protocollo multichain eterogeneo. Ciò significa che gli shard connessi alla relay chain non sono tutti uguali, ma consentono ai diversi nodi di eseguire diverse logiche applicative, rendendo ogni chain la propria piattaforma. Se tutti gli shard in un sistema sharded possono avere compiti diversi, si ha un ecosistema di shard molto specializzati (cioè blockchain).
  • Lasciando che chain specializzate scambino messaggi con altre chain specializzate, siamo in grado di recuperare gli effetti di rete che di solito le ostacolano. Polkadot connette una serie di blockchain, da generali a app-specifiche, per creare una piattaforma che consente applicazioni più avanzate.
  • Risolvendo il dilemma della specializzazione vs. generalizzazione introducendo l'interoperabilità, vengono anche eliminati i colli di bottiglia della scalabilità.
  • Il modello di sicurezza di Polkadot mette in pool le risorse, contrastando il problema dell'anello più debole della rete. Le parachain (blockchain nella rete Polkadot) sono protette dalla relay chain di Polkadot e quindi non sono in grado di selezionare il proprio meccanismo di consenso. Un altro vantaggio della sicurezza in pool è che non è necessario avviare una comunità di validatori per mettere in sicurezza la propria blockchain.
  • Se una blockchain vuole usare il proprio meccanismo di consenso, può usare una parachain come "bridge" per connettersi alla rete di Polkadot.
  • Al fine di realizzare in modo efficiente svariate blockchain differenti (eterogenee) per l'ecosistema Polkadot, gli sviluppatori di Parity hanno inserito tutte le funzionalità necessarie alla realizzazione di una blockchain in un framework chiamato Substrate. L'architettura multilayer di Substrate consente agli sviluppatori di scegliere tra facilità di sviluppo e libertà tecnica.
  • Anche se Substrate rende molto facile realizzare blockchain pronte per Polkadot, le blockchain nella rete Polkadot non hanno necessariamente bisogno di essere costruite con Substrate.
  • Substrate ha la capacità di condurre aggiornamenti runtime forkless. Una volta che le blockchain diventano interdipendenti, un fork ha un impatto enormemente più devastante che nel caso di una divisione di una rete silos in due singole reti silos.

Prossime tappe

Restate sintonizzati per le prossime tappe di Polkadot seguendo Polkadot su Twitter.

Se volete provare Substrate, date un'occhiata al Substrate Developer Hub.

Leveraging Polkadot's Unique Capabilities To Enable Web2 UX With Subsocial's New Off-Chain Signer

Yung Beef 4.2

Polkadot, Substrate ed Ethereum

Polkadot, Substrate ed Ethereum

Sin dalla pubblicazione del documento programmatico di Polkadot tre anni fa, è stato chiaro che connettere Polkadot all’ecosistema di Ethereum per aiu

Polkadot Arena

Un breve riassunto di tutto quel che riguarda Substrate e Polkadot

Un breve riassunto di tutto quel che riguarda Substrate e Polkadot

In Parity, siamo attualmente concentrati sullo sviluppo di tre principali tecnologie: Parity Ethereum (Eth 1.0 e Serenity), Parity Substrate e il prog

Polkadot Arena

Costruire un Hot Wallet con Substrate Primitives

Costruire un Hot Wallet con Substrate Primitives

Substrate e il sistema FRAME definiscono per lo sviluppo in runtime un potente insieme di funzioni primitive per la costruzione di infrastrutture bloc

Polkadot Arena