# 🇮🇩 Blog IOHK: Plutus: apa yang perlu Anda ketahui

**URL:** <https://forum.cardano.org/t/blog-iohk-plutus-apa-yang-perlu-anda-ketahui/57486>\
**Category:** Edukasi\
**Tags:** translation, iohk-blog, plutus, translated-content, indonesia\
**Created:** [14 April 2021 15:27 UTC](https://forum.cardano.org/t/blog-iohk-plutus-apa-yang-perlu-anda-ketahui/57486 "2021-04-14T15:27:34Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![andreassosilo](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.cardano.org/andreassosilo/32/32024_2.png) [@andreassosilo](https://forum.cardano.org/u/andreassosilo)\
**Post date:** [14 April 2021 15:27 UTC](https://forum.cardano.org/t/blog-iohk-plutus-apa-yang-perlu-anda-ketahui/57486/1 "2021-04-14T15:27:34Z")

</div>

Versi dokumen orisinil: [Plutus: what you need to know](https://iohk.io/en/blog/posts/2021/04/13/plutus-what-you-need-to-know/)  
Dipublikasikan pada tanggal 13 April 2021  
Ditulis oleh [Lars Brünjes](https://iohk.io/en/blog/authors/lars-brunjes/page-1/)  
Terjemahan ke dalam Bahasa Indonesia oleh @andreassosilo  
(_Translated to Indonesian language by_ @andreassosilo)

* * *

# Plutus: apa yang perlu Anda ketahui

### Developer sekarang sedang mempersiapkan kedatangan smart contract Cardano, yang diaktifkan oleh Plutus dan peningkatan protokol Alonzo

13 April 2021 [Lars Brünjes](https://iohk.io/en/blog/authors/lars-brunjes/page-1/) bacaan 9 menit

 ![Plutus: what you need to know](https://us1.discourse-cdn.com/flex023/uploads/cardano/original/3X/b/4/b4ef5a1e6f39b7dc415eae114e85e438a3588345.jpeg)

Di postingan blog sebelumnya, kita membahas _[Alonzo](https://iohk.io/en/blog/posts/2021/04/08/smart-contracts-%E2%80%93-here-we-come/)_ - nama yang kami berikan untuk peningkatan protokol, yang akan memperkenalkan dukungan _smart contract_ di Cardano. Alonzo akan membangun infrastruktur dan menambahkan alat untuk pengembangan _smart contract_ fungsional menggunakan Plutus.

Platform Plutus menyediakan bahasa _smart contract_ asli untuk blockchain Cardano. Untuk memahami dan menjadi mahir dalam Plutus, seseorang harus memahami tiga konsep:

- Model _Extended UTXO (EUTXO)_
- _Plutus Core_ ‒ bagian ‘on-chain’ dari Plutus
- _Plutus Application Framework (PAF)_ ‒ bagian ‘off-chain’ dari Plutus yang memungkinkan interaksi dengan _smart contract_.

Kontrak Plutus terdiri dari bagian-bagian yang berjalan di blockchain (kode on-chain) dan bagian-bagian yang berjalan di mesin pengguna (off-chain atau kode klien). Baik kode on-chain dan off-chain ditulis di Haskell, dan kontrak pintar Plutus secara efektif adalah program Haskell. Kode off-chain dapat ditulis menggunakan PAF dan kode ini kemudian dikompilasi oleh GHC (Glasgow Haskell Compiler), sedangkan kode on-chain (ditulis menggunakan Plutus Core) dikompilasi oleh compiler Plutus.

Sangat penting untuk memahami hubungan antara konsep Plutus ini dan fungsionalitas token asli untuk melihat bagaimana interaksi mereka mengubah yang terakhir menjadi fitur yang lebih berguna dan kuat.

## Model Extended UTXO

Cardano (seperti Bitcoin) menggunakan model akuntansi transaksi (TX) output (O) yang tidak terpakai (U). Dalam model UTXO, _transaksi_ memiliki _input_ dan _output_, di mana **input** adalah output yang tidak terpakai dari transaksi sebelumnya. Begitu sebuah keluaran digunakan sebagai masukan dalam sebuah transaksi, ia menjadi \* dibelanjakan \* dan tidak dapat digunakan lagi. **Output** ditentukan oleh _alamat_ (kunci publik atau hash kunci publik) dan _nilai_ (terdiri dari jumlah yang ada dan opsional, jumlah token asli tambahan). Alamat keluaran menentukan transaksi mana yang diizinkan untuk ‘membuka’ keluaran dan menggunakannya sebagai masukan. Transaksi harus _ditandatangani_ oleh pemilik kunci pribadi yang sesuai dengan alamat tersebut. Bayangkan sebuah alamat sebagai ‘gembok’ yang hanya bisa ‘dibuka’ dengan ‘kunci’ yang benar - tanda tangan yang benar.

Model EUTXO _memperluas_ model ini dalam dua arah:

1. Ini menggeneralisasi konsep ‘alamat’ dengan menggunakan analogi gembok-dan-kunci. Alih-alih membatasi gembok ke kunci publik dan kunci untuk tanda tangan, alamat dalam model EUTXO dapat berisi logika arbitrer dalam bentuk _skrip_. Misalnya, ketika sebuah node memvalidasi sebuah transaksi, node tersebut menentukan apakah transaksi tersebut diperbolehkan untuk menggunakan output tertentu sebagai input atau tidak. Transaksi akan mencari skrip yang disediakan oleh alamat keluaran dan akan mengeksekusi skrip jika transaksi dapat menggunakan keluaran sebagai masukan.
2. Perbedaan kedua antara UTXO dan EUTXO adalah bahwa output dapat membawa (hampir) data sembarang selain alamat dan nilai. Ini membuat skrip jauh lebih kuat dengan memungkinkan mereka membawa _status_.

Saat memvalidasi alamat, skrip akan mengakses data yang dibawa oleh output, transaksi yang divalidasi, dan beberapa data tambahan yang disebut _redeemers_, yang disediakan oleh transaksi untuk setiap input. Dengan mencari semua informasi ini, skrip memiliki konteks yang cukup untuk memberikan jawaban ‘ya’ atau ‘tidak’ dalam situasi dan kasus penggunaan yang sangat kompleks.

Singkatnya, EUTXO memperluas model UTXO dengan mengizinkan alamat keluaran berisi logika kompleks untuk memutuskan transaksi mana yang dapat membukanya, dan dengan menambahkan _data khusus_ ke _semua_ keluaran.

Model EUTXO menawarkan keunggulan unik dibandingkan model akuntansi lainnya. Keberhasilan atau kegagalan validasi transaksi hanya bergantung pada transaksi itu sendiri dan inputnya, dan _bukan_ pada hal lain di blockchain. Akibatnya, validitas transaksi dapat diperiksa _off-chain_, sebelum transaksi dikirim ke blockchain. Transaksi masih bisa gagal jika beberapa transaksi lain secara bersamaan mengkonsumsi input yang diharapkan transaksi, tetapi jika semua input masih ada, transaksi _dijamin_ akan berhasil.

Ini berbeda dengan model berbasis akun (seperti yang digunakan oleh Ethereum), di mana transaksi bisa gagal dalam eksekusi mid-script. Ini tidak akan pernah terjadi di EUTXO. Selain itu, biaya eksekusi transaksi dapat ditentukan off-chain sebelum transmisi - fitur lain yang tidak mungkin dilakukan di Ethereum.

Akhirnya, karena sifat ‘lokal’ dari validasi transaksi, tingkat paralelisme yang tinggi dimungkinkan: node dapat, pada prinsipnya, memvalidasi transaksi secara paralel, jika transaksi tersebut tidak mencoba untuk mengkonsumsi input yang sama. Ini bagus untuk efisiensi dan penalaran, menyederhanakan analisis kemungkinan hasil, dan membuktikan bahwa ‘tidak ada hal buruk’ yang bisa terjadi. Anda dapat mempelajari lebih dalam tentang [model EUTXO di entri blog sebelumnya](https://iohk.io/en/blog/posts/2021/03/12/cardanos-extended-utxo-accounting-model-part-2/).

## Plutus Core

Untuk mengimplementasikan model EUTXO, istilah _script_ dan _data_ harus didefinisikan dengan jelas. Skrip memerlukan bahasa skrip yang pasti dan ditentukan dengan baik, dan juga penting untuk menentukan jenis data yang dilampirkan ke keluaran dan digunakan sebagai penebus.

Di sinilah _Plutus Core_ masuk. Plutus Core adalah bahasa skrip yang digunakan oleh Cardano. Ini adalah bahasa fungsional sederhana yang mirip dengan Haskell, dan sebagian besar Haskell dapat digunakan untuk menulis skrip Plutus Core. Sebagai penulis kontrak, Anda tidak boleh menulis Plutus Core apa pun. Semua program Plutus Core dihasilkan oleh plugin compiler Haskell.

Skrip ini akan dieksekusi oleh node selama validasi transaksi ‘langsung’ di rantai. Mereka akan mengunci UTXO dalam bentuk _skrip validator_ atau sebagai _pembuatan kebijakan_, yang mengontrol pembuatan dan pembakaran token asli (lihat di bawah).

Data penebus adalah tipe data sederhana (aljabar) yang dapat didefinisikan dengan mudah di Haskell, yang merupakan alasan lain mengapa Haskell adalah pilihan yang baik untuk menulis skrip Plutus Core. Dalam praktiknya, developer smart contract akan menulis skrip validator di Haskell, yang kemudian akan secara otomatis [dikompilasi menjadi Plutus Core](https://iohk.io/en/blog/posts/2021/02/02/plutus-tx-compiling-haskell-into-plutus-core/).

Pustaka Haskell yang sesuai menyederhanakan penulisan logika validasi tersebut dengan menyediakan tipe data inti untuk pemeriksaan transaksi selama validasi, dan dengan menawarkan banyak fungsi pembantu dan abstraksi tingkat yang lebih tinggi, memungkinkan penulis kontrak untuk berkonsentrasi pada logika bisnis dan tidak perlu khawatir terlalu banyak mengenai detail tingkat rendah.

## Plutus Application Framework (PAF)

Status skrip validator on-chain hanya dapat diubah oleh transaksi yang menghabiskan dan menghasilkan keluaran skrip. Saat menulis aplikasi Plutus, kita perlu mempertimbangkan tidak hanya bagian on-chain dari aplikasi (skrip Plutus Core) tetapi juga bagian off-chain yang membangun dan mengirimkan transaksi.

Kode off-chain ditulis di Haskell, sama seperti kode on-chain. Dengan begitu kita hanya perlu menulis logika bisnis satu kali. Kemudian kita bisa menggunakannya di skrip validator dan di kode yang membangun transaksi yang menjalankan skrip validator.

Banyak aplikasi perlu mengawasi UTXO yang disetel untuk perubahan ke alamat tertentu, jadi jika kita menulis kontrak kita sebagai _state machine_, kita perlu melacak keluaran yang tidak terpakai yang mewakili keadaan mesin saat ini dan memperbarui keadaan lokal kita saat on-chain perubahan _state_. Demikian pula, banyak aplikasi perlu berkomunikasi dengan backend _wallet_ untuk mengakses mata uang kripto yang mereka gunakan untuk transaksi.

PAF menyediakan akses mudah ke layanan yang biasa digunakan oleh aplikasi Plutus. Aplikasi yang diterapkan menggunakan pustaka framework dapat dijalankan di backend aplikasi Plutus, yang menyediakan dukungan waktu proses untuk akses ke blockchain dan masalah lain seperti persistensi, logging, dan pemantauan. Aplikasi yang ditulis di atas PAF secara otomatis menyediakan antarmuka HTTP dan WebSocket yang dapat digunakan untuk berinteraksi dengan aplikasi dari browser web.

## Native tokens

_Native tokens_ tersedia di Cardano melalui hard fork _Mary_ bulan Februari. Setiap pengguna dapat membuat token mereka sendiri, dan token dapat dikirim dan diterima dengan bebas, seperti halnya ADA. Setiap _native token_ dilengkapi dengan _[kebijakan pembuatan](https://docs.cardano.org/en/latest/native-tokens/learn-about-native-tokens.html#minting-policy)_ sendiri, yang menentukan kondisi di mana token dapat dicetak dan dibakar.

Saat ini, kebijakan pembuatan ini terdiri dari kombinasi aturan sederhana yang menetapkan _tanda tangan_ dan _garis waktu_. Misalnya, kebijakan dapat menyatakan bahwa hanya transaksi yang ditandatangani oleh dua dari lima kemungkinan tanda tangan yang diizinkan untuk membuat atau membakar token. Kebijakan lain dapat mengizinkan pencetakan hanya sebelum atau setelah slot waktu tertentu.

Sekuat apa pun bahan penyusun dasar ini, mereka tidak mencakup semua kemungkinan penggunaan. Misalnya, mungkin, tetapi canggung, untuk membuat model token non-fungible (NFT) menggunakan kebijakan sederhana seperti itu. Ini dapat dilakukan dengan menggunakan kunci waktu untuk membuat NFT, dengan membatasi operasi pencetakan ke titik waktu tertentu. Jika hanya satu token yang dicetak sebelum titik waktu tersebut tercapai, token secara teknis tidak dapat dipertukarkan (karena hanya ada satu). Tetapi untuk memeriksa ini, tidak cukup hanya dengan memeriksa kebijakan pencetakan. Kami perlu melihat riwayat pembuatan token untuk memastikan bahwa memang hanya pernah dicetak sekali.

Dengan penerapan Plutus, pengguna akan dapat menulis kebijakan pembuatan menggunakan Plutus Core. Selama pencetakan atau pembakaran, skrip kebijakan Plutus Core akan dijalankan dalam konteks transaksi pembuatan atau pembakaran, dan skrip harus menyetujui atau melarang tindakan tersebut. Hal ini selanjutnya akan mempercepat pertumbuhan NFT di Cardano dengan memungkinkan pembuatan kebijakan pencetakan yang jauh lebih kompleks, dan memungkinkan pembuatan NFT dengan cara _trustless_.

Alonzo secara bertahap diterapkan ke mainnet melalui beberapa testnet, jadi partner kami dan [pelopor Plutus](https://iohk.io/en/blog/posts/2021/04/01/everything-you-need-to-know-about-our-new-plutus-pioneer-program/) akan dapat menguji Plutus Core dengan menulis aplikasi di Cardano sepanjang Mei dan Juni sebelum kode dibekukan. Ini juga akan menjadi periode jaminan kualitas dan pengujian penerimaan pengguna oleh bursa untuk memastikan bahwa platform sepenuhnya siap pada saat peningkatan mainnet Alonzo. Jika Anda seorang developer dan ingin mempelajari lebih lanjut tentang Plutus, pertimbangkan untuk bergabung dengan [kelompok perintis masa depan](https://developers.cardano.org/en/plutus-pioneer-program/). Atau, lihat repositori [Plutus GitHub](https://github.com/input-output-hk/plutus), dan ikuti diskusi tentang Plutus di [Cardano Forum](https://forum.cardano.org/c/developers/cardano-plutus/148).

_Saya ingin mengucapkan terima kasih kepada Jann Müller atas masukan dan kontribusi tambahan untuk entri blog ini._
