🇮🇹 "Immergersi più a fondo nel Marlowe Playground"

:it: Traduzione italiana di “Diving deeper into the Marlowe Playground - IOHK Blog

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


Immergersi più a fondo nel Marlowe Playground

Imparare a creare i propri modelli dai contratti Marlowe e fornire suggerimenti agli utenti usando metadati personalizzati

img

Marlowe è un linguaggio specifico di dominio (DSL) incorporato in Haskell che offre contratti finanziari per blockchain che tutti possono codificare. È una piattaforma per la finanza decentralizzata (DeFi) che supporta prestiti diretti, peer-to-peer, contratti per differenza (CFD) e altri strumenti simili. Marlowe permette agli utenti di applicare la loro esperienza di dominio per scrivere e gestire contratti comodamente, senza la ripida curva di apprendimento associata allo sviluppo di software, blockchain o contratti intelligenti.

Il Marlowe Playground è l’ambiente sandbox dove potete esercitarvi a scrivere i vostri contratti finanziari. Questo parco giochi vi offre la scelta di lavorare direttamente in una serie di linguaggi come Marlowe stesso, JavaScript, Haskell, o Blockly, a seconda di quale preferite usare. Abbiamo recentemente aggiunto nuove funzionalità al Marlowe Playground per costruire e modificare i modelli e personalizzare i metadati, così come una nuova opzione di download JSON per i contratti stessi. In questo post, diamo uno sguardo più da vicino a queste nuove caratteristiche.

Dai contratti ai modelli

Con l’introduzione di Marlowe Run, abbiamo esteso il Marlowe Playground per supportare quelli che chiamiamo template. Questi template sono implementati usando una versione estesa di Marlowe (conosciuta come Extended Marlowe, la versione disponibile nel Marlowe Playground). Questi nuovi modelli significheranno che gli utenti possono facilmente riutilizzare e riproporre i contratti per diversi scenari e contesti.

Extended Marlowe offre una maggiore flessibilità rispetto alla semplice Marlowe (o Core Marlowe). I contratti sono molto concreti, e specificano i timeout in valori assoluti, originariamente attraverso numeri di slot, e più recentemente usando timestamp standardizzati (POSIX time).

Inoltre, i valori Marlowe sono tipicamente hardcoded in Marlowe, eccetto quelli passati come Inputs. Per esempio, si può implementare un prestito per ₳100 o uno che chieda all’utente quanto prestare attraverso una scelta in un costrutto When, ma non potremmo avere un contratto Marlowe riutilizzabile che potrebbe essere distribuito in qualsiasi momento e con qualsiasi parametro dato. La Marlowe estesa affronta queste limitazioni aggiungendo l’opzione di includere i parametri del contratto. Attualmente, la Marlowe estesa è praticamente identica alla Marlowe normale, tranne che per il fatto che include due costruttori extra che rappresentano i parametri del modello:

  • SlotParam - può essere scritto al posto di un timeout in un costrutto When
  • ConstantParam - è un tipo di costrutto Value

Entrambi i costruttori prendono, come unico parametro, una stringa che serve come identificatore del parametro, per esempio

  • SlotParam "Payment deadline
  • ConstantParam “Prezzo”

Due parametri dello stesso tipo (SlotParam o ConstantParam) e con lo stesso identificatore sono considerati lo stesso parametro, anche se appaiono in posti diversi.

Se un contratto contiene dei parametri (in altre parole, se è un modello), allora all’utente verrà chiesto di inserire i valori per quei parametri prima di iniziare una simulazione del contratto, o prima di distribuire il contratto in Marlowe Run:

img

Figura 1. Finestra di dialogo della simulazione

Si noti che l’input del parametro del modello di valore nella figura non è solo un campo di input intero. Piuttosto, si aspetta un numero con decimali, e ha un’etichetta con un simbolo di valuta che indica che il numero atteso rappresenta un importo di ada. Questa regola è vera anche per i valori richiesti attraverso un Choice in un costrutto When. Inoltre, le scelte non hanno bisogno di rappresentare quantità di ada. Possono rappresentare qualsiasi cosa, come un rapporto, come segue:

img

Figura 2. Finestra di dialogo delle azioni

Ci sono anche dei suggerimenti per ogni parametro che l’utente può visualizzare facendo clic sul punto interrogativo viola accanto a ogni termine. Il testo nei suggerimenti è specifico per il modello di contratto e contiene testo formattato, per esempio, testo in grassetto, testo in corsivo o testo sottolineato.

img

Figura 3. Suggerimenti sui parametri

I contratti definiti dall’utente possono personalizzare tutti questi dettagli attraverso l’uso di metadati. Diamo un’occhiata a come questo viene fatto.

Personalizzare i metadati

C’è una scheda Metadata nella parte inferiore di ogni editor in Marlowe Playground. Lì gli utenti possono personalizzare i metadati come necessario. Per esempio:

img

Figura 4. Scheda Metadati

