blog 1NieuwsOntwikkelaarsEnterpriseBlockchain ExplainedEvenementen en conferentiesPersNieuwsbrieven

Abonneer op onze nieuwsbrief.

E-mailadres

Wij respecteren uw privacy

HomeBlogNieuws

Introductie van Scribble door ConsenSys Diligence

door ConsenSysDecember 8, 2020Geplaatst op december 8, 2020

Krabbel


Het is nog nooit zo belangrijk geweest om ervoor te zorgen dat slimme contracten veilig en bugvrij zijn. Helaas blijft het een moeilijke opgave. Hoewel er handige tools zijn voor automatisch testen en formele verificatie, blijft het zorgen voor de juistheid van slimme contracten een tijdrovende en uitdagende taak. Om de zaken nog erger te maken, heeft elke tool vaak een steile leercurve, en het is vaak onzeker of deze wel geschikt is voor de klus.

Daarom hebben we Scribble ontwikkeld: een verificatieprogramma voor taal en runtime-verificatie. Hoewel het oorspronkelijk was gemaakt voor het automatisch testen van eigendommen tijdens audits, hebben we besloten dit project te delen met de gemeenschap!

Wat is Scribble?

Als we het over Scribble hebben, hebben we het over twee dingen.

Ten eerste is Scribble een specificatietaal voor het schrijven van eigenschappen.

Ten tweede is Scribble een runtime-verificatietool die gebruikmaakt van de Scribble-specificatietaal.

OPMERKING: Scribble voert zelf geen verificatie uit. Het doet schakel andere tools in om eigenschappen te testen en te controleren.

Krabbel is een taal

Scribble definieert een domeinspecifieke taal voor het schrijven van eigenschappen over slimme contracten. We hebben de taal bovenop de soliditeitssyntaxis gebouwd, zodat het gemakkelijk te leren is. Met deze specificatietaal kunt u een smart contract voor soliditeit annoteren met eigenschappen.

OPMERKING: Een eigenschap is een logische bewering waarvan u verwacht dat deze waar is, bijv. “Alle auto’s zijn rood”. In soliditeit heb je vaak eigenschappen als: “Alleen de eigenaar kan een wijziging aanbrengen in X”. Of “Functie sendToken (), mag de etherbalans van dit contract niet wijzigen”.

U kunt verschillende soorten annotaties gebruiken voor verschillende soorten eigenschappen. Bijvoorbeeld invarianten of postcondities.

Dit is een voorbeeld van een Krabbel-annotatie:

Screen Shot 2020 12 08 om 12 06 15 uur

Zoals u kunt zien, nemen de annotaties de vorm aan van een inline opmerking die boven een functiedefinitie wordt geplaatst. We hebben een zogenaamde if_succeeds-clausule toegevoegd, die controleert of een voorwaarde blijft gelden nadat de functie is uitgevoerd. In dit geval controleren we of het resultaat van de functie altijd niet nul is.

Lees de Scribble-documentatie

We hebben de Scribble-taal gebaseerd op bewezen concepten zoals postcondities, invarianten en temporele logica. Maar we kijken ook hoe we nieuwe ideeën kunnen introduceren die beter aansluiten op de domeinspecifieke problemen van slimme contracten.

Krabbel is een hulpmiddel

Scribble kan een contract met eigenschappen opnemen en dit samenvoegen tot een nieuw contract. In dit nieuwe contract zal Scribble Solidity-code hebben toegevoegd die een bewering doet gelden wanneer een eigenschap wordt geschonden. We noemen dit procesinstrumentatie.

Het toevoegen van uitvoerbare code die eigenschappen controleert, wordt runtime-verificatie genoemd en maakt het gemakkelijk om zonder veel aanpassingen met bestaande tools te werken. Dit is het geval omdat de meeste tools soliditeitscode al interpreteren en meteen kunnen zoeken naar eigendomsovertredingen!

Omdat u gebruik kunt maken van bestaande automatische testtechnieken (zoals onze fuzzer Harvey), kunt u beginnen met testen nadat u slechts één eigenschap heeft geschreven. Wij zijn van mening dat dit een aanzienlijk voordeel is; U profiteert meteen van automatisch testen, in plaats van dat u vooraf veel tijd moet besteden aan het verkrijgen van een kritische massa aan annotaties. Iets wat meestal nodig is bij traditionele verificatiebenaderingen.

U kunt snel aan de slag met het testen en analyseren van een contract en later zelfs besluiten om extra moeite te doen om een ​​smart contract volledig te verifiëren!

Doelen

Audit

We gebruiken Scribble tijdens audits om eigenschappen te formuleren. Met behulp van automatische analysetechnieken, zoals fuzzing en symbolische uitvoering, zullen we automatisch schendingen van deze eigenschappen testen en vinden.

Neem contact met ons op voor meer informatie over fuzzing en op eigendommen gebaseerde testen tijdens audits

Standaard

Scribble wil met verschillende tools en technieken werken; we willen niet alleen testen op basis van eigendommen mogelijk maken, maar ook eenvoudige formele verificatie. Het voordeel van het gebruik van een enkele universele specificatietaal is dat u slechts één keer moeite doet om eigenschappen te schrijven, maar dat u toch de vruchten plukt van het gebruik van meerdere tools.

Adoptie

Met Scribble hopen we de drempel of toegang voor automatisch testen en formele verificatie te verlagen. We willen ook de tijdinvestering verminderen die nodig is om correcte en veilige slimme contracten te ontwikkelen, wat resulteert in een veiliger ecosysteem.

Waar kun je het krijgen??

We hebben volledig open source Scribble en het is nu beschikbaar op github.com/consensys/scribble.

OPMERKING: dit is een bètaversie, aspecten van de taal zullen veranderen en u kunt enkele bugs tegenkomen.

U kunt Scribble eenvoudig installeren met npm:

Screen Shot 2020 12 08 om 12 06 35 uur Installeer Scribble

Abonneer u op onze nieuwsbrief voor het laatste Ethereum-nieuws, bedrijfsoplossingen, bronnen voor ontwikkelaars en meer.Ethereum Q3 2020 DeFi-rapportVerslag doen van

Ethereum Q3 2020 DeFi-rapport

Ethereum Q2 2020 DeFi-rapportVerslag doen van

Ethereum Q2 2020 DeFi-rapport

Ethereum 2 0 Ecosysteemrapport uitzettenVerslag doen van

Ethereum 2.0-ecosysteemrapport

Volledige gids voor Blockchain-bedrijfsnetwerkenGids

Volledige gids voor Blockchain-bedrijfsnetwerken

Hoe u een succesvol blockchain-product bouwtWebinar

Hoe u een succesvol blockchain-product bouwt

Centrale banken en de toekomst van geldWit papier

Centrale banken en de toekomst van geld

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