🇮🇩 Blog IOHK: Mengoptimalkan Cardano

Versi dokumen orisinil: Optimizing Cardano
Dipublikasikan pada tanggal 10 November 2021
Ditulis oleh Tim Harrison
Terjemahan ke dalam Bahasa Indonesia oleh @andreassosilo
(Translated to :indonesia: Indonesian language by @andreassosilo)


Mengoptimalkan Cardano

Jalan menuju optimalisasi jaringan terletak pada penyesuaian langkah demi langkah secara bertahap

10 November 2021 | Tim Harrison | bacaan 10 menit

Optimizing Cardano

Sebagai blockchain proof-of-stake, Cardano dibangun agar sangat aman dan tahan terhadap kegagalan jaringan. Didorong oleh algoritma konsensus Ouroboros, built-in Haskell yang menggunakan metode formal, dan penelitian akademis peer-review, Cardano dirancang untuk menyediakan lingkungan yang kokoh untuk memproses jutaan transaksi secara global, dengan cara yang terdesentralisasi dan sangat skalabel.

Dalam postingan blog sebelumnya, kami membahas kinerja jaringan – cara kerja sistem sebagai keseluruhan saat memproses, memverifikasi, dan menandatangani transaksi. Mendapatkan hak ini pada tahap desain awal sangat penting jika Anda menginginkan sistem yang dibangun untuk jangka panjang. Tidak hanya itu, kapasitas jaringan adalah sumber daya yang berharga, jadi untuk metrik kinerja yang paling efisien, komputasi, memori, penyimpanan, dan sumber daya jaringan harus dikonsumsi secara efektif.

Cardano dibuat agar fleksibel. Ini dirancang untuk memaksimalkan throughput sambil memungkinkan respons terhadap peningkatan permintaan. Seiring pertumbuhan jaringan, kami menyetel parameter protokol untuk menyesuaikan dengan fluktuasi harga, memperluas skalabilitas, dan properti throughput. Jadi mari kita lihat lebih dekat bagaimana kita akan mengoptimalkan kinerja jaringan dari waktu ke waktu.

Mendefinisikan kemacetan

Sistem yang efisien – mulai dari jaringan hingga jalan – dibangun untuk meminimalkan kemacetan, sekaligus memungkinkan pengelolaan yang efektif ketika hal itu terjadi. Dalam istilah blockchain, kemacetan menyiratkan bahwa jaringan terlalu jenuh dan mengalami kesulitan saat memproses volume besar transaksi dan menandatangani blok terkait. Rata-rata, blok Cardano kira-kira 25% digunakan dalam jangka waktu tertentu, yang menunjukkan bahwa secara umum, jaringan tidak macet dan ada kapasitas cadangan yang signifikan untuk memproses jumlah transaksi yang lebih besar lagi.

Cardano dirancang untuk menjadi adil dan sangat tangguh bahkan di bawah saturasi yang berat. Mari kita ingatkan diri kita tentang pengaturan parameter saat ini dan melihat pengoptimalan masa depan yang direncanakan. Metrik kinerja saat ini bergantung pada ukuran berikut:

  • Throughput — volume data yang ditransfer. Ukuran blok saat ini diatur ke 64 KB. Satu transaksi skrip Plutus saat ini dibatasi hingga 16 KB, dan transaksi sederhana biasanya dapat memakan waktu hingga sekitar 300 byte. Langkah-langkah ini telah diseimbangkan untuk memastikan pemanfaatan jaringan yang baik sambil meminimalkan latensi transaksi. Jika ditingkatkan secara signifikan dan sekaligus, pengguna akan menghadapi peningkatan penundaan dalam waktu adopsi blok. Itu karena throughput dan ketepatan waktu berbanding terbalik satu sama lain – memaksimalkan throughput menyiratkan kinerja jaringan yang lebih baik, tetapi ini dapat mengakibatkan peningkatan penundaan ketika sistem sangat jenuh.
  • Ketepatan waktu (timeliness) — yaitu waktu adopsi blok. Total ‘anggaran’ untuk adopsi blok diatur ke 5 detik agar blok menyebar di seluruh jaringan (95% dari stake) dengan anggaran sekitar 50 milidetik tersedia untuk skrip Plutus. Ini dirancang untuk memungkinkan blok memasukkan skrip dan transaksi sederhana tanpa monopoli.

