Contratti intelligenti del futuro? Vyper e Plutus

In qualità di sviluppatore, una cosa di cui dovresti renderti conto è l’importanza di un’istruzione costante. Il mondo della criptovaluta e della blockchain è in uno stato di movimento costante. La norma di un anno fa potrebbe essere completamente irrilevante tra mesi. Quindi, nello spirito di questo cambiamento costante, ti daremo un’idea di come saranno i contratti intelligenti e il codice di Vyper e Plutus. Ethereum prevede di utilizzare Vyper per i suoi contratti futuri, mentre Cardano ha scelto Plutus come sua scelta di linguaggio di programmazione per contratti intelligenti.

Contratti intelligenti del futuro? Vyper e Plutus

Solidity è il linguaggio per contratti intelligenti scelto da Ethereum fin da ora. Solidity è stato sviluppato da Gavin Wood, Christian Reitwiessner, Alex Beregszaszi, Yoichi Hirai e diversi ex collaboratori principali di Ethereum per consentire la scrittura di contratti intelligenti su piattaforme blockchain come Ethereum.

È stato influenzato da molti programmi popolari e concetti di programmazione. Ha elementi di programmazione orientata agli oggetti, sviluppo web, linguaggio assembly, ecc. E copre un’ampia gamma di casi d’uso. tuttavia, auditing i contratti di solidità possono essere davvero difficili poiché possono essere estremamente permissivi e complicati.

Vyper è un linguaggio basato su Python creato esclusivamente per la leggibilità e la semplicità. Poiché Python stesso è uno dei linguaggi di programmazione più facilmente comprensibili e ampiamente utilizzati, si spera che le persone non tecniche saranno in grado di saltare e iniziare a codificare i propri contratti intelligenti. Vyper è stato sviluppato come un linguaggio semplice e minimalista che si concentra su casi d’uso banali (ad es. Non può essere utilizzato per codificare una Dapp complessa) e non è flessibile come la solidità.

Quindi, sebbene possa in qualche modo frenare la flessibilità del contratto, esso fornisce un altro

“Un regime semplice, pragmatico e facilmente verificabile per leggere e scrivere contratti intelligenti, che cerca di catturare chiaramente l’intento di chi scrive il codice.”

Sembra che i pezzi grossi di Ethereum ed Ethereum Classic siano completamente dietro a Vyper per due motivi principali:

#Crypto ExchangeBenefits

1

Binance
Best exchange


VISIT SITE
  • ? The worlds biggest bitcoin exchange and altcoin crypto exchange in the world by volume.
  • Binance provides a crypto wallet for its traders, where they can store their electronic funds.

2

Coinbase
Ideal for newbies


Visit SITE
  • Coinbase is the largest U.S.-based cryptocurrency exchange, trading more than 30 cryptocurrencies.
  • Very high liquidity
  • Extremely simple user interface

3

eToro
Crypto + Trading

VISIT SITE
  • Multi-Asset Platform. Stocks, crypto, indices
  • eToro is the world’s leading social trading platform, with thousands of options for traders and investors.

  • L’implementazione dello sharding di Ethereum e Casper FFG sono stati codificati in Vyper.

  • Il Commonwealth di Ethereum che mantiene e sviluppa Ethereum Classic ha anche dichiarato di voler adottare Vyper come linguaggio di contratto intelligente predefinito.

L’approccio minimalista di Vyper elimina l’ereditarietà, le chiamate ricorsive dei modificatori di stato e il sovraccarico dell’operatore che lascia il posto agli attacchi del vettore limite di gas. Inoltre, ha anche tonnellate di controlli di overflow per operazioni aritmetiche di grandi dimensioni. A causa del suo approccio, Vyper non solo è efficiente in termini di risorse, ma è anche difficile scrivere codice dannoso senza che venga individuato durante l’auditing.

Vyper Smart Contract

#CRYPTO BROKERSBenefits

1

eToro
Best Crypto Broker

VISIT SITE
  • Multi-Asset Platform. Stocks, crypto, indices
  • eToro is the world’s leading social trading platform, with thousands of options for traders and investors.

2

