๐Ÿ‡ฎ๐Ÿ‡ฉ Blog IOHK: Menyelam lebih dalam ke Marlowe Playground

Versi dokumen orisinil: Diving deeper into the Marlowe Playground
Dipublikasikan pada tanggal 04 Maret 2022
Ditulis oleh Pablo Lamela
Terjemahan ke dalam :indonesia: Bahasa Indonesia oleh @andreassosilo
(Translated to Indonesian language by @andreassosilo)


Menyelam lebih dalam ke Marlowe Playground

Pelajari cara membuat template Anda sendiri dari kontrak Marlowe dan berikan petunjuk kepada pengguna menggunakan metadata khusus

04 Maret 2022 | Pablo Lamela | bacaan 7 menit

Diving deeper into the Marlowe Playground

Marlowe adalah domain-specific language (DSL) yang tertanam di Haskell yang menawarkan kontrak keuangan untuk blockchain yang dapat dikodekan oleh semua orang. Ini adalah platform untuk keuangan terdesentralisasi (DeFi) yang mendukung pinjaman langsung, peer-to-peer, contract for difference (CFD), dan instrumen serupa lainnya. Marlowe memungkinkan pengguna untuk menerapkan keahlian domain mereka untuk menulis dan mengelola kontrak dengan nyaman, tanpa kurva pembelajaran curam yang terkait dengan pengembangan software, blockchain, atau kontrak pintar.

Marlowe Playground adalah sebuah sandbox environment tempat Anda dapat berlatih menulis kontrak keuangan. Tempat bermain ini menawarkan Anda pilihan untuk bekerja secara langsung dalam berbagai bahasa, seperti Marlowe sendiri, JavaScript, Haskell, atau Blockly, tergantung mana yang ingin Anda gunakan. Kami baru-baru ini menambahkan fitur baru ke Marlowe Playground untuk membuat dan mengedit template dan menyesuaikan metadata, serta opsi unduhan JSON baru untuk kontrak itu sendiri. Dalam postingan ini, kita akan melihat lebih dekat mengenai fitur-fitur baru ini.

Dari kontrak hingga template

Dengan diperkenalkannya Marlowe Run, kami telah memperluas Marlowe Playground untuk mendukung apa yang kami sebut template. Template ini diimplementasikan menggunakan versi Marlowe yang diperluas (dikenal sebagai Extended Marlowe, versi yang tersedia di Marlowe Playground). Dengan adanya template baru ini berarti pengguna dapat dengan mudah menggunakan kembali dan menggunakan kembali kontrak untuk skenario dan konteks yang berbeda.

Extended Marlowe menawarkan fleksibilitas yang lebih besar daripada plain Marlowe (atau Core Marlowe). Kontrak sangat konkret, dan menentukan batas waktu dalam nilai absolut, awalnya melalui nomor slot, dan baru-baru ini menggunakan stempel waktu standar (waktu POSIX).

Selain itu, Marlowe Values biasanya di-hardcode di Marlowe, kecuali yang diteruskan sebagai Inputs. Misalnya, Anda dapat menerapkan pinjaman untuk โ‚ณ100 atau yang menanyakan kepada pengguna berapa banyak yang akan dipinjamkan melalui Choice dalam konstruksi When, tetapi kami tidak dapat memiliki kontrak Marlowe yang dapat digunakan kembali yang dapat diterapkan di waktu dan dengan parameter tertentu. Extended Marlowe mengatasi keterbatasan ini dengan menambahkan opsi untuk menyertakan parameter kontrak. Saat ini, Marlowe yang diperluas secara praktis identik dengan Marlowe biasa kecuali bahwa ia mencakup dua konstruktor tambahan yang mewakili parameter dari template :

  • SlotParam โ€” dapat ditulis sebagai pengganti batas waktu dalam konstruksi When
  • ConstantParam โ€” adalah jenis konstruksi Value

Kedua konstruktor mengambil, sebagai satu-satunya parameter mereka, string yang berfungsi sebagai pengidentifikasi untuk parameter, misalnya:

  • SlotParam "Payment deadline
  • ConstantParam "Price"

Dua parameter dengan tipe yang sama (baik SlotParam atau ConstantParam ) dan dengan pengenal yang sama dianggap sebagai parameter yang sama, meskipun muncul di tempat yang berbeda.

Jika kontrak berisi parameter (dengan kata lain, jika itu adalah template ), maka pengguna akan diminta untuk memasukkan nilai untuk parameter tersebut sebelum memulai simulasi kontrak, atau sebelum deploy kontrak di Marlowe Run:


Gambar 1. Dialog simulasi

Perhatikan bahwa input parameter template nilai pada gambar bukan hanya kolom input integer. Sebaliknya, ia mengharapkan angka dengan desimal, dan memiliki label dengan simbol mata uang yang menunjukkan bahwa angka yang diharapkan mewakili jumlah ADA. Aturan ini juga berlaku untuk nilai yang diperlukan melalui Choice dalam konstruksi When. Juga, pilihan tidak perlu mewakili jumlah ADA. Mereka dapat mewakili apa saja, seperti rasio, sebagai berikut:


Gambar 2. Actions dialog

Terdapat juga petunjuk untuk setiap parameter yang dapat ditampilkan pengguna dengan mengklik tanda tanya ungu di samping setiap istilah. Teks dalam petunjuk khusus untuk template kontrak, dan berisi teks berformat, misalnya, teks tebal , teks miring , atau teks bergaris bawah.


Gambar 3. Petunjuk parameter

Kontrak yang ditentukan pengguna dapat menyesuaikan semua detail ini melalui penggunaan metadata. Mari kita lihat bagaimana hal ini dilakukan.

Menyesuaikan metadata

