[GENERAL] Name and surname of main applicant
Santiago Carmuega
[GENERAL] Are you delivering this project as an individual or as an entity (whether formally incorporated or not)
Entity (Incorporated)
[GENERAL] Please specify how many months you expect your project to last (from 2-12 months)
6
[GENERAL] Please indicate if your proposal has been auto-translated into English from another language
No
[GENERAL] Summarize your solution to the problem (200-character limit including spaces)
A reference implementation of a Substrate node that uses an UTxO-based ledger and a Plutus VM, allowing the execution of Cardano-like dApps in Substrate-based networks.
[GENERAL] Does your project have any dependencies on other organizations, technical or otherwise?
No
[GENERAL] If YES, please describe what the dependency is and why you believe it is essential for your project’s delivery. If NO, please write “No dependencies.”
No dependencies.
[GENERAL] Will your project’s output/s be fully open source?
Yes
[GENERAL] Please provide here more information on the open source status of your project outputs
The source code will be released under the Apache 2.0 with a policy that welcomes external contributions.
[SOLUTION] Please describe your proposed solution
Cardano uses the Ouroboros Praos consensus mechanism, which is designed to be secure and reliable even in adversarial scenarios. This mechanism is one of the key features of Cardano that makes it robust against various kinds of attacks and failures.
We argue that there're scenarios, like semi-permissioned networks, where transaction throughput and block finality is favored over protection to adversarial conditions.
The Substrate framework allows developers to build use-case specific blockchain networks. Different consensus and ledger components can be integrated to build a system that follows a specific tradeoff strategy.
The Cardano developer community has made huge strides in terms of best-practices and patterns that leverage the eUTxO model and the Plutus VM in particular.
We want to provide the tools for Cardano developers to leverage their Plutus experience when building
We'll build a Substrate-compatible runtime with the following special capabilities:
- UTxO-based ledger: this ledger will resemble as much as possible the Cardano ledger, with the exception of any stacking, delegation or governance primitives.
- Extended UTxO primitives: we'll replicate the programability primitives around UTxO (datums, redeemers, scripts, etc) so that these concepts remains analogous to Cardano.
- Plutus VM: we'll integrate a virtual machine capable of executing Plutus scripts that can be created using existing Plutus tooling and languages, such as Aiken.
We'll also build a client node reference implementation using Substrate that integrates the following components:
- RPC interface: a mechanism to interact with the node using a network RPC interface, used for extrinsic event submission and management operations.
- Aura consensus: a proof-of-authority (PoA) consensus protocol where only approved nodes are allowed to create new blocks.
- Grandpa block finality: a Byzantine fault tolerant finality gadget that provides deterministic finality.
- Libp2p networking: a battle-tested peer-to-peer networking library providing transport, discovery and routing mechanism.
[IMPACT] Please define the positive impact your project will have on the wider Cardano community
Substrate is an SDK to build use-case specific blockchains. By adding support for a UTxO-based ledger and a Plutus validators, we're allowing the Cardano community to leverage the existing knowledge, best-practices and patterns on UTxO programability to easily build new networks with different consensus and performance tradeoffs.
[CAPABILITY & FEASIBILITY] 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?
TxPipe is an active member of the Cardano ecosystem
TxPipe has been developing open-source tools for the Cardano ecosystem for over 2 years and we're committed to continue on this path. Evidence of our commitment can be found by evaluating the continuous activity of our public code repositories.
Experience developing in the Cardano ecosystem
TxPipe has helped developed several dApps, infrastructure components and tooling for the Cardano ecosystem. This experience allows us to evaluate the feasibility of the project and its potential benefit from a developer's perspective.
Succesful Catalyst proposals
We have successfully completed 2 prior Catalyst proposals. This may serve as evidence that our team has the required capabilities to fulfill these type of projects.
Development process will be public and open-source
Both the output and the development process will be public and open-source. This approach provides an easy way for the Catalyst team and the Cardano community to evaluate the progress at each step of the process.
[PROJECT MILESTONES] What are the key milestones you need to achieve in order to complete your project successfully?
Scaffolding
Milestone outputs
- Publicly available source-code containing the project scaffold
- A stub of the Substrate runtime that will hold the UTxO ledger and Plutus VM
- A scaffold of the Substrate node that includes the stub for the new runtime
Acceptance criteria
- The interface for the new Substrate runtime matches the feature requirements
- The Substrate node scaffold can be started and remain idle
Evidence of milestone completion
- Source-code available in the Github repository
- Binary releases available in Github release section
UTxO Ledger
Milestone outputs
- publicly available source-code of a UTxO ledger compatible with Substrate
- publicly available documentation of the module's interface
- results from integration testing
Acceptance criteria
- The implemented ledger resembles the Cardano ledger, with the exception of any stacking, delegation or governance primitives.
- The implemented ledger contains the primitives required for UTxO programmability (datums, redeemers, scripts, etc).
Evidence of milestone completion
- Source-code available in the Github repository
- Rust crate published at crates.io
- Documentation published at docs.rs
Plutus VM
Milestone outputs
- publicly available source-code of a Plutus VM integrated with Substrate
- publicly available documentation of the module's interface
- results from integration testing
Acceptance criteria
- the integrated Plutus VM is capable of executing Plutus scripts that can be created using existing Plutus tooling and languages, such as Aiken.
- the system is able to process transactions that require Plutus script as part of the validation.
Evidence of milestone completion
- Source-code available in the Github repository
- Rust crate published at crates.io
- Documentation published at docs.rs
End-to-end Application
Milestone outputs
- A working end-to-end application built using the newly created Substrate runtime.
- Publicly available source-code of the end-to-end application.
Acceptance criteria
- the application is built using the Substrate framework and runs as a custom network.
- the application uses an UTxO-based ledger
- the application relies on Plutus script for validation of some transactions
Evidence of milestone completion
- Source-code available in the Github repository
- Documentation published at custom website
- Binary releases available in Github release section
Final report
Milestone outputs
- publicly available source-code of the new runtime
- publicly available source-code of the client reference implementation
- publicly available source-code of the end-to-end application
- binary releases of the client reference implementation
- binary releases of the end-to-end application
- publicly available documentation
- a video showcasing the final output of the project
- a final report describing the project process and outcome
Acceptance criteria
- the newly created Substrate runtime uses an UTxO ledger and runs Plutus scripts
- the client reference application is able to run custom Substrate-based networks
- the final video complies with Catalyst requirements
- the final report complies with Catalyst requirements
Evidence of milestone completion
- Source-code available in the Github repository
- Rust crate published at crates.io
- Documentation published at docs.rs
- Final video uploaded to Google drive
- Final report uploaded to Google drive
[RESOURCES] Who is in the project team and what are their roles?
- Santiago Carmuega - TxPipe : Rust Developer /Tech Lead - Github
- Federico Weill - TxPipe : Project Manager - Linkedin
- Alejandro Avagnina - TxPipe : Site Reliability Engineer - Github
- Alexsander Falcucci - TxPipe: Rust Developer - Github
- Maico Leberle - TxPipe: Rust and Haskell Developer/Tech Writer - Github
- Clark Alesna - TxPipe: Rust and Aiken Developer - Github
- Alejandro Gadea - TxPipe : Aiken developer - LinkedIn
[BUDGET & COSTS] Please provide a cost breakdown of the proposed work and resources
FTE = Full-time equivalent
Total budget = ₳ 198,750
Software development
- Rust developer: 2 FTE x 3.5 months = ₳ 157,500
- Aiken Developer: 1 FTE x 1 months = ₳ 22,500
- Technical Writer: 1/2 FTE x 2 months = ₳ 7,500
Project Management
- Project Manager: 1/4 FTE x 6 months = ₳ 11,250
[VALUE FOR MONEY] How does the cost of the project represent value for money for the Cardano ecosystem?
The bulk of the budget falls under the software development category. TxPipe has extensive experience in the field, allowing it to provide good value for money. The hourly rates are defined using fair market prices. The estimation for the level of effort takes into account all of the optimizations that our team is capable of providing after years of experience developing software solutions in the Cardano ecosystem.