🇮🇹 "Comprendere il significato di esteso nel modello UTxO di Cardano"

:it: Traduzione italiana di Understanding the Meaning of Extended in Cardano’s UTxO Model

Traduzione italiana a cura di Lordwotton di RIOT Stake Pools. Se apprezzi queste traduzioni, per favore valuta di supportare il mio lavoro delegando i tuoi ada a RIOT :pray: entra nel nostro gruppo Telegram


Comprendere il significato di esteso nel modello UTxO di Cardano


Bitcoin utilizza il modello contabile UTxO. Per il team IOG questo modello non era sufficiente per la missione di Cardano, quindi lo hanno esteso. Cardano utilizza il modello UTxO esteso. In questo articolo spiegheremo il significato di “esteso”.

Più dei pagamenti

La rete Bitcoin è stata progettata per i pagamenti. Il modello UTxO di Bitcoin ha un’espressività limitata di programmabilità. Cardano è una piattaforma di smart contract che consente agli sviluppatori una gamma più ampia di operazioni legate al valore, ovvero di lavorare con gli UTxO.

L’estensione del modello UTxO riguarda le seguenti proprietà:

  • Capacità di mantenere lo stato del contratto.
  • Capacità di riutilizzare il codice di un contratto per una sequenza di transazioni. Il team la chiama continuità.
  • Capacità di supportare più asset.
  • Capacità di supportare una maggiore espressività e programmabilità degli smart contract (script).

Bitcoin non è in grado di fornire queste proprietà, o lo è solo in misura molto limitata. Bitcoin è stato progettato come una rete di transazioni che essenzialmente si limita a convalidare le chiavi per verificare le condizioni di spesa. Bitcoin non è adatto a operazioni finanziarie più complesse, cioè all’esecuzione di contratti intelligenti.

Capacità dell’UTxO e degli script di Bitcoin

In Bitcoin, un indirizzo viene generato mediante hashing di una chiave pubblica. Questo processo è noto come “aggancio a una chiave pubblica”. Quando qualcuno invia BTC a un indirizzo, lo blocca essenzialmente alla chiave pubblica associata a quell’indirizzo.

Per spendere il BTC bloccato a un indirizzo specifico, il proprietario dell’indirizzo deve sbloccarlo fornendo una firma digitale. Questa firma viene generata utilizzando la chiave privata associata alla chiave pubblica dell’indirizzo. L’atto di firmare la transazione con la chiave privata sblocca effettivamente il BTC, consentendone la spesa.

In Bitcoin, un indirizzo può essere associato a uno script, ma in un modo specifico. Bitcoin dispone di diversi script, il più popolare dei quali è il Pay-to-Public-Key-Hash (P2PKH).

Gli script Bitcoin (codice/piccolo programma) sono incorporati nelle sezioni di input e output delle transazioni. Quando si crea una transazione, si sta essenzialmente scrivendo uno script (gli opcode dettano le condizioni di spesa). Per distribuire uno script, lo si incorpora in una transazione Bitcoin.

Questi script si incontrano comunemente:

  • scriptPubKey è uno script di blocco che richiede il soddisfacimento di determinate condizioni affinché un destinatario possa spendere BTC
  • scriptSig è lo script di sblocco che soddisfa le condizioni poste all’output da scriptPubKey e che consente di spendere BTC.

Gli script sono scritti in Script. Bitcoin Script è un linguaggio di programmazione basato su stack utilizzato per costruire le transazioni Bitcoin. Bitcoin Script manca di molte delle funzionalità dei comuni linguaggi di programmazione. Non è un linguaggio completo di Turing, cioè manca di diverse funzioni logiche.

Pertanto, anche se gli indirizzi Bitcoin possono essere associati a script, essi sono tipicamente legati a una specifica chiave pubblica e non contengono logica arbitraria sotto forma di script (intelligenti). Gli script sono utilizzati principalmente per la convalida delle chiavi.

Gli script non vengono memorizzati separatamente sulla blockchain per essere riutilizzati. Invece, ogni transazione include i propri script.