Binance
Cryptocurrency Trading


VISIT SITE
  • ? Your new Favorite App for Cryptocurrency Trading. Buy, sell and trade cryptocurrency on the go
  • Binance provides a crypto wallet for its traders, where they can store their electronic funds.

#BITCOIN CASINOBenefits

1

Bitstarz
Best Crypto Casino

VISIT SITE
  • 2 BTC + 180 free spins First deposit bonus is 152% up to 2 BTC
  • Accepts both fiat currencies and cryptocurrencies

2

Bitcoincasino.io
Fast money transfers


VISIT SITE
  • Six supported cryptocurrencies.
  • 100% up to 0.1 BTC for the first
  • 50% up to 0.1 BTC for the second

Diamo un’occhiata a uno smart contract Vyper per gentile concessione CoinPupil. Questo è un contratto ERC-20 semplice e diretto.

# Eventi

Trasferimento: evento ({_ from: indexed (address), _to: indexed (address), _value: uint256})

Approvazione: evento ({_ owner: indexed (address), _spender: indexed (address), _value: uint256})

# Variabili di stato

nome: pubblico (bytes32)

simbolo: pubblico (bytes32)

totalSupply: pubblico (uint256)

decimali: pubblico (int128)

saldi: int128 [indirizzo]

consentito: int128 [indirizzo] [indirizzo]

# Funzione costruttore / Istanziazione contratto

@pubblico

def __init __ (_ name: bytes32, _symbol: bytes32, _decimals: uint256, _initialSupply: uint256):

self.name = _name

self.symbol = _symbol

self.decimals = _decimals

self.totalSupply = _initialSupply * convert (10, ‘uint256’) ** _decimals

self.balances [msg.sender] = convert (self.totalSupply, ‘int128’)

# Saldo del conto

@pubblico

@costante

def balanceOf (_owner: address) -> uint256:

return convert (self.balances [_owner], ‘uint256’)

# Invia _ammontare di token _all’indirizzo

@pubblico

def trasferimento (_to: address, _amount: int128 (uint256)) -> bool:

se self.balances [msg.sender] >= _amount e

self.balances [_to] + _amount >= self.balances [_to]:

self.balances [msg.sender] – = _amount # Sottrai dal mittente

self.balances [_to] + = _amount # Aggiungi lo stesso al destinatario

return True

altro:

return False

# Trasferimento di token consentiti

@pubblico

def transferFrom (_from: address, _to: address, _value: int128 (uint256)) -> bool:

se _value <= self.allowed [_from] [msg.sender] e

_valore <= self.balances [_from]:

self.balances [_from] – = _value # diminuisce il saldo dell’indirizzo from.

self.allowed [_from] [msg.sender] – = _value # diminuisce l’indennità.

self.balances [_to] + = _value # incease balance of to address.

return True

altro:

return False

# Consenti a _spender di prelevare dal conto fino all’importo di _value.

@pubblico

def approve (_spender: address, _amount: int128 (uint256)) -> bool:

self.allowed [msg.sender] [_ spender] = _amount

log.Approval (msg.sender, _spender, convert (_amount, ‘uint256’))

return True

# Ottieni l’indennità di un indirizzo

@pubblico

indennità def (_owner: address, _spender: address) -> uint256:

return convert (self.allowed [_owner] [_ spender], ‘uint256’)

In questo contratto:

  • Il metodo “self” viene utilizzato per mostrare le variabili di istanza della sua classe a scopo di chiarimento.

  • @public e @private sono utilizzati per impostare la visibilità e l’esposizione dei contratti Interfaccia ABI (Application Binary Interface) che consente ad attori esterni (altri contratti o indirizzi di wallet) di chiamarli.

Plutus

Cardano ha scelto Haskell e Plutus come lingue preferite. Haskell verrà utilizzato per codificare Cardano, mentre Plutus verrà utilizzato per la creazione di smart contract. Entrambi sono linguaggi funzionali.

Cosa intendiamo con questo?

Le due famiglie di lingue (una piccola deviazione)

Quando si tratta di linguaggi di programmazione, ci sono due famiglie:

  • Imperativo
  • Funzionale.