Baru-baru ini, pengguna mencatat peningkatan waktu tunggu untuk pemrosesan transaksi yang disebabkan oleh drop NFT (non-fungible token) dalam jumlah yang besar. Alasan oversaturasi ini terletak pada kenyataan bahwa sejumlah besar NFT dilepaskan sekaligus yang menyebabkan hal berikut:

  • sejumlah besar transaksi NFT dilakukan secara simultan
  • beberapa pengguna mencoba membeli NFT yang sama dan dengan demikian mencoba memproses transaksi pada saat yang sama
  • transaksi pengembalian dana (refund) simultan kepada pengguna yang tidak dapat membeli NFT

Skenario ini menciptakan kelangkaan jaringan untuk penjualan NFT dan oleh karena itu permintaan besar pada layanan ini – 43.000% dari pasokan. Perlu juga dicatat bahwa periode ‘kemacetan’ berlangsung kurang dari satu jam.

Ini adalah pasar yang berkembang dan pembuat NFT sudah mulai mengulangi proses mereka untuk meminimalkan dampak drop NFT tersebut berdasarkan pengalaman pengguna. Hal ini masih terlalu dini dan kami semua belajar dengan cepat. Perlu dicatat bahwa proses minting NFT dapat diparalelkan secara sempurna, artinya tidak ada batasan untuk proses ini. Setelah diminting, NFT yang menyimpan kode swap yang dapat diprogram dan aset yang diperlukan untuk bertransaksi siap berinteraksi dengan pasar.

Tapi setidaknya dalam jangka pendek hingga menengah, ini adalah masalah membangun sistem lalu lintas yang lebih efisien daripada pelebaran jalan. Beberapa developer sudah memproduksi sistem seperti itu khusus untuk drop NFT, yang seharusnya mengurangi biaya serta beban jaringan dalam jangka pendek.

Pertukaran terdesentralisasi (DEX)

Banyak DApps awal yang dibangun di Cardano adalah DEX atau Pertukaran Terdesentralisasi. Dan di beberapa aplikasi, pengguna cenderung mengalami pertengkaran saat melakukan pemesanan. Karena prasyarat desain DApp bahwa seluruh state disimpan dalam satu UTXO (bukan tersebar di beberapa UTXO), terjadi ketergantungan transaksi masa depan pada output dari transaksi sebelumnya. Ini telah secara luas disebut sebagai ‘masalah’ konkurensi. Namun, menghilangkan analogi mobil itu lagi, itu tidak lebih dari ‘masalah’ daripada mengemudi di sebelah kiri adalah ‘masalah’ di Inggris atau Jepang. Itu memang membutuhkan kurva belajar tetapi pada akhirnya hal itu hanya cara yang berbeda dalam melakukan sesuatu. Dan jika developer tidak melakukannya, ya, mereka akan menghadapi masalah! Juga tidak secara inheren lebih kompleks – hanya membutuhkan cara pendekatan yang berbeda.

Model EUTXO Cardano berbeda dari model berbasis akun. DApps yang dibangun di Cardano harus beralih dari gaya mesin status single-threaded dan turun ke tingkat abstraksi ke EUTXO secara langsung, membangun solusi yang melibatkan concurrent edge dalam grafik EUTXO. Penting untuk menggunakan set UTXO yang berbeda sehingga menegakkan paralelisme yang akan meningkatkan throughput sistem sambil menjaga kinerja operasi individu tetap sama. Tentu, ini membutuhkan perubahan pola pikir ke developer mana pun yang terbiasa dengan pendekatan Ethereum. Namun, model berbasis UTXO lebih aman daripada model berbasis akun karena menyimpan semua status dalam satu akun lebih rentan terhadap serangan. Jika menggunakan teknik paralelisme dengan benar, pengguna akan menikmati hasil yang lebih baik dalam hal throughput dan skalabilitas sedangkan solusi off-chain lebih baik diterapkan pada buku besar UTXO. Untuk detail lebih lanjut, baca postingan blog konkurensi dan cara membuat Plutus DApp yang skalabel. Kami akan memublikasikan konten lebih lanjut tentang ini pada waktunya untuk memberikan panduan tambahan dalam memanfaatkan model secara maksimal.