Quindi, anche se è possibile utilizzare lo stesso script in più transazioni, ogni istanza dello script viene memorizzata separatamente come parte della rispettiva transazione. Non esiste un meccanismo che consenta di memorizzare uno script una volta sulla blockchain e poi di farne riferimento in più transazioni.

Bitcoin Script non ha una nozione di stato. Tutte le informazioni necessarie sono contenute negli script di blocco e sblocco. Ciò significa che gli script sono privi di stato e non memorizzano alcuna informazione tra le esecuzioni. Gli script sono utilizzati quasi esclusivamente per bloccare e sbloccare BTC.

In Bitcoin, gli UTxO sono utilizzati per memorizzare e transare il valore del BTC. Ogni UTxO rappresenta una certa quantità di BTC inviata a un indirizzo specifico. Non è possibile creare un nuovo UTxO che rappresenti (esclusivamente) un token personalizzato con un proprio valore.

Forse avete sentito dire che il Bitcoin può avere dei token sul primo livello. Per la prima volta, si trattava delle cosiddette monete colorate. Si tratta di associare specifici satoshi a gettoni personalizzati. Questo li trasforma effettivamente in gettoni, che possono essere utilizzati per rappresentare qualsiasi cosa. Va notato che non si trattava di gettoni nel vero senso della parola.

Potrebbe esistere un UTXO con 1000 satoshi, dove 10 satoshi sono colorati come gettoni X. Se si volesse inviare un solo gettone X, si dovrebbe creare un nuovo UTxO. Questo concetto non era praticabile.

Il concetto di Ordinals è in qualche modo simile a quello delle monete colorate, ma con alcune differenze fondamentali. Gli Ordinals sono satoshi che sono stati ordinati e incisi con un’informazione, come un testo o un’immagine. Questa informazione rende il sat unico e lo trasforma in un token de-facto non fungibile (NFT).

Bitcoin può essere semplicemente descritto come un libro mastro a singolo asset. Gli script Bitcoin sono privi di stato e vengono utilizzati principalmente per convalidare le firme (chiavi). Gli script vengono trasferiti nelle transazioni e non possono essere memorizzati nella blockchain e riutilizzati.

Il modello UTxO esteso

Nel modello UTxO esteso, il concetto di “indirizzo” è generalizzato. Invece di limitare i lock alle chiavi pubbliche e le chiavi alle firme, nel modello EUTxO gli indirizzi possono contenere (indirettamente) logica arbitraria sotto forma di script.

Ciò significa che, invece di essere solo una versione hash di una chiave pubblica, gli indirizzi in Cardano possono essere associati a script attraverso l’hash dello script contenuto nell’indirizzo. Ciò consente transazioni e interazioni più complesse, come quelle necessarie per gli smart contract.

Un indirizzo può contenere un hash dello script che viene utilizzato per identificare lo script memorizzato nella blockchain.

In Cardano, quindi, una transazione può sia contenere che fare riferimento a script. Bitcoin non può fare riferimento agli script. Pertanto, gli script devono sempre essere inclusi nella transazione.

Cardano può fare riferimento agli script. Questi script di riferimento sono allegati agli output e possono essere utilizzati per soddisfare i requisiti di script durante la convalida. Ciò significa che le transazioni che utilizzano script comuni possono essere molto più piccole. La transazione che utilizza lo script non dovrà fornirlo affatto, purché faccia riferimento a un output che contiene lo script.

Il concetto di script di riferimento è legato all’aspetto della continuità del modello UTXO esteso di Cardano. La continuità del contratto garantisce che lo stesso codice di contratto possa essere utilizzato per una sequenza di transazioni.

La piattaforma Plutus consente agli sviluppatori di scrivere applicazioni (script) che interagiscono con la blockchain Cardano. Il linguaggio di programmazione Plutus si è evoluto da Haskell. Gli script Plutus sono pezzi di codice che implementano funzioni pure con uscite vere o false. Vengono utilizzati per convalidare le azioni.