Linguaggi di programmazione imperativi

In un approccio imperativo, il programmatore deve mettere giù tutti i passaggi che il computer deve compiere per raggiungere un obiettivo. Tutti i nostri linguaggi di programmazione tradizionali come C ++, Java e persino Solidity sono linguaggi di programmazione imperativi. Questo tipo di approccio alla programmazione è anche chiamato programmazione algoritmica.

Facciamo un esempio di cosa intendiamo con questo. Diamo un’occhiata al C ++. Supponiamo di voler aggiungere 5 e 3.

int a = 5;

int b = 3;

int c;

c = a + b;

Quindi, come puoi vedere, il processo di aggiunta richiede più passaggi e ogni passaggio cambia costantemente lo stato del programma poiché vengono eseguiti tutti a turno individualmente.

Un processo di aggiunta richiede quattro passaggi e i passaggi sono:

  • Dichiarare un intero a e assegnargli il valore 5.

  • Dichiarare un intero b e assegnargli il valore 3.

  • Dichiarare un numero intero c.

  • Aggiungendo i valori di eb e memorizzandoli in c.

Linguaggi di programmazione funzionale

La seconda famiglia di linguaggi di programmazione sono i linguaggi funzionali. Questo stile di programmazione è stato creato per costruire un approccio funzionale alla risoluzione dei problemi. Questo tipo di approccio è chiamato programmazione dichiarativa.

Quindi, come funziona la programmazione funzionale?

Supponiamo che ci sia una funzione f (x) che vogliamo usare per calcolare una funzione g (x) e poi vogliamo usarla per lavorare con una funzione h (x). Invece di risolverli tutti in sequenza, possiamo semplicemente raggrupparli tutti insieme in un’unica funzione come questa:

h (g (f (x)))

Ciò rende l’approccio funzionale più facile da ragionare matematicamente. Questo è il motivo per cui i programmi funzionali dovrebbero essere un approccio più sicuro alla creazione di contratti intelligenti. Ciò aiuta anche a semplificare la verifica formale, il che significa praticamente che è più facile dimostrare matematicamente cosa fa un programma e come agisce. Ciò conferisce a Cardano la sua proprietà di “codice di alta garanzia”.

Questo è precisamente il motivo per cui l’approccio funzionale è così desiderabile.

Ed è esattamente ciò che Cardano sta usando Haskell per codificare il loro ecosistema e Plutus per i loro contratti intelligenti. Sia Haskell che Plutus sono linguaggi funzionali.

Torniamo a Plutus

Plutus è una versione semplificata e di livello superiore di Haskell. Ciò significa che, come Haskell, ha più somiglianze con la matematica piuttosto che con la programmazione. Pluto lo è previsto per l’utilizzo da parte di

“Istituzioni finanziarie, luoghi che fanno trading elettronico e altre operazioni finanziarie simili con denaro in gioco”.

Quindi, diamo un’occhiata ad alcuni semplici programmi di Plutus. Il codice seguente è stato preso da Documenti Cardano.

Questo semplice programma Plutus mostra addizione, moltiplicazione, fattoriale e Fibonacci:

aggiungi: Nat -> Nat -> Nat {

aggiungi Zero n = n;

aggiungi (Suc m) n = Suc (aggiungi m n)

}

mul: Nat -> Nat -> Nat {

mul Zero _ = Zero;

mul (Suc m) n = aggiungi (mul m n) n

}

fac: Nat -> Nat {

fac Zero = Suc Zero;

fac (Suc n) = mul (Suc n) (fac n)

}

fib: Nat -> Nat {

fib Zero = Suc Zero;

fib (Suc Zero) = Suc Zero;

fib (Suc (Suc n)) = add (fib n) (fib (Suc n))

}

Puoi vedere nel codice stesso le differenze tra un approccio funzionale e un approccio imperativo.

Conclusione

Il mondo in continua evoluzione di criptovalute e blockchain significa che dobbiamo essere costantemente all’erta. Avere la conoscenza di questi nuovi linguaggi di programmazione è assolutamente fondamentale per tutti i cacciatori di taglie e gli sviluppatori.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me