| Penulis | Paul, Anurag; Kannan, Prabal; et al. (Avail Project) |
|---|---|
| Tahun | 2022 |
| Proyek | Avail |
| Lisensi | MIT |
| Sumber Resmi | github.com/availproject/data-availability |
Avail adalah blockchain data availability (DA) modular yang dijelaskan dalam dokumen referensi 2022 oleh tim Avail Project (semula Polygon Technology). Fungsi tunggal Avail adalah memesan data blok transaksi dan menjamin ketersediaannya menggunakan kombinasi KZG polynomial commitments, 2D Reed-Solomon erasure coding, dan Data Availability Sampling (DAS) untuk light client. Rollup, validium, dan sovereign chain dapat memposting data transaksi ke Avail sebagai lapisan DA alternatif yang lebih murah dari Ethereum L1, sambil mendapatkan jaminan ketersediaan yang dapat diverifikasi secara kriptografis.
Masalah Data Availability
Ketika block producer mempublikasikan blok, harus dapat diverifikasi bahwa:
- Data blok benar-benar tersedia (tidak ditahan)
- Data dikodekan dengan benar (tidak rusak)
Tanpa jaminan DA, block producer yang tidak jujur dapat mempublikasikan header blok dengan komitmen valid tetapi menahan data underlying — mencegah pengamat mendeteksi penipuan atau menghasilkan fraud proof. Solusi Avail: membangun blok sehingga light client dapat memverifikasi ketersediaan dengan menyampel chunk kecil acak — tanpa mengunduh seluruh blok.
Erasure Coding 2D Reed-Solomon
Avail menggunakan erasure coding Reed-Solomon dua dimensi alih-alih 1D:
- Data blok disusun dalam matriks k×k
- Setiap baris diperpanjang dari k ke 2k simbol menggunakan Reed-Solomon (erasure coding 1D)
- Setiap kolom juga diperpanjang dari k ke 2k simbol
- Hasilnya adalah matriks 2k×2k di mana data asli dapat dipulihkan dari kuadran mana pun yang cukup besar
Mengapa 2D? Dengan erasure coding 1D, block producer jahat dapat menahan segmen berurutan yang mencegah fraud proof spesifik. Dengan coding 2D, submatriks (k+1)×(k+1) mana pun cukup untuk merekonstruksi blok penuh, dan sampling acak memberikan probabilitas deteksi penahanan yang sangat tinggi.
KZG Commitments per Baris dan Kolom
Untuk setiap baris dan kolom dari matriks 2D yang diperpanjang, Avail menghitung KZG polynomial commitment:
- Baris i diperlakukan sebagai polinomial $p_i(x)$; commitmentnya $C_i = [p_i( au)]_1$
- Kolom j diperlakukan sebagai polinomial $q_j(x)$; commitmentnya $D_j = [q_j( au)]_1$
- Commitment baris dan kolom diterbitkan di header blok
Verifikasi light client: Light client menyampel sel acak (i, j) dan menerima nilai sel + bukti KZG bahwa nilainya konsisten dengan commitment baris i dan commitment kolom j. Memeriksa keduanya memastikan sel benar-benar dikodekan dalam matriks 2D. Light client yang menyampel 40 sel acak mencapai probabilitas >99,9999% mendeteksi blok di mana >50% sel ditahan.
Nominated Proof of Stake (BABE + GRANDPA)
Konsensus validator Avail menggunakan NPoS (Nominated Proof of Stake) — model yang sama dengan Polkadot — via kombinasi BABE + GRANDPA:
- BABE: Pemilihan leader berbasis VRF untuk produksi blok; memberikan finalitas probabilistik.
- GRANDPA: Protokol Byzantine Agreement untuk finalitas deterministik atas chain blok BABE.
Nominator men-stake token AVAIL untuk mendukung validator. Validator yang berperilaku buruk (ekuivokasi atau menahan data) di-slash.
Namespacing Data
Seperti Celestia, Avail mendukung namespacing data: setiap blok dapat berisi blob data yang diberi tag dengan namespace ID spesifik aplikasi. Rollup yang menggunakan Avail hanya perlu mengunduh blob dengan namespace miliknya — bukan blok Avail penuh. Ini memungkinkan beberapa rollup berbagi satu blok Avail tanpa membayar atau memproses data satu sama lain.
Avail vs. Celestia vs. EigenDA
| Aspek | Avail | Celestia | EigenDA |
|---|---|---|---|
| Coding | 2D RS + KZG | 2D RS + NMT | 1D RS + KZG |
| Konsensus | NPoS (BABE+GRANDPA) | Tendermint (CometBFT) | Ethereum restaking |
| DAS light client | Ya | Ya | Parsial |
Istilah Terkait
Referensi
- Paul, A. et al. (2022). Data Availability — Reference Document. Avail Project. github.com/availproject/data-availability