Nel modello UTxO esteso, agli script validatori vengono passati tre argomenti:

  • Datum: si tratta di un dato collegato all’UTxO di uscita che lo script sta bloccando. In genere viene usato per trasportare lo stato.
  • Redentore: È un dato collegato all’UTxO di ingresso della spesa. In genere viene utilizzato per fornire allo script l’input proveniente da chi spende.
  • Contesto: È un dato che rappresenta informazioni sulla transazione di spesa. Viene utilizzato per fare affermazioni sul modo in cui viene speso l’UTxO in uscita.

Il modello EUTXO di Cardano consente agli sviluppatori di scrivere script stateful attraverso l’uso di queste primitive.

Il Datum può essere utilizzato per tenere traccia dello stato di uno script. Il Datum svolge un ruolo cruciale nell’utilizzo di un UTxO in uscita da un indirizzo di script e nell’invio a un indirizzo di script. In Cardano, quindi, è possibile associare uno stato a uno script utilizzando il Datum.

L’espressività e la programmabilità degli script di Plutus consentono agli sviluppatori di implementare un’ampia gamma di logiche. Ad esempio, un semplice script di validazione potrebbe verificare se una particolare chiave ha firmato la transazione di spesa (simile agli script Bitcoin). Tuttavia, con un’attenta estensione, gli sviluppatori possono utilizzare gli script per esprimere logiche più complesse.

L’uso di Datum e Redeemer migliora ulteriormente le capacità di questi script, consentendo loro di trasportare lo stato e di accettare input da chi spende. Lo script può prendere i valori di Datum e Redeemer, eseguire calcoli o confronti e quindi produrre un valore booleano (che determina la possibilità di spendere).

Il libro mastro di Cardano è progettato per supportare più asset. È chiamato libro mastro multi-asset. Permette a Cardano di fare contabilità o transazioni con più di un tipo di asset (monete ADA native).

Quando i gettoni vengono coniati, vengono creati nuovi UTxO. Quando gli utenti coniano gettoni, creano essenzialmente nuovi UTxO che contengono tali gettoni. Questi UTxO possono essere spesi nelle transazioni, proprio come gli UTxO con le monete ADA.

Gli script di Plutus possono lavorare con i token esattamente come con ADA.

Cardano può essere semplicemente descritto come un libro mastro multi-asset. I token coniati sono nuovi UTxO che hanno proprietà simili alle monete ADA. Gli script di Plutus sono stateful. Gli script lavorano con Datum, Redeemer e il contesto delle transazioni, consentendo agli sviluppatori di creare logiche più complesse (oltre alla verifica delle chiavi). Gli script possono essere memorizzati nel libro mastro e richiamati ripetutamente.

Conclusione

Il modello UTxO ha un altro importante significato che non viene menzionato nell’articolo. Vale a dire la possibilità di una maggiore scalabilità. Gli UTxO sono essenzialmente oggetti indipendenti dall’ambiente circostante. Le transazioni con UTxO possono essere convalidate indipendentemente da altri UTxO (cioè, in pratica, indipendentemente dalle transazioni di altri utenti). In altre parole, un’altra caratteristica che il modello UTxO supporta è il parallelismo. Questa caratteristica sarà sfruttata da un miglioramento chiamato Input Endorsers.

Probabilmente la più grande differenza tra Bitcoin UTxO e Cardano UTxO è la possibilità di aggiungere Datum, cioè dati arbitrari. Sebbene molte delle differenze descritte siano in qualche modo legate agli UTxO, esse differiscono principalmente a causa delle diverse filosofie e progettazioni dei due progetti. Se fosse possibile aggiungere dati (Datum) agli UTxO di Bitcoin, sarebbe necessario estendere ulteriormente il Bitcoin Script. I dati memorizzati sono più utili se possono essere confrontati con qualcosa, idealmente con l’input di una transazione (Redeemer). La possibilità di coniare nuovi UTxO è una caratteristica che Bitcoin non ha di proposito. Queste considerazioni potrebbero essere approfondite.

La blockchain è composta da più componenti le cui proprietà formano un insieme. UTxO è solo uno di questi componenti. L’utilizzo del potenziale del modello contabile dipende dagli altri componenti. Il potenziale di UTxO esteso è legato alla piattaforma Plutus, alle transazioni, alle capacità del libro mastro, ecc.