Berikut ini adalah penjelasan rinci tentang Polkadot1, Polkadot2, dan bagaimana mereka berkembang menjadi JAM. (Untuk lebih jelasnya, lihat:https://www.navalmanack.com/almanack-of-naval-ravikant/how-to-think-clearlyArtikel ini ditujukan untuk pembaca teknis, terutama bagi mereka yang mungkin tidak terlalu familiar dengan Polkadot tetapi memiliki pengetahuan tentang sistem blockchain dan kemungkinan akrab dengan teknologi dari ekosistem lain.
Saya percaya artikel ini berfungsi sebagai pelopor yang baik untuk membaca JAM Gray Paper. (Untuk lebih detail, lihat:https://graypaper.com/)
Artikel ini mengasumsikan pembaca sudah familiar dengan konsep-konsep berikut:
Mari kita pertama-tama mengulang fitur-fitur paling inovatif dari Polkadot1.
Saat ini, kami sedang membahas jaringan Layer 1 yang menampung jaringan "blockchain" Layer 2 lainnya, mirip dengan Polkadot dan Ethereum. Oleh karena itu, istilah Layer 2 dan Parachain dapat digunakan secara bergantian.
Isu inti dari skalabilitas blockchain dapat diformulasikan sebagai: Ada sekelompok validator yang, menggunakan kripto-ekonomi proof-of-stake, memastikan bahwa pelaksanaan kode tertentu dapat dipercaya. Secara default, validator ini perlu mengeksekusi ulang semua pekerjaan yang dilakukan oleh yang lain. Selama kita menegakkan bahwa semua validator selalu mengeksekusi ulang segalanya, sistem secara keseluruhan tetap tidak dapat diskalakan.
Harap dicatat bahwa, selama prinsip eksekusi ulang absolut tetap tidak berubah, meningkatkan jumlah validator dalam model ini sebenarnya tidak meningkatkan throughput sistem.
Ini menunjukkan blockchain monolitik (berlawanan dengan yang terfragmentasi). Semua validator jaringan memproses input (yaitu, blok) satu per satu. Dalam sistem seperti itu, jika Layer 1 ingin meng-host lebih banyak Layer 2, maka semua validator harus mengeksekusi ulang semua pekerjaan Layer 2. Jelas, metode ini tidak dapat diskalakan.
Optimistic rollups mengatasi masalah ini dengan hanya mengeksekusi ulang (bukti penipuan) ketika penipuan diklaim. Rollups berbasis SNARK mengatasi masalah ini dengan memanfaatkan kenyataan bahwa biaya validasi bukti SNARK jauh lebih rendah daripada biaya menghasilkannya, sehingga memungkinkan semua validator untuk dengan efisien memverifikasi bukti SNARK. Untuk informasi lebih lanjut, lihat 'Lampiran: Diagram Ruang Skalabilitas'.
Solusi yang langsung untuk sharding adalah dengan membagi kumpulan validator menjadi subset yang lebih kecil dan memiliki subset tersebut menjalankan ulang blok Layer2. Apa masalah dengan pendekatan ini? Pada dasarnya kita sedang melakukan sharding terhadap kedua eksekusi dan keamanan ekonomi jaringan. Solusi Layer2 seperti ini memiliki keamanan yang lebih rendah dibandingkan dengan Layer1, dan keamanannya semakin berkurang saat kita membagi kumpulan validator menjadi lebih banyak shard.
Tidak seperti optimistic rollups, di mana biaya re-eksekusi tidak selalu bisa dihindari, Polkadot dirancang dengan eksekusi terfragmentasi dalam pikiran. Ini memungkinkan sebagian validator untuk mere-eksekusi blok Layer 2 sambil memberikan cukup bukti kriptoekonomi kepada seluruh jaringan untuk membuktikan bahwa blok Layer 2 itu aman seperti jika seluruh set validator telah mere-eksekusinya. Ini dicapai melalui mekanisme baru (dan baru-baru ini diformalkan) yang dikenal sebagai ELVES. (Untuk lebih jelasnya, lihat: https://eprint.iacr.org/2024/961)
Singkatnya, ELVES dapat dianggap sebagai mekanisme 'rollups' yang mencurigakan. Melalui beberapa putaran validator yang secara aktif meminta informasi dari validator lain tentang apakah blok Layer 2 yang diberikan valid, kita dapat mengonfirmasi dengan tingkat keberhasilan yang tinggi kevalidan blok tersebut. Jika terjadi perselisihan, seluruh set validator langsung terlibat. Pendiri Polkadot, Rob Habermeier, menjelaskan ini secara detail dalam sebuah artikel. (Untuk informasi lebih lanjut, lihat:https://polkadot.com/blog/polkadot-v1-0-sharding-and-economic-security#approval-checking-and-finality)
ELVES memungkinkan Polkadot memiliki eksekusi terfragmentasi dan keamanan bersama, dua properti yang sebelumnya dianggap saling terbatas. Ini adalah pencapaian teknis utama dari Polkadot1 dalam skalabilitas.
Sekarang, mari kita lanjutkan dengan analogi 'Core'. Blockchain eksekusi bersyarat sangat mirip dengan CPU: sama seperti CPU dapat memiliki beberapa core yang menjalankan instruksi secara paralel, Polkadot dapat memproses blok Layer 2 secara paralel. Inilah mengapa Layer 2 di Polkadot disebut sebagai parachain, dan lingkungan di mana subset validator lebih kecil mengeksekusi ulang satu blok Layer 2 disebut sebagai 'core'. Setiap core dapat diabstraksikan sebagai 'sekelompok validator yang bekerja sama'.
Anda dapat menganggap blockchain monolitik sebagai memproses satu blok pada satu waktu, sedangkan Polkadot memproses baik blok rantai relay maupun blok parachain untuk setiap inti dalam periode waktu yang sama.
Sejauh ini, kita hanya membahas skalabilitas dan eksekusi sharded yang ditawarkan oleh Polkadot. Penting untuk dicatat bahwa setiap shard dari Polkadot sebenarnya adalah aplikasi yang benar-benar berbeda. Hal ini dicapai melalui metaprotokol yang disimpan sebagai bytecode: protokol yang menyimpan definisi blockchain itu sendiri sebagai bytecode dalam keadaannya. Dalam Polkadot 1.0, WASM digunakan sebagai bytecode yang disukai, sementara dalam JAM, PVM/RISC-V diadopsi.
Inilah mengapa Polkadot disebut sebagai blockchain berbagi heterogen. (Untuk lebih detail, lihat:https://x.com/kianenigma/status/1790763921600606259) Setiap Layer 2 adalah aplikasi yang benar-benar berbeda.
Salah satu aspek penting dari Polkadot2 adalah membuat penggunaan core lebih fleksibel. Dalam model Polkadot asli, periode penyewaan inti berkisar antara 6 bulan hingga 2 tahun, yang cocok untuk perusahaan kaya sumber daya tetapi kurang layak untuk tim yang lebih kecil. Fitur yang memungkinkan inti Polkadot digunakan lebih fleksibel disebut "Agile Coretime." (Untuk detail selengkapnya, lihat: https://polkadot.com/agile-coretime) Dalam mode ini, istilah sewa inti bisa sesingkat satu blok atau sesepanjang sebulan, dengan batas harga bagi mereka yang ingin menyewa untuk jangka waktu lebih lama.
Fitur-fitur lain dari Polkadot 2 secara bertahap terungkap saat diskusi kita berlangsung, jadi tidak perlu menjelaskannya lebih lanjut di sini.
Untuk memahami JAM, penting untuk pertama-tama memahami apa yang terjadi ketika blok Layer 2 memasuki inti Polkadot. Berikut adalah penjelasan yang disederhanakan.
Ingatlah bahwa inti terdiri terutama dari seperangkat validator. Jadi ketika kita mengatakan "data dikirim ke inti," itu berarti data tersebut dilewatkan ke seperangkat validator ini.
Sebuah blok Layer 2, bersama dengan sebagian dari status Layer 2 tersebut, dikirim ke inti. Data ini berisi semua informasi yang diperlukan untuk mengeksekusi blok Layer 2.
Sebagian validator inti akan mengeksekusi ulang blok Layer 2 dan melanjutkan tugas terkait konsensus.
Validator inti ini memberikan data yang dijalankan ulang ke validator lain di luar inti. Menurut aturan ELVES, validator ini dapat memutuskan untuk mengeksekusi ulang blok Layer 2 atau tidak, memerlukan data ini untuk melakukannya.
Penting untuk dicatat bahwa, sampai saat ini, semua operasi ini terjadi di luar blok utama Polkadot dan fungsi transisi status. Semuanya terjadi dalam inti dan lapisan ketersediaan data.
Dari ini, kita dapat menjelajahi beberapa operasi kunci yang dilakukan oleh Polkadot:
Memahami ini membentuk dasar untuk memahami JAM. Berikut adalah ringkasannya:
Dengan pemahaman ini, kami sekarang dapat memperkenalkan JAM.
JAM adalah protokol baru yang terinspirasi oleh desain Polkadot dan sepenuhnya kompatibel dengannya, bertujuan untuk menggantikan rantai relay Polkadot dan membuat penggunaan inti sepenuhnya terdesentralisasi dan tidak terbatas.
Dibangun di Polkadot 2, JAM berusaha membuat implementasi Layer 2 pada inti lebih mudah diakses, menawarkan fleksibilitas bahkan lebih dari model inti-waktu yang tangkas.
Ini dicapai terutama dengan mengekspos tiga konsep inti yang dibahas sebelumnya kepada pengembang: eksekusi on-chain, eksekusi di-core, dan lapisan DA.
Dengan kata lain, dalam JAM, pengembang dapat:
Ini membentuk tinjauan dasar tujuan JAM. Tak perlu dikatakan, sebagian besar ini telah disederhanakan, dan protokol kemungkinan akan terus berkembang.
Dengan pemahaman dasar ini, kita sekarang dapat masuk ke beberapa spesifik dari JAM dalam bab-bab berikutnya.
Di JAM, apa yang sebelumnya disebut sebagai Layer 2 atau parachains sekarang disebut sebagai Layanan, dan yang sebelumnya disebut sebagai blok atau transaksi sekarang disebut sebagaiItem KerjaatauPaket KerjaSecara khusus, sebuah item kerja termasuk dalam sebuah layanan, dan sebuah paket kerja adalah kumpulan dari item-item kerja tersebut. Istilah-istilah ini sengaja dirancang secara luas untuk mencakup kasus penggunaan di luar skenario blockchain/Layer 2.
Sebuah layanan dijelaskan oleh tiga titik masuk, dua di antaranya adalah fn refine() dan fn accumulate(). Yang pertama menjelaskan apa yang dilakukan layanan selama eksekusi di dalam core, dan yang kedua menjelaskan apa yang dilakukan selama eksekusi on-chain.
Akhirnya, nama-nama titik masuk ini adalah alasan mengapa protokol ini disebut JAM (Join Accumulate Machine).Bergabungmerujuk kepadafn refine()
, yang merupakan fase di mana semua inti Polkadot memproses sejumlah besar pekerjaan secara paralel di berbagai layanan. Setelah data diproses, data tersebut beralih ke tahap berikutnya.Mengumpulkanmerujuk pada proses mengumpulkan semua hasil tersebut ke dalam keadaan JAM utama, yang terjadi selama fase eksekusi on-chain.
Item pekerjaan dapat secara tepat menentukan kode yang mereka jalankan di dalam inti dan on-chain, serta bagaimana, jika, dan dari mana mereka membaca atau menulis konten di Distributed Data Lake.
Meninjau dokumentasi yang ada tentang XCM (bahasa pilihan Polkadot untuk komunikasi parachain), semua komunikasi bersifat asinkron (untuk lebih jelasnya, lihatdi siniIni berarti bahwa sekali pesan dikirim, Anda tidak dapat menunggu balasannya. Komunikasi asinkron adalah gejala ketidakkonsistenan dalam sistem, dan salah satu kelemahan utama dari sistem yang di-shard secara permanen seperti Polkadot 1, Polkadot 2, dan ekosistem Layer 2 Ethereum yang sudah ada.
Namun, seperti yang dijelaskan dalam Bagian 2.4 dariGraypaper, sistem yang sepenuhnya konsisten yang tetap serempak untuk semua penyewanya hanya dapat berkembang hingga tingkat tertentu tanpa mengorbankan universalitas, aksesibilitas, atau ketahanan.
Di situlah JAM unggul: dengan memperkenalkan beberapa fitur, JAM mencapai keadaan menengah baru yang dikenal sebagai sistem semi-konsisten. Dalam sistem ini, subsistem yang berkomunikasi secara rutin dapat menciptakan lingkungan yang konsisten satu sama lain, tanpa memaksa seluruh sistem tetap konsisten. Ini dijelaskan dengan baik oleh Dr. Gavin Wood, penulis Graypaper, dalam sebuah wawancara:https://www.youtube.com/watch?t=1378&v=O3kRAVBTkfs&embeds_referring_euri=https%3A%2F%2Fblog.kianenigma.nl%2F&source_ve_path=OTY3MTQ
Cara lain untuk memahami hal ini adalah dengan melihat Polkadot/JAM sebagai sistem yang di-shard, di mana batas antara shard-shard ini bersifat fluid dan dinamis ditentukan.
Polkadot selalu telah di-sharded dan sepenuhnya heterogen.
Saat ini, sistem ini tidak hanya terfragmentasi dan heterogen, tetapi batas-batas shard ini dapat didefinisikan secara fleksibel—apa yang disebut Gavin Wood sebagai sistem “semi-konsisten” dalam cuitannya dan Graypaper.https://x.com/gavofyork?ref_src=twsrc%5Etfw、https://graypaper.com/)
Beberapa fitur membuat keadaan semi-konsisten ini memungkinkan:
Penting untuk dicatat bahwa sementara kemampuan-kemampuan ini memungkinkan dalam JAM, namun tidak ditegakkan pada tingkat protokol. Akibatnya, beberapa antarmuka secara teoritis asinkron namun dapat berfungsi secara sinkron dalam praktiknya karena abstraksi-abstraksi canggih dan insentif-insentif. CorePlay, yang akan dibahas dalam bagian berikutnya, adalah contoh dari fenomena ini.
Bagian ini memperkenalkan CorePlay, sebuah konsep eksperimental dalam lingkungan JAM yang dapat dijelaskan sebagai model pemrograman kontrak cerdas baru. Pada saat penulisan, CorePlay belum sepenuhnya didefinisikan dan tetap menjadi ide spekulatif.
Untuk memahami CorePlay, kita perlu memperkenalkan mesin virtual (VM) yang dipilih oleh JAM: PVM.
PVM adalah detail kunci baik di JAM maupun CorePlay. Detail-detail tingkat rendah dari PVM berada di luar lingkup dokumen ini dan lebih baik dijelaskan oleh para ahli domain dalam Graypaper. Namun, untuk penjelasan ini, kami akan menyoroti beberapa atribut kunci dari PVM:
Yang terakhir ini sangat penting untuk CorePlay.
CorePlay adalah contoh bagaimana primitif fleksibel JAM dapat digunakan untuk membuat lingkungan kontrak pintar yang berskala dan sinkron dengan antarmuka pemrograman yang sangat fleksibel. CorePlay mengusulkan bahwa kontrak pintar berbasis aktor dideploy langsung pada inti JAM, memungkinkan mereka untuk mendapatkan manfaat dari antarmuka pemrograman yang sinkron. Pengembang dapat menulis kontrak pintar seolah-olah mereka adalah fungsi fn main() sederhana, menggunakan ekspresi seperti let hasil = other_coreplay_actor(data).await?berkomunikasi. Jikaaktor inti lainnyaBerada di inti JAM yang sama dalam blok yang sama, panggilan ini bersifat sinkron. Jika berada di inti lain, aktor akan dijeda dan dilanjutkan pada blok JAM berikutnya. Hal ini dimungkinkan oleh layanan JAM, penjadwalan yang fleksibel, dan kemampuan PVM.
Akhirnya, mari kita rangkum alasan utama mengapa JAM sepenuhnya kompatibel dengan Polkadot. Produk unggulan Polkadot adalah parachains inti-waktu yang tangkas, yang berlanjut di JAM. Layanan yang diterapkan paling awal di JAM kemungkinan akan disebut sebagai CoreChains atau Parachains, memungkinkan parachains gaya Polkadot-2 yang ada berjalan di JAM.
Layanan tambahan dapat diterapkan di JAM, dan layanan CoreChains yang ada dapat berkomunikasi dengan mereka. Namun, produk-produk saat ini dari Polkadot akan tetap kokoh, hanya membuka peluang baru untuk tim parachain yang sudah ada.
Sebagian besar dokumen ini membahas skalabilitas dari sudut pandang sharding eksekusi. Namun, kita juga dapat memeriksa masalah ini dari sudut pandang sharding data. Menariknya, kita menemukan bahwa ini mirip dengan model semi-konsisten yang disebutkan sebelumnya. Pada prinsipnya, sistem yang sepenuhnya konsisten lebih unggul namun tidak dapat diskalakan, sementara sistem yang sepenuhnya inkonsisten dapat diskalakan dengan baik namun suboptimal. JAM, dengan model semi-konsistennya, memperkenalkan kemungkinan baru.
JAM menawarkan sesuatu yang lebih dari dua pilihan ini: memungkinkan pengembang untuk mempublikasikan data sembarangan ke lapisan JAM DA, yang berfungsi sebagai titik tengah antara data on-chain dan off-chain. Aplikasi baru dapat dibangun yang memanfaatkan lapisan DA untuk sebagian besar data mereka, sementara hanya menyimpan data yang benar-benar kritis ke dalam status JAM.
Bagian ini mengulang pandangan kami tentang skalabilitas blockchain, yang juga dibahas dalam Graypaper, meskipun disajikan di sini dalam bentuk yang lebih ringkas.
Skalabilitas blockchain sebagian besar mengikuti metode tradisional dari sistem terdistribusi: skalabilitas vertikal dan skalabilitas horizontal.
Skala vertikal adalah apa yang platform seperti Solana fokuskan, memaksimalkan throughput dengan mengoptimalkan baik kode maupun perangkat keras ke batas kemampuan mereka.
Skala horizontal adalah strategi yang diadopsi oleh Ethereum dan Polkadot: mengurangi beban kerja yang harus ditangani oleh setiap peserta. Dalam sistem terdistribusi tradisional, ini dicapai dengan menambahkan lebih banyak mesin replika. Dalam blockchain, “komputer” adalah seluruh jaringan validator. Dengan mendistribusikan tugas di antara mereka (seperti yang dilakukan ELVES) atau mengurangi tanggung jawab mereka secara optimis (seperti dalam Optimistic Rollups), kita mengurangi beban kerja untuk seluruh set validator, sehingga mencapai skala horizontal.
Dalam blockchain, penskalaan horizontal bisa disamakan dengan "mengurangi jumlah mesin yang perlu melakukan semua operasi."
Secara ringkas:
Bagian ini didasarkan pada analogi Rob Habermeier dari Sub0 2023: Polkadot: Kernel/Userland | Sub0 2023 - YouTube (lihat:https://www.youtube.com/watch?v=15aXYvVMxlw) memperlihatkan JAM sebagai upgrade ke Polkadot: pembaruan kernel pada perangkat keras yang sama.
Di komputer biasa, kita dapat membagi seluruh tumpukan menjadi tiga bagian:
Dalam Polkadot, perangkat keras—infrastruktur inti yang menyediakan komputasi dan ketersediaan data—selalu menjadi inti, seperti yang disebutkan sebelumnya.
Di Polkadot, kernel sejauh ini terdiri dari dua bagian utama:
Keduanya ada di Rantai Relay Polkadot.
Aplikasi ruang pengguna, di sisi lain, adalah parachains itu sendiri, token asli mereka, dan segala sesuatu yang dibangun di atasnya.
Kita dapat memvisualisasikan proses ini sebagai berikut:
Polkadot telah lama bercita-cita untuk memindahkan lebih banyak fungsionalitas inti ke pengguna utamanya—parachains. Ini tepatnya adalah tujuan dari Minimal Relay RFC. (Untuk lebih jelasnya, lihat:Minimal Relay RFC)
Ini berarti bahwa Polkadot Relay Chain hanya akan menangani penyediaan protokol parachain, dengan demikian mengurangi ruang kernel sampai batas tertentu.
Setelah arsitektur ini diimplementasikan, akan lebih mudah untuk memvisualisasikan bagaimana migrasi JAM akan terlihat. JAM akan signifikan mengurangi ruang kernel Polkadot, menjadikannya lebih serbaguna. Selain itu, protokol Parachains akan beralih ke ruang pengguna, karena itu salah satu cara untuk membangun aplikasi pada inti (perangkat keras) dan kernel (JAM) yang sama.
Hal ini juga memperkuat mengapa JAM adalah pengganti untuk Rantai Relay Polkadot, bukan untuk parachains.
Dengan kata lain, kita dapat melihat migrasi JAM sebagai upgrade kernel. Perangkat keras yang mendasari tetap tidak berubah, dan sebagian besar konten kernel lama dipindahkan ke ruang pengguna untuk menyederhanakan sistem.
Mời người khác bỏ phiếu
Berikut ini adalah penjelasan rinci tentang Polkadot1, Polkadot2, dan bagaimana mereka berkembang menjadi JAM. (Untuk lebih jelasnya, lihat:https://www.navalmanack.com/almanack-of-naval-ravikant/how-to-think-clearlyArtikel ini ditujukan untuk pembaca teknis, terutama bagi mereka yang mungkin tidak terlalu familiar dengan Polkadot tetapi memiliki pengetahuan tentang sistem blockchain dan kemungkinan akrab dengan teknologi dari ekosistem lain.
Saya percaya artikel ini berfungsi sebagai pelopor yang baik untuk membaca JAM Gray Paper. (Untuk lebih detail, lihat:https://graypaper.com/)
Artikel ini mengasumsikan pembaca sudah familiar dengan konsep-konsep berikut:
Mari kita pertama-tama mengulang fitur-fitur paling inovatif dari Polkadot1.
Saat ini, kami sedang membahas jaringan Layer 1 yang menampung jaringan "blockchain" Layer 2 lainnya, mirip dengan Polkadot dan Ethereum. Oleh karena itu, istilah Layer 2 dan Parachain dapat digunakan secara bergantian.
Isu inti dari skalabilitas blockchain dapat diformulasikan sebagai: Ada sekelompok validator yang, menggunakan kripto-ekonomi proof-of-stake, memastikan bahwa pelaksanaan kode tertentu dapat dipercaya. Secara default, validator ini perlu mengeksekusi ulang semua pekerjaan yang dilakukan oleh yang lain. Selama kita menegakkan bahwa semua validator selalu mengeksekusi ulang segalanya, sistem secara keseluruhan tetap tidak dapat diskalakan.
Harap dicatat bahwa, selama prinsip eksekusi ulang absolut tetap tidak berubah, meningkatkan jumlah validator dalam model ini sebenarnya tidak meningkatkan throughput sistem.
Ini menunjukkan blockchain monolitik (berlawanan dengan yang terfragmentasi). Semua validator jaringan memproses input (yaitu, blok) satu per satu. Dalam sistem seperti itu, jika Layer 1 ingin meng-host lebih banyak Layer 2, maka semua validator harus mengeksekusi ulang semua pekerjaan Layer 2. Jelas, metode ini tidak dapat diskalakan.
Optimistic rollups mengatasi masalah ini dengan hanya mengeksekusi ulang (bukti penipuan) ketika penipuan diklaim. Rollups berbasis SNARK mengatasi masalah ini dengan memanfaatkan kenyataan bahwa biaya validasi bukti SNARK jauh lebih rendah daripada biaya menghasilkannya, sehingga memungkinkan semua validator untuk dengan efisien memverifikasi bukti SNARK. Untuk informasi lebih lanjut, lihat 'Lampiran: Diagram Ruang Skalabilitas'.
Solusi yang langsung untuk sharding adalah dengan membagi kumpulan validator menjadi subset yang lebih kecil dan memiliki subset tersebut menjalankan ulang blok Layer2. Apa masalah dengan pendekatan ini? Pada dasarnya kita sedang melakukan sharding terhadap kedua eksekusi dan keamanan ekonomi jaringan. Solusi Layer2 seperti ini memiliki keamanan yang lebih rendah dibandingkan dengan Layer1, dan keamanannya semakin berkurang saat kita membagi kumpulan validator menjadi lebih banyak shard.
Tidak seperti optimistic rollups, di mana biaya re-eksekusi tidak selalu bisa dihindari, Polkadot dirancang dengan eksekusi terfragmentasi dalam pikiran. Ini memungkinkan sebagian validator untuk mere-eksekusi blok Layer 2 sambil memberikan cukup bukti kriptoekonomi kepada seluruh jaringan untuk membuktikan bahwa blok Layer 2 itu aman seperti jika seluruh set validator telah mere-eksekusinya. Ini dicapai melalui mekanisme baru (dan baru-baru ini diformalkan) yang dikenal sebagai ELVES. (Untuk lebih jelasnya, lihat: https://eprint.iacr.org/2024/961)
Singkatnya, ELVES dapat dianggap sebagai mekanisme 'rollups' yang mencurigakan. Melalui beberapa putaran validator yang secara aktif meminta informasi dari validator lain tentang apakah blok Layer 2 yang diberikan valid, kita dapat mengonfirmasi dengan tingkat keberhasilan yang tinggi kevalidan blok tersebut. Jika terjadi perselisihan, seluruh set validator langsung terlibat. Pendiri Polkadot, Rob Habermeier, menjelaskan ini secara detail dalam sebuah artikel. (Untuk informasi lebih lanjut, lihat:https://polkadot.com/blog/polkadot-v1-0-sharding-and-economic-security#approval-checking-and-finality)
ELVES memungkinkan Polkadot memiliki eksekusi terfragmentasi dan keamanan bersama, dua properti yang sebelumnya dianggap saling terbatas. Ini adalah pencapaian teknis utama dari Polkadot1 dalam skalabilitas.
Sekarang, mari kita lanjutkan dengan analogi 'Core'. Blockchain eksekusi bersyarat sangat mirip dengan CPU: sama seperti CPU dapat memiliki beberapa core yang menjalankan instruksi secara paralel, Polkadot dapat memproses blok Layer 2 secara paralel. Inilah mengapa Layer 2 di Polkadot disebut sebagai parachain, dan lingkungan di mana subset validator lebih kecil mengeksekusi ulang satu blok Layer 2 disebut sebagai 'core'. Setiap core dapat diabstraksikan sebagai 'sekelompok validator yang bekerja sama'.
Anda dapat menganggap blockchain monolitik sebagai memproses satu blok pada satu waktu, sedangkan Polkadot memproses baik blok rantai relay maupun blok parachain untuk setiap inti dalam periode waktu yang sama.
Sejauh ini, kita hanya membahas skalabilitas dan eksekusi sharded yang ditawarkan oleh Polkadot. Penting untuk dicatat bahwa setiap shard dari Polkadot sebenarnya adalah aplikasi yang benar-benar berbeda. Hal ini dicapai melalui metaprotokol yang disimpan sebagai bytecode: protokol yang menyimpan definisi blockchain itu sendiri sebagai bytecode dalam keadaannya. Dalam Polkadot 1.0, WASM digunakan sebagai bytecode yang disukai, sementara dalam JAM, PVM/RISC-V diadopsi.
Inilah mengapa Polkadot disebut sebagai blockchain berbagi heterogen. (Untuk lebih detail, lihat:https://x.com/kianenigma/status/1790763921600606259) Setiap Layer 2 adalah aplikasi yang benar-benar berbeda.
Salah satu aspek penting dari Polkadot2 adalah membuat penggunaan core lebih fleksibel. Dalam model Polkadot asli, periode penyewaan inti berkisar antara 6 bulan hingga 2 tahun, yang cocok untuk perusahaan kaya sumber daya tetapi kurang layak untuk tim yang lebih kecil. Fitur yang memungkinkan inti Polkadot digunakan lebih fleksibel disebut "Agile Coretime." (Untuk detail selengkapnya, lihat: https://polkadot.com/agile-coretime) Dalam mode ini, istilah sewa inti bisa sesingkat satu blok atau sesepanjang sebulan, dengan batas harga bagi mereka yang ingin menyewa untuk jangka waktu lebih lama.
Fitur-fitur lain dari Polkadot 2 secara bertahap terungkap saat diskusi kita berlangsung, jadi tidak perlu menjelaskannya lebih lanjut di sini.
Untuk memahami JAM, penting untuk pertama-tama memahami apa yang terjadi ketika blok Layer 2 memasuki inti Polkadot. Berikut adalah penjelasan yang disederhanakan.
Ingatlah bahwa inti terdiri terutama dari seperangkat validator. Jadi ketika kita mengatakan "data dikirim ke inti," itu berarti data tersebut dilewatkan ke seperangkat validator ini.
Sebuah blok Layer 2, bersama dengan sebagian dari status Layer 2 tersebut, dikirim ke inti. Data ini berisi semua informasi yang diperlukan untuk mengeksekusi blok Layer 2.
Sebagian validator inti akan mengeksekusi ulang blok Layer 2 dan melanjutkan tugas terkait konsensus.
Validator inti ini memberikan data yang dijalankan ulang ke validator lain di luar inti. Menurut aturan ELVES, validator ini dapat memutuskan untuk mengeksekusi ulang blok Layer 2 atau tidak, memerlukan data ini untuk melakukannya.
Penting untuk dicatat bahwa, sampai saat ini, semua operasi ini terjadi di luar blok utama Polkadot dan fungsi transisi status. Semuanya terjadi dalam inti dan lapisan ketersediaan data.
Dari ini, kita dapat menjelajahi beberapa operasi kunci yang dilakukan oleh Polkadot:
Memahami ini membentuk dasar untuk memahami JAM. Berikut adalah ringkasannya:
Dengan pemahaman ini, kami sekarang dapat memperkenalkan JAM.
JAM adalah protokol baru yang terinspirasi oleh desain Polkadot dan sepenuhnya kompatibel dengannya, bertujuan untuk menggantikan rantai relay Polkadot dan membuat penggunaan inti sepenuhnya terdesentralisasi dan tidak terbatas.
Dibangun di Polkadot 2, JAM berusaha membuat implementasi Layer 2 pada inti lebih mudah diakses, menawarkan fleksibilitas bahkan lebih dari model inti-waktu yang tangkas.
Ini dicapai terutama dengan mengekspos tiga konsep inti yang dibahas sebelumnya kepada pengembang: eksekusi on-chain, eksekusi di-core, dan lapisan DA.
Dengan kata lain, dalam JAM, pengembang dapat:
Ini membentuk tinjauan dasar tujuan JAM. Tak perlu dikatakan, sebagian besar ini telah disederhanakan, dan protokol kemungkinan akan terus berkembang.
Dengan pemahaman dasar ini, kita sekarang dapat masuk ke beberapa spesifik dari JAM dalam bab-bab berikutnya.
Di JAM, apa yang sebelumnya disebut sebagai Layer 2 atau parachains sekarang disebut sebagai Layanan, dan yang sebelumnya disebut sebagai blok atau transaksi sekarang disebut sebagaiItem KerjaatauPaket KerjaSecara khusus, sebuah item kerja termasuk dalam sebuah layanan, dan sebuah paket kerja adalah kumpulan dari item-item kerja tersebut. Istilah-istilah ini sengaja dirancang secara luas untuk mencakup kasus penggunaan di luar skenario blockchain/Layer 2.
Sebuah layanan dijelaskan oleh tiga titik masuk, dua di antaranya adalah fn refine() dan fn accumulate(). Yang pertama menjelaskan apa yang dilakukan layanan selama eksekusi di dalam core, dan yang kedua menjelaskan apa yang dilakukan selama eksekusi on-chain.
Akhirnya, nama-nama titik masuk ini adalah alasan mengapa protokol ini disebut JAM (Join Accumulate Machine).Bergabungmerujuk kepadafn refine()
, yang merupakan fase di mana semua inti Polkadot memproses sejumlah besar pekerjaan secara paralel di berbagai layanan. Setelah data diproses, data tersebut beralih ke tahap berikutnya.Mengumpulkanmerujuk pada proses mengumpulkan semua hasil tersebut ke dalam keadaan JAM utama, yang terjadi selama fase eksekusi on-chain.
Item pekerjaan dapat secara tepat menentukan kode yang mereka jalankan di dalam inti dan on-chain, serta bagaimana, jika, dan dari mana mereka membaca atau menulis konten di Distributed Data Lake.
Meninjau dokumentasi yang ada tentang XCM (bahasa pilihan Polkadot untuk komunikasi parachain), semua komunikasi bersifat asinkron (untuk lebih jelasnya, lihatdi siniIni berarti bahwa sekali pesan dikirim, Anda tidak dapat menunggu balasannya. Komunikasi asinkron adalah gejala ketidakkonsistenan dalam sistem, dan salah satu kelemahan utama dari sistem yang di-shard secara permanen seperti Polkadot 1, Polkadot 2, dan ekosistem Layer 2 Ethereum yang sudah ada.
Namun, seperti yang dijelaskan dalam Bagian 2.4 dariGraypaper, sistem yang sepenuhnya konsisten yang tetap serempak untuk semua penyewanya hanya dapat berkembang hingga tingkat tertentu tanpa mengorbankan universalitas, aksesibilitas, atau ketahanan.
Di situlah JAM unggul: dengan memperkenalkan beberapa fitur, JAM mencapai keadaan menengah baru yang dikenal sebagai sistem semi-konsisten. Dalam sistem ini, subsistem yang berkomunikasi secara rutin dapat menciptakan lingkungan yang konsisten satu sama lain, tanpa memaksa seluruh sistem tetap konsisten. Ini dijelaskan dengan baik oleh Dr. Gavin Wood, penulis Graypaper, dalam sebuah wawancara:https://www.youtube.com/watch?t=1378&v=O3kRAVBTkfs&embeds_referring_euri=https%3A%2F%2Fblog.kianenigma.nl%2F&source_ve_path=OTY3MTQ
Cara lain untuk memahami hal ini adalah dengan melihat Polkadot/JAM sebagai sistem yang di-shard, di mana batas antara shard-shard ini bersifat fluid dan dinamis ditentukan.
Polkadot selalu telah di-sharded dan sepenuhnya heterogen.
Saat ini, sistem ini tidak hanya terfragmentasi dan heterogen, tetapi batas-batas shard ini dapat didefinisikan secara fleksibel—apa yang disebut Gavin Wood sebagai sistem “semi-konsisten” dalam cuitannya dan Graypaper.https://x.com/gavofyork?ref_src=twsrc%5Etfw、https://graypaper.com/)
Beberapa fitur membuat keadaan semi-konsisten ini memungkinkan:
Penting untuk dicatat bahwa sementara kemampuan-kemampuan ini memungkinkan dalam JAM, namun tidak ditegakkan pada tingkat protokol. Akibatnya, beberapa antarmuka secara teoritis asinkron namun dapat berfungsi secara sinkron dalam praktiknya karena abstraksi-abstraksi canggih dan insentif-insentif. CorePlay, yang akan dibahas dalam bagian berikutnya, adalah contoh dari fenomena ini.
Bagian ini memperkenalkan CorePlay, sebuah konsep eksperimental dalam lingkungan JAM yang dapat dijelaskan sebagai model pemrograman kontrak cerdas baru. Pada saat penulisan, CorePlay belum sepenuhnya didefinisikan dan tetap menjadi ide spekulatif.
Untuk memahami CorePlay, kita perlu memperkenalkan mesin virtual (VM) yang dipilih oleh JAM: PVM.
PVM adalah detail kunci baik di JAM maupun CorePlay. Detail-detail tingkat rendah dari PVM berada di luar lingkup dokumen ini dan lebih baik dijelaskan oleh para ahli domain dalam Graypaper. Namun, untuk penjelasan ini, kami akan menyoroti beberapa atribut kunci dari PVM:
Yang terakhir ini sangat penting untuk CorePlay.
CorePlay adalah contoh bagaimana primitif fleksibel JAM dapat digunakan untuk membuat lingkungan kontrak pintar yang berskala dan sinkron dengan antarmuka pemrograman yang sangat fleksibel. CorePlay mengusulkan bahwa kontrak pintar berbasis aktor dideploy langsung pada inti JAM, memungkinkan mereka untuk mendapatkan manfaat dari antarmuka pemrograman yang sinkron. Pengembang dapat menulis kontrak pintar seolah-olah mereka adalah fungsi fn main() sederhana, menggunakan ekspresi seperti let hasil = other_coreplay_actor(data).await?berkomunikasi. Jikaaktor inti lainnyaBerada di inti JAM yang sama dalam blok yang sama, panggilan ini bersifat sinkron. Jika berada di inti lain, aktor akan dijeda dan dilanjutkan pada blok JAM berikutnya. Hal ini dimungkinkan oleh layanan JAM, penjadwalan yang fleksibel, dan kemampuan PVM.
Akhirnya, mari kita rangkum alasan utama mengapa JAM sepenuhnya kompatibel dengan Polkadot. Produk unggulan Polkadot adalah parachains inti-waktu yang tangkas, yang berlanjut di JAM. Layanan yang diterapkan paling awal di JAM kemungkinan akan disebut sebagai CoreChains atau Parachains, memungkinkan parachains gaya Polkadot-2 yang ada berjalan di JAM.
Layanan tambahan dapat diterapkan di JAM, dan layanan CoreChains yang ada dapat berkomunikasi dengan mereka. Namun, produk-produk saat ini dari Polkadot akan tetap kokoh, hanya membuka peluang baru untuk tim parachain yang sudah ada.
Sebagian besar dokumen ini membahas skalabilitas dari sudut pandang sharding eksekusi. Namun, kita juga dapat memeriksa masalah ini dari sudut pandang sharding data. Menariknya, kita menemukan bahwa ini mirip dengan model semi-konsisten yang disebutkan sebelumnya. Pada prinsipnya, sistem yang sepenuhnya konsisten lebih unggul namun tidak dapat diskalakan, sementara sistem yang sepenuhnya inkonsisten dapat diskalakan dengan baik namun suboptimal. JAM, dengan model semi-konsistennya, memperkenalkan kemungkinan baru.
JAM menawarkan sesuatu yang lebih dari dua pilihan ini: memungkinkan pengembang untuk mempublikasikan data sembarangan ke lapisan JAM DA, yang berfungsi sebagai titik tengah antara data on-chain dan off-chain. Aplikasi baru dapat dibangun yang memanfaatkan lapisan DA untuk sebagian besar data mereka, sementara hanya menyimpan data yang benar-benar kritis ke dalam status JAM.
Bagian ini mengulang pandangan kami tentang skalabilitas blockchain, yang juga dibahas dalam Graypaper, meskipun disajikan di sini dalam bentuk yang lebih ringkas.
Skalabilitas blockchain sebagian besar mengikuti metode tradisional dari sistem terdistribusi: skalabilitas vertikal dan skalabilitas horizontal.
Skala vertikal adalah apa yang platform seperti Solana fokuskan, memaksimalkan throughput dengan mengoptimalkan baik kode maupun perangkat keras ke batas kemampuan mereka.
Skala horizontal adalah strategi yang diadopsi oleh Ethereum dan Polkadot: mengurangi beban kerja yang harus ditangani oleh setiap peserta. Dalam sistem terdistribusi tradisional, ini dicapai dengan menambahkan lebih banyak mesin replika. Dalam blockchain, “komputer” adalah seluruh jaringan validator. Dengan mendistribusikan tugas di antara mereka (seperti yang dilakukan ELVES) atau mengurangi tanggung jawab mereka secara optimis (seperti dalam Optimistic Rollups), kita mengurangi beban kerja untuk seluruh set validator, sehingga mencapai skala horizontal.
Dalam blockchain, penskalaan horizontal bisa disamakan dengan "mengurangi jumlah mesin yang perlu melakukan semua operasi."
Secara ringkas:
Bagian ini didasarkan pada analogi Rob Habermeier dari Sub0 2023: Polkadot: Kernel/Userland | Sub0 2023 - YouTube (lihat:https://www.youtube.com/watch?v=15aXYvVMxlw) memperlihatkan JAM sebagai upgrade ke Polkadot: pembaruan kernel pada perangkat keras yang sama.
Di komputer biasa, kita dapat membagi seluruh tumpukan menjadi tiga bagian:
Dalam Polkadot, perangkat keras—infrastruktur inti yang menyediakan komputasi dan ketersediaan data—selalu menjadi inti, seperti yang disebutkan sebelumnya.
Di Polkadot, kernel sejauh ini terdiri dari dua bagian utama:
Keduanya ada di Rantai Relay Polkadot.
Aplikasi ruang pengguna, di sisi lain, adalah parachains itu sendiri, token asli mereka, dan segala sesuatu yang dibangun di atasnya.
Kita dapat memvisualisasikan proses ini sebagai berikut:
Polkadot telah lama bercita-cita untuk memindahkan lebih banyak fungsionalitas inti ke pengguna utamanya—parachains. Ini tepatnya adalah tujuan dari Minimal Relay RFC. (Untuk lebih jelasnya, lihat:Minimal Relay RFC)
Ini berarti bahwa Polkadot Relay Chain hanya akan menangani penyediaan protokol parachain, dengan demikian mengurangi ruang kernel sampai batas tertentu.
Setelah arsitektur ini diimplementasikan, akan lebih mudah untuk memvisualisasikan bagaimana migrasi JAM akan terlihat. JAM akan signifikan mengurangi ruang kernel Polkadot, menjadikannya lebih serbaguna. Selain itu, protokol Parachains akan beralih ke ruang pengguna, karena itu salah satu cara untuk membangun aplikasi pada inti (perangkat keras) dan kernel (JAM) yang sama.
Hal ini juga memperkuat mengapa JAM adalah pengganti untuk Rantai Relay Polkadot, bukan untuk parachains.
Dengan kata lain, kita dapat melihat migrasi JAM sebagai upgrade kernel. Perangkat keras yang mendasari tetap tidak berubah, dan sebagian besar konten kernel lama dipindahkan ke ruang pengguna untuk menyederhanakan sistem.