Službeno provjeravam specifikacije Ethereum 2.0 Phase 0

blog 1NewsDevelopersEnterpriseBlockchain ObjašnjeniDogađaji i konferencijePressBilteni

Pretplatite se na naše obavijesti.

Email adresa

Poštujemo vašu privatnost

Razvoj HomeBlogBlockchaina

Službeno provjeravam specifikacije Ethereum 2.0 Phase 0

Ažuriranje tvrtke ConsenSys R&D na njihovim naporima da povjerenje u Beacon Chain i temeljne temelje Eth2. Franck Cassez, 10. kolovoza 2020. Objavljeno 10. kolovoza 2020

dafny potvrdi heroja bloga

Tim za automatiziranu provjeru na ConsenSys R&D nekoliko mjeseci rade na formalnoj specifikaciji i provjeri Beacon Chain-a. Sretni smo što možemo izvijestiti da je postignut puno napretka i iako još nismo dovršili, uspjeli smo se razviti čvrsta i formalno provjerena jezgra Beacon Chain-a. Naš rad prvi put pruža neusporedivu razinu pouzdanosti temeljnim temeljima infrastrukture Eth2.0.

Metodologija

Provjera u odnosu na testiranje

Koristili smo nagrađivani programski jezik svjestan provjere Dafny napisati a formalne (funkcionalno i logično) specifikacija svake funkcije Beacon Chain, an provedba svake funkcije i a dokaz da je provedba u skladu s njezinom specifikacijom. Drugim riječima, matematički smo provjerili odsutnost bugova. Temelje se na implementacijama za koje smo se na kraju pokazali ispravnima službene specifikacije Eth2.0 uz upozorenje da smo ispravili i prijavili neke pogreške i nedosljednosti.

Naša se metodologija razlikuje od testiranja kao i mi matematički dokazati sukladnost funkcija njihovim specifikacijama, za svi ulazi. Testiranje se ne može protezati na beskonačno mnogo ulaza, što kao posljedicu može otkriti greške, ali ne i dokazati odsutnost grešaka.

A najbolja stvar je što ne trebamo objaviti rad niti pregledavati dokaze. Dokazi su dio osnove koda i napisani su kao programi. Da, u Dafnyju možete napisati dokaz kao program prilagođen programerima. Također, dokazi se mehanički provjeravaju dokazom teorema, ne ostavljajući mjesta nepotpunim ili manjkavim dokazima.

Svojstva koja smo dokazali 

Svojstva se kreću od odsutnosti aritmetika ispod / prelijeva se i indeks izvan granica, sukladnost svake funkcije s logičkim (logika prvog reda) pred / post-uvjetima (primjer merkelize ovdje), do složenijih koji uključuju sastave funkcija. Primjerice, imamo sljedeće vlasništvo SSZ-a Serialise / Deserialise funkcije: za svaki objekt x, Deserialise (Serialise (x)) = x, tj. deserijalizacija serializiranog objekta vraća izvorni objekt. Također smo uspostavili i broj invarijanata, i upotrijebio ih kako bi dokazao da su osnovne radnje Beacon Chain-a i ForkChoice (prijelaz_ stanja, on_block) zapravo izgraditi lanac blokova: za bilo koji blok b u trgovini, preci b oblikuju konačan potpuno uređen niz koji vodi do genetskog bloka, što je glavno svojstvo blockchaina!

Prednosti formalne provjere

Bilo koji formalni metodist ustrajavat će na tome da je provjera najbolja sigurnosna praksa. Evo točno kako ova metodologija osigurava sigurnu i pouzdanu infrastrukturu za Ethereum 2.0.


Funkcionalna specifikacija

Prvo smo podigli službene Eth2.0 specifikacije na formalna logička i funkcionalna specifikacija. Za svaku funkciju formalno definiramo što se očekuje da funkcija izračuna, ni kako. Ovo pruža jezično-agnostičke referentne specifikacije za programere koji se mogu koristiti za razvoj sigurnijih implementacija, uz manje napora. 

Modularnost

Drugo, naše su specifikacije, implementacije i probna arhitektura modularni. Kao rezultat, to možemo lako eksperimentirati s novim implementacijama (npr. optimizacije) i provjeriti njihov utjecaj na cjelokupni sustav. Sjetite se pametnog hakiranja za provedbu funkcije? Promijenite implementaciju i zamolite Dafny da provjeri je li i dalje u skladu s njezinim specifikacijama. Ako se dogodi, to neće utjecati na dokaz komponenata koje koriste ovu funkciju.

