Postingan Membangun Aplikasi Blockchain dengan Plutus muncul pertama kali di Coinpedia Fintech News

Perkenalan

Blockchain berkontribusi pada berbagai industri melalui solusi yang terdesentralisasi dan transparan. Kemajuan dalam domain pengembangan telah membawa perubahan transformatif pada pengembang dan komunitas. Manfaat blockchain melampaui desentralisasi. Blockchain menghemat waktu yang dibutuhkan untuk transaksi dan tidak memerlukan verifikasi pihak ketiga, sehingga mengurangi risiko penipuan dan serangan siber. Sebagai pengembang, memahami cara membangun aplikasi blockchain sangatlah penting, terutama saat menggunakan alat canggih seperti Plutus. Plutus adalah platform kontrak pintar pada blockchain Cardano. Platform ini menawarkan kerangka kerja yang kuat bagi pengembang untuk membuat aplikasi terdesentralisasi (DApps) yang aman dan efisien.

Apa itu Cardano?

Cardano Sebuah platform blockchain yang diluncurkan oleh Charles Hoskinson (salah satu pendiri Ethereum) pada tahun 2017. Cardano adalah platform generasi ketiga, yang sering dianggap sebagai alternatif Ethereum, platform generasi kedua. Platform ini menggunakan mekanisme proof of stake yang lebih efisien daripada platform tradisional. Cardano memiliki mata uang kripto sendiri ADA, yang dinamai menurut Ada Lovelace. Platform ini memiliki dua lapisan terpisah, satu yang menangani transaksi dan akun sedangkan yang lainnya digunakan untuk mengelola kontrak pintar dan komputasi. Cardano bertujuan untuk menciptakan platform blockchain yang lebih aman, terukur, dan adaptif daripada pendahulunya dan digunakan dalam berbagai aplikasi, termasuk manajemen rantai pasokan, verifikasi identitas digital, dan layanan keuangan di pasar negara berkembang.

Pluto

Plutus adalah bahasa pemrograman yang digunakan untuk menulis kontrak pintar berbasis Cardano. Plutus didasarkan pada Haskell yang merupakan bahasa fungsional. Sebagai pengembang, Anda tidak perlu menulis Plutus Core, melainkan semua skrip akan dibuat oleh plugin kompiler Haskell. Plutus mendukung verifikasi Formal yang menyediakan cara untuk membuktikan kebenaran program menggunakan matematika. Oleh karena itu, meningkatkan keamanan dan mengurangi kemungkinan adanya bug dalam kontrak pintar.

Plutus terintegrasi secara native ke dalam blockchain Cardano, yang memungkinkan pengembang berinteraksi langsung dengan buku besar dan infrastruktur Cardano. Ini membantu Anda membangun dan menerapkan kontrak pintar yang berinteraksi langsung dengan ekosistem Cardano. Plutus memiliki alat yang membantu Anda mensimulasikan kontrak pintar tanpa simpul Cardano penuh dan bereksperimen sebelum menerapkannya di mainnet. Plutus sangat cocok untuk pengembang yang ingin membuat aplikasi terdesentralisasi yang andal dan berkinerja tinggi.

Hadirin

Artikel ini ditujukan untuk para pengembang yang baru mengenal pengembangan blockchain dengan sedikit pengetahuan tentang pemrograman dasar. Kami akan memandu Anda melalui langkah-langkah penting dalam menyiapkan lingkungan, memahami konsep blockchain, dan membangun aplikasi blockchain sederhana menggunakan Plutus.

Menyiapkan Lingkungan Pengembangan

Memiliki pengaturan yang sempurna sebelum memulai perjalanan pengembangan sangatlah penting. Oleh karena itu, menyiapkan lingkungan yang mendukung Plutus merupakan batu loncatan dari bab ini.

1. Menginstal Plutus

Unduh Plutus dari repositori resmi:

klon git https://github.com/input-output-hk/plutus-apps.gitcd plutus-appsnix-shell

Verifikasi instalasi menggunakan: plutus -v

2. Memilih IDE

Saat mengembangkan aplikasi dengan Plutus, memiliki IDE yang tepat sangatlah penting. Plutus berbasis Haskell, oleh karena itu, memiliki IDE yang mendukung Haskell sangatlah disarankan. Dua opsi populer untuk pengembangan Plutus adalah Visual Studio Code (VS Code) dan Plutus Playground. Berikut panduan lengkap tentang cara menyiapkan dan menggunakan IDE ini untuk pengembangan Plutus.

Visual Studio Code: VS Code adalah editor Kode yang sangat fleksibel dan serbaguna yang mendukung hampir semua bahasa dan memiliki ekstensi yang sangat membantu. Oleh karena itu, ini adalah editor favorit para pengembang untuk digunakan. VSCode bersifat sumber terbuka dan menyediakan berbagai alat dan fitur untuk melengkapi kode.

