Ethereum 2.0 0. fāzes specifikāciju oficiāla pārbaude

emuārs 1NewsDevelopersEnterpriseBlockchain ExplainedEvents and ConferencesPressBiļeteni

Abonējiet mūsu biļetenu.

Epasta adrese

Mēs cienām jūsu privātumu

HomeBlogBlockchain izstrāde

Ethereum 2.0 0. fāzes specifikāciju oficiāla pārbaude

Atjauninājums no ConsenSys R&D par viņu centieniem panākt uzticamību bākas ķēdē un Eth2 pamatos. Autors Franck Cassez 2020. gada 10. augusts Ievietots 2020. gada 10. augustā

dafny pārbaudīt emuāra varoni

ConsenSys R automatizētās verifikācijas komanda&Dažus mēnešus D ir strādājis pie oficiālas bākas ķēdes specifikācijas un verifikācijas. Mēs priecājamies ziņot, ka ir panākts liels progress un, lai arī tas vēl nav pabeigts, mums ir izdevies attīstīties stabils un formāli pārbaudīts bākas ķēdes kodols. Pirmo reizi mūsu darbs nodrošina nepārspējamu uzticamības līmeni Eth2.0 infrastruktūras pamatiem.

Metodoloģija

Pārbaude pret testēšanu

Mēs izmantojām godalgots verifikāciju apzinoša programmēšanas valoda Dafnijs uzrakstīt a formāls (funkcionāls un loģisks) specifikācija katras bākas ķēdes funkcijas, an ieviešana katras funkcijas, un a pierādījums ka ieviešana atbilst tās specifikācijai. Citiem vārdiem sakot, mēs esam matemātiski pārbaudījuši kļūdu neesamību. Īstenojumi, uz kuriem mēs esam izrādījušies pareizi, ir balstīti oficiālās Eth2.0 specifikācijas ar brīdinājumu, ka mēs esam novērsuši un ziņojuši par dažām kļūdām un neatbilstībām.

Mūsu metodika atšķiras no testēšanas, kā mēs matemātiski pierādīt funkciju atbilstība to specifikācijām, visi ieejas. Testēšana nevar pārsniegt bezgalīgi daudz ievadu, un tā rezultātā var atklāt kļūdas, bet nepierādīt kļūdu neesamību.

Pats labākais ir tas, ka mums nav jāpublicē dokuments vai jāpārskata pierādījumi. Pārbaudījumi ir daļa no kodu bāzes un tiek rakstīti kā programmas. Jā, programmā Dafny jūs varat uzrakstīt apliecinājumu kā izstrādātājiem draudzīgu programmu. Arī pierādījumi tiek mehāniski pārbaudīti teorēmu sakāmvārds, neatstājot vietu nepilnīgiem vai kļūdainiem pierādījumiem.

Īpašumi, kurus esam pierādījuši 

Īpašības svārstās no tā neesamības aritmētiskā zem / pārpildes un indekss ārpus robežām, katras funkcijas atbilstība loģiskiem (pirmās kārtas loģika) pirms / pēc nosacījumiem (merkelisks piemērs šeit), uz sarežģītākiem, kas ietver funkciju sastāvus. Piemēram, mums ir šādi SSZ īpašums Serialise / Deserialise funkcijas: katram objektam x Deserialise (Serialise (x)) = x, t.i., sērijveida objekta deserializēšana atgriež sākotnējo objektu. Mēs esam izveidojuši arī invariantu skaits, un izmantoja tos, lai pierādītu, ka Beacon Chain un ForkChoice (state_transition, on_block) faktiski veidot bloku ķēdi: jebkuram b blokam veikalā b priekšteči veido ierobežotu pilnībā sakārtotu secību, kas noved pie ģenēzes bloka, kas ir galvenais blokķēdes īpašums!

Oficiālās verifikācijas priekšrocības

Jebkurš formāls metodiķis uzstāj, ka verifikācija ir drošības paraugprakse. Lūk, kā šī metodika nodrošina drošu un uzticamu infrastruktūru Ethereum 2.0.


Funkcionālā specifikācija

Pirmkārt, mēs esam atcēluši oficiālās Eth2.0 specifikācijas uz a formāla loģiska un funkcionāla specifikācija. Katrai funkcijai mēs formāli definējam kāda funkcija tiek aprēķināta, nevis kā. Tas nodrošina valodas agnostijas izstrādātājiem piemērotas atsauces specifikācijas ko var izmantot, lai ar mazāk piepūles izstrādātu drošākas ieviešanas iespējas. 

Modularitāte

Otrkārt, mūsu specifikācijas, ieviešana un pierādījumu arhitektūra ir modulāra. Tā rezultātā mēs varam viegli eksperimentēt ar jaunām ieviešanām (piemēram, optimizācijām) un pārbaudīt to ietekmi uz kopējo sistēmu. Vai domājat par gudru uzlaušanu, lai ieviestu funkciju? Mainiet ieviešanu un lūdziet Dafny pārbaudīt, vai tā joprojām atbilst tās specifikācijām. Ja tas notiek, komponentu, kas izmanto šo funkciju, pierādījumi netiek ietekmēti.

