Dua cara menyusul
Bootstrapping — mencapai versi terkini dari nol — bisa dilakukan dengan dua cara yang secara mendasar berbeda. Replay riwayatnya. Mulai dari genesis dan bergerak maju, entah dengan mengeksekusi ulang setiap transaksi atau dengan menerapkan output yang sudah dihasilkan eksekusi. Hasilnya adalah node yang memegang seluruh riwayat: setiap versi, setiap bukti, setiap transaksi. Cara ini juga lambat, dan makin lambat setiap hari chain berjalan. Unduh state terkini. Lewati riwayatnya dan ambil key beserta nilai state sebagaimana adanya pada versi terbaru, diverifikasi terhadap root yang terkomit. Node menjadi terkini dalam waktu yang jauh lebih singkat, dan tidak tahu apa-apa tentang bagaimana chain sampai ke sana.Node baru
Mode bootstrapping
Replay riwayatnyaeksekusi ulang atau terapkan output, dari genesislambat, makin lambat tiap hari chain berjalan
Unduh state terkinikey dan nilai pada versi terbaru, diverifikasi terhadap root terkomitterkini dalam sepersekian waktunya
Versi terkinisinkronisasi kontinu
Kedua jalur tidak setaraNode yang mengunduh state terkini tidak bisa melayani query historis atau menjelaskan asal-usul sebuah posisi. Node yang melayani indexer atau audit butuh riwayat yang dilewatkan.
Ini keputusan operasional, bukan default yang diterima tanpa dipikirkan. Node yang mengunduh state terkini tidak bisa melayani query historis atau menjawab pertanyaan tentang bagaimana sebuah posisi sampai ke keadaannya sekarang — node itu tidak punya riwayat untuk dibaca. Node yang melayani indexer atau proses audit membutuhkan riwayat yang dilewatkannya itu.
Tetap terkini
Setelah berada di versi terkini, node menjaga posisinya dengan mengonsumsi blok terkomit begitu blok itu tiba — lagi-lagi dengan mengeksekusi transaksinya atau menerapkan output-nya, dengan trade-off yang sama antara kekuatan verifikasi dan kecepatan. Bedanya dari bootstrapping: jaraknya kecil dan konstan, bukan besar dan menyusut. Node yang tertinggal cukup jauh akan kembali masuk ke jalur bootstrapping, bukan mencoba menutup jarak sebesar apa pun secara bertahap.Bagaimana data berpindah
Sinkronisasi bukan sekadar satu node meminta rentang blok ke node lain. Sinkronisasi dipisahkan menjadi beberapa lapisan sehingga tidak ada satu peer pun yang menjadi dependensi dan tidak ada satu kegagalan pun yang menghentikan kemajuan.
Konsekuensi yang perlu dipahami: node yang sedang menyinkronkan diri tidak sedang memercayai peer. Setiap chunk tiba disertai bukti terhadap root yang dikomit jaringan, dan peer yang menyajikan sesuatu yang tidak konsisten akan ditolak, bukan dipercaya. Pemilihan peer adalah keputusan performa, bukan keputusan kepercayaan.
Verifikasi
Tidak ada apa pun dalam sinkronisasi state yang diterima hanya karena siapa yang mengirimnya. Nilai state diverifikasi terhadap state root yang terkomit. Transaksi dan output diverifikasi terhadap akumulator. Node yang menyelesaikan bootstrapping punya state yang root-nya cocok dengan apa yang ditandatangani kuorum validator — dan itulah yang membuat jalur cepat tetap aman: mengunduh state terkini melewati riwayatnya, tetapi tidak melewati verifikasinya.Ke mana selanjutnya
Penyimpanan dan bukti
Struktur yang membuat sinkronisasi bisa diverifikasi.
Menjalankan node
Peran node, dan cara menanyakan soal menjalankannya.
Topologi jaringan
Tier node mana yang sedang diajak bicara oleh peer yang menyinkronkan diri.
Indexer
Apa yang bisa dijawab riwayat tetapi tidak bisa dijawab state terkini.