Verificarea formală a specificațiilor Ethereum 2.0 Faza 0

blogul 1NewsDevelopersEnterpriseBlockchain Explained Evenimente și conferințe ApăsațiBuletine informative

Aboneaza-te la newsletter-ul nostru.

Adresa de email

Vă respectăm confidențialitatea

AcasăBlogDezvoltare blockchain

Verificarea formală a specificațiilor Ethereum 2.0 Faza 0

O actualizare de la ConsenSys R&Efortul lor de a aduce încredere în lanțul Beacon și bazele fundamentale ale Eth2. de Franck Cassez 10 august 2020 Postat pe 10 august 2020

dafny verifică eroul blogului

Echipa de verificare automată de pe ConsenSys R&D lucrează la o specificație formală și verificarea lanțului Beacon de câteva luni. Suntem bucuroși să raportăm că s-au făcut multe progrese și, deși nu au fost încă complete, am reușit să ne dezvoltăm un nucleu solid și verificat formal al lanțului Beacon. Pentru prima dată, munca noastră oferă un nivel de fiabilitate de neegalat fundamentelor de bază ale infrastructurii Eth2.0.

Metodologie

Verificare vs. testare

Am folosit premiat limbaj de programare conștient de verificare Dafny a scrie un formal (funcțional și logic) specificație din fiecare funcție Beacon Chain, un implementare a fiecărei funcții și a dovada că implementarea este conformă cu specificațiile sale. Cu alte cuvinte, am verificat matematic absența erorilor. Implementările pe care ne-am dovedit în cele din urmă corecte se bazează pe specificațiile oficiale Eth2.0 cu avertismentul pe care l-am remediat și am raportat unele erori și neconcordanțe.

Metodologia noastră este diferită de testare ca și noi demonstrează matematic conformitatea funcțiilor cu specificațiile acestora, pentru toate intrări. Testarea nu poate varia pe mai multe intrări și, în consecință, poate descoperi erori, dar nu poate dovedi absența erorilor.

Și cel mai bun lucru este că nu este nevoie să publicăm o lucrare și nici să examinăm dovezile. Dovezile fac parte din baza de cod și sunt scrise ca programe. Da, în Dafny, puteți scrie o dovadă ca program pentru dezvoltatori. De asemenea dovezile sunt verificate mecanic de către un demonstrator de teoreme, fără a lăsa loc pentru dovezi incomplete sau defecte.

Proprietăți pe care le-am demonstrat 

Proprietățile variază de la absența sub / deborduri aritmetice și index în afara limitelor, conformitatea fiecărei funcții cu condițiile pre / post logice (logica de prim ordin)exemplu merkelise aici), la cele mai complexe care implică compoziții ale funcțiilor. De exemplu, avem următoarele proprietatea SSZ Serializare / Deserializare funcții: pentru fiecare obiect x, Deserialize (Serialise (x)) = x, adică deserializarea unui obiect serializat returnează obiectul original. De asemenea, am stabilit un numărul de invarianți, și le-a folosit pentru a dovedi că operațiunile de bază ale Beacon Chain și ForkChoice (state_transition, on_block) de fapt construiește un lanț de blocuri: pentru orice bloc b din magazin, strămoșii lui b formează o secvență finită complet ordonată care duce la blocul de geneză, care este proprietatea principală a unui blockchain!

Avantajele verificării formale

Orice metodist formal ar insista că verificarea este o bună practică de securitate. Iată exact cum această metodologie asigură o infrastructură sigură și de încredere pentru Ethereum 2.0.


Specificații funcționale

În primul rând, am ridicat specificațiile oficiale Eth2.0 la un specificație logică și funcțională formală. Pentru fiecare funcție, definim formal ce funcție se așteaptă să calculeze, nu cum. Aceasta oferă specificații de referință adaptabile dezvoltatorului pentru limbă care poate fi folosit pentru a dezvolta implementări mai sigure, cu mai puțin efort. 

Modularitate

În al doilea rând, specificațiile noastre, implementările și arhitectura de probă sunt modular. Drept urmare, putem cu ușurință experimentați cu noi implementări (de exemplu, optimizări) și verificați impactul acestora asupra sistemului general. Vă gândiți la un hack inteligent pentru a implementa o funcție? Schimbați implementarea și cereți-i lui Dafny să verifice dacă este încă în conformitate cu specificațiile sale. Dacă da, dovezile componentelor care utilizează această funcție nu sunt afectate.