Peta jalan pengoptimalan

Fokus kami saat peluncuran selalu memberikan kemampuan inti dan kebenaran, sebelum mengoptimalkan sesuatu. Hal ini selalu menjadi tujuan yang kami nyatakan. Kami terus memantau kinerja dan penyesuaian benchmark. Seiring pertumbuhan jaringan dan Cardano berfungsi pada kapasitas yang lebih tinggi, kami akan menyesuaikan parameterisasi untuk memenuhi permintaan jaringan. Ini adalah peningkatan bertahap yang akan diterapkan selangkah demi selangkah selama beberapa bulan ke depan untuk memastikan bahwa perubahan memenuhi persyaratan jaringan dan tidak berkompromi pada properti yang berbeda.

Kami telah melakukan analisis ekstensif dan mulai menerapkan metrik node yang secara akurat mengukur waktu difusi data. Difusi data adalah proses mendistribusikan transaksi dan blok di seluruh node yang memverifikasi blockchain. Sangat penting untuk menyediakan node dengan informasi yang dibutuhkan sehingga algoritma konsensus dapat membuat keputusannya.

Kami kemungkinan akan menerapkan waktu tunggu rata-rata dari pengiriman transaksi hingga adopsi transaksi. Bersamaan dengan itu, kami sedang menyelidiki dan menganalisis skenario yang akan meningkatkan kinerja jaringan secara iteratif dalam jangka pendek dan jangka panjang, termasuk:

  • Peningkatan ukuran blok — peningkatan ukuran blok berarti lebih banyak transaksi dalam satu blok. Manfaatnya adalah akan ada lebih sedikit waktu tunggu untuk transaksi yang akan diadopsi oleh blok selama periode saturasi jaringan. Namun, ada trade-off. Blok yang lebih besar membutuhkan waktu lebih lama untuk menyebar ke seluruh jaringan. Ini juga berarti bahwa node akan membutuhkan lebih banyak waktu untuk memverifikasi transaksi. Meskipun peningkatan ukuran blok merupakan pilihan untuk meningkatkan kinerja jaringan, perubahan tersebut harus dilakukan dengan hati-hati. Untuk memastikan bahwa peningkatan tidak mengganggu waktu adopsi blok, kami akan secara bertahap mengubah parameter dan menilai hasilnya selama periode saturasi tinggi. Ini bukan pembaruan satu langkah, melainkan pendekatan berulang yang akan memberi kami hasil yang jelas dan membantu memastikan penyesuaian yang paling efisien.
  • Mempool size — saat ini, ukuran mempool diatur ke 128 KB, yang merupakan dua kali ukuran blok saat ini. Mempool berfungsi sebagai buffer jaringan dan dapat menyebabkan penundaan singkat saat memasukkan transaksi ke dalam blok. Namun, peningkatan ukuran mempool tidak meningkatkan throughput jaringan – antrian transaksi akan tetap sama. Mempool memungkinkan adopsi yang adil dari transaksi baru yang masuk secara acak berdasarkan node produksi yang dipilih oleh algoritma lotere.
  • Kompresi skrip — mengingat ukuran transaksi saat ini disetel ke 16 KB, kami terus mengerjakan kompresi, yang memungkinkan protokol untuk ‘zip’ kode secara transparan. Ini berarti lebih banyak transaksi skrip dalam satu blok karena ukurannya yang berkurang – pengembang akan dapat mengirimkan kode yang lebih canggih dengan mengompresinya hingga 16 KB atau kurang, dan akan ada lebih banyak ruang tersisa untuk transaksi lainnya.

Arsitek untuk EUTXO

Seperti yang dijelaskan dalam postingan blog konkurensi sebelumnya, model EUTXO Cardano menghilangkan seluruh kelas masalah saat merancang aplikasi DeFi. Selain kemampuan asli EUTXO untuk memproses transaksi secara paralel, model sifat deterministik memastikan bahwa developer dan pengguna dapat menghindari ‘gas’ yang terbuang.

