{"id":29649763,"url":"https://github.com/wavefork/wave-circuits","last_synced_at":"2026-02-08T09:34:58.231Z","repository":{"id":274393969,"uuid":"922699622","full_name":"wavefork/wave-circuits","owner":"wavefork","description":"Zero-knowledge circuit library for privacy-preserving applications on Solana Virtual Machine.","archived":false,"fork":false,"pushed_at":"2025-06-24T21:47:52.000Z","size":13,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-12T12:50:47.936Z","etag":null,"topics":["sdk","solana"],"latest_commit_sha":null,"homepage":"","language":"Circom","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wavefork.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}},"created_at":"2025-01-26T21:43:01.000Z","updated_at":"2025-06-24T21:49:07.000Z","dependencies_parsed_at":"2025-06-24T22:39:39.468Z","dependency_job_id":"11da55da-a575-4413-9eb4-309f7a878ec1","html_url":"https://github.com/wavefork/wave-circuits","commit_stats":null,"previous_names":["micronsh/micron-sdk","flexosh/sdk","wavefork/wave-circuits"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/wavefork/wave-circuits","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wavefork%2Fwave-circuits","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wavefork%2Fwave-circuits/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wavefork%2Fwave-circuits/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wavefork%2Fwave-circuits/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wavefork","download_url":"https://codeload.github.com/wavefork/wave-circuits/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wavefork%2Fwave-circuits/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29226470,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-08T09:15:18.648Z","status":"ssl_error","status_checked_at":"2026-02-08T09:14:33.745Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["sdk","solana"],"created_at":"2025-07-22T04:32:25.802Z","updated_at":"2026-02-08T09:34:58.208Z","avatar_url":"https://github.com/wavefork.png","language":"Circom","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Wave Circuits\r\n\r\nZero-knowledge circuit library designed for privacy-preserving applications on Solana Virtual Machine (SVM). Wave Circuits enables developers to build confidential smart contracts and private transactions while leveraging Solana's high performance and low fees.\r\n\r\n## Overview\r\n\r\nWave Circuits provides the cryptographic foundation for privacy features in the Wave Protocol, a Solana fork focused on confidential computing. The library implements optimized zero-knowledge circuits that integrate seamlessly with Solana programs, allowing developers to add privacy features to their dApps while maintaining Solana's performance characteristics.\r\n\r\n## Key Features\r\n\r\n- **Solana Program Integration**: Native compatibility with Solana programs and the SVM instruction set\r\n- **Optimized for Solana**: Circuit verification designed for Solana's parallel transaction processing\r\n- **Privacy Primitives**: Core building blocks for confidential transactions and private state\r\n- **Account Privacy**: Shield account balances and transaction history\r\n- **Composable Logic**: Build complex private programs from simple components\r\n\r\n## Circuit Components\r\n\r\n### State Transition Circuit\r\n\r\nCore circuit for private state updates in Solana programs:\r\n\r\n```circom\r\ntemplate StateTransition() {\r\n    // Public inputs\r\n    signal input oldStateRoot;\r\n    signal input newStateRoot;\r\n    signal input nullifierHash;\r\n    \r\n    // Private inputs\r\n    signal input privateState[4];\r\n    signal input stateBlinding;\r\n    signal input merklePathElements[20];\r\n    \r\n    // State commitment verification\r\n    component stateHasher = Poseidon(5);\r\n    stateHasher.inputs[0] \u003c== privateState[0];\r\n    stateHasher.inputs[1] \u003c== privateState[1];\r\n    stateHasher.inputs[2] \u003c== privateState[2];\r\n    stateHasher.inputs[3] \u003c== privateState[3];\r\n    stateHasher.inputs[4] \u003c== stateBlinding;\r\n    \r\n    // Verify inclusion in old state tree\r\n    component merkleVerifier = MerkleInclusion(20);\r\n    merkleVerifier.leaf \u003c== stateHasher.out;\r\n    merkleVerifier.root \u003c== oldStateRoot;\r\n    merkleVerifier.pathElements \u003c== merklePathElements;\r\n}\r\n```\r\n\r\n### Account Shield Circuit\r\n\r\nEnables private account operations on Solana:\r\n\r\n```circom\r\ntemplate AccountShield() {\r\n    // Public inputs\r\n    signal input publicAmount;\r\n    signal input commitment;\r\n    \r\n    // Private inputs\r\n    signal input privateBalance;\r\n    signal input blinding;\r\n    signal input spendingKey;\r\n    \r\n    // Compute commitment\r\n    component commitmentHasher = Poseidon(3);\r\n    commitmentHasher.inputs[0] \u003c== privateBalance;\r\n    commitmentHasher.inputs[1] \u003c== blinding;\r\n    commitmentHasher.inputs[2] \u003c== spendingKey;\r\n    \r\n    // Verify commitment\r\n    commitment === commitmentHasher.out;\r\n    \r\n    // Range check on balance\r\n    component rangeCheck = RangeCheck(64);\r\n    rangeCheck.in \u003c== privateBalance;\r\n}\r\n```\r\n\r\n## Integration with Solana Programs\r\n\r\nExample of verifying proofs in a Solana program:\r\n\r\n```rust\r\nuse solana_program::{\r\n    account_info::AccountInfo,\r\n    entrypoint::ProgramResult,\r\n    pubkey::Pubkey,\r\n};\r\nuse wave_circuits::verify_proof;\r\n\r\npub fn process_private_transfer(\r\n    program_id: \u0026Pubkey,\r\n    accounts: \u0026[AccountInfo],\r\n    proof: \u0026[u8],\r\n    public_inputs: \u0026[u8],\r\n) -\u003e ProgramResult {\r\n    // Verify the zero-knowledge proof\r\n    verify_proof(proof, public_inputs)?;\r\n    \r\n    // Update program state\r\n    // ... implementation ...\r\n    \r\n    Ok(())\r\n}\r\n```\r\n\r\n## Performance on Solana\r\n\r\nBenchmarks on Solana testnet (with 1.14.18 validator):\r\n\r\n| Operation               | Compute Units | Time (ms) | Cost (SOL) |\r\n|------------------------|---------------|-----------|------------|\r\n| Proof Verification     | 150,000      | 0.8       | 0.000015   |\r\n| State Update           | 200,000      | 1.2       | 0.000020   |\r\n| Private Transfer       | 400,000      | 2.1       | 0.000040   |\r\n\r\n## Development Setup\r\n\r\n1. Install dependencies:\r\n```bash\r\nnpm install\r\n```\r\n\r\n2. Build circuits and generate Solana verifier:\r\n```bash\r\n./scripts/build.sh\r\n```\r\n\r\n3. Deploy to Solana testnet:\r\n```bash\r\nsolana program deploy target/deploy/wave_verifier.so\r\n```\r\n\r\n## Example: Private Transfer\r\n\r\n```typescript\r\nimport { WaveProgram } from '@wave/sdk';\r\nimport { Connection, Keypair } from '@solana/web3.js';\r\n\r\nasync function privateTransfer() {\r\n    const wave = new WaveProgram();\r\n    \r\n    // Generate proof for private transfer\r\n    const proof = await wave.generateTransferProof({\r\n        amount: 100,\r\n        sender: senderKey,\r\n        recipient: recipientAddress,\r\n        blinding: Keypair.generate()\r\n    });\r\n    \r\n    // Submit to Solana\r\n    const tx = await wave.submitProof(proof);\r\n    console.log(`Transaction: ${tx}`);\r\n}\r\n```\r\n\r\n## Security Considerations\r\n\r\n1. **Solana Account Model**\r\n   - Each shielded account uses a unique Poseidon commitment\r\n   - Account privacy relies on secure key generation\r\n   - Supports Solana's parallel transaction execution\r\n\r\n2. **Circuit Constraints**\r\n   - Optimized for Solana's compute unit limits\r\n   - Proof verification under 200k compute units\r\n   - Compatible with Solana's block time\r\n\r\n## License\r\n\r\nThis project is licensed under the MIT License.\r\n\r\n## Security\r\n\r\nThis codebase is in active development and has not been audited. Use at your own risk in production environments.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwavefork%2Fwave-circuits","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwavefork%2Fwave-circuits","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwavefork%2Fwave-circuits/lists"}