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 aiutare a estendere le capacità di entrambe le piattaforme sarebbe stato uno dei punti chiave del network. Questo non è cambiato. È chiaro che “Ethereum” può avere in contesti diversi vari significati che dipendono dalle intenzioni e dal rigore della definizione. Poche persone obietterebbero che, indipendentemente dall’uso, il termine Ethereum si riferisce come minimo a quella che in questo momento è la “ETH mainnet”. In ogni caso, qualcuno affermerebbe che assegnargli questo significato escluderebbe ogni altro network, anche quelli approvati “ufficialmente”.
In altri casi la definizione include i network approvati ufficialmente (come specificato dal proprietario del trademark di Ethereum), progetti/network/fork follow-on come ad esempio Shasper. Alcuni includerebbero sotto l’ombrello di Ethereum anche fork “non-canonici” come l’originaria chain “Classic”, ma altri si opporrebbero.
Alcuni gruppi, come ad esempio il gruppo industriale Ethereum Enterprise Alliance o come è tipico all’interno dei gruppi di sviluppatori Ethereum, considererebbero “Ethereum” un concetto molto più ampio. La loro visione includerebbe ogni tecnologia basata o compatibile con l’Ethereum virtual machine (EVM, ovvero macchina virtuale di Ethereum) e i suoi relativi strumenti di sviluppo: Ethermint, Hyperledger Burrow e vari network Parity-PoA per nominarne qualcuno.
Qualunque sia la definizione di “Ethereum”, Parity rimane determinata a collegarlo a Substrate e Polkadot. Nonostante stiamo sviluppando Substrate e la conseguente infrastruttura per gli smart-contract perché diventi il framework più potente e semplice per la creazione di nuove blockchain e dApp, comprendiamo perfettamente che molti si sentono a casa nell’ecosistema Ethereum, sia esso inteso come mainnet o semplicemente comunità di sviluppo. Siamo determinati a fare del nostro meglio per sostenere questi team mentre costruiscono e interagiscono.
Il nostro impegno comprende tre progetti distinti che vorrei discutere qui: un bridge pubblico tra Polkadot ed Ethereum, un bridge tra Substrate e Parity-Ethereum-PoA e un modulo di esecuzione di smart-contract EVM per Substrate compatibile con Ethereum.
Bridge pubblico tra Polkadot ed Ethereum
Il primo progetto è essenzialmente il software postulato ancora nel 2016 nel documento programmatico originale di Polkadot. L’idea è di avere uno smart-contract sulla chain mainnet di Ethereum che rimanga sincronizzato con il gadget di finalizzazione GRANDPA di Polkadot, fungendo da “client super leggero” per Polkadot. Questo software faciliterebbe un livello di interoperabilità molto generale, principalmente per il token nativo di Ethereum e per i contratti preesistenti che forniscono funzionalità chiave altrimenti non disponibili su Polkadot.
Dal punto di vista tecnico, questo smart-contract è in grado di analizzare nuovi blocchi (specificamente quelli contenenti messaggi destinati a Ethereum) e inoltrarli alla chain di Ethereum. Una parachain di Polkadot includerebbe un “client leggero” (light-client) di Ethereum capace di confermare il suo sistema di consenso PoW e interpretare le ricevute degli smart-contract e quindi inoltrare messaggi da Ethereum al network di Polkadot.
Ci sono degli ostacoli al completamento del progetto, in primo luogo il prezzo proibitivo del “gas” sulla mainnet di Ethereum per le cryptovalute non native. Si stanno facendo già i primi sforzi per creare un’infrastruttura che risolva questo problema (ad esempio ChainX). Per funzionare adeguatamente e senza bisogno di un’economia aggiuntiva basata su validatori o staking, questi progetti avranno bisogno di supporto aggiuntivo da parte di Polkadot, in particolare richiedendo ai validatori di fornire la prova di finalizzazione in formati nativi a Ethereum. La Web3 Foundation sta ricercando in maniera attiva e creando le specifiche per il design di questo processo e ci sono finanziamenti disponibili per i team (compresa Parity Technologies, ma non solo) che desiderano implementare il risultato delle ricerche.
Bridge tra Substrate e Parity-Ethereum-PoA
Per alcuni progetti l’interoperabilità tra Polkadot ed Ethereum non è così importante dato che, a causa di problemi di scalabilità, non sarebbero comunque in grado di venir lanciati sulla mainnet. Nonostante il lancio sulla mainnet di Ethereum (1.0), questi progetti preferiscono rimanere fortemente compatibili con l’ecosistema di Ethereum per una moltitudine di fattori, inclusi una comunità attiva, strumenti per lo sviluppo, documentazione di supporto e il gran numero di service provider disponibili. Alla fin fine il network è nell’ambita posizione in cui “nessuno può biasimarti se decidi di scrivere il tuo smart-contract su Ethereum” e questa è una cosa che noi rispettiamo e per cui siamo orgogliosi di essere stati parte della creazione di Ethereum.
Per sostenere il punto di vista di questi sviluppatori introdurremo un bridge da Substrate a Partity-Ethereum-PoA molto simile all’esistente Parity Bridge, che si collocherà nel cuore della xDAI chain. In questo caso, invece di collegare una chain Parity Ethereum arbitraria alla mainnet di Ethereum, la chain viene collegata a un modulo Substrate (e, per estensione, a Polkadot). La chain Ethereum-PoA dovrebbe prendersi cura della propria sicurezza (ed è per questo che la proposta di questa soluzione non è interamente dissimile dall’Ethermint di Cosmos). La chain Ethereum-PoA userebbe il rapido algoritmo di consenso Aura (o un consenso più lento “instant-finality” basato su PBFT) e beneficerebbe della collaudata codebase di Parity Ethereum, che ha anni di ottimizzazione e tuning con funzionalità aggiuntive che sono enterprise-level, incluse l’integrazione di secret-store e la contract state encryption.
In questo caso l’infrastruttura necessaria è molto più semplice: introdurremo uno speciale contratto “pre-compile” nella codebase di Parity Ethereum che permetterà di validare una prova di finalità da GRANDPA in maniera efficiente e stateless (rimuovendo il problema dei costi del gas per crypto non native). Con un contratto bridge (che deriverà dal preesistente PoA bridge system di Parity) e un inoltratore di blocchi (derivato dallo stesso sistema), il componente aggiuntivo necessario è un modulo di Substrate che funziona da client leggero tra Ethereum e Aura-PoA e può capire e inoltrare messaggi. Il lavoro su questo progetto è già cominciato e ci aspettiamo di avere un prototipo entro la fine dell’anno.
Questo progetto permetterà a qualsiasi chain sicura privata o Ethereum PoA costruita su Parity Ethereum di avere accesso completo a una chain sorella su Substrate (come eventuale strada per un upgrade futuro) o alla comunità di Polkadot (per usare le risorse di Polkadot e ottenere interoperabilità con altri progetti).
EVM per Substrate
Ci sono anche progetti che adorano l’idea di Substrate e tutto il potere e la flessibilità che offre (ad esempio lavoratori off-chain, l’SMRL, transazioni estensibili, smart-contract basati su Rust, governance metaprotocol, upgrade con un solo click e molto altro), ma necessitano di un upgrade path per la loro codebase, in alcuni casi molto sostanziosa, scritta in Solidity. Il nostro modulo Substrate Contracts basato su WebAssemby e i suoi vari strumenti, incluso l’ink! EDSL basato su Rust, è un progetto in cui crediamo e su cui siamo impegnati per diverse ragioni: il backend WebAssembly di LLVM permette a diversi linguaggi di programmazione comuni (C, C++, Rust, Go e altri) di interagire con Wasm. I numerosi strumenti a disposizione, come ad esempio interpreters, compilatori, debugger, analizzatori di codice byte e librerie fanno si che lo sviluppo venga incredibilmente migliorato e con ink! possiamo usare il testing, la documentazione e la correttezza di Rust.
Inoltre, abbandonando il sistema di esecuzione vecchio di cinque anni di Ethereum, possiamo sia semplificare che velocizzare la codebase (grazie all’eliminazione di opcode EVM difettosi) e introdurre efficienza economica (come la separarazione del code-upload e dell’instance deployment e l’introduzione di rendite di stato basate su deposito) all’ambiente di esecuzione.
Detto ciò la realtà impone che funzionalità, performance e chiarezza talvolta debbano venire dopo la compatibilità. Per questo stiamo introducendo Substrate EVM. Questo è un modulo SRML di Substrate che introduce “nativamente” un ambiente di esecuzione compatibile con Ethereum. Essenzialmente permette alla tua chain Substrate di ospitare la gran parte delle funzioni di transizione di stato di Ethereum. Il codice esistente Solidity/EVM può essere lanciato in questo ambiente. L’interoperabilità con il resto di Substrate (per esempio chiamare altri moduli, trasferire da e verso altri account e usare le funzionalità di messaggistica interchain) è resa possibile dalle API di “contratto precompilato” introdotte appositamente.
Pensate a questo come a un’intera blockchain di Ethereum all’interno di un singolo modulo SRML, pronto a essere integrato con il resto della vostra blockchain personalizzata. Una sorta di strato di virtualizzazione per blockchain. Abbiamo iniziato a lavorarci e prevediamo che un MVP sarà pronto nelle prossime settimane.
Inoltre…
Siamo anche sempre più interessati a sostenere gli sforzi per sviluppare una backend WebAssembly per il compilatore di Solidity che sia compatibile con il modello di esecuzione degli Substrate-Contract. Se implementato correttamente permetterebbe di rilasciare gli smart-contract Solidity esistenti (pensati per essere rilasciati in una chain Ethereum) direttamente in una chain Substrate-Contract.
Nulla vieta che con questo modello la stessa chain Substrate abbia sia un modulo EVM-Contract (per eseguire codice Solidity/EVM originario) che un modulo Substrate-Contract (per eseguire codice Solidity/Wasm o ink! Wasm). I due moduli potrebbero interoperare e persino mandare messaggi a una specifica chain Parity-Ethereum collegata o, se distribuiti in forma di parachain, all’intera community di Polkadot, inclusa la mainnet di Ethereum!
Al momento ci stiamo concentrando principalmente sullo sviluppo e il consolidamento dei componenti chiave finali di Polkadot 1.0 e perciò non possiamo sempre dedicare a questi progetti il tempo di sviluppo che vorremmo. Detto ciò la raison d'être di Polkadot è collegare sotto lo stesso tetto, tramite diverse ipotesi tecniche, progetti estremamente diversi tra loro. La comunità di sviluppatori di Ethereum è la più avanzata al mondo, con i pensatori più liberi e i progressi più significativi (saremmo miopi a ignorarlo). Ora che, dopo due lunghi anni di sviluppo, le infrastrutture chiave di Polkadot e Substrate stanno maturando, possiamo veramente iniziare a pensare di costruire le parti periferiche e trasformare in realtà un mondo di blockchain variegate e connesse.