Yang mengatakan, model EUTXO tidak sama dengan model berbasis akun. Mengangkat dan mengalihkan arsitektur aplikasi yang ditujukan untuk sistem berbasis akun ke sistem berbasis EUTXO akan menghasilkan desain aplikasi yang kurang optimal. Aplikasi dirancang khusus untuk model EUTXO Cardano akan memberikan pengalaman pengguna terbaik.

Kami akan memublikasikan penjelasan teknis yang lebih mendalam tentang bagaimana developer dapat mengoptimalkan pengiriman dan pemrosesan order, misalnya, ke model EUTXO segera.

Iterasi & Peningkatan

Jadi ada banyak pekerjaan yang terjadi di belakang layar saat kami terus berevolusi dan beralih. Ini masih tahap awal, dan kami akan terus menilai kinerja jaringan dan menyesuaikan parameter sesuai dengan yang kami lakukan. Dalam jangka pendek, kami akan dapat mengurangi kemacetan dari drop NFT dengan menyebarkan distribusi stake dan perhitungan distribusi hadiah secara lebih merata. Hal ini pada gilirannya akan memungkinkan kita untuk meningkatkan ukuran blok, menghilangkan jeda dan kemacetan pada batas epoch, dan menghapus lonjakan komputasi (yang dapat menyebabkan propagasi blok lebih lambat). Peningkatan ukuran blok secara bertahap juga akan memungkinkan kami menilai skenario kasus terbaik untuk kinerja jaringan dan hasil ini akan segera terlihat di jaringan.

Kami juga berencana untuk memindahkan status buku besar ke penyimpanan disk untuk memudahkan beban on-chain, di samping kompresi skrip dan implementasi fitur berbagi on-chain. Ketika diselesaikan, mereka akan sangat melengkapi penyesuaian jaringan.

Dalam jangka menengah, Hydra akan menghadirkan kemampuan tambahan. Dalam jangka panjang, Kepala Ilmuwan dan tim kami terus meneliti metode dan mekanisme lain seputar kerangka penetapan harga dan meningkatkan protokol Ouroboros untuk meningkatkan throughput transaksi. Lebih lanjut tentang ini akan di posting di blog mendatang!

Sudah dua bulan

Sudah dua bulan sejak dimulainya era kontrak pintar di Cardano. Apa pun bobot ekspektasi dan antisipasi seputar ‘peluncuran’, ini tidak akan pernah menjadi peningkatan dalam satu langkah besar saja. Seperti halnya ekosistem yang selalu membutuhkan waktu untuk membangun momentum, akan selalu ada periode tidur dan kemudian penyesuaian, seiring dengan meningkatnya permintaan pada jaringan. Kami sedang dalam perjalanan, dan memahami masukkan dari komunitas tetap menjadi kuncinya. Berbicara dengan banyak proyek baru yang menarik yang dibangun diatas jaringan Cardano #BuildingOnCardano, kami membangun pemahaman yang lebih baik tentang rencana dan tujuan mereka – bersama dengan masalah apa pun yang mereka hadapi – sehingga kami dapat mendukung dan melayani sesuai kebutuhan. Kami juga mengikuti dengan cermat debat dari komunitas.

Ini hari-hari awal dan kami semua masih belajar. Namun, secara desain, Cardano diatur untuk fleksibel dan tumbuh bersama ekosistemnya yang baru lahir – namun sudah semarak –. Mari kita semua terus membangun!

Jika Anda seorang developer dan menginginkan panduan, dukungan, atau hanya ingin mampir untuk mengobrol di salah satu sesi terbuka kami – pastikan Anda bergabung dengan komunitas teknis kami yang berkembang di Discord.

Terima kasih saya kepada John Woods, Vitor Silva, Kevin Hammond, Duncan Coutts, Romain Pellerin, Michael Peyton Jones, Jean-Frederic Etienne & Olga Hryniuk atas dukungan dan masukkan mereka dalam mempersiapkan posting blog ini.