Write smart contract specifications using Scribble.

Develop Ethereum Smart Contracts with runtime verification and fuzzing.

Supercharge your smart contract testing

Scribble is a specification language and runtime verification tool that translates high-level specifications into Solidity code.

It allows you to annotate smart contracts with properties, instead of writing in a separate file. Upon completion, Scribble transforms annotations in the Scribble specification language into concrete assertions that verify the specification.

After writing properties, developers can use tools such as Diligence Fuzzing to automatically test smart contracts and ensure all is working as planned!

Test security properties with Fuzzing
Access Fuzzing
npm install -g eth-scribble
Use property-based testing to ensure a property is never violated.
Write properties directly into your smart contracts.
Enhance your Fuzzing campaigns by using Scribble to instrument smart contracts with runtime assertions.

Why Scribble?

Go above and beyond the traditional security audit by writing additional test cases and specifications that allow for specific contract properties to be verified.
  • It’s easy: Scribble is based on solidity syntax. It’s easy to get started!
  • It’s widely compatible: We use Solidity assertions so you can use most automatic testing tools.
  • It’s accessible: Write your specification where the code is.
  • It’s great for documentation: Specifications are easily tracked and they describe exactly what the code does.
  • It’s testable: Extend your test suite by writing properties!
  • It’s secure: Find bugs and fix them!

Sample Use Case

If a contract is designed to ensure a user’s token balance never exceeds the total token supply, this can be verified with a high degree of certainty that it will never occur.
Once a smart contract is enabled with Scribble comments, any security tool that works by checking assertions can be used for verification, including fuzz testers, symbolic analyzers, and even Solidity’s own built in SMT checker.

Not today, bug. Not today.

npm install -g eth-scribble


Check out these tutorials to quickly get started using Scribble:


Property Checking with Scribble and Mythril

Eager to learn more?

Read through these Scribble user guides:

Start writing properties
into your smart contracts