Ada tab Metadata di bagian bawah setiap editor di Marlowe Playground. Di sana, pengguna dapat menyesuaikan metadata sesuai kebutuhan. Sebagai contoh:


Gambar 4. Tab metadata

Ada beberapa metadata dasar yang diharapkan disertakan dalam setiap kontrak, seperti:

  • Contract type โ€” Apa jenis kontraknya? Kategori ini akan membantu mengklasifikasikan kontrak agar lebih mudah ditemukan di kemudian hari. Saat ini, ada sangat sedikit kategori yang tersedia, tetapi kami akan menambahkan lebih banyak lagi di masa mendatang. Jika tidak ada kategori yang sesuai dengan kontrak Anda, Anda selalu dapat memilih โ€œOtherโ€.
  • Contract name โ€” Hanya nama pendek untuk mengidentifikasi kontrak.
  • Contract short description โ€” Deskripsi yang sangat singkat untuk ditampilkan dalam daftar.
  • Contract long description โ€” Penjelasan lebih rinci yang akan ditampilkan berikut deskripsi singkat dalam kasus ketika pengguna telah memilih template dan ingin tahu lebih banyak (misalnya, saat membuat kontrak di Marlowe Run).

Perhatikan bahwa teks dalam deskripsi mendukung penggunaan beberapa fungsi pemformatan yang disertakan dalam Markdown. Misalnya, menambahkan dua tanda bintang sebelum dan sesudah bagian teks deskripsi akan membuat teks tersebut muncul dalam huruf tebal saat mensimulasikan kontrak, seperti yang kita lihat di bagian sebelumnya. Dengan cara ini teks biasa:

Jumlah **uang** yang harus dibayar

akan dirender sebagai

Jumlah uang yang harus dibayar

Sebaiknya gunakan fungsi ini untuk menyoroti kata kunci mana yang mewakili entitas yang memiliki arti khusus dalam konteks kontrak, seperti nama peran atau pilihan, misalnya.

Tab metadata juga mendukung petunjuk untuk menentukan peran, pilihan, slot, dan parameter nilai yang ditentukan dalam kontrak, serta pemformatan untuk parameter pilihan dan nilai.

Peran atau pilihan, slot, atau parameter nilai baru yang ditambahkan ke kontrak akan muncul di tab Metadata berwarna merah. Dalam kasus editor Haskell dan JavaScript, mungkin perlu untuk mengkompilasi kode dengan sukses sebelum hal ini terjadi.


Gambar 5. Tab metadata - menambahkan entri metadata

Menekan tombol merah โ€œ+โ€ akan membuat entri metadata baru untuk item yang diberikan. Dengan cara yang sama, jika peran, pilihan, atau slot atau parameter nilai berhenti digunakan dalam kontrak, metadata yang ada akan ditandai dengan warna merah untuk dihapus, dan pengguna harus menekan tombol โ€œ-โ€ untuk menghapus entri metadata dari kontrak.


Gambar 6. Tab metadata - menghapus entri metadata

Selain deskripsi, dalam kasus pilihan dan parameter nilai, pengguna dapat secara opsional menentukan pemformatan untuk nomor yang mereka ingin berikan kepada pengguna akhir. Untuk melakukannya, pilih โ€œFixed point amountโ€ dari menu dropdown. Hal ini akan memberikan dua field tambahan:

  • Jumlah digit desimal untuk nilai (kiri bawah) โ€” angka di Marlowe secara internal selalu bilangan bulat, tetapi untuk kenyamanan, pengguna dapat memasukkan angka sebagai bilangan desimal. Misalnya, jumlah ADA di Marlowe diwakili dalam bentuk lovelace (sepersejuta ada) tetapi, secara umum, pengguna akhir lebih suka bekerja dengan jumlah ADA (karena lebih mudah dibaca). Developer dapat mendukung ini dengan menulis 6 dalam jumlah tempat desimal. Akibatnya, pengguna akhir akan melihat pemisah desimal di posisi ke-6, meskipun secara internal kontrak masih bekerja dengan lovelace (satuan di ADA).
  • Label mata uang untuk nilainya (kanan bawah) โ€” developer juga dapat menampilkan simbol mata uang di dekat kotak input nilai sebagai petunjuk kepada pengguna akhir tentang unit jumlah yang kami harapkan dari mereka. Misalnya, dalam kasus ADA, tulis saja simbol ADA โ€œโ‚ณโ€.


Gambar 7. Pemformatan angka

Akhirnya, urutan parameter itu penting. Misalnya, bayangkan beberapa parameter slot untuk dipilih pengguna akhir. Adalah logis untuk menampilkan parameter tersebut dalam urutan yang kronologis.

Untuk mengatur metadata, tarik entri ke dalam urutan yang diinginkan, misalnya:


Gambar 8. Pemesanan metadata

Urutan parameter dalam metadata akan digunakan untuk menghasilkan formulir yang ditunjukkan pada awal simulasi atau pelaksanaan kontrak.

Kesimpulan

Dengan template baru dan ekstensi metadata untuk Marlowe, developer kontrak pintar sekarang dapat memberikan petunjuk dan parameter untuk memudahkan pengguna akhir menggunakan kembali kontrak yang sama dalam beberapa keadaan, tanpa harus memahami implementasi penuh dan detail kontrak.

Ini hanyalah beberapa peningkatan baru yang terus dikerjakan oleh tim Marlowe, dan kami berharap dapat segera membagikan detail peningkatan lainnya.

Untuk mengetahui lebih lanjut tentang rilis Marlowe mendatang dan fitur baru, pantau terus saluran media sosial kami atau Marlowe Discord channel untuk informasi lebih lanjut. Nantikan juga detail tentang peluncuran Program Marlowe Pioneers pertama kami segera!