Polygon Avail Testnet sekarang aktif. Saat pengguna mulai memasukkan Avail ke dalam desain rantai mereka, pertanyaan yang sering muncul adalah, “Berapa banyak transaksi yang dapat diproses oleh Avail?”
Ini adalah yang pertama dari serangkaian artikel yang membahas kinerja Polygon Avail saat ini, serta kemampuannya untuk menskalakan dalam jangka pendek dan panjang. Kami telah memublikasikan bagian yang menguraikan bagaimana Avail diimplementasikan secara teknis. Untuk memulai, kami akan membandingkan throughput Ethereum dengan Avail mengingat arsitektur kedua rantai saat ini.
Ketersediaan Polygon vs Ethereum
Blok Ethereum dapat menampung maksimal 1,875 MB, dengan waktu blok ~13 detik. Namun, blok Ethereum biasanya tidak terisi. Hampir setiap blok mencapai batas gas sebelum batas data tercapai, karena baik eksekusi maupun penyelesaian memerlukan biaya gas. Akibatnya, jumlah data yang disimpan per blok adalah variabel.
Kebutuhan untuk menggabungkan eksekusi, penyelesaian, dan ketersediaan data di blok yang sama adalah masalah inti dari arsitektur blockchain monolitik. Rollup Layer-2 (L2) memulai gerakan blockchain modular dengan memungkinkan eksekusi ditangani pada rantai terpisah, dengan blok yang didedikasikan hanya untuk eksekusi. Polygon Avail mengambil desain modular satu langkah lebih jauh dengan memisahkan ketersediaan data, juga, dan memungkinkan rantai dengan blok yang didedikasikan hanya untuk ketersediaan data.
Saat ini, Avail memiliki waktu blok 20 detik dengan setiap blok mampu menampung sekitar 2 MB data. Dengan asumsi ukuran transaksi rata-rata 250 Byte, setiap blok Polygon Avail saat ini dapat menampung sekitar 8.400 transaksi (420 transaksi per detik).
Lebih penting lagi, Avail dapat mengisi blok secara konsisten hingga batas penyimpanan, dan menambah ukuran sesuai kebutuhan. Ada banyak pengungkit yang dapat kita tarik - banyak yang cukup cepat - untuk mendapatkan angka di atas 500.000 transaksi per blok (25.000 transaksi per detik) sesuai kebutuhan.
Bisakah kita meningkatkan throughput?
Untuk meningkatkan throughput (khususnya, transaksi per detik), arsitek rantai perlu menambah ukuran blok, atau mengurangi waktu blok.
Untuk ditambahkan ke rantai, setiap blok harus menghasilkan komitmen, membangun bukti, menyebarkannya, dan membuat semua node lain memverifikasi buktinya. Langkah-langkah ini akan selalu memakan waktu, dan memberikan batas waktu blok.
Akibatnya, kami tidak bisa begitu saja mengurangi waktu pemblokiran menjadi sekitar satu detik. Hampir tidak akan ada cukup waktu untuk menghasilkan komitmen, menghasilkan bukti, dan menyebarkan potongan-potongan ini ke semua peserta di seluruh jaringan. Pada waktu blok teoretis satu detik, bahkan jika setiap peserta jaringan menjalankan mesin paling kuat yang dapat secara instan menghasilkan komitmen dan bukti, hambatannya adalah penyebaran data. Jaringan tidak dapat mengomunikasikan blok ke semua node penuh dengan cukup cepat karena kendala kecepatan internet. Jadi kita harus memastikan waktu blok cukup tinggi untuk memungkinkan distribusi data di seluruh jaringan setelah konsensus tercapai.
Sebaliknya, peningkatan throughput akan datang dengan meningkatkan ukuran blok -- peningkatan jumlah data yang dapat kami sertakan di setiap blok.
Arsitektur Saat Ini: Menambahkan blok ke rantai
Untuk memulai, mari kita lihat apa yang diperlukan untuk menambahkan blok ke rantai. Menambahkan setiap blok ke rantai membutuhkan tiga langkah utama. Waktu yang diperlukan untuk menghasilkan blok, menyebarkan blok itu, dan memverifikasi blok tersebut.
1. Blokir produksi
Langkah ini mencakup waktu yang diperlukan untuk mengumpulkan dan memesan transaksi Avail, membuat komitmen, dan memperluas (menghapus kode) matriks data.
Produksi blok mengukur waktu yang diperlukan untuk memproduksi satu blok karena selalu membutuhkan waktu setidaknya beberapa saat. Akibatnya, kita harus mempertimbangkan bukan hanya waktu terbaik, tetapi waktu rata-rata dan waktu terburuk untuk mesin yang berbeda.
Mesin terlemah yang dapat berpartisipasi dalam produksi balok baru adalah mesin yang kapasitasnya maksimal dalam waktu kasus rata-rata. Semua mesin yang lebih lambat pasti akan tertinggal, karena mereka tidak dapat mengejar mesin yang lebih cepat.
2. Penundaan propagasi
Penundaan propagasi adalah ukuran waktu yang diperlukan untuk menyebarkan blok dari produsen ke validator dan jaringan peer-to-peer.
Saat ini, Avail memiliki 2 blok MB. Blok dengan ukuran ini dapat disebarkan dalam batasan waktu blok 20 detik saat ini. Ukuran blok yang lebih besar membuat propagasi menjadi lebih rumit.
Jika kami ingin meningkatkan Polygon Avail untuk mendukung blok 128 MB, misalnya, perhitungan kemungkinan akan dapat diskalakan (~7 detik). Namun, hambatannya kemudian menjadi jumlah waktu yang diperlukan untuk mengirim dan mengunduh blok ini di seluruh jaringan.
Mengirim blok 128 MB ke seluruh dunia melalui jaringan peer-to-peer dalam 5 detik kemungkinan merupakan batas dari apa yang dapat dicapai saat ini.
Batas 128 MB tidak ada hubungannya dengan ketersediaan data atau skema komitmen kami, melainkan masalah kendala bandwidth komunikasi.
Kebutuhan untuk memperhitungkan penundaan propagasi ini memberi kami batas ukuran blok teoretis kami saat ini untuk Polygon Avail.
3. Blokir verifikasi
Setelah disebarkan, validator yang berpartisipasi tidak hanya mempercayai blok yang diberikan kepada mereka oleh pengusul blok–mereka perlu memverifikasi bahwa blok yang dihasilkan benar-benar memiliki data yang dikatakan produsen.
Ketiga langkah ini menghadirkan sedikit ketegangan satu sama lain. Kami dapat membuat semua mesin validator yang kuat terhubung erat dengan jaringan yang sangat baik di pusat data yang sama -- yang akan mengurangi waktu produksi dan verifikasi dan memungkinkan kami menyebarkan lebih banyak data secara masif. Tetapi karena kami juga menginginkan jaringan yang terdesentralisasi dan beragam dengan jenis peserta yang berbeda, itu bukanlah pendekatan yang diinginkan.
Alih-alih, peningkatan throughput akan dilakukan dengan memahami langkah mana yang diperlukan untuk menambahkan blok ke rantai Avail, dan langkah mana yang dapat dioptimalkan.
Saat ini, validator yang menggunakan Polygon Avail mengambil seluruh blok dan mereproduksi semua komitmen yang dibuat oleh pengusul, untuk memverifikasi blok tersebut. Ini berarti produsen blok dan semua validator melakukan setiap langkah grafik di atas.
Reka ulang seluruh blok ini oleh masing-masing validator adalah default dalam blockchain monolitik. Namun, ini tidak diperlukan pada rantai seperti Avail, di mana transaksi tidak dijalankan. Akibatnya, salah satu cara kami dapat mengoptimalkan Avail adalah dengan mengizinkan validator mencapai jaminan ketersediaan data mereka sendiri melalui pengambilan sampel, bukan dengan membuat ulang blok. Ini menempatkan persyaratan sumber daya yang lebih rendah pada validator daripada jika mereka diminta mereproduksi semua komitmen.