Cartesi, piattaforma di livello 2
Cartesi è una piattaforma di livello 2 per lo sviluppo e l’implementazione di applicazioni decentralizzate scalabili.
I componenti off-chain girano all’interno di Cartesi Node che rappresentano gli interessi di ciascun utente DApp.
I nodi Cartesi forniscono agli sviluppatori DApp macchine Cartesi riproducibili, dove è possibile eseguire calcoli verificabili su larga scala.
Questi calcoli verificabili sono facilmente integrati nei contratti intelligenti da potenti primitive che forniscono forti garanzie di risoluzione dei conflitti.
Più precisamente, qualsiasi controversia insorta sul risultato dei calcoli eseguiti all’interno di Cartesi Machines può essere equamente giudicata a costi irrisori sulla blockchain.
I nodi Cartesi consentono inoltre agli sviluppatori DApp di eseguire codice nativo.
I calcoli nativi possono sfruttare la piena potenza di elaborazione del nodo, comprese le GPU disponibili.
I componenti off chain di cartesi machine sia che vengono eseguiti dal nodo o all’interno, sia che vengono eseguiti in modalità nativa, essi funzionano come un sistema operativo Linux che fornisce all’intero sistema calcoli complessi.
Gli sviluppatori hanno il consenso di utilizzo di software, servizi, e linguaggi di programmazione con cui hanno una migliore famigliarità.
Spostando la maggior parte della complessa logica delle loro DApp su componenti portatili off-chain, gli sviluppatori vengono liberati dai limiti e dalle idiosincrasie imposte da blockchain.
In questo modo Cartesi consente agli sviluppatori di selezionare il miglior ambiente di runtime in cui ospitare ogni parte delle proprie DApp.
La soluzione per il calcolo verificabile è la Cartesi machine.
È stato progettato per portare la scalabilità mainstream alle DApp e la produttività mainstream agli sviluppatori DApp.
Scalabilità
Le DApp eseguite esclusivamente su contratti intelligenti devono affrontare severi vincoli sulla quantità di dati che possono manipolare e sulla complessità dei calcoli che possono eseguire.
Queste limitazioni si manifestano come costi di transazione esorbitanti e, anche se tali costi potrebbero essere in qualche modo superati, come tempi di calcolo estremamente lunghi.
In confronto, le DApp in esecuzione all’interno di Cartesi Machines possono elaborare quantità praticamente illimitate di dati e a un ritmo di oltre 4 ordini di grandezza più veloce.
Ciò è possibile perché le Macchine Cartesi funzionano fuori catena, libere dal sovraccarico imposto dai meccanismi di consenso utilizzati dalle blockchain.
In uno scenario tipico, una delle parti coinvolte in una DApp eseguirà la Cartesi Machine fuori catena e riporterà i suoi risultati alla blockchain.
L’infrastruttura Cartesi ha un meccanismo di contestazione automatico, in modo che parti diverse non hanno necessità di fidarsi l’un l’altra.
Si avvia una controversia in caso di risultati delle due parti in disaccordo, il calcolo viene ripetuto fuori catena, e il meccanismo garantisce vinta sempre la parte vera.
Per abilitare questo meccanismo di contestazione, le Macchine Cartesi vengono eseguite all’interno di uno speciale emulatore che ha tre proprietà uniche:
Le macchine Cartesi sono autonome: funzionano in isolamento da qualsiasi influenza esterna sul calcolo;
Le macchine Cartesi sono riproducibili — Due parti che eseguono lo stesso calcolo ottengono sempre esattamente gli stessi risultati;
Le macchine Cartesi sono trasparenti: espongono il loro intero stato per l’ispezione esterna.
Dal punto di vista della blockchain, le controversie richiedono solo una piccolissima frazione della quantità di calcolo eseguita dalla Cartesi Machine.
Quando ci sono delle controversie il risultato atteso è che vengano smascherate le parti fraudolenti rispetto le parti autentiche, scoraggiando in questo modo la pubblicazione di risultati sbagliati, rendendo la piattaforma molto più efficiente e sicura.
Le macchine Cartesi consentono alle DApp di sfruttare capacità di elaborazione ampiamente aumentate off-chain, godendo al contempo delle stesse garanzie di sicurezza offerte dal codice che viene eseguito in modo nativo come smart contract.
Produttività
La scalabilità non è l’unico ostacolo all’adozione diffusa della blockchain.
Un altro serio fattore limitante è la ridotta produttività degli sviluppatori.
Lo sviluppo di software moderno prevede la combinazione di dozzine di componenti software standard.
La creazione di questi componenti ha richiesto lo sforzo concertato di una comunità mondiale attiva nel corso di diversi decenni.
Sono stati tutti sviluppati e testati utilizzando toolchain consolidati (linguaggi di programmazione, compilatori, linker, profiler, debugger, ecc.) e si basano su molteplici servizi forniti dai moderni sistemi operativi (gestione della memoria, multitasking, file system, networking, eccetera).
Gli smart contract vengono sviluppati utilizzando toolchain ad hoc ed eseguiti direttamente su macchine virtuali personalizzate, senza il supporto di un sistema operativo sottostante.
Questa disposizione priva gli sviluppatori degli strumenti del loro mestiere, riduce gravemente la potenza espressiva a loro disposizione e di conseguenza decima la loro produttività.
Al contrario, le Macchine Cartesi si basano su una piattaforma collaudata: RISC-V.
Ora è mantenuto da una propria fondazione indipendente.
A differenza di molte delle sue controparti accademiche, è importante tenere presente che RISC-V non è un’architettura giocattolo.
È adatto per l’implementazione hardware nativa diretta, che infatti è attualmente commercializzata da SiFive Inc.
Ciò significa che, in futuro, Cartesi non si limiterà all’emulazione o alla traduzione binaria off-chain.
Questo tipo di piattaforma RISC-V viene sostenuta da una comunità molto ricca di programmatori e sviluppatori.
I loro sforzi hanno prodotto un’ampia infrastruttura software, in particolare i port del sistema operativo Linux e della toolchain GNU.
Spostando la maggior parte della loro logica DApp in modo che funzioni all’interno di Cartesi Machines, ma oltre al sistema operativo Linux, gli sviluppatori sono isolati dai limiti e idiosincrasie specifiche di blockchain.
Riacquistano l’accesso a tutti gli strumenti su cui hanno fatto affidamento durante la scrittura di applicazioni.
Questo è il contributo di Cartesi per consentire agli sviluppatori di DApp di esprimere la loro creatività senza ostacoli e di aumentare la loro produttività.
Documentazione
Le Cartesi machine hanno prospettive differenti:
È particolarmente importante per gli sviluppatori che configurano macchine Cartesi, le eseguono o ne manipolano i contenuti.
Include l’API dell’emulatore in tutte le sue versioni: C++, Lua, gRPC e l’interfaccia della riga di comando, perché la prospettiva dell’host è l’ambiente al di fuori dell’emulatore Cartesi machine.
La prospettiva di destinazione — Questo è l’ambiente all’interno della Macchina Cartesi.
Comprende il particolare sapore di Cartesi dell’architettura RISC-V, nonché l’organizzazione del sistema operativo Linux incorporato che viene eseguito su di essa.
È più rilevante per i programmatori responsabili dei componenti DApp che funzionano fuori catena ma devono essere verificabili.
Anche la toolchain di cross-compilazione e gli strumenti usati per costruire il kernel Linux e i file system radice Linux incorporati sono importanti da questo punto di vista, anche se sono usati nell’host.
La prospettiva blockchain — Questa è la visione che gli smart contract hanno di Cartesi Machines.
Consiste quasi esclusivamente nella manipolazione di hash crittografici dello stato di Cartesi Machines e parti di esse.
In particolare, utilizzando solo operazioni di hash, la blockchain può verificare asserzioni riguardanti i contenuti dello stato, e può ottenere l’hash di stato che risulta dalle modifiche allo stato.
Come per ogni computer, il livello di conoscenza richiesto per interagire con Cartesi Machines dipende dalla natura dell’applicazione che si sta creando.
Le applicazioni semplici richiederanno agli sviluppatori di destinazione di codificare alcuni script che invocano componenti software preinstallati, agli sviluppatori host di compilare semplicemente un file di configurazione che specifichi la posizione dei componenti necessari per costruire una macchina Cartesi e agli sviluppatori blockchain di creare semplicemente un’istanza di uno dei i contratti di alto livello forniti da Cartesi.
All’altro estremo ci sono gli sviluppatori che lavorano all’interno di Cartesi, che scrivono, creano e distribuiscono regolarmente componenti software personalizzati da eseguire nel target, o addirittura cambiano il kernel Linux.
Sebbene l’obiettivo di Cartesi sia quello di proteggere gli utenti della piattaforma dalla maggior complessità possibile, è importante rendere le informazioni disponibili nella misura più ampia possibile.
A tal fine, questa documentazione di Cartesi Machines mira a fornire informazioni sufficienti per coprire tutte e 3 le prospettive, a tutte le profondità di comprensione.
Panoramica
L’emulatore è scritto in C/C++ con dipendenze POSIX limitate al terminale, al processo e alle funzionalità di mappatura della memoria.
È scritto come una libreria C++, ma è possibile accedervi in diversi modi.
Quando è collegato a un’applicazione C++, l’emulatore può essere controllato direttamente tramite l’interfaccia della cartesi machine classe.
È possibile accedere all’emulatore anche dal linguaggio di programmazione Lua, tramite un cartesi modulo che espone cartesi.machine un’interfaccia ai programmi Lua, rispecchiando l’interfaccia C++. Inoltre, Cartesi fornisce un server gRPC che può essere eseguito per controllare un’istanza di Cartesi Machine da remoto.
Questo server espone un’interfaccia di livello superiore più adatta per il processo di verifica, inclusa la possibilità di creare snapshot in memoria dello stato corrente della macchina in modo da poter ripristinare le modifiche successive.
Infine, c’è un’utilità a riga di comando (scritta in Lua) che può configurare ed eseguire macchine Cartesi per la prototipazione rapida. La documentazione viene avviata dall’utilità della riga di comando cartesi machine.
La documentazione copre quindi l’interfaccia Lua di cartesi machine.
L’interfaccia C++è molto simile ed è trattata solo nel manuale di riferimento, lo stesso vale per l’interfaccia gRPC, utilizzata per controllare un emulatore da remoto.
Se intendi investire in Cartesi puoi creare un account su Coinbase