Reference Inputs & Scripts (Komponen Skalabilitas)

Dipublikasikan pada tanggal 15 Apr 2022
Disadur oleh andre cahyadi (@prosperaan)
Untuk komunitas Cardano Indonesia
Referensi:
Boosting Cardano’s throughput with script referencing - IOHK Blog
Segala Sesuatu tentang Plutus
Cardano 360 - Mar 2022
Mid Month Development Update - Apr 2022

Di artikel sebelumnya, sudah dijelaskan mengenai Pipelining sebagai salah satu komponen skalabilitas di era pengembangan Basho saat ini. Lihat post, Pipelining (Komponen Skalabilitas)

Apa itu Basho?
Salah satu fase di dalam roadmap Cardano, Roadmap Cardano

Saat ini akan dijelaskan mengenai peningkatan yang akan dilakukan terhadap komponen Plutus melalui Cardano Improvement Proposal (CIP) yang telah disampaikan dan di-review oleh komunitas.

1) Reference Inputs (CIP-31)
Pengantar:
Output dari transaksi Plutus script membawa datums, yang memungkinkan pengaksesan ke informasi di blockchain. Datum berfungsi sebagai penunjuk bahwa UTXO saling berbeda satu sama lain (menjamin determinism dan immutability dari setiap UTXO).

Ketika sebuah transaksi berhasil dijalankan, meng-consume, dan spend sebuah UTXO, UTXO ini beserta Datum-nya dihapus dari ledger. Output dari transaksi akan menghasilkan UTXO yang baru dengan Datum yang terbaru juga.

Permasalahan yang muncul:
Jika ada transaksi lain yang ingin melihat isi informasi transaksi di atas, maka tidak bisa meng-consume dan spend UTXO yang digunakan sebelumnya. Mau tidak mau harus meng-consume dan spend UTXO yang baru, yang baru dapat diketahui di block berikutnya.

Alhasil yang terjadi:
Membatasi kemampuan aplikasi yang hanya dapat melakukan satu transaksi per block. Namun saat ini, para developer dApps berhasil menerapkan cara lain untuk mengatasi keterbatasan tersebut. Akan tetapi muncul tantangan lain, dimana sebuah transaksi juga dapat gagal jika ada transaksi lain meng-consume dan spend input UTXO yang sama (disebut juga contention).

Nantinya:
Dengan mekanisme terbaru Reference Inputs, output UTXO dari sebuah transaksi dapat dijadikan input UTXO transaksi lain dengan cara ditunjuk/direferensikan saja, tanpa perlu meng-consume dan spend UTXO yang baru. Alhasil, banyak transaksi yang nantinya dapat diproses secara paralel bersamaan sehingga meningkatkan concurrency (throughput juga meningkat).

2) Reference Scripts (CIP-33)
Pengantar:
Ketika sebuah transaksi meng-consume dan spend sebuah UTXO dengan Plutus script, maka Plutus script ini juga harus dibawa di dalam transaksi. Oleh karena itu, ukuran script mempengaruhi ukuran transaksi, yang pada akhirnya mempengaruhi throughput dari Cardano.

Semakin besar ukuran script → semakin besar ukuran transaksi → biaya transaksi jadi lebih mahal → throughput menjadi lebih lama karena ukuran transaksi yang besar - besar yang tidak bisa muat semuanya di dalam ukuran sebuah block.

Beberapa parameter jaringan yang sudah di-update untuk meningkatkan throughput Cardano sejak awal tahun 2022:

  • Ukuran block, dari 64 KB → 88 KB
  • Ukuran Plutus script memory units per transaksi, dari 10.000.000 → 14.000.000
  • Ukuran Plutus script memory units per block, dari 50.000.000 → 62.000.000, yang berarti secara optimal dapat menampung 4 Plutus script transaction yang berukuran 14.000.000 dan transaksi Plutus script lainnya sampai maksimal 62.000.000.

Permasalahan yang muncul:
Setiap transaksi Plutus script hanya memiliki memory units maksimal 14.000.000. Namun untuk transaksi yang kompleks, ukuran tersebut pastilah tidak cukup karena ada kemungkinan menggunakan banyak script (banyak logic) untuk menjalankannya.

Alhasil yang terjadi:
Transaksi tidak dapat dieksekusi secara cepat dan biaya untuk menjalankannya pun menjadi mahal.

Nantinya:
CIP-33 mengusulkan Reference Scripts sebagai solusi atas permasalahan di atas. Pengembangan ini memungkinkan referensi atas sebuah script tanpa harus dibawa ke dalam setiap transaksi, yang pada akhirnya dapat memperkecil ukuran transaksi, mengurangi biaya, dan meningkatkan throughput jaringan.

3) Gabungan Reference Inputs & Scripts
Dengan adanya gabungan kedua teknologi ini, maka mengeliminasi kebutuhan untuk mengirimkan script yang sering digunakan ke blockchain. Script - script nantinya akan tersedia secara persistent di blockchain. Namun, output sebuah transaksi perlu di-extend lagi untuk membawa optional field yang berisi script. Minimum UTXO value untuk output itu juga bergantung pada ukuran referensi script. Untuk Reference Inputs sendiri, memungkinkan adanya data sharing secara on-chain dimana UTXO dapat menyimpan data secara aman.

1 Like