1 dienoraštisNewsDevelopersEnterpriseBlockchain ExplainedEvents and ConferencesPressNaujienlaiškiai

Užsiprenumeruokite mūsų naujienlaiškį.

Elektroninio pašto adresas

Mes gerbiame jūsų privatumą

Pagrindinis dienoraštisBlokavimo grandinės plėtra

Oficialus „Ethereum 2.0“ 0 fazės specifikacijų patikrinimas

„ConsenSys R“ atnaujinimas&D apie jų pastangas suteikti patikimumą „Beacon“ grandinei ir pagrindiniams „Eth2“ ​​pagrindams. pateikė Franck Cassez 2020 m. rugpjūčio 10 d. Paskelbta 2020 m. rugpjūčio 10 d

dafny patikrinti tinklaraščio herojus

„ConsenSys R“ automatinio tikrinimo komanda&D keletą mėnesių dirbo su oficialia „Beacon“ grandinės specifikacija ir patikra. Džiaugiamės galėdami pranešti, kad padaryta didelė pažanga ir, nors dar neužbaigta, pavyko tobulėti tvirtas ir oficialiai patikrintas „Švyturių grandinės“ branduolys. Pirmą kartą mūsų darbas suteikia neprilygstamą patikimumo lygį pagrindiniams „Eth2.0“ infrastruktūros pagrindams.

Metodika

Tikrinimas ir testavimas

Mes naudojome apdovanojimai patvirtinimo programavimo kalba Dafny parašyti a formalus (funkcinis ir loginis) specifikacija kiekvienos „Švyturio grandinės“ funkcijos, an įgyvendinimas kiekvienos funkcijos ir a įrodymas kad įgyvendinimas atitinka jo specifikaciją. Kitaip tariant, matematiškai patikrinome, ar nėra klaidų. Įgyvendinimas, kuriuo galų gale pasirodėme teisingi, yra pagrįstas oficialias Eth2.0 specifikacijas su išlyga, kad mes pašalinome klaidas ir nenuoseklumus ir pranešėme apie jas.

Mūsų metodika skiriasi nuo bandymų matematiškai įrodyti funkcijų atitiktis jų specifikacijoms, visi įvestys. Testavimas negali apimti be galo daug įvesties, todėl gali aptikti klaidų, bet neįrodyti klaidų nebuvimo.

Geriausia tai, kad mums nereikia nei publikuoti pranešimo, nei peržiūrėti įrodymų. Įrodymai yra kodų bazės dalis ir rašomi kaip programos. Taip, programoje „Dafny“ galite parašyti įrodymą kaip kūrėjams palankią programą. Taip pat įrodymai yra mechaniškai tikrinami teoremos patarėjas, nepalikdamas vietos neišsamiems ar ydingiems įrodymams.

Nuosavybės, kurias įrodėme 

Savybės svyruoja nuo jų nebuvimo aritmetinis po / perpildymas ir indeksas už ribų, kiekvienos funkcijos atitiktis loginėms (pirmos eilės logikai) prieš / po sąlygoms (ženklus pavyzdys čia), prie sudėtingesnių, susijusių su funkcijų sudėtimis. Pavyzdžiui, mes turime šiuos dalykus SSZ nuosavybė Serializuoti / deserializuoti funkcijos: kiekvienam objektui x Deserialise (Serialise (x)) = x, t. y. deserializavus serijinį objektą, grąžinamas pradinis objektas. Mes taip pat nustatėme invariantų skaičius, ir panaudojo juos įrodyti, kad pagrindinės „Beacon“ grandinės ir „ForkChoice“ operacijos (state_transition, on_block) iš tikrųjų pastatyti blokų grandinę: bet kuriam b blokui parduotuvėje b protėviai sudaro baigtinę visiškai sutvarkytą seką, vedančią į genezės bloką, kuris yra pagrindinė blokų grandinės savybė.!

Formalaus tikrinimo nauda

Bet kuris oficialus metodininkas reikalaus, kad patikra būtų geriausia saugumo praktika. Štai kaip ši metodika užtikrina saugią ir patikimą „Ethereum 2.0“ infrastruktūrą.

Funkcinė specifikacija

Pirma, mes pakėlėme oficialias Eth2.0 specifikacijas į a formali loginė ir funkcinė specifikacija. Kiekvienai funkcijai mes oficialiai apibrėžiame kokią funkciją tikimasi apskaičiuoti, ne kaip. Tai numato kalba-agnostikos kūrėjui tinkamos nuorodos specifikacijos kuriuos galima panaudoti kuriant saugesnius diegimo būdus su mažesnėmis pastangomis. 

Moduliškumas

Antra, mūsų specifikacijos, diegimai ir įrodoma architektūra yra modulinis. Dėl to mes galime lengvai eksperimentuokite su naujais diegimais (pvz., optimizavimais) ir patikrinti jų poveikį visai sistemai. Pagalvokite apie protingą įsilaužimą, kad įgyvendintumėte funkciją? Pakeiskite diegimą ir paprašykite „Dafny“ patikrinti, ar jis vis dar atitinka jo specifikacijas. Jei taip, komponentų, naudojančių šią funkciją, įrodymai neturi įtakos.

