Memverifikasi Secara Resmi Spesifikasi Ethereum 2.0 Phase 0

blog 1NewsPengembangEnterpriseBlockchain DijelaskanAcara dan KonferensiTekanBuletin

Berlangganan newsletter kami.

Alamat email

Kami menghormati privasi Anda

BerandaBlogPengembangan Blockchain

Memverifikasi Secara Resmi Spesifikasi Ethereum 2.0 Phase 0

Pembaruan dari ConsenSys R&D dalam upaya mereka untuk menghadirkan kepercayaan ke Beacon Chain dan fondasi inti Eth2. oleh Franck Cassez10 Agustus 2020Diposting pada 10 Agustus 2020

dafny verifikasi blog hero

Tim Verifikasi Otomatis di ConsenSys R&D telah mengerjakan spesifikasi formal dan verifikasi Beacon Chain selama beberapa bulan. Dengan senang hati kami laporkan bahwa banyak kemajuan telah dicapai dan meskipun belum selesai, kami telah berhasil berkembang kernel Beacon Chain yang solid dan terverifikasi secara resmi. Untuk pertama kalinya, pekerjaan kami memberikan tingkat kepercayaan yang tak tertandingi ke fondasi inti infrastruktur Eth2.0.

Metodologi

Verifikasi vs. Pengujian

Kami menggunakan pemenang penghargaan bahasa pemrograman yang peka terhadap verifikasi Dafny untuk menulis a resmi (fungsional dan logis) spesifikasi dari setiap fungsi Beacon Chain, sebuah penerapan dari masing-masing fungsi, dan a bukti bahwa implementasinya sesuai dengan spesifikasinya. Dengan kata lain, kami telah memverifikasi secara matematis tidak adanya bug. Penerapan yang akhirnya kami buktikan benar didasarkan pada spesifikasi resmi Eth2.0 dengan peringatan bahwa kami telah memperbaiki dan melaporkan beberapa bug dan inkonsistensi.

Metodologi kami berbeda dengan pengujian seperti yang kami lakukan buktikan secara matematis kesesuaian fungsi dengan spesifikasinya, untuk semua masukan. Pengujian tidak dapat mencakup banyak masukan yang tidak terbatas, dan sebagai konsekuensinya dapat menemukan bug tetapi tidak membuktikan tidak adanya bug.

Dan yang terbaik adalah kita tidak perlu menerbitkan makalah atau meninjau buktinya. Bukti adalah bagian dari basis kode dan ditulis sebagai program. Ya, di Dafny, Anda bisa menulis bukti sebagai program yang ramah pengembang. Juga bukti diperiksa secara mekanis oleh pepatah teorema, tidak menyisakan ruang untuk bukti yang tidak lengkap atau cacat.

Properti Yang Telah Kami Buktikan 

Properti berkisar dari tidak adanya aritmatika di bawah / meluap dan indeks di luar batas, kesesuaian setiap fungsi dengan logika (logika orde pertama) pra / pasca-kondisi (contoh merkelise di sini), ke yang lebih kompleks yang melibatkan komposisi fungsi. Misalnya, kami memiliki yang berikut ini milik SSZ Serialise / Deserialise fungsi: untuk setiap objek x, Deserialise (Serialise (x)) = x, yaitu deserialisasi objek serial mengembalikan objek asli. Kami juga telah mendirikan a jumlah invarian, dan menggunakannya untuk membuktikan bahwa operasi inti Beacon Chain dan ForkChoice (state_transition, on_block) sebenarnya membangun rantai balok: untuk setiap blok b di toko, leluhur dari b membentuk urutan berurutan yang benar-benar terbatas yang mengarah ke blok genesis, yang merupakan properti utama dari sebuah blockchain!

Manfaat Verifikasi Formal

Metodis formal mana pun akan bersikeras bahwa verifikasi adalah praktik keamanan terbaik. Inilah tepatnya bagaimana metodologi ini memastikan infrastruktur yang aman dan tepercaya untuk Ethereum 2.0.

Spesifikasi Fungsional

Pertama, kami telah meningkatkan spesifikasi resmi Eth2.0 menjadi a spesifikasi logis dan fungsional formal. Untuk setiap fungsi, kami mendefinisikannya secara formal apa fungsi yang diharapkan untuk dihitung, bukan bagaimana. Ini memberikan spesifikasi referensi ramah pengembang tanpa bahasa yang dapat digunakan untuk mengembangkan implementasi yang lebih aman, dengan sedikit usaha. 

Modularitas