Izvršnost

Treće, naše implementacije jesu izvršna. Možemo sastaviti i pokrenuti Dafny program. Još bolje, možeš automatski generirati kod u nekim popularnim programskim jezicima poput C #, Go (i uskoro Java) iz Dafny koda. To se može koristiti za dopunu postojećih baza koda ili za generiranje ovjerena ispitivanja. Implementacija koja se testira može koristiti naše dokazane ispravne funkcije za izračunavanje očekivanog rezultata testa i provjeru u odnosu na vlastiti rezultat.   

Sve na jednom jeziku

Posljednje, ali ne najmanje važno, naša baza koda je samostalan. Sadrži specifikacije, implementacije, dokumentaciju i dokaze, sve u jednom, čitljivom, jednostavnom i semantički dobro definiranom programskom jeziku.

Pitanja i razmatranja 

Što je sa ispravnošću mehanizma za provjeru?

Možda se pitate: “što ako je Dafnyjev kompajler / provjerivač prisluškivan?” Zapravo znamo da je Dafny kocka (dafny repo izdanja), ali ne oslanjamo se na odsutnost bugova u Dafnyju. Oslanjamo se na Dafny (i njezin mehanizam za provjeru) zvuk. Čvrstoća znači da kada Dafny izvijesti da su dokazi točni, oni su zaista točni. 

Što ako specifikacija koju smo napisali nije ispravna? 

U ovom bismo slučaju dokazali sukladnost s pogrešnim zahtjevom. Da, to se može dogoditi i ne postoji srebrni metak koji bi riješio ovaj problem. Međutim, kao što smo već spomenuli, Dafny je izvršna. To nam omogućuje pokretanje koda i dobivanje određenog povjerenja da su naše specifikacije ispravne. A naše su specifikacije napisane logikom prvog reda bez prostora za spor oko značenja, pa ako primijetite problem, javite nam i mi ćemo ga riješiti.

Što ako Dafny ne može dokazati da je provedba u skladu s specifikacijom? 

To se može dogoditi, ali u ovom slučaju Dafny ima neke mehanizme povratnih informacija koji pomažu istražiti koji se koraci dokaza ne mogu provjeriti. I do sada smo uvijek uspjeli stvoriti dokaze koje Dafny može automatski provjeriti.

Pozdravljamo vaše povratne informacije, pa vas molimo da provjerite naše spremište eth2.0-dafny. Oduševljeni smo gledajući kako Ethereum 2.0 razvoj doseže svoje nedavne prekretnice u testnet-u, i radujemo se suradnji s timovima širom ekosustava kako bismo osigurali da je sljedeća faza mreže izgrađena na čvrstim temeljima.

Zahvalnost: Zahvaljujem mojim suigračima Joanne Fuller, Robertu Saltiniju (tim za automatsku provjeru), Nicolasu Liochonu i Avery Erwinu na komentarima na preliminarnoj verziji ovog posta.

Pratite Ethereum 2.0

Pretplatite se na bilten ConsenSys da biste dobivali najnovije Eth2 vijesti ravno u svoju pristiglu poštu. Ethereum 2.0Istraživanje i razvojSecurityNewsletter Pretplatite se na naš bilten za najnovije vijesti o Ethereumu, rješenja za poduzeća, resurse za programere i još mnogo toga. Adresa e-pošte Ekskluzivni sadržajKako izraditi uspješan blockchain proizvodWebinar

Kako izraditi uspješan blockchain proizvod

Kako postaviti i pokrenuti Ethereum čvorWebinar

Kako postaviti i pokrenuti Ethereum čvor

Kako izraditi vlastiti Ethereum APIWebinar

Kako izraditi vlastiti Ethereum API

Kako stvoriti društveni žetonWebinar

Kako stvoriti društveni žeton

Korištenje sigurnosnih alata u razvoju pametnih ugovoraWebinar

Korištenje sigurnosnih alata u razvoju pametnih ugovora

Budućnost financija Digitalna imovina i DeFiWebinar

Budućnost financija: digitalna imovina 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