Proof-of-History: Jam untuk Blockchain
Penjelasan yang mendalam tentang inovasi inti dari Solana
Solana adalah blockchain tanpa memerlukan izin yang memiliki kinerja paling optimal di dunia. Pada iterasi Solana Testnet saat ini, jaringan 200 node yang berbeda secara fisik mendukung throughput berkelanjutan lebih dari 50.000 transaksi per detik saat berjalan dengan GPU. Pencapaian seperti itu membutuhkan implementasi beberapa optimasi dan teknologi baru, dan hasilnya adalah terobosan dalam kapasitas jaringan yang menandakan fase baru dalam pengembangan blockchain.
Ada 8 inovasi utama yang memungkinkan jaringan Solana menjadi kenyataan:
- 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
- Replicators — Penyimpanan distribusi buku kas
Salah satu masalah yang paling sulit diatasi dalam sistem terdistribusi adalah kesepakatan yang tepat waktu. Bahkan, beberapa orang berpendapat bahwa fitur paling penting dari algoritma Bitcoin Proof of Work berfungsi sebagai clock yang terdesentralisasi untuk sistem. Di Solana, kami percaya Proof-of-History menyediakan solusi ini dan kami telah membangun blockchain berdasarkan hal itu.
Jaringan terdesentralisasi telah memecahkan masalah ini dengan solusi waktu terpercaya dan terpusat. Misalnya, Google’s Spanner menggunakan jam atom yang disinkronkan di antara pusat data. Teknisi Google menyinkronkan jam ini dengan presisi yang sangat tinggi dan terus-menerus merawatnya.
Masalah ini bahkan lebih sulit dalam sistem permusuhan seperti blockchain. Node dalam jaringan tidak dapat mempercayai sumber waktu eksternal atau timestamp apa pun yang muncul dalam pesan. Misalnya, Hashgraph yang mengatasi masalah ini dengan timestamp “median”. Setiap pesan yang dilihat oleh jaringan ditandatangani dan ditandai oleh supermajority jaringan. Time stamp median untuk pesan disebut Hashgraph sebagai pemesanan yang “fair”. Setiap pesan harus melakukan perjalanan ke supermajority dari node dalam sistem, kemudian setelah pesan mengumpulkan cukup tanda tangan, seluruh set perlu disebarkan ke seluruh jaringan. Seperti yang dapat Anda bayangkan, hal ini sungguh lambat.
Bagaimana jika Anda bisa mempercayai timestamp yang dienkode ke dalam pesan? Sejumlah besar optimasi sistem terdistribusi akan langsung siap membantu Anda. Misalnya:
“Jam yang disinkronkan menarik karena dapat digunakan untuk meningkatkan kinerja algoritma terdistribusi. Mereka memungkinkan untuk mengganti komunikasi dengan perhitungan lokal. ”
— Liskov, B. Praktisi pengguna jam tersinkronisasi dalam sistem terdistribusi
Dalam kasus kami, ini berarti throughput tinggi, blockchain berkinerja tinggi
Proof-of-History
Alih-alih mempercayai timestamp, bagaimana jika Anda dapat membuktikan bahwa pesan tersebut terjadi sebelum dan sesudah suatu peristiwa? Ketika Anda mengambil foto dengan sampul New York Times, Anda membuat bukti bahwa foto Anda diambil setelah surat kabar itu diterbitkan, atau Anda memiliki cara untuk mempengaruhi apa yang diterbitkan New York Times. Dengan Bukti Sejarah, Anda dapat membuat catatan histori yang membuktikan bahwa suatu peristiwa telah terjadi pada saat tertentu.
Proof-of-History adalah Fungsi Penundaan yang Dapat Diverifikasi. Fungsi Penundaan yang Dapat Diverifikasi membutuhkan sejumlah langkah yang berurutan untuk mengevaluasi, tapi menghasilkan hasil unik yang dapat diverifikasi dapat dipublikasikan secara efisien.
Implementasi spesifik kami menggunakan hash resistensi pra-image yang berurutan dan berjalan sendiri secara terus-menerus dengan menggunakan output sebelumnya sebagai input berikutnya. Secara berkala hitungan dan output saat ini dicatat.
Untuk fungsi hash SHA256, proses ini tidak mungkin untuk diparalelkan tanpa serangan brute force menggunakan ²¹²⁸ core.
Kita kemudian dapat memastikan bahwa waktu nyata telah berlalu di antara setiap penghitung seperti yang dihasilkan, dan bahwa urutan yang dicatat masing-masing penghitung adalah sama dengan waktu yang sebenarnya.
Upper bond tepat Waktu
Data dapat dimasukkan ke dalam urutan dengan menambahkan hash data ke status yang dihasilkan sebelumnya. Status, input data, dan jumlah yang semuanya dipublikasikan. Menambah input menyebabkan semua output di masa depan berubah tidak terduga. Hal itu masih tidak mungkin untuk diparalelkan, dan selama fungsi hash adalah pra-image dan resistensi tabrakan, tidak mungkin untuk membuat input yang akan menghasilkan hash yang diinginkan di masa depan, atau membuat histori alternatif dengan hash yang sama. Kami dapat membuktikan bahwa waktu berlalu di antara dua operasi penambahan. Kami dapat membuktikan bahwa data dibuat beberapa saat sebelum ditambahkan. Sama seperti kita tahu bahwa peristiwa yang diterbitkan di New York Times terjadi sebelum surat kabar itu ditulis.
Lower bound tepat Waktu
Input ke dalam Proof-of-History dapat memiliki referensi kembali ke Proof-of-History itu sendiri. Back reference dapat dimasukkan sebagai bagian dari pesan yang ditandatangani dengan tanda tangan pengguna, sehingga tidak dapat dimodifikasi tanpa kunci pribadi pengguna. Hal ini seperti mengambil foto dengan koran New York Times di latar belakang. Karena pesan ini mengandung hash 0xdeadc0de, kita tahu bahwa pesan itu dibuat setelah hitungan 510144806912 dibuat.
Namun karena pesan tersebut juga dimasukkan kembali ke aliran Proof-of-History, menjadikanya seolah-olah Anda mengambil foto dengan New York Times di latar belakang, dan hari berikutnya New York Times menerbitkan foto itu. Kita tahu bahwa konten foto itu ada sebelum dan sesudah hari itu.
Verifikasi
Sementara urutan yang dicatat hanya dapat dihasilkan pada satu core CPU, outputnya dapat diverifikasi secara paralel.
Setiap irisan yang direkam dapat diverifikasi dari awal hingga selesai pada inti yang terpisah dalam 1/(jumlah core) waktu yang dibutuhkan untuk menghasilkan. Jadi GPU modern dengan 4000 core dapat memverifikasi yang kedua dalam 0,25 milidetik.
ASICS
Bukankah setiap CPU berbeda, dan ada beberapa yang lebih cepat dari pada yang lain? Bagaimana Anda benar-benar percaya bahwa “waktu” yang dihasilkan oleh loop SHA256 kami akurat?
Topik ini layak dibuat sebagai artikel yang membahas hal ini secara spesifik. Namun, singkat cerita adalah bahwa kami tidak terlalu peduli jika beberapa CPU lebih cepat daripada yang lain, dan jika ASIC dapat lebih cepat daripada CPU yang tersedia untuk jaringan. Hal yang paling penting adalah bahwa ada batas yang membatasi seberapa cepat ASIC bisa dapatkan.
Kami menggunakan SHA256 dan berkat Bitcoin, telah ada penelitian yang signifikan dalam membuat fungsi hash kriptografis ini berfungsi dengan cepat. Fungsi ini tidak mungkin untuk dipercepat dengan menggunakan area die yang lebih besar, seperti Look Up Table, atau melakukan unroll tanpa berdampak pada kecepatan clock. Baik Intel dan AMD merilis chip konsumen yang dapat melakukan putaran penuh SHA256 dalam 1,75 siklus.
Karena itu, kami memiliki keyakinan bahwa ASIC kustom tidak akan 100x lebih cepat, apalagi 1000x, dan sebagian besar mungkin berada dalam 30% dari apa yang tersedia untuk jaringan. Kami dapat membuat protokol yang mengeksploitasi bound ini dan memungkinkan untuk membatasi dan mendeteksi denial-of-service attack (DoS attack). Topik itu akan dibahas lebih lanjut di artikel berikutnya!
Code
Jika Anda suka rust dan cuda, dan ingin membangun blockchain tercepat di dunia, hubungi kami di hello@solana.com
Solana mengimplementasikan Proof-of-History, bersama dengan inovasi lain seperti Tower BFT, Bukti Replikasi, dan Gulf Stream yang digabung untuk menciptakan blockchain berkinerja paling optimal di dunia. Tesnet Solana berlangsung hari ini. Anda bisa membacanya di https://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.