Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
This repository was archived by the owner on Jul 20, 2026. It is now read-only.
Open more actions menu

Repository files navigation

dcipher

Build License: MIT Stars


Overview

dcipher is a modular protocol for threshold cryptography.
It combines smart contracts and off-chain node operators to enable:

  • Asynchronous Distributed Key Generation
  • Threshold signing
  • Identity-based encryption
  • Chain abstraction

The repository is organized into:

  • Binaries (bin/) – runnable agents, CLIs, and services.
  • Crates (crates/) – Rust libraries used across the project.
  • Modules (modules/)Git submodule dependencies that pull in protocol-specific logic or external components.

Repository Structure

Binaries (bin/)

Binary Purpose Documentation
adkg-cli CLI for running and testing Asynchronous Distributed Key Generation ceremonies README
blocklock-agent Agent for the Blocklock protocol (time-lock / conditional decryption)
dsigner Threshold signing daemon, allowing operators to separate condition evaluation and signing for security README
gen-keys Utility for key generation (testing / setup) README
monitoring An agent that listens/polls dcipher-related information and ships it to prometheus README
onlyswaps-smoketest A continuous monitoring and testing tool for only swaps. README
onlyswaps-solver An agent for providing token liquidity on chains that support onlyswaps to make yield. README
onlyswaps-state-api API for caching and serving state related to ONLYSwaps
onlyswaps-verifier A dcipher protocol implementation called ONLYSwaps for enabling cross-chain token swaps README
randomness-agent A dcipher protocol implementation for providing request-based verifiable randomness on-chain

Crates (crates/)

Crate Purpose
adkg Core Asynchronous Distributed Key Generation implementation
agent-utils Utilities shared by dcipher agents
config Shared configuration handling for agents that use networking, threshold signing, or load config files (TOML, env, etc.)
dcipher-agents Common agent framework code
generated Auto-generated Rust bindings from Solidity (kept in sync via generate-bindings.sh)
network Networking primitives and libp2p integrations
onlyswaps-client A client to interact with onlyswaps
omnievent A library for streaming contract events sources into database sinks, and back into filterable streams for apps built on top of alloy
signer Signing logic (BLS / threshold compatible)
superalloy A crate providing multiplexing logic for combining alloy providers
utils General helper utilities

Modules (modules/)

These are Git submodule dependencies, not local crates.
They typically include protocol-specific or external components maintained in separate repositories.
Update them with:

git submodule update --init --recursive

Getting Started

Prerequisites

  • Rust 1.89.0+
  • Node.js & npm
  • make
  • Foundry (if running the tests)

Quickstart

Build everything, including solidity and tests:

make all

Build the repo (but not the tests):

cargo build

Build a specific binary (e.g. adkg-cli):

cargo build --release -p adkg-cli

Build Docker images (requires binaries to be built first):

make build_binaries
make build_docker_randomness-agent
make build_docker_onlyswaps-verifier

Clean artifacts:

make clean
make clean_node_modules
make clean_forge

Bindings

If Solidity contracts change, regenerate Rust bindings:

./generate-bindings.sh

CI will fail if bindings are out of sync.


Testing

  • Rust crates:
cargo test --workspace

Contributing

  1. Fork & clone the repo
  2. Create a feature branch
  3. Run cargo test and forge test before pushing
  4. Open a PR and ensure CI passes

License

Licensed under MIT.

Releases

Packages

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.