Langkah-langkah untuk mengatur VSCode:

  • Unduh VSCode dari situs resmi (sesuai sistem operasi Anda)

  • Instal perangkat lunaknya

  • Plutus dibangun di atas Haskell, jadi Anda perlu menginstal Platform Haskell, yang mencakup Glasgow Haskell Compiler (GHC) dan cabal (alat pembangunan untuk Haskell).

  • Unduh Haskell

  • Instal ekstensi Haskell di VS Code (Haskero, Haskell Syntax Higlighting, dll)

  • Konfigurasikan ekstensi dan atur ekstensi tambahan

  • Karena Anda telah menginstal Plutus, berarti Anda siap untuk memulai!!

Plutus Playground: Plutus Playground adalah editor berbasis web daring yang khusus untuk kontrak pintar Plutus. Oleh karena itu, tidak diperlukan instalasi apa pun dan sangat cocok bagi pemula untuk mendapatkan kepercayaan diri saat membuat kode.

Anda dapat mengunjungi situs web Plutus Playground dan langsung memulai!!

Kedua lingkungan tersebut dapat digunakan secara efektif untuk pengembangan Plutus, dan Anda mungkin menemukan bahwa menggabungkan keduanya—menggunakan VS Code untuk proyek yang lebih besar dan Plutus Playground untuk pengujian dan pembuatan prototipe yang cepat—memberikan yang terbaik dari kedua dunia.

3. Menginstal Pustaka yang Diperlukan

Gunakan cabal untuk menginstal pustaka penting untuk pengembangan Plutus.

Memahami Konsep Blockchain dengan Plutus

Blockchain adalah basis data terdistribusi dan canggih yang menyimpan catatan transaksi dalam bentuk blok. Setiap blok perlu dihubungkan dengan blok lainnya menggunakan prinsip kriptografi. Mekanisme yang kuat digunakan untuk melindungi blok tersebut sehingga seseorang tidak dapat mengubah catatan mata uang apa pun sebelum waktunya dan tanpa memengaruhi blok berikutnya.

Blockchain memiliki tiga komponen dasar:

  • Blok: Blok berisi informasi tentang transaksi beserta metadata. Semua blok saling terhubung melalui hashing yang membentuk rantai blok, oleh karena itu disebut blockchain.

  • Transaksi: Transaksi adalah transfer data dari satu entitas ke entitas lain dalam blockchain. Di Plutus, transaksi ditulis dalam Haskell dan melibatkan input dan output UTXO (Unspent Transaction Outputs).

  • Rantai: Di ​​Plutus, rantai menjaga urutan transaksi dan memastikan bahwa transaksi tersebut tidak dapat diubah setelah dikonfirmasi.

Dalam potongan kode berikut kita dapat melihat struktur Blok di Plutus:

Setiap komponen blok disebutkan bersama dengan tipe datanya

  • Indeks adalah bilangan bulat yang menunjukkan posisi suatu blok

  • Stempel waktu adalah waktu saat blok dibuat

  • Transaksi adalah string atau daftar semua transaksi yang termasuk dalam blok tertentu

  • Hash adalah pola unik dan kunci utama untuk mengidentifikasi blok

  • Hash sebelumnya mengacu pada kontinuitas dan merupakan hash dari blok terakhir

Dalam potongan kode ini kita dapat melihat struktur Transaksi di Plutus:

Desentralisasi, Kekekalan, dan Mekanisme Konsensus:

Fondasi blockchain bergantung pada tiga prinsip inti: Desentralisasi, Kekekalan dan Mekanisme Konsensus

Desentralisasi: Desentralisasi adalah properti yang tidak dimiliki oleh satu entitas pun yang memegang kendali atas basis data Blockchain sehingga kegagalan sistem dan bias hampir tidak mungkin terjadi. Setiap perangkat partisipan (simpul) menyimpan salinan blockchain, memastikan transparansi dan menghambat kegagalan atau manipulasi terpusat.

Kekekalan: Setelah data ditulis ke dalam blockchain, data tersebut tidak dapat diubah tanpa mengubah semua blok berikutnya. Hal ini dilakukan dengan bantuan hashing kriptografi. Oleh karena itu, semua perubahan yang dilakukan sekali tidak dapat dibatalkan sehingga tidak dapat diubah.

Mekanisme Konsensus: Seperangkat protokol yang mengatur semua kebutuhan blockchain. Semua node dalam jaringan harus menyetujui metodenya. Mekanisme konsensus digunakan untuk menyederhanakan node dan memastikan semua node dalam jaringan memiliki pemahaman yang sama.