Izpildāmība

Treškārt, mūsu ieviešana ir izpildāms. Mēs varam sastādīt un palaist Dafny programmu. Vēl labāk, jūs varat automātiski ģenerēt kodu dažās populārās programmēšanas valodās, piemēram, C #, Go (un drīz arī Java) no Dafny koda. To var izmantot, lai papildinātu esošās kodu bāzes vai ģenerētu sertificēti testi. Pārbaudāmā ieviešana var izmantot mūsu pārbaudītās pareizās funkcijas, lai aprēķinātu paredzamo testa rezultātu un pārbaudītu to ar paša rezultātu.   

Viss vienā valodā

Visbeidzot, mūsu koda bāze ir pašpietiekams. Tas satur specifikācijas, ieviešanu, dokumentāciju un pierādījumus vienā un tajā pašā lasāmā, vienkāršā un semantiski labi definētā programmēšanas valodā.

Jautājumi un apsvērumi 

Kas par verifikācijas motora izturību?

Jums varētu būt jautājums: “Ko darīt, ja Dafny sastādītājs / verificētājs ir kļūdains?” Mēs faktiski zinām, ka Dafnijs ir bagijs (dafny repo jautājumi), taču mēs nepaļaujamies uz kļūdu trūkumu Dafny. Mēs paļaujamies uz to, ka Dafny (un tā verifikācijas dzinējs) ir skaņu. Stingrība nozīmē, ka tad, kad Dafny ziņo, ka pierādījumi ir pareizi, tie patiešām ir pareizi. 

Ko darīt, ja mūsu uzrakstītā specifikācija nav pareizā? 

Šajā gadījumā mēs pierādīsim atbilstību nepareizai prasībai. Jā, tas var notikt, un nav sudraba lodītes, kas novērstu šo problēmu. Tomēr, kā mēs jau minējām iepriekš, Dafny ir izpildāms. Tas ļauj mums palaist kodu un iegūt zināmu pārliecību, ka mūsu specifikācijas ir pareizas. Un mūsu specifikācijas ir uzrakstītas pirmās pakāpes loģikā un nav vietas domstarpībām par nozīmi, tādēļ, ja pamanāt problēmu, informējiet mūs un mēs to novērsīsim.

Ko darīt, ja Dafny nevar pierādīt, ka ieviešana atbilst specifikācijai? 

Tas var notikt, taču šajā gadījumā Dafnijam ir daži atgriezeniskās saites mehānismi, kas palīdzēs izpētīt, kādus pierādījuma soļus nevar pārbaudīt. Un līdz šim mums vienmēr ir izdevies izveidot pierādījumus, kurus Dafny var automātiski pārbaudīt.

Mēs atzinīgi vērtējam jūsu atsauksmes, tāpēc, lūdzu, pārbaudiet mūsu eth2.0-dafny krātuve. Mēs esam priecīgi skatīties, kā Ethereum 2.0 izstrāde sasniedz jaunākos testnet atskaites punktus, un mēs ceram strādāt ar ekosistēmas komandām, lai nodrošinātu, ka tīkla nākamais posms tiek veidots uz pamatīga pamata.

Pateicība: Paldies maniem komandas biedriem Džoanai Fulerei, Roberto Saltīni (Automātiskās pārbaudes komandai), Nikolasai Liohonai un Avērijam Ervinam par komentāriem par šīs ziņas sākotnējo versiju.

Sekojiet līdzi Ethereum 2.0

Abonējiet ConsenSys biļetenu, lai jaunākās Eth2 ziņas nonāktu tieši iesūtnē. Ethereum 2.0Pētniecība un izstrādeDrošībaJaavrakstsPiesakieties uz mūsu biļetenu, lai iegūtu jaunākās Ethereum ziņas, uzņēmuma risinājumus, izstrādātāju resursus un daudz ko citu. E-pasta adreseEkskluzīvs satursKā izveidot veiksmīgu Blockchain produktuTīmekļa seminārs

Kā izveidot veiksmīgu Blockchain produktu

Kā izveidot un palaist Ethereum mezgluTīmekļa seminārs

Kā izveidot un palaist Ethereum mezglu

Kā izveidot savu Ethereum APITīmekļa seminārs

Kā izveidot savu Ethereum API

Kā izveidot sociālo marķieriTīmekļa seminārs

Kā izveidot sociālo marķieri

Drošības rīku izmantošana viedo līgumu izstrādēTīmekļa seminārs

Drošības rīku izmantošana viedo līgumu izstrādē

Finanšu digitālo aktīvu un DeFi nākotneTīmekļa seminārs

Finanšu nākotne: digitālie aktīvi un 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