{"id":50908953,"url":"https://github.com/jose-compu/vdf-rs","last_synced_at":"2026-06-16T08:01:46.765Z","repository":{"id":361192794,"uuid":"1253576753","full_name":"jose-compu/vdf-rs","owner":"jose-compu","description":"An implementation of Verifiable Delay Functions in Rust","archived":false,"fork":false,"pushed_at":"2026-05-29T16:02:14.000Z","size":0,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-29T16:05:47.111Z","etag":null,"topics":["crypto","cryptography","cryptography-library","rs","rust","vdf","verifiable-delay-functions"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/jose-compu.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":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-29T15:52:34.000Z","updated_at":"2026-05-29T16:01:13.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jose-compu/vdf-rs","commit_stats":null,"previous_names":["jose-compu/vdf-rs"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/jose-compu/vdf-rs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jose-compu%2Fvdf-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jose-compu%2Fvdf-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jose-compu%2Fvdf-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jose-compu%2Fvdf-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jose-compu","download_url":"https://codeload.github.com/jose-compu/vdf-rs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jose-compu%2Fvdf-rs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34396430,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-16T02:00:06.860Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["crypto","cryptography","cryptography-library","rs","rust","vdf","verifiable-delay-functions"],"created_at":"2026-06-16T08:01:44.014Z","updated_at":"2026-06-16T08:01:46.756Z","avatar_url":"https://github.com/jose-compu.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# vdf-rs — Verifiable Delay Function (VDF) in Rust\n\nMaintained fork of [poanetwork/vdf](https://github.com/poanetwork/vdf). The original\n[`vdf`](https://crates.io/crates/vdf) crate on crates.io is unmaintained; this project\npublishes the library as **`vdf-rs`**.\n\n## What is a VDF?\n\nA Verifiable Delay Function (VDF) is a function that requires substantial time\nto evaluate (even with a polynomial number of parallel processors) but can be\nvery quickly verified as correct. VDFs can be used to construct randomness\nbeacons with multiple applications in a distributed network environment. By\nintroducing a time delay during evaluation, VDFs prevent malicious actors from\ninfluencing output. The output cannot be differentiated from a random number\nuntil the final result is computed. See \u003chttps://eprint.iacr.org/2018/712.pdf\u003e\nfor more details.\n\n## Description\n\nThis VDF implementation is written in Rust. The GMP library is used for\narithmetic and greatest common divisor (GCD) calculations. We use class groups\nto implement the approaches described in the following papers:\n\n1. [Simple Verifiable Delay Functions](https://eprint.iacr.org/2018/627.pdf). Pietrzak, 2018\n2. [Efficient Verifiable Delay Functions](https://eprint.iacr.org/2018/623.pdf). Wesolowski, 2018\n\nThe chosen generator is (2, 1, c), where c is calculated from the provided\ndiscriminant. A form is represented internally (a, b, c), with the\ndiscriminant not being used in most computations. This implementation performs\nreduction after every multiplication and squaring, as not doing so did not give\nany gains in our benchmarks.\n\n## Crates\n\n| Crate | crates.io | Purpose |\n|-------|-----------|---------|\n| `vdf-rs` | yes | VDF trait and Pietrzak / Wesolowski implementations |\n| `classgroup` | yes | Class group arithmetic (GMP-backed) |\n| `vdf-cli` | no | Command-line tool |\n| `vdf-competition` | no | Competition helper binary |\n\n## Requirements\n\n- [Rust](https://doc.rust-lang.org/cargo/getting-started/installation.html) 1.85+\n- [GNU Multiple Precision Library (GMP)](https://gmplib.org/)\n\nOn Debian/Ubuntu:\n\n```sh\nsudo apt-get install -y libgmp-dev\n```\n\nOn macOS (Homebrew):\n\n```sh\nbrew install gmp\n```\n\n## Usage\n\n```sh\ngit clone https://github.com/jose-compu/vdf-rs.git\ncd vdf-rs\ncargo install --path vdf-cli\n```\n\n### Command-line interface\n\n```sh\nvdf-cli aa 100\n```\n\nFor Pietrzak proofs, pass `-tpietrzak`. Run `vdf-cli --help` for details.\n\n### Library\n\nAdd to `Cargo.toml`:\n\n```toml\nvdf-rs = \"0.2\"\n```\n\n```rust\nuse vdf_rs::{PietrzakVDFParams, VDFParams, VDF};\n\nfn main() {\n    let vdf = PietrzakVDFParams(2048).new();\n    let proof = vdf.solve(b\"\\xaa\", 100).unwrap();\n    assert!(vdf.verify(b\"\\xaa\", 100, \u0026proof).is_ok());\n}\n```\n\n## Development\n\n```sh\ncargo fmt --all\ncargo clippy --workspace --all-targets -- -D warnings\ncargo test --workspace\n./bench.sh aadf\n```\n\n## License\n\nCopyright 2018 Chia Network Inc and POA Networks Ltd.\n\nLicensed under the Apache License, Version 2.0. See [LICENSE](LICENSE) and [NOTICE](NOTICE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjose-compu%2Fvdf-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjose-compu%2Fvdf-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjose-compu%2Fvdf-rs/lists"}