8 Inovasi yang Menjadikan Solana Blockchain Skala Web Pertama
Teknologi yang memungkinkan 50.000 TPS blockchain jaringan Solana terwujud
Solana dikembangkan pada tahun 2017 ketika pendirinya Anatoly Yakovenko mencari cara untuk mencocokkan kinerja satu node dengan jaringan node yang didesentralisasi. Tak satu pun dari blockchain utama yang mampu mencapai properti ini. Hanya Solana yang mampu mencapainya.
Sistem Proof of Work seperti Bitcoin dan Ethereum mendukung sekitar 10 transaksi per detik (TPS). Praktis sistem Proof of Stake (PoS) berbasis Bizantium Fault Tolerance (PoFT) seperti Tendermint mendukung sekitar 1.000 TPS dengan 100–200 node. Solana, sebuah blockchain PoS seperti PBFT, mendukung lebih dari 50.000 TPS dengan lebih dari 200 node pada iterasi testnet saat ini, menjadikannya blockchain berkinerja paling optimal dan jaringan terdesentralisasi berskala web pertama di dunia.
Sejak awal, tim Solana terdiri dari perintis teknologi dari Qualcomm, Intel, Netscape, dan Google telah berfokus pada pengembangan teknologi yang diperlukan untuk Solana agar berfungsi dengan standar kinerja yang inovatif ini.
Untuk membuat jaringan terdesentralisasi tanpa izin yang cocok dengan kinerja satu node, tim Solana mengembangkan 8 teknologi utama:
- Proof of History (POH) — jam sebelum konsensus;
- Tower BFT — versi PBFT yang dioptimalkan untuk PoH;
- Turbine — protokol propagasi block;
- Gulf Stream — Protokol penerusan transaksi dengan sedikit Mempool;
- Sealevel — Run-time kontrak pintar secara paralel;
- Pipelining — Unit Pemrosesan Transaksi untuk melakukan optimasi dan validasi
- Cloudbreak — Basis Data Akun dengan Skala Horizontal; dan
- Archivers — Penyimpanan buku kas yang didistribusikan
Dalam esai ini, kami akan menjelaskan secara singkat masing-masing hal di atas. Jika Anda ingin mempelajari lebih lanjut tentang masing-masing fitur, kami juga menulis penjelasan terperinci yang dapat Anda akses dengan mengklik tautan di atas.
Proof of History
Jika jaringan blockchain secara keseluruhan akan cocok dengan kinerja satu node, hal itu berarti bahwa bandwidth tidak bisa menjadi penghambat, melainkan perhitungan. Untuk mencapai hal ini, pertama-tama kita perlu mengoptimalkan bagaimana node dalam jaringan berkomunikasi.
Jaringan seluler nirkabel menawarkan banyak kesamaan dengan jaringan berbasis blockchain, dan telah lama difokuskan pada optimalisasi komunikasi jaringan. Tidak ada satu pun menara radio yang memiliki bandwidth yang cukup untuk memberikan setiap ponsel frekuensi radio untuk ditransmisikan, sehingga perusahaan telekomunikasi membutuhkan “teknologi akses ganda” untuk menjejalkan beberapa panggilan telepon pada frekuensi yang sama.
Time Division Multiple Access (TDMA) adalah salah satu teknologi utama yang memungkinkan skalabilitas besar-besaran di jaringan seluler. TDMA menetapkan bahwa menara membagi setiap frekuensi radio menjadi slot waktu, dan mengalokasikan slot waktu ini untuk setiap panggilan telepon. Dengan cara ini, menara telepon menyediakan jam yang tersedia secara global untuk jaringan. Secara besar-besaran hal ini meningkatkan skalabilitas bandwidth terbatas dengan membiarkan setiap frekuensi mendukung beberapa saluran data simultan, dan mengurangi interferensi dari beberapa telepon yang disiarkan pada frekuensi yang sama pada waktu yang bersamaan.
Jaringan berbasis blockchain hari ini memiliki masalah jam. Jam mereka ber “detik” setiap kali blok baru diproduksi. Untuk Ethereum, itu terjadi setiap lima belas detik sekali, dan hanya ada begitu banyak informasi yang dapat ditampung dalam satu blok. Setara TDMA untuk jaringan berbasis blockchain akan menjadi jam dengan granularity sub-detik yang disetujui oleh semua node validasi, sehingga mereka dapat memproses transaksi dengan lebih efisien.
Inovasi inti Solana adalah Proof of History (POH), sumber waktu yang tersedia secara global dan tanpa izin dalam jaringan yang bekerja sebelum konsensus. POH bukan protokol konsensus atau mekanisme anti-Sybil. Sebaliknya, POH adalah solusi untuk masalah jam.
Sedangkan blockchain lainnya memerlukan validator untuk berbicara satu sama lain untuk menyetujui bahwa waktu telah berlalu, masing-masing validator Solana mempertahankan jamnya sendiri dengan menyandikan berlalunya waktu dalam SHA-256 yang sederhana, fungsi penundaan yang dapat diverifikasi secara berurutan (VDF). Solana tidak menggunakan VDF untuk keacakan. Sebagai gantinya, setiap validator menggunakan VDF untuk mempertahankan jamnya sendiri. Karena setiap validator memiliki jamnya sendiri, pemilihan pemimpin dijadwalkan sebelumnya untuk seluruh masa. Seperti Tendermint, jadwal untuk masa yang berlangsung selama ribuan blok Namun, tidak seperti Tendermint, jaringan tidak pernah menunggu node yang gagal. Setiap validator menjalankan VDF untuk membuktikan bahwa ia telah memperoleh slotnya untuk mengirimkan blok dan validator. Setiap validator diberi kompensasi untuk melakukannya karena produsen blok menerima hadiah untuk memproduksi blok.
Diaktifkan oleh Proof of History, para pemimpin terus berputar dan jaringan secara keseluruhan membuat kemajuan terlepas dari kondisi jaringan. Ini berarti bahwa jaringan tidak pernah berhenti. Jaringan dapat membuat keputusan untuk memutar validator tanpa ada validator yang berbicara satu sama lain. Hal ini merupakan pergeseran yang halus tetapi mendalam. Tidak ada blockchain lain yang memiliki mekanisme yang sebanding. Dalam setiap blockchain lain, validator harus berkomunikasi untuk membuat keputusan. Di Solana, keputusan rotasi pemimpin dibuat secara tidak sinkron.
Inovasi inti ini membuka ruang desain yang menumpuk. Selain menyediakan jam yang dapat digunakan untuk timestamping, POH memungkinkan Solana mengoptimalkan waktu blok (800 ms), propagasi blok (log200 (n)), throughput (50K-80 = K TPS)), dan penyimpanan buku kas (petabytes) ) tersedia di jaringan.
Tower BFT
Di atas Proof of History, Solana menjalankan Tower Consensus, algoritma konsensus mirip PBFT yang dirancang khusus untuk memanfaatkan jam yang disinkronkan. Tidak seperti PBFT, Tower Consensus lebih mengutamakan konsistensi. Hal yang mirip PBFT, node secara eksponensial meningkatkan timeout mereka untuk mencapai kesepakatan, tetapi karena buku kas juga merupakan sumber waktu yang tidak dapat dipercaya, node dapat mengamati dan memeriksa timeout dari semua validator lain dalam jaringan. Untuk lebih memahaminya, mari kita melihat contoh di bawah ini:
Bayangkan Anda berada di sebuah pulau, dan sebuah botol mengapung dengan drive sebesar ibu jari. Di dalam drive ada buku kas Solana. Jika Anda hanya melihat buku kas itu sendiri, Anda akan melihat bahwa setiap node dapat menghitung jumlah validator yang ada, keadaan masing-masing validator, dan batas waktu setiap validator telah berkomitmen untuk setiap blok di jaringan. Berdasarkan pada struktur data saja, tanpa pesan peer-to-peer, validator dapat membuat keputusan untuk memilih, dan jaringan dapat mencapai konsensus.
Turbine
Mengingat bahwa lapisan konsensus Solana tidak memiliki ketergantungan pada pesan peer-to-peer, Solana mampu mengoptimalkan bagaimana blok ditransmisikan melalui jaringan secara independen dari konsensus. Turbine, Teknik propagasi blok Solana, banyak mengadaptasi dari BitTorrent. Ketika sebuah blok di-stream, ia dipecah menjadi paket-paket kecil bersama dengan kode-kode penghapusan, dan kemudian menyebar melintasi sejumlah besar rekan-rekan acak. Dengan fan-out 200, lapisan kedua jaringan dapat mencakup 40.000 validator. Sehingga, validator dapat menyebarkan blok dengan dampak log200 (n) ke finalitas. Untuk semua tujuan praktis, jika setiap koneksi 100 ms, replikasi dapat dicapai dalam 400 ms, dan finalitas dalam 500 ms untuk jaringan 40.000 node.
Mekanisme fanout harus tahan terhadap kesalahan. Dengan demikian, validator mengkodekan data menggunakan kode penghapusan Reed-Solomon, memberikan tingkat toleransi kesalahan.
Gulf Stream
Dalam jaringan berkinerja tinggi, manajemen mempool adalah kelas masalah baru yang tidak perlu ditangani oleh blockchain lain. Gulf Stream berfungsi dengan mendorong caching transaksi dan meneruskan ke tepi jaringan. Karena setiap validator mengetahui urutan pemimpin mendatang dalam arsitektur Solana, klien dan validator meneruskan transaksi kepada pemimpin yang diharapkan sebelumnya. Hal ini memungkinkan validator untuk melakukan transaksi sebelumnya, mengurangi waktu konfirmasi, beralih pemimpin lebih cepat, dan mengurangi tekanan memori pada validator dari kumpulan transaksi yang belum dikonfirmasi.
Klien, seperti wallet, menandatangani transaksi yang merujuk pada blok-hash tertentu. Klien memilih blok-hash yang cukup baru yang telah sepenuhnya dikonfirmasi oleh jaringan. Blok diusulkan kira-kira setiap 800 ms, dan membutuhkan batas waktu yang meningkat secara eksponensial untuk meng-unroll dengan setiap blok tambahan. Menggunakan kurva batas waktu default kami, hash blok yang sepenuhnya dikonfirmasi, dalam kasus terburuk, 32 blok. Dengan asumsi waktu blok 800 ms, itu sama dengan 25,6 detik.
Setelah transaksi diteruskan ke validator mana pun, validator meneruskannya ke salah satu pemimpin yang akan datang. Klien dapat berlangganan konfirmasi transaksi dari validator. Klien tahu bahwa blok-hash berakhir dalam periode waktu yang terbatas, atau transaksi dikonfirmasi oleh jaringan. Hal ini memungkinkan klien untuk menandatangani transaksi yang dijamin akan dieksekusi atau gagal. Setelah jaringan melewati titik rollback sedemikian rupa sehingga pemblokiran referensi transaksi telah kedaluwarsa, klien memiliki jaminan bahwa transaksi sekarang tidak valid dan tidak akan pernah dieksekusi secara berantai.
Sealevel
Untuk memanfaatkan jaringan kinerja tinggi Solana, kami membangun Sealevel, mesin pemrosesan transaksi paralel paralel yang dirancang untuk menskalakan secara horizontal di seluruh GPU dan SSD. Perlu diperhatikan bahwa semua blockchain lainnya adalah komputer single-threaded. Solana adalah satu-satunya blockchain yang mendukung eksekusi transaksi paralel (bukan hanya verifikasi tanda tangan) dalam satu pecahan.
Solusi untuk masalah ini sebagian besar diadaptasi dari teknik driver sistem operasi yang disebut scatter-gathering. Transaksi menentukan di muka keadaan apa yang akan mereka baca dan tulis saat mengeksekusi. Runtime dapat menemukan semua fungsi transisi keadaan non-tumpang tindih yang terjadi dalam sebuah blok dan menjalankannya secara paralel, apa yang disebut eksekusi paralel sambil mengoptimalkan cara membaca dan menulis ke status dijadwalkan melalui array RAID 0 SSD.
Meskipun Sealevel sendiri adalah VM yang menjadwalkan transaksi, Sealevel tidak benar-benar melakukan transaksi di VM. Sebaliknya, Sealevel menyerahkan transaksi yang akan dilakukan pada perangkat keras secara native menggunakan bytecode yang telah terbukti di industri yang disebut Berkeley Packet Filter (BPF), yang dirancang untuk filter paket berkinerja tinggi. Bytecode ini telah dioptimalkan sejak awal 90-an, dan telah digunakan dalam produksi di jutaan switch di seluruh dunia untuk menangani 60 juta paket per detik pada jaringan 40-gigabit dalam satu switch.
Setiap kali Nvidia menggandakan jumlah jalur SIMD yang tersedia, jaringan kami akan berlipat ganda dalam kapasitas komputasi. Hampir semua blockchain lainnya, yang sudah di desain sebagai komputer single-threaded, tidak akan pernah bisa menskala dengan cara ini.
Menggunakan LLVM, kompiler yang sama yang menargetkan WASM, kami menyediakan seperangkat alat yang hebat bagi pengembang untuk menulis kontrak pintar berkinerja tinggi dalam C / C ++ dan Rust yang menjalankan kontrak pada GPU. Meskipun Solana tidak menggunakan WASM, developer dapat mengkompilasi ulang kode C dan Rust yang ditulis untuk kompiler WASM dalam kompiler Solana dengan perubahan minimal. Dengan demikian, pengembang dapat dengan mudah memigrasi aplikasi mereka dari rantai WASM utama lainnya seperti Dfinity, EOS, Polkadot dan Ethereum 2.0.
Ethereum memiliki riwayat bug yang dihasilkan dari arsitektur perangkat lunak. Dua contoh yang relevan:
- Berbagai parity hacks melalui Delegate Call
- Bug sewaan DAO melalui ‘call’
Sangat mungkin untuk menulis kode Soliditas yang aman, seperti halnya mungkin untuk menulis perangkat lunak yang kompleks di C tanpa perlindungan memori. Tetapi selama perilaku yang tidak aman mudah ditambahkan dan sulit dideteksi, secara geometris menjadi lebih sulit untuk memverifikasi perilaku perangkat lunak yang kompleks. Baik Solana dan tim Libra mengenali masalah ini sejak awal dan mengembangkan arsitektur yang mempertahankan pemisahan ketat antara status modul yang berbeda.
Bahasa Move memperkenalkan Resources and Script sebagai konsep tingkat tinggi. Keduanya secara alami cocok dengan Solana Sealevel Runtime, dan bagaimana kami merancang program asli kami. Tujuan kami adalah untuk mendukung Move sebagai bahasa tingkat pertama, sehingga Resources bertindak sebagai program Solana asli, dan dapat dikembangkan dan disusun melalui Move, atau melalui Rust ABI asli kami sendiri tanpa kompromi dengan kinerja atau keamanan.
Pipelining — Unit Pemrosesan Transaksi untuk melakukan optimasi dan validasi
Proses validasi transaksi pada jaringan Solana membuat penggunaan luas dari optimasi umum dalam desain CPU yang disebut pipelining. Pipelining adalah proses yang tepat ketika ada aliran input data yang perlu diproses oleh urutan langkah dan ada perangkat keras berbeda yang bertanggung jawab untuk masing-masing.
Pada jaringan Solana, mekanisme pipa, Transaction Processing Unit, berkembang melalui Pengambilan Data di tingkat kernel, Verifikasi Tanda Tangan di tingkat GPU, Perbankan di tingkat CPU, dan Menulis di ruang kernel. Pada saat TPU mulai mengirim blok ke validator, sudah diambil dalam paket set berikutnya, memverifikasi tanda tangan mereka, dan mulai mengkredit token.
Di antara paralelisasi GPU dalam pipa empat tahap ini, pada saat tertentu, Solana TPU dapat membuat kemajuan pada 50.000 transaksi secara bersamaan. Hal ini semua dapat dicapai dengan komputer yang harganya di bawah $5.000. Dengan GPU yang diturunkan ke Unit Pemrosesan Transaksi Solana, jaringan dapat memengaruhi efisiensi node tunggal.
Cloudbreak — Memori dengan Skala Horizontal
Tidak cukup hanya menghitung skala. Memori yang digunakan untuk melacak akun dengan cepat menjadi hambatan dalam ukuran dan kecepatan akses. Misalnya, pada umumnya dipahami bahwa LevelDB, mesin basis data lokal yang banyak digunakan rantai modern, tidak dapat mendukung lebih dari sekitar 5.000 TPS.
Solusi naif adalah mempertahankan status global dalam RAM. Namun, tidak masuk akal untuk mengharapkan mesin kelas konsumen memiliki RAM yang cukup untuk menyimpan status global. Untuk Solana, kami merancang Cloudbreak, arsitektur negara yang dioptimalkan untuk membaca dan menulis bersamaan yang tersebar di konfigurasi RAID 0 SSD. Setiap disk tambahan menambah kapasitas penyimpanan yang tersedia untuk program on-chain, serta meningkatkan jumlah program membaca dan menulis secara bersamaan yang dapat dilakukan saat dijalankan.
Ditambah dengan desain transaksi kami, arsitektur ini mendukung eksekusi transaksi AOT (Ahead Of Time). Segera setelah transaksi diamati oleh validator, Sealevel dapat mulai mengambil pra-pengambilan semua akun dari disk dan menyiapkan runtime untuk dieksekusi. Validator dan produsen blok bahkan dapat mulai melakukan transaksi sebelum mereka dikodekan ke dalam blok, yang memungkinkan kami untuk lebih mengoptimalkan waktu blok dan latensi konfirmasi.
Archivers
Pada 1GBPS, jaringan blockchain akan menghasilkan 4 petabyte data dalam setahun untuk buku kas. Menyimpan data akan dengan cepat menjadi vektor sentralisasi utama, mengalahkan tujuan implementasi blockchain dalam proses tersebut.
Di Solana, penyimpanan data diturunkan dari validator ke jaringan node yang disebut Archivers. Archiver tidak berpartisipasi dalam konsensus. Histori status dipecah menjadi banyak bagian dan kode dihapus Archiver menyimpan bagian kecil dari status. Sering kali, jaringan akan meminta Archiver untuk membuktikan bahwa mereka menyimpan data yang seharusnya. Solana memanfaatkan Bukti Replikasi (PoRep), yang banyak dipinjam dari Filecoin.
Kami dapat menggunakan Proof of History, jam kami sebelum konsensus, untuk mengoptimalkan cara PoReps dibuat. Node pengarsipan, yang tidak berpartisipasi dalam konsensus, menggunakan PoH untuk menghasilkan bukti ringan dengan mana potongan-potongan buku besar telah direplikasi, dan validator dapat memverifikasi mereka dalam batch yang sangat besar di seluruh GPU.
Pengarsip dapat berupa simpul yang ringan (mis. Laptop). Dengan kode penghapusan dan redundansi, jaringan Archivers dapat menawarkan jaminan ketersediaan data melebihi apa pun yang bisa diharapkan oleh AWS atau GCE.
Ringkasan
Sebagai hasil dari 8 inovasi inti, jaringan Solana adalah teknologi buku kas yang didistribusikan dengan cepat yang akan selalu terus berjalan. Itu tidak diperlambat oleh konsensus. Selain itu, sistem mengoptimalkan penyebaran data, memanfaatkan GPU paralel secara besar-besaran untuk pemrosesan transaksi, dan tidak membebani validator dengan histori blockchain tersimpan yang sangat besar.
Perangkat lunak Solana dirancang untuk menyingkir dan membiarkan perangkat keras beroperasi pada kapasitas. Sehingga, Solana melakukan secara alami dengan bandwidth, SSD, dan inti GPU. Ini adalah satu-satunya blockchain yang melakukannya, dan bagaimana Solana mencapai 50.000 TPS pada jaringan 200 node berbeda secara fisik di seluruh dunia.
Untuk penjelasan lebih lanjut tentang 8 inovasi yang memungkinkan jaringan Solana, silakan lihat postingan blog di bawah ini:
- Bukti Histori (POH) — jam sebelum konsensus;
- Tower BFT — versi PBFT yang dioptimalkan untuk PoH;
- Turbine — protokol propagasi block;
- Gulf Stream — Protokol penerusan transaksi dengan sedikit Mempool;
- Sealevel — Run-time kontrak pintar secara paralel;
- Cloudbreak — Basis Data Akun dengan Skala Horizontal; dan
- Archivers — Penyimpanan buku kas yang didistribusikan
Status Jaringan
Tesnet Solana berlangsung hari ini. Anda dapat melihatnya di testnet.solana.com.. Untuk keperluan biaya, kami hanya menjalankan beberapa node. Namun, kami telah memutarnya pada banyak contoh hingga lebih dari 200 node yang berbeda secara fisik (bukan pada perangkat keras bersama) di 23 pusat data pada AWS, GCE, dan Azure sebagai tolok ukur.
Runtime berfungsi hari ini, dan developer dapat mendeploy kode pada testnow sekarang. Developer dapat membuild kontrak pintar dalam C hari ini, dan kami bekerja pada toolchain Rust dengan giat. Rust akan menjadi bahasa utama untuk pengembangan kontrak pintar Solana. Toolchain Rust tersedia untuk umum sebagai bagian dari Solana Javascript SDK, dan kami selanjutnya mengulangi pada Software Development Kit.
Solana akan segera meluncurkan validator insentif beta publik untuk menjalankan node melalui Tour de SOL — analog dengan Game Stakes Cosmos — yang menantang masyarakat luas untuk menguji batas-batas jaringan Solana dengan token sebagai imbalan untuk melakukannya.