{"id":46276317,"url":"https://github.com/randa-mu/dcipher","last_synced_at":"2026-03-04T04:30:54.213Z","repository":{"id":307117480,"uuid":"971943759","full_name":"randa-mu/dcipher","owner":"randa-mu","description":"dcipher is a modular protocol for threshold cryptography","archived":false,"fork":false,"pushed_at":"2026-01-28T13:58:15.000Z","size":2622,"stargazers_count":4,"open_issues_count":39,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-01-29T06:02:42.028Z","etag":null,"topics":["bls","bls12-381","bn254","crosschain","cryptography","dkg","drand","encryption","ibe","onlyswaps","threshold","timelock"],"latest_commit_sha":null,"homepage":"https://dcipher.network","language":"Rust","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/randa-mu.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":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-04-24T09:45:49.000Z","updated_at":"2026-01-28T13:55:29.000Z","dependencies_parsed_at":"2025-07-29T15:55:18.313Z","dependency_job_id":"95805d2a-a979-4ef7-b4cb-9e3d77bd8768","html_url":"https://github.com/randa-mu/dcipher","commit_stats":null,"previous_names":["randa-mu/dcipher"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/randa-mu/dcipher","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/randa-mu%2Fdcipher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/randa-mu%2Fdcipher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/randa-mu%2Fdcipher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/randa-mu%2Fdcipher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/randa-mu","download_url":"https://codeload.github.com/randa-mu/dcipher/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/randa-mu%2Fdcipher/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30071687,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T03:25:38.285Z","status":"ssl_error","status_checked_at":"2026-03-04T03:25:05.086Z","response_time":59,"last_error":"SSL_read: 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":["bls","bls12-381","bn254","crosschain","cryptography","dkg","drand","encryption","ibe","onlyswaps","threshold","timelock"],"created_at":"2026-03-04T04:30:53.711Z","updated_at":"2026-03-04T04:30:54.203Z","avatar_url":"https://github.com/randa-mu.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dcipher\n\n[![Build](https://img.shields.io/github/actions/workflow/status/randa-mu/dcipher/rust-build-and-tests.yml?branch=main)](https://github.com/randa-mu/dcipher/actions)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![Stars](https://img.shields.io/github/stars/randa-mu/dcipher?style=social)](https://github.com/randa-mu/dcipher)\n\n---\n\n## Overview\n\n**dcipher** is a modular protocol for [threshold cryptography](https://en.wikipedia.org/wiki/Threshold_cryptosystem).  \nIt combines smart contracts and off-chain node operators to enable:\n\n- Asynchronous Distributed Key Generation\n- Threshold signing\n- Identity-based encryption\n- Chain abstraction\n\nThe repository is organized into:\n\n- **Binaries (`bin/`)** – runnable agents, CLIs, and services.\n- **Crates (`crates/`)** – Rust libraries used across the project.\n- **Modules (`modules/`)** – **Git submodule dependencies** that pull in protocol-specific logic or external components.\n\n---\n\n## Repository Structure\n\n### Binaries (`bin/`)\n\n| Binary                | Purpose                                                                                                | Documentation                                 |\n|-----------------------|--------------------------------------------------------------------------------------------------------|-----------------------------------------------|\n| `adkg-cli`            | CLI for running and testing Asynchronous Distributed Key Generation ceremonies                         | [README](./bin/adkg-cli/README.md)            |\n| `blocklock-agent`     | Agent for the Blocklock protocol (time-lock / conditional decryption)                                  |                                               | \n| `dsigner`             | Threshold signing daemon, allowing operators to separate condition evaluation and signing for security | [README](./bin/dsigner/README.md)             |\n| `gen-keys`            | Utility for key generation (testing / setup)                                                           | [README](./bin/gen-keys/README.md)            |\n| `monitoring`          | An agent that listens/polls dcipher-related information and ships it to prometheus                     | [README](./bin/monitoring/README.md)          |\n| `onlyswaps-smoketest` | A continuous monitoring and testing tool for only swaps.                                               | [README](./bin/onlyswaps-smoketest/README.md) |\n| `onlyswaps-solver`    | An agent for providing token liquidity on chains that support onlyswaps to make yield.                 | [README](./bin/onlyswaps-solver/README.md)    |\n| `onlyswaps-state-api` | API for caching and serving state related to ONLYSwaps                                                 |                                               |\n| `onlyswaps-verifier`  | A dcipher protocol implementation called ONLYSwaps for enabling cross-chain token swaps                | [README](./bin/onlyswaps-verifier/README.md)  |\n| `randomness-agent`    | A dcipher protocol implementation for providing request-based verifiable randomness on-chain           |                                               |\n\n---\n\n### Crates (`crates/`)\n\n| Crate              | Purpose                                                                                                                                                   |\n|--------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `adkg`             | Core Asynchronous Distributed Key Generation implementation                                                                                               |\n| `agent-utils`      | Utilities shared by dcipher agents                                                                                                                        |\n| `config`           | Shared configuration handling for agents that use networking, threshold signing, or load config files (TOML, env, etc.)                                   |\n| `dcipher-agents`   | Common agent framework code                                                                                                                               |\n| `generated`        | Auto-generated Rust bindings from Solidity (kept in sync via `generate-bindings.sh`)                                                                      |\n| `network`          | Networking primitives and libp2p integrations                                                                                                             |\n| `onlyswaps-client` | A client to interact with onlyswaps                                                                                                                       |\n| `omnievent`        | A library for streaming contract events sources into database sinks, and back into filterable streams for apps built on top of [alloy](https://alloy.rs/) |\n| `signer`           | Signing logic (BLS / threshold compatible)                                                                                                                |\n| `superalloy`       | A crate providing multiplexing logic for combining [alloy](https://alloy.rs/) providers                                                                   |\n| `utils`            | General helper utilities                                                                                                                                  |\n\n---\n\n### Modules (`modules/`)\n\nThese are **Git submodule dependencies**, not local crates.  \nThey typically include protocol-specific or external components maintained in separate repositories.  \nUpdate them with:\n\n```bash\ngit submodule update --init --recursive\n```\n\n---\n\n## Getting Started\n\n### Prerequisites\n\n- Rust `1.89.0+`\n- Node.js \u0026 npm\n- `make`\n- Foundry (if running the tests)\n\n### Quickstart\n\nBuild everything, including solidity and tests:\n\n```bash\nmake all\n```\n\nBuild the repo (but not the tests):\n\n```bash\ncargo build\n```\n\nBuild a specific binary (e.g. adkg-cli):\n\n```bash\ncargo build --release -p adkg-cli\n```\n\nBuild Docker images (requires binaries to be built first):\n\n```bash\nmake build_binaries\nmake build_docker_randomness-agent\nmake build_docker_onlyswaps-verifier\n```\n\nClean artifacts:\n\n```bash\nmake clean\nmake clean_node_modules\nmake clean_forge\n```\n\n---\n\n## Bindings\n\nIf Solidity contracts change, regenerate Rust bindings:\n\n```bash\n./generate-bindings.sh\n```\n\nCI will fail if bindings are out of sync.\n\n---\n\n## Testing\n\n- Rust crates:\n\n```bash\ncargo test --workspace\n```\n\n---\n\n## Contributing\n\n1. Fork \u0026 clone the repo\n2. Create a feature branch\n3. Run `cargo test` and `forge test` before pushing\n4. Open a PR and ensure CI passes\n\n---\n\n## License\n\nLicensed under [MIT](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Franda-mu%2Fdcipher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Franda-mu%2Fdcipher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Franda-mu%2Fdcipher/lists"}