Cos'è il linguaggio di programmazione Move?
Comprendere il software dietro Diem
Il mese scorso, Meta ha annunciato la vendita del suo Diem stablecoin a Silvergate, la banca principale nel settore delle criptovalute. (Per informarti meglio di questa vendita e di Silvergate, dai un'occhiata al nostro recente rapporto.) Silvergate gestisce la Silvergate Exchange Network (SEN), un sistema di trasferimento di asset 24/7, utilizzato da molti dei principali scambi di criptovalute. Silvergate ha in programma di utilizzare l'infrastruttura di Diem che hanno acquisito per introdurre una stablecoin sostenuta dal dollaro per la SEN.
Una parte cruciale del pacchetto Diem per cui Silvergate ha pagato quasi $ 200 milioni è il linguaggio di programmazione Move. Gran parte del motivo per cui il progetto Diem (ex Libra) ha richiesto così tanto tempo a Meta è stata la creazione di un linguaggio di programmazione proprietario per la criptovaluta. In questo articolo, daremo un'occhiata ai punti salienti di Move e ai suoi usi futuri mentre Silvergate traccia il futuro di Diem.
Termini chiave
Prima di andare oltre, dobbiamo definire un vocabolario chiave. Tieni presente che questo articolo diventa piuttosto tecnico.
Linguaggio di programmazione - "Un insieme di comandi, istruzioni e altri sintassi utilizzati per creare un programma software". Move è il linguaggio di programmazione di Diem, che abilita sia le funzionalità di base della criptovaluta sia la creazione di applicazioni future per Diem.
Blockchain - "Un database digitale contenente informazioni (come i record di transazioni finanziarie) che possono essere utilizzate e condivise contemporaneamente all'interno di una grande rete decentralizzata e accessibile al pubblico". Le blockchain alimentano le criptovalute, creando registri immutabili delle transazioni che avvengono. Il consenso deve essere raggiunto prima che le transazioni vengano registrate nel registro.
Blockchain Trilemma - La difficoltà nel raggiungere la sicurezza (resistenza agli attacchi), la scalabilità (capacità di crescere) e il decentramento (distribuito su base geografica e utenti) per le reti blockchain. Finora, le blockchain hanno lottato per raggiungere tutti e tre questi obiettivi. Molte delle blockchain principali di oggi, come Ethereum, sono sicure e decentralizzate. Tuttavia, ciò causa basse velocità e commissioni di transazione elevate, che influiscono negativamente sulla loro scalabilità. Diem, come la maggior parte delle blockchain, mira a risolvere il trilemma. Move è una parte importante di quella soluzione.
Logica lineare - Un sistema logico matematico creato da Jean-Yves Girad nel 1987 che enfatizza le formule come risorse, piuttosto che verità complete o che necessitano di prove complete. Il cambiamento chiave è che le risorse possono essere utilizzate solo una volta, invece di essere trattate come permanentemente vere. (cioè "Se mi dai A una volta, ti darò B una volta", invece di "A può essere scambiato con B.") Questo rende la logica lineare utile nell'informatica, dove limitare una formula a una risorsa invece di trattarla come verità universale consente sistemi più versatili.
Risorsa - L'unità di base dei sistemi logici lineari. In Move, "una risorsa non può mai essere copiata o eliminata implicitamente, ma solo spostata tra posizioni di archiviazione del programma". La necessità di token, registri e altri elementi blockchain per essere permanenti è il motivo per cui la logica lineare, in particolare le risorse, è stata utilizzata per costruire il linguaggio Move.
Che cos'è Move?
Move è un linguaggio di programmazione progettato per la Blockchain Diem. Sia Move che Diem sono stati creati dalla Diem Association, un consorzio tecnologico sostenuto da Meta. Recentemente, il progetto Diem, incluso il linguaggio Move, è stato venduto a Silvergate.
Il formato eseguibile di Move è "bytecode di livello superiore rispetto all'assembly ma di livello inferiore rispetto a un linguaggio di origine. Il bytecode viene verificato sulla catena per la sicurezza di risorse, tipo e memoria da un verificatore di bytecode e quindi eseguito direttamente da un interprete di bytecode. Questo meccanismo è stato progettato per massimizzare la sicurezza, senza aggiungere il costo di compilazione alle transazioni, riducendo al minimo le commissioni del gas rispetto ad Ethereum. Questo è un esempio di Move che tenta di risolvere il trilemma attraverso il suo design.
Risorse: cosa rende Move Move
Il fattore principale che separa Move dagli altri linguaggi di programmazione è il suo uso delle risorse, che è tratto dall'idea matematica della logica lineare. Nella logica lineare, le formule sono trattate come risorse fondamentali che possono essere utilizzate solo una volta. Successivamente, in Move, "una risorsa non può mai essere copiata o eliminata implicitamente, ma solo spostata tra posizioni di archiviazione del programma". Move consente agli sviluppatori di codificare tipi di risorse personalizzati che vengono trattati come "di prima classe" e non possono essere duplicati o cancellati.
Ciò è abilitato dal sistema di tipo statico di Move. Questo significa che le variabili nel linguaggio di programmazione devono essere definite come un certo tipo (cioè un numero o una parola). In Move, questo sistema protegge la natura di prima classe delle risorse. Tuttavia, le risorse possono ancora essere utilizzate in modo simile a qualsiasi altro elemento meno protetto. Possono essere archiviati in strutture dati o passati come argomenti alle procedure (forniti come valori da utilizzare per un calcolo).
Tutto ciò significa che le risorse in Move godono di un alto livello di sicurezza ed espressività. Sono protetti all'interno del codice, ma possono anche essere utilizzati liberamente per tutti i tipi di operazioni. Questa combinazione è perfetta per la programmazione blockchain, poiché affronta sia gli aspetti di sicurezza che di scalabilità del trilemma. Attualmente, le "monete Diem, elaborazione delle transazioni e gestione del validatore" sono tutte codificate come risorse con Move.
Le ambizioni di Move
Il libro bianco di Move stabilisce un elenco chiaro di motivazioni per il linguaggio che ne ha ispirato la progettazione. Notano anche le sfide della creazione di sistemi blockchain pubblici, che riguardano non solo Move, ma tutti i linguaggi di programmazione blockchain.
Notano principalmente che Diem (Libra) deve essere un "sistema aperto", in cui chiunque può visualizzare lo stato della blockchain ed inviare transazioni. Questo è radicalmente diverso dal software tradizionale per la gestione delle risorse, come un servizio di banca digitale, in quanto si tratta di sistemi profondamente chiusi. L'accesso è possibile solo con autorizzazioni speciali (di cui esistono molti livelli) e la trasparenza nei confronti degli altri utenti è molto limitata.
Ma in una blockchain, "tutti i partecipanti sono su un piano di parità". Questo introduce una serie di sfide. Una delle principali impedisce l'invio di transazioni non valide, come ad esempio un utente che tenta di trasferire le risorse di un altro. Inoltre, le blockchain devono catturare due aspetti della valuta tradizionale che sono difficili da eseguire nel software. Il primo è la scarsità; la duplicazione delle risorse deve essere vietata e la creazione di nuove risorse dovrebbe essere privilegiata. (Implementare questo privilegio in un sistema egualitario aperto è particolarmente difficile e limita notevolmente il decentramento di tale sistema.) Il secondo è l'accesso; la capacità di un utente di controllare e proteggere le proprie risorse è di fondamentale importanza. L'uso di risorse protette e di prima classe in Move è in gran parte un tentativo di risolvere questi problemi di scarsità e d’accesso.
Il team di ingegneri ha elencato tre problemi chiave che hanno riscontrato con i linguaggi blockchain esistenti, in particolare lo Script Bitcoin e la macchina virtuale Ethereum (i principali linguaggi di programmazione per Bitcoin ed Ethereum rispettivamente).
1. Codifica indiretta delle risorse
Poiché la programmazione viene eseguita matematicamente, molti elementi diversi sono rappresentati come numeri interi. Questo include asset blockchain come una criptovaluta, come nel caso di Bitcoin ed Ethereum. Gli ingegneri di Move hanno ritenuto che ciò rendesse "imbarazzante e soggetto a errori" la scrittura di programmi basati su risorse crittografiche. Questo è il motivo per cui Move rappresenta Diem come risorsa.
2. Scarsità inestensibile
Il linguaggio di Bitcoin ed Ethereum fa un buon lavoro nel proteggere la scarsità della loro criptovaluta principale. Tuttavia, i linguaggi non sono ben costruiti per creare nuove risorse con scarse qualità. Questo è un problema particolare per la macchina virtuale Ethereum, che consente la creazione di token ERC-20 basati sulla blockchain di Ethereum. In questi casi, gli sviluppatori devono progettare la scarsità da soli senza il supporto del linguaggio. Move ha cercato di cambiarlo.
3. Controllo di accesso non flessibile
Come con la scarsità, Bitcoin ed Ethereum mantengono una stretta presa sull'accesso alle loro criptovalute principali, in modo che la proprietà e il trasferimento non possano essere manomessi. Tuttavia, questo non è facilmente esteso ad altri elementi, né il livello o i mezzi di accesso possono essere personalizzati. Come con la scarsità, gli ingegneri di Move hanno cercato di rendere queste funzionalità più estensibili e personalizzabili per rendere il linguaggio più versatile e scalabile.
Per rimanere aggiornato sul nostro lavoro, assicurati di seguire Pontem su Twitter, iscriviti su Medium e connettiti con noi su Telegram.