Bitcoin è stato inventato per sostituire le banche, per eseguire pagamenti incensurabili, senza enti di controllo. Il decentramento ha portato alla creazione di smart contract che una volta eseguiti non prevedono l'intervento umano. L'accordo tra l'acquirente e il venditore è scritto in righe di codice, rendendo i contratti intelligenti affidabili. I dev utilizzano linguaggi di programmazione per programmare gli smart contract. Sebbene i linguaggi di programmazione famosi come C++, Java, Python, Go, Ruby, JavaScript, etc siano visti come i migliori, ne sono stati creati altri appositi quali Solidity, Move, Rust e Clarity. Gli smart contract richiedono linguaggi di programmazione creati ad hoc per semplificare le operazioni. Alcune blockchain utilizzano linguaggi "classici":
-EOS: C++
-NEO: C#
-Icon: Python
-Aion: Java
Altre blockchain usano delle varianti di questi che ne sfruttano l'infrastruttura, pur presentando qualche caratteristica diversa.
SOLIDITY (ETHEREUM, TRON E LE ALTRE EVM)
Solidity è un linguaggio di programmazione progettato da Gavin Wood (2014) specificamente progettato per sviluppare smart contract EVM (Ethereum, Avalanche, Fantom, Bnb Chain, etc) e Tron. Solidity è un codice di alto livello, leggibile dall'uomo, che lo scompone in istruzioni specifiche facilmente comprensibili per le macchine. Supporta oggetti, booleani, enumerazioni, interi, stringhe, array di byte e variabili di stato. Anche gli sviluppatori che non hanno esperienza con Solidity possono essere aiutati nello sviluppo, se sono esperti in JavaScript, Python e C++. Infatti, le basi di sviluppo blockchain di Solidity si coordinano con questi linguaggi di programmazione che sono abbastanza familiari. Esso è utilizzato per implementare smart contract nella virtual machine di Ethereum. Il codice di Solidity è scritto sull'EVM, convertito dal compilatore e poi eseguito dal processore. Esso è utilizzato per scrivere dapps anche su Tendermint (software open source per il lancio di blockchain su Cosmos).
CAIRO (ZK ROLLUP-STARK)
Si tratta di un linguaggio di programmazioni per blockchain utilizzato su un layer 2 ZK di tipo STARK. E' un linguaggio Turing completo, creato per scrivere codice dimostrabile, utilizzato per favorire decentralizzazione e progettare dapp sicure senza pagare cifre esorbitanti di gas ETH. Uno degli altri principali vantaggi di StarkNet rispetto a Ethereum è quello che è noto come Account Abstraction. Sulla rete Ethereum, la logica per la firma delle transazioni deve essere incorporata in un account. Tuttavia, su StarkNet, ogni account ha uno smart contract. Potrebbero esserci impostazioni controllate in modo modulare per cose come firme multiple, meccanica di ripristino e logica personalizzata per il gas (Immrsd.eth). Un altro vantaggio di Cairo è il modo in cui consente agli sviluppatori di sfruttare un linguaggio di programmazione non deterministico, secondo Astraly Analytics. Un algoritmo è deterministico quando può sempre produrre lo stesso output quando viene implementato un particolare input. Al contrario, un esempio di algoritmo non deterministico produrrebbe output diversi pur avendo lo stesso input.
RUST (SOLANA, POLKADOT, EGLD, NEAR)
Rust è usato principalmente per la scrittura di smart contract su Solana, Polkadot, Egld e Near. E' un linguaggio di programmazione vicino a quelli di basso livello quindi non proprio semplice, anche se non è molto dissimile da C++. Rust offre molte funzionalità come sicurezza della memoria, runtime ridotto, molte librerie, etc. Questo consente di scrivere un contratto intelligente compilato in wasm che non ha bug di memoria e consuma meno spazio di archiviazione sulla blockchain. Esso permette ai dev in grado di creare dapp personalizzabili e scalabili.
MOVE (APTOS, SUI NETWORK)
Creato per supportare la creazione di risorse digitali, Move è un linguaggio di programmazione bytecode open source, utilizzato per preservare la semplicità e allo stesso tempo supportare le complesse esigenze dell'infrastruttura degli smart contract. Basato su Rust, Move mira a sviluppare logiche di transazioni personalizzabili e contratti intelligenti per le blockchain Aptos e Sui Network. Move supporta booleani, riferimenti, interi a 64 bit senza segno, array di byte a dimensione fissa e indirizzi a 256 bit. Inoltre codifica la proprietà delle risorse digitali e crea procedure per il trasferimento di tali risorse. Esso affronta anche i problemi della rappresentazione indiretta introducendo risorse, un tipo personalizzabile ispirato alla logica lineare. Inoltre, ogni singola transazione ha uno script che è responsabile della codifica della logica che un validatore dovrebbe eseguire. Il linguaggio Move ha fondamentalmente tre componenti: Tipi, Strutture e Procedure. I tipi sono dati primitivi utilizzati in esso come Boolean, Integer, array di byte a dimensione fissa e tipo di dati di indirizzo. Gli struct sono fondamentalmente limitati e illimitati (strutture di risorse e strutture generali). Le procedure sono metodi semplici nel linguaggio di programmazione Move.
COSMWASM (COSMOS)
CosmWasm, abilita le macchine virtuali (VM) WebAssembly (WASM) in Cosmos SDK.
L'aggiunta di WebAssembly a Cosmos SDK consente al software di funzionare in modo sicuro su una blockchain. Wasm è un linguaggio intermedio che compila il codice dello sviluppatore in una macchina virtuale portatile. Questo prodotto consente agli sviluppatori di scrivere moduli in Rust che si integrano perfettamente con Cosmos SDK, in modo che possano sfruttare i moduli SDK e l'algoritmo di consenso BPoS Tendermint sviluppando una logica applicativa personalizzata in gran parte basata su Rust. In secondo luogo, la possibilità di caricare il codice nelle transazioni, anziché riavviare la catena, consente un'implementazione molto più rapida delle nuove funzionalità.
HASKELL (CARDANO)
Si tratta di un linguaggio di programmazione funzionale. Haskell ha le sue radici sia nel mondo accademico che nello studio della logica, e anche in precedenti iterazioni di linguaggi di programmazione funzionale, come Miranda. I linguaggi di programmazione funzionale pongono l'accento sull'utilizzo di funzioni "pure", ove possibile: funzioni che danno sempre lo stesso risultato per lo stesso input. Esso è adatto per codici e programmi che richiedono un alto grado di verifica formale. Attraverso Haskell, i contratti intelligenti Plutus e Marlowe di Cardano possono essere implementati con un codice preciso e formalmente verificato che offre un alto livello di garanzia sin dall'inizio. Plutus e Marlowe sono offerti come un insieme di librerie per Haskell, sfruttando la documentazione Haskell esistente, i toolkit e una comunità altamente professionale per fornire una base da cui partire per costruire contratti intelligenti sicuri e di livello aziendale.
Sia il codice off-chain che on-chain per Cardano è scritto in Haskell.
CLARITY (BLOCKSTACK)
Clarity è un linguaggio di programmazione smart contract introdotto da Blockstack per la propria blockchain Stacks. Blockstack mira a costruire la propria Internet, fornendo servizi di smart contract. Si tratta di un linguaggio di programmazione, progettato come "non completo" e "non destinato alla compilazione" (è un linguaggio interpretato). Clarity supporta i tipi Boolean, Optional, tuple, list, response e principal. Con l'aiuto della sua incompletezza di rotazione, Clarity è in grado di calcolare con largo anticipo le transazioni. In Clarity, il codice sorgente del contratto stesso viene pubblicato ed eseguito dai nodi blockchain, rimuovendo qualsiasi rappresentazione intermedia precompilata. Tramite funzioni di controllo riesce a ridurre anche eventuali bug. La prevedibilità consente ai dev di sapere come verrà eseguito il programma.
SCILLA (ZILLIQA)
Scilla (Smart Contract Intermediate-Level Lannguage) è un linguaggio per contratti intelligenti di livello intermedio sviluppato per la blockchain di Zilliqa. Esso è progettato come un linguaggio con il principale scopo della sicurezza degli smart contract.
Scilla impone una struttura agli smart contract che renderà le applicazioni meno vulnerabili agli attacchi eliminando alcune vulnerabilità note direttamente a livello linguistico. Inoltre, la struttura di principio di Scilla renderà le applicazioni intrinsecamente più sicure e suscettibili di verifica formale.
Il linguaggio viene sviluppato di pari passo con la formalizzazione della sua semantica ed è incorporato nell'assistente di prova Coq (uno strumento all'avanguardia per le prove meccanizzate sulle proprietà dei programmi). Coq si basa su una teoria avanzata della tipizzazione dipendente e presenta un ampio set di librerie matematiche. È stato applicato con successo in precedenza per implementare compilatori certificati (cioè completamente verificati meccanicamente), applicazioni simultanee e distribuite, incluse blockchain tra gli altri. Zilliqa utilizza lo sharding che gli conferisce scalabilità.
MICHELSON (TEZOS)
Questo linguaggio usato da Tezos è basato su stack, con primitive e tipi di dati di alto livello e un rigoroso controllo di tipo statico. Il suo design cherry raccoglie tratti da diverse famiglie linguistiche (Forth, Scheme, ML e Cat). Michelson è una serie di istruzioni eseguite in sequenza: ogni istruzione riceve in input lo stack risultante dall'istruzione precedente e lo riscrive per la successiva. Lo stack contiene sia valori immediati che strutture allocate nell'heap. Tutti i valori sono immutabili e Garbage Collection. I tipi dello stack di input e output sono fissi e monomorfici e il programma viene verificato prima di essere introdotto nel sistema. Nessuna esecuzione di smart contract può fallire perché un'istruzione è stata eseguita su uno stack di lunghezza o contenuto imprevisto.
Nessun commento:
Posta un commento