Polkadot: il Blockspace piuttosto che le Blockchain
Durante gli ultimi 5 anni, si è assistito a una notevole evoluzione del panorama tecnologico delle blockchain e delle criptovalute. Ci troviamo in un mondo diverso rispetto a quando abbiamo iniziato a costruire Polkadot e, nonostante molte cose si siano discostate dalla nostra visione iniziale, molte delle nostre ipotesi originarie sono diventate la regola. Per esempio, la nostra scommessa iniziale sull'interoperabilità e sulla componibilità tra chain è passata dalla teoria alla pratica e dalle speculazioni ai fatti: un futuro multi-chain è già una certezza.
Inoltre, come delineato nel documento prospettico del 2016, le Parachain (in principio si trattava essenzialmente di rollup ottimistici), la Shared Security (sicurezza condivisa) e la Data Availability (disponibilità dei dati) hanno avuto forti ripercussioni sul mondo delle idee e sono state una fonte di ispirazione per progetti vecchi e nuovi. Da un universo di poche chain siamo passati a uno con un'abbondanza di chain. Il nostro obiettivo non è mai stato quello di massimizzare il numero di blockchain per il gusto di farlo, ma piuttosto ottimizzare il lavoro che una rete decentralizzata può svolgere, in altre parole, risolvere il problema della scalabilità. Il numero di blockchain è infatti correlato alla scalabilità ma non sono la stessa cosa; le differenze tra questi due aspetti saranno chiarite di seguito.
Quando abbiamo iniziato a sviluppare Polkadot, puntavamo a creare un sistema in grado di massimizzare la velocità delle transazioni senza compromettere la sicurezza e la resistenza alla censura. Tale obiettivo non è cambiato, ma i progressi a livello applicativo ci permettono ora di dare più colore e sfumature a questa visione. Gli sviluppatori di applicazioni e protocolli si trovano ad affrontare nuove sfide in un mondo multi-chain. Devono bilanciare i requisiti di esecuzione sicura, resistenza alla censura, usabilità, costi e componibilità. Il concetto emergente di blockspace è un'astrazione e una primitiva che racchiude questi requisiti e obiettivi.
In questo articolo approfondirò la definizione e le qualità del blockspace in modo da valutare le diverse offerte di blockspace presenti sul mercato. Infine, spiegherò perché la nostra attenzione si sta spostando dalle blockchain al blockspace e come Polkadot sia perfettamente adatto, dal punto di vista architettonico, a diventare il più forte produttore di blockspace generalizzati.
Che cos'è il Blockspace?
"Blockspace è il miglior prodotto da vendere nel 2020". Chris Dixon, a16z, durante il podcast Bankless
Il blockspace è un termine che indica la capacità di una blockchain di finalizzare e fare il “commit” (vincolare) delle operazioni. In un certo senso, è il componente principale dei sistemi di consenso decentralizzati oggi in funzione e un'astrazione per ragionare su ciò che le blockchain effettivamente producono. È un problema a livello applicativo sia se riferito a trasferimenti del saldo, Smart Contract o calcolo. In generale, il blockspace è un ingrediente chiave per lo sviluppo di applicazioni inarrestabili che si affidano a sistemi decentralizzati per il pagamento, il consenso o la liquidazione. Il livello applicativo è il principale consumatore del blockspace come prodotto. Come per qualsiasi business, sia le applicazioni che i loro sviluppatori dovrebbero preoccuparsi della qualità e della disponibilità dei prodotti nella loro supply-chain.
Il blockspace è un bene transitorio. Si ha bisogno di un blockspace nel preciso momento in cui si vuole fare il “commit” di un'operazione sulla chain. O viene utilizzato o no. Quando una chain è al di sotto della sua capacità, le risorse del consenso vengono sprecate per produrre blockspace non utilizzati.
Ethereum è stato il primo grande innovatore nell'offerta di blockspace. L’introduzione di una macchina virtuale nel protocollo e del calcolo del blockspace disponibile tramite "gas" ha infatti permesso di distribuire quantitativamente il blockspace all'interno di un singolo blocco ai programmi in base alla quantità di calcoli eseguiti e allo storage utilizzato. Da allora, molti progetti hanno intrapreso iniziative per ampliare i tipi di blockspace. Qui vedremo le principali differenze tra Polkadot, Ethereum, Avalanche, Cosmos, Solana e progetti più recenti come EigenLayer o AltLayer.
Il trilemma della scalabilità della blockchain ci dice che tra sicurezza, latenza e throughput se ne possono scegliere solo due in condizioni di carico elevato. Quando ci siamo ritrovati ad affrontare la scelta, il nostro approccio a livello base è sempre stato quello di massimizzare sicurezza e throughput. Mentre il trilemma è utile per valutare l'utilità teorica di un protocollo di livello base, la nozione di blockspace ci permette di ragionare meglio su come il throughput e la sicurezza vengono assegnati al livello applicativo.
Il blockspace non è una commodity, ma piuttosto una classe di commodity. Il blockspace prodotto da sistemi diversi varia in qualità, disponibilità e flessibilità. La qualità del blockspace può essere giudicata in base alle garanzie di sicurezza che la blockchain fornisce: più è sicura, più è alta la qualità. In mancanza della disponibilità di blockspace, le applicazioni si trovano ad affrontare congestioni o tempi di inattività, con conseguenti costi elevati, lunghi tempi di attesa o “front-running”. Senza un blockspace di alta qualità, le applicazioni vengono hackerate e saturate: un blockspace di bassa qualità è vulnerabile agli attacchi del 51% e al toxic shock (shock tossico). Questi scenari sono familiari a chi ha osservato da vicino l'ecosistema blockchain. Tutte queste caratteristiche del blockspace sono gli elementi chiave che gli sviluppatori devono considerare quando scelgono dove fare il deployment delle loro applicazioni.
Caratteristiche del blockspace
Analizziamo più a fondo le tre caratteristiche principali del blockspace come prodotto: Qualità, Disponibilità e Flessibilità.
Qualità - Come per ogni prodotto, la qualità è un fattore importante da considerare per gli utilizzatori di blockspace. I prodotti di alta qualità adempiono al loro scopo, e lo scopo del blockspace è quello di essere convertito in una registrazione permanente dell'esecuzione dello Stato-macchina. Nel linguaggio cripto-economico, la qualità equivale alla sicurezza. In seguito utilizzerò le due definizioni in modo intercambiabile. Un blockspace non sicuro o di bassa qualità è vulnerabile agli attacchi del 51% e a errori di consenso. La sicurezza è determinata da due fattori: il protocollo di consenso utilizzato per garantirla e la quantità di sicurezza economica reale (cioè la potenza di mining o stake) utilizzata nella produzione e nel commitment del blockspace.
Disponibilità - La disponibilità di blockspace è determinata dalla domanda e dall'offerta. L'offerta di blockspace è determinata dal throughput e dal livello di disponibilità del sistema che lo produce: le blockchain che si bloccano, si arrestano o richiedono un intervento e un funzionamento manuale avranno un'offerta intermittente di blockspace. Le blockchain che non massimizzano il throughput limitano la loro offerta a una scala più bassa. Le blockchain che funzionano con meccanismi di consenso non sicuri distribuiranno blockspace senza forti garanzie di continuità.
Flessibilità - La flessibilità è la capacità del blockspace di essere utilizzato per diversi tipi di operazione. Il blockspace di Bitcoin ed Ethereum è in un certo senso flessibile, in quanto può essere assegnato alle transazioni inviate dagli utenti. Tuttavia, Bitcoin ed Ethereum (e la maggior parte delle altre blockchain) hanno un meccanismo di blockspace puramente transattivo (o reattivo) che può intervenire solo sulle transazioni inviate dagli utenti. Non può essere utilizzato per operazioni proattive eseguite senza l'input dell'utente. La maggior parte delle blockchain non è andata oltre questo modello reattivo. Anche la maggioranza dei protocolli di rollup prevede trasferimenti di saldo e invocazioni di smart contract guidati dall'utente. I formati di transazione, i modelli di account e i linguaggi di scripting supportati dalla maggior parte delle blockchain sono limitati.
Un blockspace estremamente flessibile ha come obiettivo l'esecuzione, l'archiviazione e il consumo di dati e lascia al consumatore del blockspace la scelta di come allocare queste risorse di base alle operazioni reattive e proattive. I consumatori di blockspace dovrebbero essere in grado di dare priorità alla logica applicativa di prima classe rispetto alle transazioni inviate dall'utente, in modo da poter fare progressi significativi anche in assenza o eccesso di transazioni utente. Questo non significa che i modelli transattivi in generale siano sbagliati, infatti possono essere utilizzati con buoni risultati nelle interazioni con i modelli di esecuzione autonomi. Il prodotto alla base di entrambi questi modelli è il blockspace, e quest'ultimo può supportare entrambi i modelli solo quando è massimamente flessibile. La flessibilità del blockspace è un prerequisito per i mercati blockspace complessi.
Per aggiungere maggiori dettagli, dovremmo riconoscere il fatto che le moderne applicazioni blockchain si basano sull'interoperabilità tra le macchine a stati che utilizzano il blockspace. Mescolare blockspace di bassa qualità con altri di alta qualità rovina intere applicazioni ed espone gli utenti a possibili perdite ingenti. Se gestissimo un ristorante, non serviremmo ai nostri clienti un pasto preparato principalmente con ingredienti di alta qualità mescolati con una piccola quantità di prodotti spazzatura. Allo stesso modo, gli sviluppatori di applicazioni non dovrebbero servire ai loro utenti applicazioni composte per lo più da blockspace ad alta e in parte a bassa sicurezza. L'ingrediente di bassa qualità rovina l'intero piatto. Nella realtà interoperabile, per fornire un prodotto finale, le applicazioni che cercano di ridurre al minimo i rischi per i loro utenti dovrebbero utilizzare solo blockspace ad alta sicurezza.
Le applicazioni moderne hanno bisogno di blockspace paralleli con una qualità prevedibile e costantemente elevata. Una classe di blockspace è inoltre più adatta ad applicazioni interoperabili quando tutti i blockspace della classe forniscono garanzie di sicurezza omogenee. In sostanza, l'interoperabilità è la componibilità di macchine a stati asincroni. Le classi di blockspace che forniscono alte garanzie di sicurezza standard sono le più adatte a una rete affidabile di macchine a stati asincroni. Queste classi creano valore senza rischi aggiuntivi, in quanto forniscono una sicurezza condivisa per tutti i blockspace al loro interno.
Le soluzioni per la scalabilità cercano di rispondere al problema della fornitura di blockspace. Ad esempio, grazie alla crypto-economics utilizzata da Sharding e rollup per scalare, i protocolli per la verifica (proof) o la disputa (dispute) esentano i validatori dal verificare ogni transizione di stato. Le soluzioni per la scalabilità possono essere combinate con architetture di sicurezza condivise per soddisfare sia il problema dell'offerta che quello della qualità.
Alcuni ecosistemi stanno riconoscendo la necessità di architetture per la sicurezza condivisa, ma il livello di sicurezza dei diversi prodotti blockspace soggetti alla sicurezza condivisa è definito da un opt-in volontario da parte dei validatori. Questa è un'architettura sbagliata, sancisce che determinati validatori sono un gruppo esclusivo a scopo di lucro, a cui i richiedenti devono affidarsi per poter avviare il proprio progetto o per ottenere un’adeguata sicurezza. Le barriere di ingresso tra domanda e offerta possono ridurre sia la disponibilità che la qualità del blockspace.
Gli sviluppatori di applicazioni e protocolli dovrebbero prestare particolare attenzione a queste tre caratteristiche e strutturare le loro applicazioni più intorno al blockspace che alle blockchain o agli smart contract. Invece di far mantenere una chain 24 ore su 24, 7 giorni su 7, Le applicazioni e i protocolli decentralizzati potrebbero acquistare blockspace su richiesta riducendo i costi per gli utenti o i possessori di token. È abbastanza comune che le blockchain in fase iniziale sprechino una grande quantità di token destinati ai validatori che producono blocchi con un utilizzo minimo. Questo è un effetto collaterale dell'inefficiente allocazione del blockspace che favorisce i validatori a spese degli sviluppatori di applicazioni e dei possessori di token. Il cloud computing ha prevalso sullo spazio server dedicato perché ha allocato le risorse fisiche in modo più granulare e adattivo. Allo stesso modo, le architetture centrate sul blockspace per i livelli di base del Web3 saranno destinate a prevalere sulle architetture incentrate sulla blockchain.
Polkadot: Un'architettura basata sul blockspace
Il sistema di consenso di Polkadot è, nella sua essenza, un generatore di blockspace efficiente e flessibile. Come le moderne CPU, la rete Polkadot è una macchina multi-thread basata su un'unica primitiva: l'Execution Core. Ogni core può eseguire solo un blocco di una macchina a stati alla volta. La rete fa uso delle sue risorse sotto forma di validatori e di stake vincolati per esporre il numero massimo di core in qualsiasi momento. Grazie all'efficienza dell'architettura di Polkadot, i validatori sono in grado di trasformare le risorse reali che consumano in un numero maggiore di blockspace rispetto alla semplice esecuzione di più blockchain standalone con lo stesso valore di stake. Da sola, la sicurezza condivisa non è sufficiente per costruire un produttore di blockspace efficace. La sicurezza condivisa garantisce una qualità omogenea del blockspace e deve essere abbinata a un sistema di scaling per assicurarne l'offerta.
Come produttore di blockspace, Polkadot si impegna al massimo aprendo i propri servizi al maggior numero possibile di utenti. Poiché Polkadot utilizza WebAssembly e un'architettura a macchina virtuale, le blockchain Polkadot non hanno bisogno di convincere i validatori a eseguire il proprio software ma, come per gli smart contract, l'unico requisito è la pubblicazione del codice on-chain e l'acquisizione del blockspace.
Per i validatori Polkadot conta solo il core a cui sono assegnati in un dato momento e la blockchain corrispondente programmata su quel core. I validatori Polkadot forniscono semplicemente un servizio, non hanno opinioni e lavorano in base a ciò che il mercato richiede loro. Gli acquirenti di blockspace in Polkadot hanno la garanzia che i validatori rispettino gli accordi senza la necessità di alcun intervento umano, mentre quelli che non dovessero farlo non otterranno alcuna ricompensa.
Polkadot può essere considerato un protocollo rollup. A differenza dei protocolli rollup basati su Smart Contract, i rollup sono racchiusi nella logica del livello di base attraverso gli Execution Cores. Quando invece i rollup sono costruiti sullo strato degli Smart Contract, il sistema deve competere per il gas, i validatori, l'inclusione e lo scheduling, per cui in un certo senso il sistema si trasforma in "ogni rollup per sé". Per questo il blockspace transattivo basato sul gas del livello di base non è il più adatto ad allocare il blockspace ai rollup. Per fornire garanzie costanti e omogenee sulla pianificazione, la sicurezza e la fornitura, stiamo costruendo un sistema specifico che è modulare al livello applicativo.
Distinguere le differenze di architettura tra gli Execution Cores e le blockchain o le macchine a stati che vi girano sopra è di importanza cruciale. Come scritto precedentemente, non è molto rilevante massimizzare il numero di blockchain poiché è solo uno strumento per raggiungere l'obiettivo per noi più importante: la massimizzazione di blockspace sicuri. Gli Execution Cores sono il motore per la produzione di blockspace e il diritto di pianificarli apre uno spazio per il design dei prodotti per l'allocazione dei blockspace.
Meccanismi per l’allocazione del blockspace
L'allocazione efficiente del blockspace è fondamentale e i modelli di utilizzo delle blockchain non sono coerenti. Le blockchain sperimentano periodi di forte carico e congestione alternati a periodi di sottoutilizzo e inattività. Da un lato, le applicazioni dovrebbero essere in grado di adattarsi ai periodi di carico elevato; dall'altro, non dovrebbero pagare per i blockspace inutilizzati. L’ambito di progettazione del prodotto è ancora poco esplorato, ma l'architettura di Polkadot è sicuramente adatta a migliorare le offerte presenti sul mercato.
Possiamo usare il mercato del cloud computing per riflettere sulla progettazione di prodotti per l'allocazione di blockspace. I modelli commerciali del cloud computing prevedono due caratteristiche chiave: istanze riservate (più economiche ma garantite per un periodo di tempo prolungato) e istanze spot (più costose, disponibili su richiesta ed effimere). Le applicazioni con un carico prevedibile risparmieranno acquistando istanze riservate, ma potranno scalare per soddisfare la domanda senza interruzioni del servizio utilizzando istanze spot. Tuttavia, le istanze riservate rappresentano anche un impegno: l'operatore dell'applicazione spreca denaro se la domanda reale per l’applicazione scende al di sotto della capacità di calcolo cloud riservata.
Andiamo ora sul concreto. Gli slot a lungo termine sono l'unico meccanismo presente al momento per l'assegnazione degli Execution Core di Polkadot. Questi sono simili a istanze riservate, assegnate dalla governance o da aste per gli slot: i vincitori guadagnano un Execution Core dedicato per una durata predeterminata di 6, 12, 18 o 24 mesi. I Parathread, introdotti per la prima volta come concetto nel 2019, sono blockchain pay as you go (a pagamento basato sull’utilizzo), e sono simili a istanze spot. La nostra ipotesi attuale è che il prezzo spot venga fissato utilizzando un controller intelligente: in parole povere, se i core esposti da Polkadot per i parathread sono saturi il prezzo aumenterà, nel caso contrario il prezzo diminuirà. Questo è solo un ulteriore esempio di come può essere allocato il blockspace.
Possiamo estendere ulteriormente il concetto di allocazione dei core di esecuzione. L'architettura di Polkadot permette l'allocazione simultanea di più core a una singola chain: immaginate una blockchain che, invece di avanzare di un blocco alla volta, avanza di due o tre. Questo è possibile grazie alle particolarità del design di Polkadot che consentono la convalida in parallelo di transizioni di stato sequenziali. In termini pratici, il numero di core che una chain può occupare in modo efficiente è limitato solo dal numero di core che può acquisire alla volta e dalla velocità con cui la chain può produrre blocchi. Ci aspettiamo un'ondata di innovazione nella generazione di blocchi per le chain Polkadot al fine di massimizzare l'utilità di questa caratteristica e speriamo che anche le chain con un semplice metodo di creazione di blocchi sequenziali, come quello attualmente disponibile, siano in grado di fare un buon uso di 2 o 3 core.
Come esempio di come più core potrebbero essere utilizzati da una singola chain, potremmo introdurre un altro tipo di prodotto per l’allocazione del blockspace: le aste a breve termine. Aste a metà strada tra l'allocazione spot pura e l'allocazione a lungo termine. È certamente possibile sviluppare un meccanismo di aste per l'assegnazione di slot di breve durata: un'ora, un giorno, o un mese. Si tratterebbe di un "Parachain Boost", ovvero la capacità delle blockchain di incrementare il proprio throughput durante i periodi di maggior carico, come un'autostrada che si allarga nelle ore di punta.
Inoltre, cambiando la nostra prospettiva da blockchain-centrica a blockspace-centrica, diventa chiaro che non c'è motivo per cui una blockchain o una macchina a stati debba funzionare continuamente. Le blockchain effimere sono un caso d'uso interessante, sebbene poco esplorato, in cui i processi in esecuzione da più tempo dovrebbero essere in grado di trasferire i loro calcoli o protocolli a chain di breve durata, proprio come i programmi in esecuzione su un PC possono spostare i calcoli o il lavoro a thread in background.
Come ultima soluzione per l'allocazione degli execution core, possiamo considerare la possibilità di trasferire i diritti sugli execution core. Ciò creerà un mercato secondario per il blockspace Polkadot: le chain saranno in grado di scambiare capacità in surplus tra loro e di agire come rivenditori di blockspace. Le chain che registrano una domanda inferiore o superiore al previsto potranno adattarsi di conseguenza o forse anche speculare sulla futura domanda di blockspace.
Ridefinire il significato di Blockchain
A mio parere, l'ecosistema delle blockchain ha pensato troppo poco al mondo delle multi-chain. Le blockchain avviate e funzionanti all'infinito con un carico costante sono un meccanismo evidentemente inefficiente. Lo scenario multi-chain del futuro sarà costituito da blockchain in grado di scalare e adattarsi in base alle esigenze. Contiene chain effimere originate da fabbriche on-chain, create da Smart Contract e animate da uno scopo automatizzato: completare il proprio lavoro in poche ore e svanire. La massimizzazione del numero di blockchain è un non-obiettivo che avvantaggia i cartelli di validatori che pensano solo ad arricchirsi. Il nostro obiettivo in Web3 è massimizzare la quantità di blockspace esistente e garantire che sia allocato alle macchine a stati che ne hanno più bisogno in ogni dato momento: una generazione e un'allocazione costante di risorse di consenso globale a chi ne ha più bisogno. Una enterprise senza più sprechi, o in altre parole: il produttore di blockspace più efficace al mondo.
Grazie a Fabian Gompf, Pranay Mohan, Björn Wagner e Gavin Wood per la revisione, le modifiche e la discussione.