Kedua, spesifikasi, implementasi, dan arsitektur pembuktian kami modular. Alhasil, kita bisa dengan mudah bereksperimen dengan penerapan baru (mis. pengoptimalan) dan memeriksa dampaknya pada keseluruhan sistem. Pikirkan peretasan pintar untuk menerapkan suatu fungsi? Ubah implementasinya dan minta Dafny untuk mengecek apakah masih sesuai dengan spesifikasinya. Jika ya, bukti komponen yang menggunakan fungsi ini tidak terpengaruh.

Executability

Ketiga, implementasi kami dapat dieksekusi. Kami dapat mengkompilasi dan menjalankan program Dafny. Lebih baik lagi, kamu bisa secara otomatis menghasilkan kode dalam beberapa bahasa pemrograman populer seperti C #, Go (dan segera Java) dari kode Dafny. Ini dapat digunakan untuk melengkapi basis kode yang ada atau untuk menghasilkan tes bersertifikat. Implementasi yang akan diuji dapat menggunakan fungsi kami yang telah terbukti benar untuk menghitung hasil yang diharapkan dari suatu pengujian dan memeriksanya dengan hasilnya sendiri.   

Semuanya dalam Satu Bahasa

Terakhir, basis kode kami adalah mandiri. Ini berisi spesifikasi, implementasi, dokumentasi, dan bukti, semua dalam satu bahasa pemrograman tunggal, dapat dibaca, sederhana dan terdefinisi dengan baik secara semantik.

Pertanyaan dan Pertimbangan 

Bagaimana dengan kesehatan mesin verifikasi?

Anda mungkin bertanya-tanya, “bagaimana jika kompiler / pemverifikasi Dafny bermasalah?” Kami sebenarnya tahu Dafny buggy (masalah repo dafny), namun kami tidak bergantung pada tidak adanya bug di Dafny. Kami mengandalkan Dafny (dan mesin verifikasinya) suara. Soundness berarti bahwa ketika Dafny melaporkan bahwa pembuktiannya benar, itu memang benar. 

Bagaimana jika spesifikasi yang kami tulis tidak sesuai? 

Dalam hal ini, kami akan membuktikan kesesuaian dengan persyaratan yang salah. Ya, ini bisa terjadi dan tidak ada solusi untuk memperbaiki masalah ini. Namun, seperti yang kami sebutkan sebelumnya, Dafny dapat dieksekusi. Hal ini memungkinkan kami untuk menjalankan kode dan mendapatkan keyakinan bahwa spesifikasi kami tepat. Dan spesifikasi kami ditulis dalam logika urutan pertama tanpa ruang untuk sengketa tentang maknanya, jadi jika Anda melihat masalah, beri tahu kami dan kami akan memperbaikinya.

Bagaimana jika Dafny tidak dapat membuktikan bahwa implementasi sesuai dengan spesifikasi? 

Hal ini dapat terjadi, tetapi dalam kasus ini Dafny memiliki beberapa mekanisme umpan balik untuk membantu menyelidiki langkah-langkah pembuktian apa yang tidak dapat diverifikasi. Dan hingga saat ini, kami selalu berhasil membangun bukti yang bisa dicek otomatis oleh Dafny.

Kami menyambut umpan balik Anda, jadi silakan periksa repositori eth2.0-dafny kami. Kami sangat senang melihat pengembangan Ethereum 2.0 mencapai tonggak testnet baru-baru ini, dan kami berharap dapat bekerja dengan tim di seluruh ekosistem untuk memastikan fase jaringan berikutnya dibangun di atas fondasi yang kokoh.

Pengakuan: Terima kasih kepada rekan satu tim saya Joanne Fuller, Roberto Saltini (tim Verifikasi Otomatis), Nicolas Liochon, dan kepada Avery Erwin atas komentarnya pada versi awal posting ini.

Terus Ikuti Ethereum 2.0

Berlangganan buletin ConsenSys untuk mendapatkan berita terbaru tentang Eth2 langsung ke kotak masuk Anda. Ethereum 2.0Research and DevelopmentSecurityNewsletter Berlangganan buletin kami untuk berita Ethereum terbaru, solusi perusahaan, sumber daya pengembang, dan banyak lagi Alamat email Konten EksklusifCara Membangun Produk Blockchain yang BerhasilWebinar

Cara Membangun Produk Blockchain yang Berhasil

Cara Mengatur dan Menjalankan Node EthereumWebinar

Cara Mengatur dan Menjalankan Node Ethereum

Cara Membangun API Ethereum Anda SendiriWebinar

Cara Membangun API Ethereum Anda Sendiri

Cara Membuat Token SosialWebinar

Cara Membuat Token Sosial

Menggunakan Alat Keamanan dalam Pengembangan Kontrak CerdasWebinar

Menggunakan Alat Keamanan dalam Pengembangan Kontrak Cerdas

Masa Depan Keuangan Aset Digital dan DeFiWebinar

Masa Depan Keuangan: Aset Digital dan DeFi

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me