Ci sono alcuni metadati di base che ogni contratto dovrebbe includere, come:

  • Tipo di contratto - Che tipo di contratto è? Questa categoria aiuterà a classificare i contratti in modo che siano più facili da trovare in futuro. Attualmente, ci sono poche categorie disponibili, ma ne aggiungeremo altre in futuro. Se nessuna categoria si adatta al tuo contratto, puoi sempre scegliere “Altro”.
  • Nome del contratto - Solo un breve nome per identificare il contratto.
  • Descrizione breve del contratto - Una descrizione molto breve da mostrare negli elenchi.
  • Descrizione estesa del contratto - Una descrizione più dettagliata che verrà mostrata dopo la descrizione breve nei casi in cui l’utente abbia già selezionato il modello e voglia saperne di più (per esempio, quando si crea un contratto in Marlowe Run).

Si noti che il testo nelle descrizioni supporta l’uso di alcune delle funzionalità di formattazione incluse in Markdown. Per esempio, aggiungere due asterischi prima e dopo una parte del testo di una descrizione farà apparire quel testo in grassetto quando si simula il contratto, come abbiamo visto nella sezione precedente. In questo modo il testo semplice:

Importo di “**“soldi da pagare”*”"

sarà reso come

Importo di soldi da pagare

Si raccomanda di usare questa funzionalità per evidenziare quali parole chiave rappresentano entità che hanno un significato speciale nel contesto del contratto, come i nomi dei ruoli o delle scelte, per esempio.

La scheda dei metadati supporta anche la specificazione di suggerimenti per i ruoli, le scelte, gli slot e i parametri di valore definiti nel contratto, così come la formattazione per le scelte e i parametri di valore.

Un nuovo ruolo o scelta, slot o parametro di valore aggiunto a un contratto apparirà nella scheda Metadata in rosso. Nel caso degli editor Haskell e JavaScript, potrebbe essere necessario compilare il codice con successo prima che questo accada.

img

Figura 5. Scheda Metadati - aggiungere voci di metadati

Premendo il pulsante rosso “+” si crea una nuova voce di metadati per l’elemento dato. Allo stesso modo, se un ruolo, una scelta o un parametro di slot o di valore smette di essere usato nel contratto, i metadati esistenti saranno contrassegnati in rosso per la cancellazione, e l’utente deve premere il pulsante “-” per eliminare la voce di metadati dal contratto.

img

Figura 6. Scheda Metadata - cancellare le voci dei metadati

Oltre alla descrizione, nei casi di scelte e parametri di valore, un utente può opzionalmente specificare una formattazione per il numero che vuole che l’utente finale fornisca. Per farlo, seleziona “Fixed point amount” dal menu a tendina. Questo fornirà due campi extra:

  • Numero di cifre decimali per il valore (in basso a sinistra) - i numeri in Marlowe sono internamente sempre interi, ma per comodità, gli utenti possono inserire i numeri come punto fisso. Per esempio, gli importi Marlowe di ada sono rappresentati in lovelace (un milionesimo di ada) ma, in generale, gli utenti finali preferiscono lavorare con importi di ada (poiché sono più leggibili). Gli sviluppatori possono supportare questo scrivendo 6 nel numero di cifre decimali. Come risultato, l’utente finale vedrà un separatore decimale nella sesta posizione, anche se internamente il contratto funziona ancora con lovelace (unità ada).
  • Etichetta di valuta per il valore (in basso a destra) - gli sviluppatori possono anche presentare un simbolo di valuta vicino alla casella di input del valore come suggerimento agli utenti finali circa l’unità dell’importo che ci aspettiamo da loro. Per esempio, nel caso di ada, basta scrivere il simbolo ada “₳”.

img

Figura 7. Formattazione dei numeri

Infine, l’ordine dei parametri è importante. Per esempio, immaginate diversi parametri di slot che l’utente finale possa scegliere. Sarebbe logico visualizzare questi parametri in ordine cronologico.

Per organizzare i metadati, trascina le voci nell’ordine desiderato, per esempio:

img

Figura 8. Ordinamento dei metadati

L’ordine dei parametri nei metadati sarà utilizzato per generare il modulo mostrato all’inizio della simulazione o dell’esecuzione del contratto.

Conclusione

Con le nuove estensioni di template e metadati di Marlowe, gli sviluppatori di contratti possono ora fornire suggerimenti e parametri per rendere più facile agli utenti finali riutilizzare lo stesso contratto in diverse circostanze, senza dover comprendere l’implementazione completa e i dettagli del contratto.

Questi sono solo alcuni dei nuovi miglioramenti su cui il team di Marlowe continua a lavorare, e non vediamo l’ora di condividere presto i dettagli di altri miglioramenti.

Per saperne di più sui prossimi rilasci di Marlowe e sulle nuove caratteristiche, tenete d’occhio i nostri canali di social media o il nuovo canale Discord Marlowe per maggiori informazioni. Inoltre, rimanete sintonizzati per i dettagli sul nostro primo programma Marlowe Pioneers che sarà lanciato presto!