Membangun Blockchain Sederhana dengan Plutus

Blok adalah unit primitif dari setiap blockchain. Dalam cuplikan kode ini, kami telah mendefinisikan tipe data blok beserta komponen-komponennya.

Setelah kita mendefinisikan kelas blok, kita perlu memastikan integritas blockchain, di mana setiap blok harus memiliki hash yang unik. Oleh karena itu, dengan fungsi penghitungan hash, kita menggunakan metode hashing SHA256 yang populer di Plutus.

Setelah Anda melengkapi Definisi blok, lanjutkan dan inisialisasi blockchain Anda dengan bantuan blok genesis yang merupakan blok pertama untuk blockchain mana pun. Wow!! Anda baru saja membuat blockchain tetapi bukan itu saja, Anda perlu menambahkan blok baru dan mengambil blok terbaru juga.

Silakan lihat kode di bawah ini jika Anda memerlukan bantuan!

Menerapkan Mekanisme Konsensus di Plutus

Cardano menggunakan mekanisme PoS, sementara sebelumnya telah mengadopsi Proof of Work. Plutus dirancang agar kompatibel dengan protokol PoS Ouroboros milik Cardano, yang menawarkan skalabilitas, efisiensi energi, dan keamanan untuk aplikasi terdesentralisasi (DApps).

Berikut ini ikhtisar algoritma konsensus yang dapat bekerja dengan Plutus

  • Ouroboros: Ouroboros adalah mekanisme Proof of stake yang sangat kompatibel dengan Plutus dan bergantung pada stake ADA yang bersedia diambil oleh validator untuk memvalidasi blok baru. Kontrak Plutus berinteraksi secara lancar dengan protokol Ouroboros, memastikan bahwa eksekusi kontrak pintar tetap aman dan hemat energi.

  • Proof of Work: PoW adalah mekanisme paling kuno dan digunakan secara luas di semua mata uang kripto lama. Mekanisme ini masih dapat diimplementasikan di atas kertas dalam kasus Plutus. Ini akan lebih berguna jika mempertimbangkan skenario yang terisolasi seperti tujuan pendidikan dan tujuan eksperimental.

  • Bukti kerja yang didelegasikan & Byzantine fault Tolerance: Mekanisme ini tidak terlalu kompatibel dengan Cardano tetapi secara teoritis masih dapat diimplementasikan pada Plutus.

Di bagian ini, kita akan membahas cara menggunakan Proof of Work di Plutus.

Dalam Proof of Work, penambang harus bersaing dalam waktu untuk memecahkan teka-teki kriptografi untuk menjadi validator koin baru. Dalam kode ini, fungsi proof of work mencari nonce yang, jika digabungkan dengan hash blok sebelumnya, menghasilkan hash dengan sejumlah nol di depan. Ini adalah implementasi dasar PoW, di mana tingkat kesulitan menentukan seberapa sulit menemukan nonce yang valid.

Setelah Anda menyelesaikan implementasi Proof of Work, Anda perlu memperbarui blockchain untuk memvalidasi bukti yang ditambang.

Berikut ini adalah contoh potongan kode:

Fungsi ini memastikan bahwa blok baru hanya ditambahkan ke blockchain jika buktinya valid, sehingga menjaga integritas rantai.

Membuat API Blockchain Sederhana dengan Plutus

Dalam bab ini, Anda akan mempelajari cara membuat API sederhana untuk berinteraksi dengan aplikasi blockchain yang dibangun menggunakan Plutus. API ini akan memungkinkan Anda untuk menambahkan blok dan melihat blockchain melalui permintaan HTTP.

Langkah-langkah untuk membuat API:

  • Siapkan Lingkungan untuk API: Instal Haskel (Yang sudah dilakukan), selanjutnya Instal Servant menggunakan Cabal

  • Unduh semua pustaka yang diperlukan:

    • Pelayan: Untuk membuat API

    • Aeson untuk mengodekan dan mendekode JSON: cabal install aeson plutus-core

    • Plutus untuk mengintegrasikan semua kode dan logika

Untuk memulai Membangun API, pertama-tama kita perlu menambahkan blok baru dan menghapus status blockchain saat ini. Kedua langkah ini telah dilakukan pada bab-bab di atas.

Sekarang Anda dapat melanjutkan dan menentukan titik akhir:

Bahasa Indonesia: {-# ​​BAHASA DataKinds #-}{-# BAHASA TypeOperators #-}modul BlockchainAPI whereimport Servantimport Control.Monad.IO.Class (liftIO)— Tentukan jenis Blok (rujuk Bab 3)data Block = Block  { index        :: Int  , timestamp    :: String  , dataField    :: String  , previousHash :: String  , hash         :: String  } deriving (Show, Eq)— Blockchain hanyalah daftar Bloktype Blockchain = [Block]— Tentukan jenis APItype BlockchainAPI =  “addBlock” :> ReqBody ‘[JSON] Block :> Post ‘[JSON] Blockchain:<|> “chain” :> Get ‘[JSON] Blockchain— Placeholder untuk blockchain, awalnya dimulai hanya dengan blok genesis genesisBlock = Block 0 “2024-09-12 00:00:00” “Genesis Block” “0” “some_hash”initialBlockchain:: BlockchaininitialBlockchain = [genesisBlock]–– Handler untuk titik akhir API addBlockHandler :: Blockchain -> Block -> Handler BlockchainaddBlockHandler blockchain newBlock = dolet newBlockchain = blockchain ++ [newBlock]    liftIO $ putStrLn “Block added!”     return newBlockchain— Handler untuk mengambil chainviewChainHandler :: Blockchain -> Handler BlockchainviewChainHandler blockchain = return blockchain–Titik masuk utama untuk menjalankan APIapp :: Applicationapp = serve (Proxy :: Proxy BlockchainAPI) (blockchainServer initialBlockchain)

Penjelasan kode di atas:

  • Blok didefinisikan mirip dengan bab sebelumnya

  • Pustaka Servant digunakan untuk menentukan struktur API. Ada dua metode untuk menentukan titik akhir API, GET dan POST yang berarti mengambil dan menambahkan blockchain.

  • Kami juga telah mendefinisikan handler (addBlockHandler) untuk menangani blok baru yang ditambahkan dan viewChainHandler) yang melihat blok lainnya

  • Pada akhirnya, ada fungsi utama yang merupakan inti kode yang menyatukan semuanya, dan menjalankan server API.

Setelah definisi API, Anda memiliki dua metode untuk menambahkan Titik Akhir dan mengambil informasi Titik Akhir Blockchain.

Hore!! Anda telah berhasil menerapkan subbagian ini dan sekarang Anda dapat menjalankan API menggunakan cabal dan Anda siap untuk melanjutkan ke bagian berikutnya.

Menjalankan dan Menguji Aplikasi

Setelah membangun API blockchain, saatnya mengujinya. Kita akan menggunakan Postman atau curl untuk berinteraksi dengan API dan memverifikasi bahwa API tersebut berfungsi dengan benar.

Langkah-langkah untuk Menjalankan dan Menguji Aplikasi:

  • Kompilasi program dan jalankan: cabal build cabal run

  • Mulai server: API harus tersedia di http://localhost:8080

  • Uji dan tambahkan titik akhir Blok

{  “index”: 1,  “timestamp”: “2024-09-12 12:30:00”,  “dataField”: “Ini blok baru saya”,  “previousHash”: “some_hash”,  “hash”: “new_block_hash”}

Lihat Blockchain

ikal http://localhost:8080/rantai

Dengan mengikuti langkah-langkah ini, Anda sekarang memiliki aplikasi blockchain sederhana yang berjalan dengan API yang dibuat menggunakan Plutus. API memungkinkan aplikasi eksternal atau pengguna untuk berinteraksi dengan blockchain Anda dengan menambahkan blok baru dan melihat status blockchain saat ini.

Contoh Langsung Membangun Aplikasi Blockchain dengan Plutus

Potongan Kode di atas adalah Eksekusi Langkah demi Langkah dari:

  • Langkah 1: Buat tipe data Blok dengan atribut yang diperlukan menggunakan sintaksis Plutus.

  • Langkah 2: Terapkan metode calculate_hash.

  • Langkah 3: Tentukan tipe data Blockchain dan inisialisasikan dengan blok genesis.

  • Langkah 4: Terapkan metode untuk menambahkan blok baru dan mengambil blok terbaru menggunakan Plutus.

  • Langkah 5: Tambahkan fungsionalitas Bukti Kerja ke tipe data Blok dan perbarui tipe data Rantai Blok.

  • Langkah 6: Siapkan lingkungan API untuk menangani permintaan menggunakan Plutus.

  • Langkah 7: Uji aplikasi dengan menambang blok baru dan memverifikasi blockchain menggunakan Postman atau Curl

Selamat! Anda telah mencapai akhir modul dan mempelajari semua dasar-dasar Plutus.

Saat Anda terjun ke pengembangan blockchain dengan Plutus, Anda tidak hanya menulis kode—Anda sedang menyusun tulang punggung sistem terdesentralisasi yang dapat mendefinisikan ulang industri. Teruslah Belajar dan Selamat Membuat Kode!!

Lihat Juga: Cara Mendesain, Mengembangkan, & Menyebarkan Cryptocurrency Anda Sendiri: Panduan Langkah demi Langkah