Executabilitate

În al treilea rând, implementările noastre sunt executabil. Putem compila și rula un program Dafny. Chiar și mai bine, poți automat generează cod în unele limbaje de programare populare precum C #, Go (și în curând Java) din codul Dafny. Aceasta poate fi utilizată pentru a completa bazele de cod existente sau pentru a genera teste certificate. Implementarea care urmează să fie testată poate folosi funcțiile noastre dovedite-corecte pentru a calcula rezultatul așteptat al unui test și pentru a-l compara cu propriul rezultat.   

Totul într-o singură limbă

Nu în ultimul rând, baza noastră de cod este autonom. Conține specificațiile, implementările, documentațiile și dovezile, toate într-un singur limbaj de programare lizibil, simplu și semantic bine definit.

Întrebări și considerații 

Ce zici de soliditatea motorului de verificare?

S-ar putea să vă întrebați „ce se întâmplă dacă compilatorul / verificatorul Dafny este un buggy?” Știm de fapt că Dafny este un buggy (dafny repo issues), dar nu ne bazăm pe absența bug-urilor în Dafny. Mizăm pe Dafny (și motorul său de verificare) să fie sunet. Sănătatea înseamnă că atunci când Dafny raportează că dovezile sunt corecte, ele sunt într-adevăr corecte. 

Ce se întâmplă dacă specificația pe care am scris-o nu este cea potrivită? 

În acest caz, am dovedi conformitatea cu o cerință greșită. Da, acest lucru se poate întâmpla și nu există niciun glonț de argint care să rezolve această problemă. Cu toate acestea, așa cum am menționat anterior, Dafny este executabil. Acest lucru ne permite să rulăm codul și să avem încredere că specificațiile noastre sunt cele potrivite. Și specificațiile noastre sunt scrise în logică de prim ordin, fără loc de dispută cu privire la semnificație, așa că dacă observați o problemă, anunțați-ne și o vom remedia.

Ce se întâmplă dacă Dafny nu poate dovedi că o implementare este conformă cu o specificație? 

Acest lucru se poate întâmpla, dar în acest caz Dafny are câteva mecanisme de feedback pentru a ajuta la investigarea etapelor unei dovezi care nu pot fi verificate. Și până acum, am reușit întotdeauna să construim dovezi pe care Dafny le poate verifica automat.

Vă mulțumim pentru feedback, așa că vă rugăm să verificați depozitul nostru eth2.0-dafny. Am fost încântați să urmărim dezvoltarea Ethereum 2.0 atingând etapele recente ale testnetului și așteptăm cu nerăbdare să lucrăm cu echipe din ecosistem pentru a ne asigura că următoarea fază a rețelei este construită pe o bază solidă..

Mulțumiri: Mulțumesc colegilor mei de echipă Joanne Fuller, Roberto Saltini (echipa de verificare automată), Nicolas Liochon și lui Avery Erwin pentru comentarii la o versiune preliminară a acestui post.

Țineți pasul cu Ethereum 2.0

Abonați-vă la buletinul informativ ConsenSys pentru a primi cele mai recente știri Eth2 direct în căsuța de e-mail. Ethereum 2.0 Căutare și dezvoltare Securitate Buletin informativ Abonați-vă la newsletter-ul nostru pentru cele mai recente știri Ethereum, soluții pentru întreprinderi, resurse pentru dezvoltatori și multe altele. Adresa de e-mail Conținut exclusivCum să construiți un produs Blockchain de succesWebinar

Cum să construiți un produs Blockchain de succes

Cum se configurează și se execută un nod EthereumWebinar

Cum se configurează și se execută un nod Ethereum

Cum să vă construiți propriul API EthereumWebinar

Cum să vă construiți propriul API Ethereum

Cum să creați un simbol socialWebinar

Cum să creați un simbol social

Utilizarea instrumentelor de securitate în dezvoltarea contractelor inteligenteWebinar

Utilizarea instrumentelor de securitate în dezvoltarea contractelor inteligente

Viitorul activelor digitale și al DeFi-ului financiarWebinar

Viitorul finanțelor: active digitale și DeFi

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me
Like this post? Please share to your friends:
Adblock
detector
map