MCPcopy Index your code
hub / github.com/deltadevsde/prism

github.com/deltadevsde/prism @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
1,083 symbols 2,914 edges 149 files 100 documented · 9%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README
<img src="https://github.com/deltadevsde/prism/raw/main/assets/prism-dark.png" alt="Prism" width="350">

prism

delta devs Dependencies GitHub Issues Contributions welcome Telegram Chat

identity layer enabling automatic verification of end-to-end encrypted services, providing users with trust-minimized security and privacy through transparent key management.

What is Prism?

Prism is a decentralized key transparency protocol, first inspired by the paper Tzialla et. al, leveraging zkSNARKs and DA solutions to enable trust-minimized verification of E2EE services via WASM/Native light clients. This eliminates the possibility for hidden backdoors in E2EE services through a user-verifiable key management system. It uses transparency dictionaries under the hood, offering a generalized solution for managing a label-value map in environments where the service maintaining the map is not completely trusted.

Prism provides the first key-transparency solution to enable automatic verification of the service provider. This is achieved by providing constant size succinct proofs to WASM/Native light clients over a data availability layer. Alternative DA solutions are in planning, allowing for a less trust-minimized client where a p2p node cannot be embedded.

The system is designed to be efficient, scalable and secure, making it suitable for a wide range of applications.

You can view further information about the project in our documentation. The project is undergoing rapid development. You can view the current development status here.

Status

The project is still in the early development phase, is pending an audit, and is not yet suitable for use in production environments.

Due to this ongoing development work, changes are still being made that will affect existing functionality and the API.

Circuits

Initially, Prism was implemented with handwritten circuits. These legacy circuits for both groth16 and supernova are available in the zk crate, but are no longer maintained and will not compile with the latest version of the imported crates.

We have found, against intuition, that the SP1 zkVM provides much better performance than the legacy circuits. It also offers a more secure, auditable implementation that is maintainable by any rust developer. For our explanation as to why a zkVM ends up being more efficient, refer to our documentation.

Installation

Prerequisites

Install Dependencies

We use just as a task runner. Once installed, you can install the rest of the dependencies with:

just install-deps

Building

To build the project, run:

just build

This will compile the prism-cli binary and sp1 ELF that are used to run the prover, light-client, and full-node.

Running a local DA layer

To run a local Celestia network for testing, use:

just celestia-up

Starting the prover

If the dependencies are installed and the local devnet is running, a prism node can be started.

Prism can be started in three different ways: 1. as a prover (service provider and proof generator) 2. as a light-client (to verify the proofs posted on Celestia using the cryptographic commitments) 3. as a full-node (acts as a service provider, processing all transactions and making the state available to the light-clients)

To start the prover, run:

prism-cli prover

This will output the prover's verifying key in the logs, which you can use along with the light-client and full-node to verify the proofs.

to start the light-client, run the following command:

prism-cli light-client|full-node --verifying-key <verifying-key>

You can then interact with Prism via the interfaces defined in webserver.rs.

Contributions

Contributions are welcome! Please refer to our contributing guidelines for information on how to submit pull requests, report issues, and contribute to the codebase.

Security

See SECURITY.md.

License

This project is dual-licensed:

  • AGPL-3.0 for non-commercial use (see LICENSE)
  • Commercial license available for commercial

Extension points exported contracts — how you extend this code

ApplyPreset (Interface)
(no doc) [11 implementers]
crates/presets/src/lib.rs
TreeReadWriter (Interface)
(no doc) [6 implementers]
crates/tree/src/tests/mod.rs
CliArgs (Interface)
Trait for CLI argument types that provide configuration sources [3 implementers]
crates/cli/src/apply_args/traits.rs
PrismApi (Interface)
(no doc) [5 implementers]
crates/api/src/api.rs
FromBase64 (Interface)
(no doc) [4 implementers]
crates/serde/src/base64.rs
LightDataAvailabilityLayer (Interface)
(no doc) [3 implementers]
crates/da/src/lib.rs
Database (Interface)
(no doc) [2 implementers]
crates/storage/src/database.rs
ProverEngine (Interface)
(no doc) [1 implementers]
crates/node_types/prover/src/prover_engine/engine.rs

Core symbols most depended-on inside this repo

send
called by 61
crates/api/src/builder.rs
verifying_key
called by 59
crates/keys/src/signing_keys.rs
join
called by 55
crates/crosstarget/src/tasks.rs
get
called by 49
crates/tree/src/snarkable_tree.rs
r
called by 39
doc/book/highlight.js
process_transaction
called by 39
crates/tree/src/snarkable_tree.rs
try_into
called by 38
crates/da/src/lib.rs
as_ref
called by 34
crates/common/src/digest.rs

Shape

Method 519
Function 351
Class 133
Enum 56
Interface 24

Languages

Rust88%
TypeScript12%

Modules by API surface

doc/book/highlight.js71 symbols
crates/common/src/test_transaction_builder.rs40 symbols
crates/api/src/builder.rs28 symbols
crates/storage/src/rocksdb.rs24 symbols
crates/keys/src/signing_keys.rs23 symbols
crates/node_types/prover/src/prover/mod.rs22 symbols
crates/keys/src/verifying_keys.rs22 symbols
doc/book/book.js21 symbols
crates/zk/groth16/src/lib.rs21 symbols
crates/da/src/lib.rs21 symbols
doc/book/searcher.js19 symbols
crates/zk/sp1-script/src/main.rs19 symbols

For agents

$ claude mcp add prism \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact