{"id":15290534,"url":"https://github.com/consensys/scribble","last_synced_at":"2025-03-24T16:10:11.242Z","repository":{"id":36970731,"uuid":"318592158","full_name":"Consensys/scribble","owner":"Consensys","description":"Scribble instrumentation tool","archived":false,"fork":false,"pushed_at":"2024-12-04T07:53:18.000Z","size":2993,"stargazers_count":325,"open_issues_count":16,"forks_count":30,"subscribers_count":13,"default_branch":"develop","last_synced_at":"2025-03-24T16:09:51.304Z","etag":null,"topics":["ethereum","language","scribble","smart-contracts","solidity"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Consensys.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-12-04T17:43:07.000Z","updated_at":"2025-01-24T16:12:17.000Z","dependencies_parsed_at":"2024-08-27T23:42:05.283Z","dependency_job_id":"aa332416-de2c-45b7-8da9-bcd20c61758a","html_url":"https://github.com/Consensys/scribble","commit_stats":{"total_commits":454,"total_committers":5,"mean_commits":90.8,"dds":"0.35462555066079293","last_synced_commit":"2f9691a96998ea44ed15afe20509922e92124e7e"},"previous_names":[],"tags_count":56,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Consensys%2Fscribble","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Consensys%2Fscribble/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Consensys%2Fscribble/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Consensys%2Fscribble/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Consensys","download_url":"https://codeload.github.com/Consensys/scribble/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245304874,"owners_count":20593626,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ethereum","language","scribble","smart-contracts","solidity"],"created_at":"2024-09-30T16:08:33.017Z","updated_at":"2025-03-24T16:10:11.197Z","avatar_url":"https://github.com/Consensys.png","language":"TypeScript","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg width=\"460\" height=\"300\" src=\"static/logo.png\"\u003e\n\u003c/p\u003e\n\n[![NodeJS CI](https://github.com/ConsenSys/scribble/actions/workflows/node.js.yaml/badge.svg)](https://github.com/ConsenSys/scribble/actions/workflows/node.js.yaml)\n[![Coverage](https://codecov.io/gh/ConsenSys/scribble/branch/develop/graph/badge.svg?token=yVZzF90k9k)](https://codecov.io/gh/ConsenSys/scribble)\n[![Documentation](https://aleen42.github.io/badges/src/gitbook_2.svg)](https://docs.scribble.codes)\n[![npm](https://img.shields.io/npm/v/eth-scribble)](https://www.npmjs.com/package/eth-scribble)\n[![npm downloads](https://img.shields.io/npm/dm/eth-scribble.svg)](https://www.npmjs.com/package/eth-scribble)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n\nA Solidity runtime verification tool for property based testing.\n\n\u003e [!TIP]\n\u003e Scribble is useful to prepare smart contracts for behavior verification with [Diligence Fuzzing](https://consensys.io/diligence/fuzzing/) or with tools, such as [Mythril](https://github.com/ConsenSys/mythril).\n\u003e\n\u003e Here are some related videos:\n\u003e\n\u003e -   [Test security properties for smart contracts \u0026 Detect vulnerabilities](https://www.youtube.com/watch?v=qn98UjcxXcQ)\n\u003e -   [Web3 Tutorial 23: Next level smart contract security with Diligence Fuzzing](https://www.youtube.com/watch?v=PmRLTXpvmMI)\n\n## Principles and Design Goals\n\nThe design of the Scribble specification language takes inspiration from several existing\nlanguages and we expect the language to evolve gradually as we gain more experience\nin using it. We rely on the following principles and design goals to guide language\nevolution:\n\n1. Specifications are easy to understand by developers and auditors\n2. Specifications are simple to reason about\n3. Specifications can be efficiently checked using off-the-shelf analysis tools\n4. A small number of core specification constructs are sufficient to express and reason about more advanced constructs\n\nWe are aware that this will make it difficult or impossible to express certain\nproperties. We encourage users to reach out if they encounter such properties. However, it\nis not our itention to support every property imaginable. We consider it a great success if\nScribble is able to capture 95% of the properties that users _want_ to express.\n\n## Usage\n\nInstall Scribble with npm:\n\n```bash\nnpm install -g eth-scribble\n```\n\nUse CLI tool with the Solidity source file:\n\n```bash\nscribble sample.sol\n```\n\nUse `--help` to see all available features.\n\n## Extension for VS Code\n\nThere is a [**Scribble extension for VSCode**](https://marketplace.visualstudio.com/items?itemName=diligence.vscode-scribble) that enhances user experience: prividing syntax highlight, hints-on-hover and other features.\n\nNote that it is maintained in [**separate repostory**](https://github.com/ConsenSys/vscode-scribble). Report extension-related suggestions and issues there.\n\n## Documentation\n\nFor more information on the Scribble specification language, and any other documentation, go to: [Scribble Documentation](https://docs.scribble.codes)\n\n## Development installation\n\n### Prerequisites\n\nPreinstall NodeJS of [compatible version](/.nvmrc). If there is a need to run different NodeJS versions, consider using [NVM](https://github.com/nvm-sh/nvm) or similar tool for your platform.\n\n### Clone and build\n\nClone repository, install and link:\n\n```bash\ngit clone https://github.com/ConsenSys/scribble.git\ncd scribble/\nnpm install\nnpm link\n```\n\nPrior to running the tests it would be better to setup local compiler cache:\n\n```bash\nscribble --download-compilers native wasm\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconsensys%2Fscribble","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fconsensys%2Fscribble","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconsensys%2Fscribble/lists"}