Vykdomumas

Trečia, mūsų įgyvendinimai yra vykdomoji. Mes galime sudaryti ir paleisti „Dafny“ programą. Dar geriau, jūs galite automatiškai sugeneruoti kodą kai kuriomis populiariomis programavimo kalbomis, tokiomis kaip C #, Go (ir netrukus Java) iš „Dafny“ kodo. Tai gali būti naudojama papildyti esamas kodų bazes arba generuoti sertifikuoti testai. Tikrintinas diegimas gali naudoti mūsų patikrintas funkcijas, kad apskaičiuotų laukiamą testo rezultatą ir patikrintų jį pagal savo rezultatą.   

Viskas viena kalba

Paskutinis, bet ne mažiau svarbus dalykas – mūsų kodų bazė yra savarankiškas. Jame pateikiamos specifikacijos, diegimai, dokumentai ir įrodymai, viskas vienoje, skaitomoje, paprastoje ir semantiškai gerai apibrėžtoje programavimo kalboje.

Klausimai ir svarstymai 

Ką apie patikros variklio patikimumą?

Jums gali kilti klausimas: „O jei„ Dafny “kompiliatorius / tikrintojas yra klaidingas?“ Mes iš tikrųjų žinome, kad Dafny yra bagis (dafny repo klausimai), tačiau mes nesiremiame tuo, kad „Dafny“ nėra klaidų. Mes pasitikime „Dafny“ (ir jo tikrinimo varikliu) garsas. Tvirtumas reiškia, kad kai Dafny praneša, kad įrodymai yra teisingi, jie iš tikrųjų yra teisingi. 

Ką daryti, jei mūsų parašyta specifikacija nėra teisinga? 

Tokiu atveju mes įrodytume, kad laikomės neteisingo reikalavimo. Taip, taip gali atsitikti ir nėra sidabro kulkos, kuri išspręstų šią problemą. Tačiau, kaip jau minėjome anksčiau, „Dafny“ yra vykdoma. Tai leidžia mums paleisti kodą ir įsitikinti, kad mūsų specifikacijos yra teisingos. Mūsų specifikacijos yra parašytos pagal pirmos eilės logiką ir nėra vietos ginčytis dėl prasmės, todėl, jei pastebite problemą, praneškite mums ir mes ją ištaisysime.

Ką daryti, jei „Dafny“ negali įrodyti, kad diegimas atitinka specifikaciją? 

Taip gali atsitikti, tačiau šiuo atveju „Dafny“ turi keletą grįžtamojo ryšio mechanizmų, kurie padės ištirti, kokių įrodymų žingsnių negalima patikrinti. Ir iki šiol mums visada pavyko surinkti įrodymus, kuriuos „Dafny“ gali automatiškai patikrinti.

Mes sveikiname jūsų atsiliepimus, todėl patikrinkite mūsų eth2.0-dafny saugykla. Džiaugiamės galėdami stebėti, kaip „Ethereum 2.0“ plėtra pasiekia naujausius „testnet“ etapus, ir tikimės dirbti su ekosistemos komandomis, kad kitas tinklo etapas būtų pastatytas ant tvirto pagrindo..

Padėka mano komandos draugams Joanne Fuller, Roberto Saltini (automatinio tikrinimo komanda), Nicolas Liochon ir Avery Erwin už komentarus dėl preliminarios šio pranešimo versijos..

Sekite „Ethereum 2.0“

Užsiprenumeruokite „ConsenSys“ naujienlaiškį, kad gautumėte naujausias „Eth2“ ​​naujienas tiesiai į savo pašto dėžutę. „Ethereum 2.0“ tyrimas ir plėtra „SecurityNewsletter“ Užsiprenumeruokite mūsų naujienlaiškį, kuriame rasite naujausias „Ethereum“ naujienas, įmonės sprendimus, kūrėjų išteklius ir dar daugiau. El. Pašto adresas Išskirtinis turinysKaip sukurti sėkmingą „Blockchain“ produktąInternetinis seminaras

Kaip sukurti sėkmingą „Blockchain“ produktą

Kaip nustatyti ir paleisti „Ethereum“ mazgąInternetinis seminaras

Kaip nustatyti ir paleisti „Ethereum“ mazgą

Kaip susikurti savo „Ethereum“ APIInternetinis seminaras

Kaip susikurti savo „Ethereum“ API

Kaip sukurti socialinį ženkląInternetinis seminaras

Kaip sukurti socialinį ženklą

Saugumo priemonių naudojimas kuriant išmanųjį kontraktąInternetinis seminaras

Saugumo priemonių naudojimas kuriant išmanųjį kontraktą

Finansų ateitis Skaitmeninis turtas ir „DeFi“Internetinis seminaras

Finansų ateitis: skaitmeninis turtas ir „DeFi“

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