{"id":51459380,"url":"https://github.com/orao-network/zkvrf","last_synced_at":"2026-07-06T04:01:08.602Z","repository":{"id":257815828,"uuid":"777250012","full_name":"orao-network/zkvrf","owner":"orao-network","description":"Zero Knowledge Verifiable Random Function - zkVRF for EVM blockchains","archived":false,"fork":false,"pushed_at":"2024-11-18T17:49:50.000Z","size":412,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-08T16:48:34.973Z","etag":null,"topics":["arbitrum","polygon","provably-fair","randomizer","solidity","vrf","vrfconsumerbasev2","vrfcoordinator","zero-knowledge","zero-knowledge-proofs","zircuit","zk-snarks","zkvrf"],"latest_commit_sha":null,"homepage":"https://orao.network/zkvrf","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/orao-network.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2024-03-25T13:51:47.000Z","updated_at":"2025-01-11T22:31:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"d0f304fd-19bb-4a40-836f-01faf5dba115","html_url":"https://github.com/orao-network/zkvrf","commit_stats":{"total_commits":7,"total_committers":1,"mean_commits":7.0,"dds":0.0,"last_synced_commit":"d853100cfccb6ae012f7c5be072c91010d39ff16"},"previous_names":["orao-network/zkvrf"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/orao-network/zkvrf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orao-network%2Fzkvrf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orao-network%2Fzkvrf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orao-network%2Fzkvrf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orao-network%2Fzkvrf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/orao-network","download_url":"https://codeload.github.com/orao-network/zkvrf/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orao-network%2Fzkvrf/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35177220,"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-07-06T02:00:07.184Z","response_time":106,"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":["arbitrum","polygon","provably-fair","randomizer","solidity","vrf","vrfconsumerbasev2","vrfcoordinator","zero-knowledge","zero-knowledge-proofs","zircuit","zk-snarks","zkvrf"],"created_at":"2026-07-06T04:01:07.616Z","updated_at":"2026-07-06T04:01:08.597Z","avatar_url":"https://github.com/orao-network.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ORAO zkVRF JS SDK\n\n\u003cp\u003e\nORAO's Zero-Knowledge Verifiable Random Function (zkVRF) provides fast, secure and affordable randomness utiziling zero knowledge protocols.\n  zkVRF utilizes zkSNARKs version of the Zero-knowledge proofs (ZKPs) family of probabilistic protocols.\nWith zkVRF you can create unique NFT characteristics, generate random weapons and levels in games, provide unique loot boxes, enable provably fair rewards distribution, randomize airdrops and provide secure, verifiable lottery/raffle.\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.npmjs.com/package/@orao-network/zkvrf\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/%40orao-network%2Fzkvrf?logo=fueler\u0026logoColor=white\u0026color=blue\" /\u003e\u003c/a\u003e \n\u003c/p\u003e\n\nzkVRF is currently deployed to: \n\n| Network          | OraoVRF                                    |\n|------------------|--------------------------------------------|\n| Avalanche Fuji   | 0x35d0a63c248490810705e895d1Ba4fD8fF454a19 |\n| Polygon Amoy     | 0x8587eBdBED9280A493d4105238b2b3e373931816 |    \n| Zircuit Sepolia  | 0xDA2Fc58785B299b731174948D15E5959619d56d2 |\n| Arbitrum Sepolia | 0x77B95E9e8203A4EEBF89664642f835b0C33F9416 |\n\n\n### Features\n- ability to pre-pay for VRF requests (on-chain treasury per wallet)\n- callback option\n- gas setting for faster tx\n\n### Integration example\nWe've built a simple Solidity contract which mints an NFT with Random features.\nThe source code is [available here](https://github.com/orao-network/zkvrf-evm/tree/master/sdk/examples/sol)\n\nCompile and deploy:\n```\ncd examples/sol\nnpm run compile\nnpm run deploy\n```\n\n\n### Solidity example:\n```solidity\ncontract OraoVRFConsumer is OraoVRFConsumerBase {\n  bytes32 public seed;\n  bytes32 public part1;\n  bytes32 public part2;\n  IOraoVRF internal _vrfCoordinator;\n\n  constructor(address vrfCoordinator) OraoVRFConsumerBase(vrfCoordinator) {\n    _vrfCoordinator = IOraoVRF(vrfCoordinator);\n  }\n    \n  function calcGasUsed() public override returns (uint256 gasUsed) {\n    uint256 startGas = gasleft();\n\n    fulfillRandomness(\n      0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff,\n      0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff,\n      0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n    );\n\n    gasUsed = startGas - gasleft();\n  }\n    \n  function fulfillRandomness(bytes32 _seed, bytes32 _part1, bytes32 _part2) internal override {\n    seed = _seed;\n    part1 = _part1;\n    part2 = _part2;\n  }\n\n  function request(bytes32 _seed) public payable override {\n    seed = _seed;\n    super.request(_seed);\n  }\n}\n```\n\n```typescript\nconst provider = new ethers.providers.InfuraWebSocketProvider(\n    \"matic\",\n    process.env.INFURA_API_KEY\n);\nconst wallet = new ethers.Wallet(process.env.PRIVATE_KEY, provider);\nconst signerAddress = wallet.address;\nconst oraoVrfConsumer = new ethers.Contract(\n    ORAO_VRF_CONSUMER_ADDRESS,\n    CONSUMER_ABI,\n    signer\n);\n\nconst gasPrice = await provider.getGasPrice();\nconst txValue = await oraoVrfConsumer.calcTxValue(gasPrice);\n\nconst seed = new Uint8Array(randomBytes(32));\nawait oraoVrfConsumer.request(seed, { value: txValue });\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forao-network%2Fzkvrf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Forao-network%2Fzkvrf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forao-network%2Fzkvrf/lists"}