NewsDevelopersEnterpriseBlockchain ObjašnjeniDogađaji i konferencijePressBilteni
Contents
- 1 Službeno provjeravam specifikacije Ethereum 2.0 Phase 0
- 1.0.1 Kako izraditi uspješan blockchain proizvod
- 1.0.2 Kako postaviti i pokrenuti Ethereum čvor
- 1.0.3 Kako izraditi vlastiti Ethereum API
- 1.0.4 Kako stvoriti društveni žeton
- 1.0.5 Korištenje sigurnosnih alata u razvoju pametnih ugovora
- 1.0.6 Budućnost financija: digitalna imovina i DeFi
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
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. Pretplatite se 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žajWebinar
Kako izraditi uspješan blockchain proizvod
Webinar
Kako postaviti i pokrenuti Ethereum čvor
Webinar
Kako izraditi vlastiti Ethereum API
Webinar
Kako stvoriti društveni žeton
Webinar
Korištenje sigurnosnih alata u razvoju pametnih ugovora
Webinar