{"id":28746216,"url":"https://github.com/stacks-network/rendezvous","last_synced_at":"2025-06-16T14:30:52.691Z","repository":{"id":269058180,"uuid":"833837337","full_name":"stacks-network/rendezvous","owner":"stacks-network","description":"Clarity fuzzer designed to cut through your smart contract's defenses with precision.","archived":false,"fork":false,"pushed_at":"2025-06-12T16:25:31.000Z","size":1844,"stargazers_count":8,"open_issues_count":15,"forks_count":3,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-06-12T16:38:14.071Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://stacks-network.github.io/rendezvous/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stacks-network.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-07-25T21:28:21.000Z","updated_at":"2025-05-22T11:46:06.000Z","dependencies_parsed_at":"2025-01-15T17:37:43.899Z","dependency_job_id":"5f9bb9dc-9e4c-46d7-a10a-2ab191967cd4","html_url":"https://github.com/stacks-network/rendezvous","commit_stats":null,"previous_names":["stacks-network/rendezvous"],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/stacks-network/rendezvous","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stacks-network%2Frendezvous","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stacks-network%2Frendezvous/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stacks-network%2Frendezvous/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stacks-network%2Frendezvous/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stacks-network","download_url":"https://codeload.github.com/stacks-network/rendezvous/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stacks-network%2Frendezvous/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260175638,"owners_count":22970014,"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":[],"created_at":"2025-06-16T14:30:47.875Z","updated_at":"2025-06-16T14:30:52.532Z","avatar_url":"https://github.com/stacks-network.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\u003cimg width=\"304\" src=\"https://raw.githubusercontent.com/moodmosaic/nikosbaxevanis.com/gh-pages/images/rv.png\" /\u003e\n\u003c/div\u003e\n\n## Rendezvous `rv`: The Clarity Fuzzer\n\nRendezvous `rv` is a Clarity fuzzer designed to cut through your smart contract's defenses with precision. Uncover vulnerabilities with unmatched power and intensity. Get ready to meet your contract's vulnerabilities head-on.\n\n### Prerequisites\n\n- **Node.js**: Supported versions include 18, 20, and 22. Other versions may work, but they are untested.\n\n### Inspiration\n\nThe `rv` fuzzer, inspired by John Hughes' paper _\"Testing the Hard Stuff and Staying Sane\"_[^1], ensures contract robustness with Clarity invariants and tests.\n\n### Example Directory Structure\n\n```\nroot\n├── Clarinet.toml\n├── contracts\n│   ├── contract.clar\n│   ├── contract.tests.clar\n└── settings\n    └── Devnet.toml\n```\n\n### Installation\n\n```\nnpm install @stacks/rendezvous\n```\n\n### Usage\n\n```\nnpx rv \u003cpath-to-clarinet-project\u003e \u003ccontract-name\u003e \u003ctype\u003e\n```\n\n---\n\n### Configuration\n\n**Positional arguments:**\n\n- `path-to-clarinet-project` - Path to the root directory of the Clarinet project (where Clarinet.toml exists).\n- `contract-name` - Name of the contract to test, per Clarinet.toml.\n- `type` - Type of test to run. Options:\n  - `test` - Run property-based tests.\n  - `invariant` - Run invariant tests.\n\n**Options:**\n\n- `--seed` – The seed to use for the replay functionality.\n- `--path` – The path to use for the replay functionality.\n- `--runs` – The number of test iterations to use for exercising the contracts.\n  (default: `100`)\n- `--dial` – The path to a JavaScript file containing custom pre- and\n  post-execution functions (dialers).\n\n---\n\n### Example (`test`)\n\nHere's an example of a test that checks reversing a list twice returns the original:\n\n```clarity\n(define-public (test-reverse-list (seq (list 127 uint)))\n  (begin\n    (asserts!\n      (is-eq seq\n        (reverse-uint\n          (reverse-uint seq)))\n      (err u999))\n    (ok true)))\n```\n\nYou can run property-based tests using `rv` with the following command:\n\n```\nrv example reverse test\n```\n\n---\n\n### Example (`invariant`)\n\nHere's a Clarity invariant to detect a bug in the example counter contract:\n\n```clarity\n(define-read-only (invariant-counter-gt-zero)\n  (let\n      ((increment-num-calls (default-to u0 (get called (map-get? context \"increment\"))))\n       (decrement-num-calls (default-to u0 (get called (map-get? context \"decrement\")))))\n    (if (\u003e increment-num-calls decrement-num-calls)\n        (\u003e (var-get counter) u0)\n        true)))\n```\n\nYou can run invariant tests using `rv` with the following command:\n\n```\nrv example counter invariant\n```\n\n---\n\n### Documentation\n\nFor full documentation, see the official [Rendezvous Book](https://stacks-network.github.io/rendezvous/).\n\n---\n\n[^1]: Hughes, J. (2004). _Testing the Hard Stuff and Staying Sane_. In Proceedings of the ACM SIGPLAN Workshop on Haskell (Haskell '04).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstacks-network%2Frendezvous","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstacks-network%2Frendezvous","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstacks-network%2Frendezvous/lists"}