This is a PRISM Node implementation in Rust according to the PRISM DID Method.
If you are already familiar with DID and PRISM DID method, skip this part.
A Decentralized Identifier (DID) is a type of URI used as a stable identifier for a resource known as a DID Document. A DID Document contains a collection of public keys and optionally some other resources that applications can use. Various types of DID implementations, called DID Methods, exist. PRISM DID is one such method, where operations that modify the DID Document are published to the Cardano blockchain.
Published PRISM DID operations are encoded in protobuf format and must adhere to the rules outlined in the PRISM DID specification. The protobuf-encoded operations are embedded in Cardano transaction metadata and publicly available for all parties to validate.
The PRISM Node's role is to follow the Cardano blockchain, read, parse, and validate published PRISM DID operations. It functions as an indexer, allowing applications to query DIDs and retrieve the corresponding DID Documents. This process, known as DID resolution, returns the DID Document in the W3C-compliant format, so applications don't need to know about the details of each DID Method.
It is recommended to check out this protocol high level description.
A public instance of neoprism is hosted at https://neoprism.patlo.dev.
A public preprod instance is also available at https://neoprism-preprod.patlo.dev.
Start the node and sync block metadata from relay node backbone.mainnet.cardanofoundation.org:3001
cd docker
docker-compose up --build
WebUI is available at http://localhost:8080
Cargo alias node
can be used to quickly see all CLI options.
cargo node -h
This project began as a toy project with limited capabilities. It serves as a proof of concept to enhance efficiency and simplify the Hyperledger Identus stack by eliminating the DB-sync requirement in IOG's PRISM Node implementation. While still far from perfect, there is a roadmap and a proposal in Project Catalyst Fund13 to make it on par with the original PRISM Node, with the potential to replace the original PRISM Node with NeoPRISM in the future.
TODO