Linguaggi di programmazione Scilla e Vyper emergenti per contratti intelligenti

Scilla & amp; Vyper

L’emergere di blockchain e contratti intelligenti ha visto un interesse diffuso nella creazione di dapps e nell’utilizzo di contratti intelligenti per scopi pratici. Solidity, un linguaggio per contratti intelligenti di Ethereum, è il linguaggio di programmazione principale utilizzato per la rete blockchain pubblica di Ethereum e rimane il linguaggio per contratti intelligenti più diffuso.

Nonostante il suo successo e l’uso diffuso per la scrittura di contratti intelligenti su Ethereum, Solidity è un linguaggio di programmazione relativamente nuovo, naturalmente suscettibile a bug e ad alcuni errori logici di alto livello. Dalla domanda di creazione di contratti intelligenti e metodi di sicurezza migliorati per la loro scrittura, sono emersi i linguaggi di programmazione Vyper e Scilla.

Scilla & amp; Vyper

Solidità & Contratti intelligenti

La solidità è stata proposta da Gavin Wood nel 2014 ed è il linguaggio di programmazione dominante per la scrittura di contratti intelligenti. È progettato specificamente per la Ethereum Virtual Machine (EVM) e presenta alcune funzionalità utili documentazione su cosa è e come usarlo.

Solidity è un linguaggio di programmazione di alto livello che compila fino a un bytecode compatibile con EVM che gira sui nodi Ethereum. In particolare, Solidity è un linguaggio di programmazione relativamente semplice (rispetto ad altri) con una sintassi molto familiare che ricorda JavaScript. La solidità è costruita anche con alcune importanti considerazioni come linguaggio per contratti intelligenti per l’esecuzione su blockchain, inclusa la necessità che i contratti intelligenti siano deterministici.

Guida alla solidità

Leggi: che cos’è la solidità? La nostra guida al linguaggio degli smart contract Ethereum

Solidity è disponibile per l’apprendimento su più piattaforme educative online, tra cui Udemy – e ha diversi ampi libri scritto su di esso. Gli effetti di rete di Solidity lo hanno cementato come linguaggio di programmazione di riferimento per contratti intelligenti e dapp basati su Ethereum.

Nonostante la sua diffusa popolarità, l’esistenza di Solidity come linguaggio di programmazione specifico per EVM ne limita l’uso per altre piattaforme blockchain. Inoltre, le preoccupazioni per la sicurezza relative alle lingue di alto livello e ai loro potenziali problemi hanno portato a porre l’accento sull’audit di contratti intelligenti e su linguaggi più semplici e sicuri. Alto profilo trucchi e ricerca studi rivelare l’enorme dimensione delle vulnerabilità ha inevitabilmente portato a un pressante bisogno di migliori pratiche di contratti intelligenti.

Vyper

Vyper è un linguaggio di programmazione sperimentale simile a Solidity in quanto è anche adattato specificamente all’EVM. Vyper è sintatticamente simile a Python ed è orientato al contratto come Solidity.

Tuttavia, Vyper è progettato con obiettivi specifici di sicurezza, semplicità e verificabilità. Ciò è in gran parte il risultato di problemi di sicurezza nelle prime iterazioni di contratti intelligenti. Come conseguenza dei principi e degli obiettivi di Vyper, esempi espliciti di funzionalità che fa di proposito non sono delineato come:

  • Modificatori
  • Eredità di classe
  • Funzione & Sovraccarico dell’operatore
  • Chiamata ricorsiva
  • Cicli infiniti

In particolare, la chiamata ricorsiva rende impossibile impostare un limite superiore ai limiti del gas e può portare ad attacchi ai limiti del gas. Inoltre, la rimozione dei modificatori è stata eseguita tenendo presente la verificabilità, poiché possono rendere il codice fuorviante e difficile da interpretare da una prospettiva leggibile dall’uomo.

Vyper si spoglia delle funzionalità vulnerabili alla sicurezza, ma aggiunge anche alcune funzionalità chiave tra cui i limiti e il controllo dell’overflow, la decidibilità e la digitazione forte. Per quanto riguarda i limiti di gas, la decidibilità consente a uno sviluppatore di calcolare un limite superiore preciso per il consumo di gas di una chiamata di funzione.

Una delle principali differenze tra Vyper e Solidity è che, sebbene sembrino simili, Vyper rimuove gran parte degli archetipi orientati agli oggetti presenti in Solidity. L’enfasi sulla semplicità di Vyper consente inoltre di essere molto più leggibile nei casi in cui è necessario l’audit da parte di parti non molto familiari con la programmazione. Il potenziale utilizzo di Vyper è, quindi, attraente per molte dapp aziendali pratiche che possono essere scritte in Vyper.

È importante tenere in considerazione le considerazioni sulla sicurezza a livello di linguaggio di programmazione. La semplicità spesso porta a una minore complessità logica richiesta e può intrinsecamente fornire una migliore sicurezza. Vyper inoltre non è necessariamente progettato per sostituire Solidity, piuttosto è costruito per fornire un linguaggio più semplice e sicuro come opzione alternativa per quando è necessario.

Vyper include un file Protocollo di miglioramento Vyper (VIP) e ha persino un editor di testo con un file compilatore per giocare con il codice Vyper. Ethereum’s Casper FFG anche l’implementazione è scritta in Vyper.

Scilla

Scilla è un linguaggio per contratti intelligenti di livello intermedio utilizzato da Zilliqa. Scilla è stato progettato esplicitamente pensando alla sicurezza e alla sicurezza dei contratti intelligenti. È importante sottolineare che si concentra sulla fornitura verifica formale di contratti intelligenti.

Guida di Zilliqa

Leggi: Guida per principianti a Zilliqa

Verifica formale è progettato per fornire garanzie statiche di contratti intelligenti prima che siano immutabilmente impegnati nella blockchain. La verifica formale degli smart contract sta diventando sempre più diffusa sul campo ed è attivamente perseguita e applicata da diverse piattaforme tra cui Tezos e Cardano. L’uso della verifica formale dovrebbe ridurre sostanzialmente le istanze di codice difettoso impegnato in blockchain e successivamente ridurre la necessità di un audit intensivo di contratti intelligenti da parte di terze parti.

Scilla è progettato con cura per essere abbastanza espressivo da costruire utili dapps, pur garantendo il ragionamento formale sul comportamento del contratto. Simile a Vyper, il principio principale è la semplicità e la sicurezza sull’espressività. Una distinzione importante che deve essere fatta su Scilla è però che è un linguaggio di livello intermedio, il che significa che è inteso come obiettivo di traduzione per linguaggi di alto livello e successivamente compilato in bytecode eseguibile. Di conseguenza, la lingua è più difficile da capire rispetto a una lingua di alto livello come Solidity.

Scilla separa comunicazione e calcolo, il che ha conseguenze significative sul modo in cui i contratti vengono eseguiti. I contratti sono strutturati come comunicare automi dove i calcoli in contratto vengono eseguiti come transizioni atomiche senza coinvolgendo altre parti. Inoltre, un caso di coinvolgimento richiesto da un’altra parte si traduce in una fine esplicitamente comunicata della transizione. Gli effetti specifici del contratto come le transizioni possono quindi essere disaccoppiati dalle interazioni blockchain come messaggi e invio / ricezione di fondi.

Inoltre, Scilla fornisce la separazione tra efficace e puro calcoli insieme alla separazione tra invocazione e continuazione. Per quanto riguarda i calcoli efficaci e puri, Scilla trae ispirazione dalla programmazione funzionale citando:

“Progettando attentamente la semantica dell’interazione tra aspetti linguistici puri e impuri, garantiamo una serie di proprietà fondamentali sulle transizioni contrattuali, come il progresso e la conservazione del tipo, rendendole anche suscettibili di verifica interattiva e / o automatica con strumenti autonomi”

La separazione tra invocazione e continuazione si riferisce alla strutturazione dei contratti come automi comunicanti per fornire a CPS modello computazionale. Utilizzando questo modello con continuazioni esplicite, linguaggi come Solidity possono essere tradotti direttamente in Scilla senza compromettere l’integrità della struttura degli automi.

La componente di verifica formale di Scilla è abilitata dalla sua integrazione nel file Coq Proof Assistant, un sistema di gestione delle prove formale progettato per fornire prove verificate meccanicamente di contratti intelligenti e applicazioni distribuite. Il risultato è la verifica formale dei contratti che ragionano su entrambe le proprietà di sicurezza e vitalità. Correttezza nei sistemi distribuiti possono essere separati in sicurezza e vivacità. Secondo Zilliqa:

Sicurezza è quando “niente va storto“- Questa è una garanzia che qualcosa di cattivo farà mai accadere. In generale, questo è il momento in cui non esistono due processi che decidono valori diversi. Un altro esempio potrebbe essere l’assenza di deadlock nei sistemi di transazione distribuiti. La sicurezza ha conseguenze importanti sull’integrità complessiva degli smart contract a lungo termine.

Vitalità dov’è “alla fine possono accadere certe cose“- Una garanzia che qualcosa di buono farà infine accadere. Anche la parola “alla fine” non implica un limite di tempo, ma se il sistema funziona abbastanza a lungo, la vita è garantita. Ad esempio, in consenso, tutti i processi alla fine decideranno su un valore. Un altro esempio è la completezza dei rilevatori di guasti che alla fine rileveranno processi difettosi.

Lo sviluppo di Scilla da parte di Zilliqa parallelamente alla formalizzazione e il suo incorporamento in Coq dovrebbero dimostrarsi una decisione preziosa per la sicurezza futura degli smart contract che girano sulla sua blockchain ad alto rendimento.

Infine, Scilla è indipendente dalla blockchain e può essere utilizzata per altre blockchain. Tuttavia, è ancora in fase di ricerca e sviluppo attivi, principalmente con il team di Zilliqa. La Scilla sito web fornisce anche un tutorial e IDE in linea per aver provato la lingua.

Conclusione

La continua innovazione nello sviluppo di contratti intelligenti vedrà sicuramente l’ascesa di linguaggi e soluzioni di programmazione più orientati al contratto per affrontare la loro sicurezza. La necessità di sicurezza di dapps e smart contract è della massima importanza considerando le quantità di valore che vengono trasferite su grandi reti di criptovaluta come Ethereum.

Le iterazioni iniziali dei contratti intelligenti hanno mostrato un potenziale significativo nelle loro capacità future. Ora, una nuova classe di sviluppi è focalizzata sul miglioramento della loro sicurezza a livello di linguaggio di programmazione per assicurarne la sostenibilità.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me
Like this post? Please share to your friends:
map