funded
Open source PRISM Node
Current Project Status
In Progress
Amount
Received
₳181,500
Amount
Requested
₳300,000
Percentage
Received
60.50%
Solution

Provide the community with a open-source implementation of a PRISM Node including a universal resolver and registrar, to reduce centralization and the dependence on IOG.

Problem

Atala PRISM, which is Cardano’s identity solution, depends on the PRISM Node, a software run by IOG. Not being open-source, this hinders further adaption and growth in the identity space.

Team

2 members

Open source PRISM Node

Please describe your proposed solution.

Identity on Cardano

Atala PRISM, a digital identity project by IOG, opened its doors to the first set of PRISM Pioneers about 1.5 years ago. DID PRISM, the DID method developed by the Atala team, is anchored on the Cardano Blockchain - that mean that the DIDs are encoded and saved on-chain. Though the specification has only undergone minor changes over the years, it has only recently been made public (<https://github.com/input-output-hk/prism-did-method-spec/blob/main/w3c-spec/PRISM-method.md>), officially enabling the community to create their own node implementation.

Open-Source PRISM Node

The blocktrust team, actively participating in the PRISM community for over a year and a half, consistently builds projects on Atala PRISM, such as the blocktrust identity wallet, the analytics platform, the credential builder, a DIDComm Mediator and more. <u>Last year, we developed a prototype of a </u><u>PRISM Node</u><u> based on our research and deductions from what we gathered from the on-chain metadata</u>. Since the Atala team had not officially published the DID PRISM method specification at the time, we limited our Node prototype to reading from the blockchain, avoiding writing to the chain so as not to create a conflict of interest with the Atala team. The outcome is the blocktrust analytics platform, currently the only way to track PRISM operations on the chain.

Now, the Atala team has chosen to publish the specification while keeping their implementation closed-source (for allowing future revenue streams), paving the way for an open-source PRISM Node implementation based on the latest specifications. Finally having an open-source community driven PRISM Node would obviously be a massive step for the ecosystem.

Capabilities

To achieve this goal, we will leverage our previous experience with the prototype, revise it, and add the ability to not only read but also publish DIDs to the blockchain. To see our current implementation in action, visit Blocktrust Analytics (<https://analytics.blocktrust.dev/>), a platform to explore all PRISM transactions on the blockchain and see the live updates of all PRISM related transactions.

Our Node will have the following features and be fully compatible with the current specification:

  • The Node will offer a REST API for common DID operations: Publish DID, Update DID, Deactivate DID, Resolve DID and GetOperationStatus
  • All these operations will also be available via gRPC
  • An Admin UI will allow creating tenants with Cardano wallet addresses
  • Store the private keys for the tenants
  • Provide the ability to fund those addresses and unlock the funds. This funding will cover the necessary ADA for uTXO transactions to the blockchain, with the encoded DID operations as metadata payload
  • The node will have a UI, offering a graphical overview of the state of processing PRISM operations
  • An alternative approach to submit an already serialized transaction will be provided, eliminating the need for funding through the integrated wallet

However, a PRISM Node does not function independently; it requires access to a database with all past and new incoming PRISM operations. In our prototype, we used the Cardano-node and dbsync. For this proposal's rewrite, we'll additionally offer the ability to use TxPiper.io Oura, as well as Blockfrost for streams of new incoming blocks.

Additionally we'll be implementing the Universal DID Resolver and Universal DID Registrar definitions, further promoting the adoption of the PRISM DID specification beyond the Cardano ecosystem.

Please define the positive impact your project will have on the wider Cardano community.

The DID PRISM method specification by the Atala team stands as a well-thought-out blueprint for DID methods, notably when compared to some others registered with the W3C. Given the uncertainty surrounding Atala PRISM's business model (as they must generate revenue) and the project's future direction, having a single, closed-source node implementation controlled by IOG may seem like a reasonable business decision. However, it does not align with the best interests of the Cardano or SSI community in general.

Furthermore, introducing an additional node would incite competition, stimulate development, and encourage more community members to use, integrate, and be involved in the digital identity ecosystem. This could potentially open an additional revenue stream for StakePool operators, allowing them to utilize their existing infrastructure to run a lightweight PRISM Node on their servers.

It would be reasonable to expect that, after a few months, multiple independent PRISM Nodes (3-5) will be set up. The specific numbers are difficult to estimate as they largely depend on the general adoption of the PRISM identity solution.

What is your capability to deliver your project with high levels of trust and accountability? How do you intend to validate if your approach is feasible?

Blocktrust has been an active participant in the Cardano ecosystem since early 2022, developing SSI solutions using Atala PRISM from the start. Over the last year and a half, we have been building projects and libraries based on PRISM. Many of these are open-source and all of them provide value. Some notable ones include:

The Identity Wallet and the Credential Builder have been funded with Project Catalyst and have been already successfully completed. We also have a nearly perfect record of submitting the monthly reports over 1,5 years.

Looking at our reports or our blog, you'll see we're constantly sharing videos, posts, new projects, and code.

What are the key milestones you need to achieve in order to complete your project successfully?

<u>Analyze learnings from prototype, architecture of new node, project setup</u> (1 month)

  • Project setup
  • Analyzing the shortcomings and performance metrics of our current implementation. Plan for rewrite.
  • Local setup of Cardano node and dbsync for all current networks. Evaluation and comparison of blockfrost.io, txpipe Oura and other solutions to stream new block to the node. Evaluation of rollback handling.

Acceptance Criteria: Progress report, defined roadmap, providing links to the repository and project website

Cost: 37,500 ada

><u>Development</u> (3 months)

  • Basic implementation of the DID PRISM specification
  • Developing a method of parsing blocks and transactions data
  • Ingestion and classification of Atala operations
  • Parsing the different DID PRISM operations (Create DID, Update DID, Deactivate DID)
  • Writing the DID PRISM operation into a database (MS SQL / PostgreSQL)
  • Providing additional metadata to the PRISM transactions (Cardano addresses, staking addresses, payment information, etc.)
  • Parsing Protocol-Version-update operations
  • Verification of operations
  • Implement the code to correctly resolve DIDs
  • Initial testsuite to compare and validate resolve-results
  • Adding Http and gRPC endpoints to the node
  • Testing rollback handling

Acceptance Criteria: Progress report, different coding milestones according to the roadmap. At the end of milestone 5 a video with a technical walkthrough and a hosted demo-node.

Cost: 112,500 ada

><u>Development, integration testing, and UI finalization</u> (2 month)

  • Developing support for different tenants, each to setup and generate private keys
  • Implementing a basic wallet inside the node for each tenant to pay for the transactions
  • Adding a tenant UI using a Sign-in with DID implementation like PRISM onboard & authenticate
  • Provide software to run through the initial syncing procedure for the node (read all operations from the past and process them)
  • Integrate all streaming providers with decided on based on our roadmap (e.g. blockfrost, TxPipe Ouros, etc.)
  • Testing of the currently not used verification and signing algos based on Curve25519/Ed25519
  • Adding support for the universal resolver and providing an implementation to https://dev.uniresolver.io/

Acceptance Criteria: Progress report, Report on the integration testing on all existing DIDs

Cost: 75,000 ada

><u>Development, integration testing, and UI finalization</u> (1 month)

  • Continue testing the node in production like setting and comparing results to the PRISM implemenation
  • Intrumentalisation of the node
  • Adding support for the Universal registrar https://uniregistrar.io/
  • Reviewing security considerations for the node and implementing safe-guards

Acceptance Criteria: Progress report, Report on the integration testing on all existing DIDs

Cost: 37,500 ada

><u> </u><u>Finalization and documentation </u>(1 month)

  • Fixing the last open bugs
  • providing documentation for developers, and potential service providers for setup
  • providing an easy to use docker images with all tools included to run a PRISM node on Azure / AWS or an custom environment.

Acceptance Criteria: Progress report, Bug fixing and documentation

Cost: 37,500 ada

Who is in the project team and what are their roles?

Björn Sandmann (Lead developer)

10+ years of full-stack development with the .net Stack. Focused on identity and privacy solutions. PRISM Pioneer, Atala ASTRO, Plutus Pioneer, already funded & successfully finished proposals. Implemented all technical core functionality of products like the blocktrust analytics platform, the blocktrust mediator and the blocktrust identity wallet. Founder of blocktrust. On the Governace Commitee of the Hyperledger Lab for the Open Enterprise Agent (PRISM agent), Trust over IP Member, DIF member

LinkedIn: <https://www.linkedin.com/in/codedata/>

GitHub: <https://github.com/bsandmann>

Ed Eykholt (Development)

20+ years of software product and engineering team leadership. C# developer. Focused on blockchain and identity projects and products since 2015. Atala ASTRO. Working on PRISM related projects with blocktrust over a year. Trust over IP Member. On different working groups related to digital identity.

LinkedIn: <https://www.linkedin.com/in/edeykholt/>

Github: <https://github.com/edeykholt>

New Team Member

Blocktrust might hire or contract with an experienced full-stack C# developer to augment Ed and Björn's contributions. The project can still be successful without this additional person.

Please provide a cost breakdown of the proposed work and resources.

Developer cost breakdown: 50 hr/week with 70 USD = 14,000 USD per month = 112,000 USD

Hosting costs for Milestone 1 to 8 while developing: with 300 USD per month = 2,400 USD

Total: 114,400 USD =<u> 300,000 ADA </u>(~0.38 USD/ADA exchange rate)

Project team: (architecture, design, software development, testing, DevOps, community, project management, documentation):

  • Björn Sandmann (Lead developer)
  • Ed Eykholt (Development support)
  • New Team Member (Development support)

The total workload is estimated at about 50 hrs/week. Divided among three developers, this leaves plenty of room to also push forward other Blocktrust projects, community work, marketing, and the ongoing technical support and maintenance of our digital identity infrastructure.

How does the cost of the project represent value for money for the Cardano ecosystem?

Developing a reliable PRISM Node is a relatively complex process. Given our extensive experience in this domain and having already coded an initial version of the Node, it is likely that no one else could accomplish this task more efficiently. We don't need to spend time testing and understanding the specifications and the on-chain transactions; we can directly start with the development process.

The same applies to running a Node. The complexities involved in updating, adapting to underlying Cardano-node and dbSync changes, as well as adjusting to specification changes for the PRISM DID itself, are all challenges we're familiar with. We have proven our ability to manage these hurdles for over a year now.

close

Playlist

  • EP2: epoch_length

    Authored by: Darlington Kofa

    3m 24s
    Darlington Kofa
  • EP1: 'd' parameter

    Authored by: Darlington Kofa

    4m 3s
    Darlington Kofa
  • EP3: key_deposit

    Authored by: Darlington Kofa

    3m 48s
    Darlington Kofa
  • EP4: epoch_no

    Authored by: Darlington Kofa

    2m 16s
    Darlington Kofa
  • EP5: max_block_size

    Authored by: Darlington Kofa

    3m 14s
    Darlington Kofa
  • EP6: pool_deposit

    Authored by: Darlington Kofa

    3m 19s
    Darlington Kofa
  • EP7: max_tx_size

    Authored by: Darlington Kofa

    4m 59s
    Darlington Kofa
0:00
/
~0:00