[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 lightweight mechanism to spin-up ephemeral Cardano nodes, allowing devs to configure the initial state of the ledger and then executing a complex sequence of transactions in a deterministic way.
[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
All source-code developed for the proposal will be release under the Apache 2.0 license.
[METADATA] Horizons
Developer Tools
[SOLUTION] Please describe your proposed solution
The introduction of Aiken and other tooling has provided the Cardano ecosystem with a mechanism to easily develop and evaluate validators in an isolated way. Complementary to that, a comprehensive framework for dApp testing should allow devs to model and evaluate complex sequences of transactions for happy-paths, edge-cases and any other required scenario.
There's no available tooling in Cardano to solve this concern in a simple, ergonomic and efficient way. Existing solutions are resource intensive and require complex setup and cleanup mechanisms. In other ecosystems, like Ethereum, it's common to use "devnets". A devnet is general term used to describe a short-lived, small-scale network (just one node) that is used during development.
Our solution to this problem in Cardano is to build a tool for defining, running and evaluating Cardano devnets. Our proposed tool includes the following features:
- A declarative language to define the test scenario. This will include an initial ledger state, a sequence of transactions to be executed from that initial state and the expected final state.
- A runtime engine build on top of Dolos that will interpret the test scenario and execute the corresponding transactions in a deterministic fashion. This engine will have very low-resource requirements (similar to Dolos)
- A reporting component that evaluates the final state of the ledger after the execution and compares it to the declared state.
- A log / tracing gathering mechanism that provides a fine-grained level of detail of all the events occurred throughout the execution.
- A quality-of-life utility to create test scenarios from existing network (mainnet, preprod, preview) allowing devs to "fork" the ledger from the selected network so that test scenarios can be ran from real-world examples.
[IMPACT] Please define the positive impact your project will have on the wider Cardano community
A simple and efficient way to model and test transaction flows will allow dev teams to improve their software quality. For teams which are already performing these practices using other methods, this tool will lower the development effort and decrease the cost of running these tests.
In either case, the Cardano developer community will benefit from an improved developer experience.
[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 3 years and we're not going anywhere. 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 for the Cardano ecosystem. This experience allows us to evaluate the feasibility of the project and its potential benefit from a developer's perspective. We've also participated in development of chains using the released version of the IOG's Partnerchain SDK.
Successful Catalyst proposals
We have successfully completed several 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?
Project Scaffolding
Milestone outputs:
- A stub of the runtime engine
- A stub of the language model
- A stub of the CLI
Acceptance criteria:
- All components stubs are ready for feature development
- A CI/CD pipeline is in place to build / integrate the different artifacts
Evidence of milestone completion:
- Publicly available source-code containing the project scaffold
Declarative Language for Test Scenarios
Milestone outputs:
- The specs for a declarative language capable of defining test scenarios
- Examples of test scenarios defined using the new language
- Documentation of how to leverage the new language
Acceptance criteria:
- A developer is able to define a test scenario using the provided language
Evidence of milestone completion:
- Publicly available source-code containing the language specs and examples
- Link to documentation site describing the new language (URL TBD)
- Video showcasing the artifacts available in the new language
Test Execution Engine
Milestone outputs:
- A runtime component capable of executing test scenarios
- A CLI tool to serve as entry-point for the runtime
- Documentation on how to use the runtime
Acceptance criteria:
- A developer can use the new runtime to execute test scenarios
- A developer can interpret the results of the test scenario evaluation
- A developer can gather traces from test executions
Evidence of milestone completion:
- Publicly available source-code containing new runtime and CLI
- Link to documentation website (URL TBD)
- Video showing how to interact with the new runtime
Packaging + Extra Tooling
Milestone outputs:
- A tool to generate test scenarios from on-chain data
- An easy to install binary release of the complete toolchain
- Documentation on how to install the toolchain
Acceptance criteria:
- A developer can install the toolchain in supported platforms (mac, linux, windows)
- A developer can create test scenarios from on-chain data
Evidence of milestone completion:
- Publicly available source-code of the new features
- Link to binary release of the toolchain (URL TBD)
- Link to documentation website (URL TBD)
- Video showing how to interact with the new features
Final Report
Milestone outputs:
- publicly available source-code of the complete toolchain
- comprehensive documentation for the complete toolchain
- a video showcasing the final output of the project
- a final report describing the project process and outcome
Acceptance criteria:
- the final toolchain includes all features described in the proposal's scope
- the final video complies with Catalyst requirements
- the final report complies with Catalyst requirements
Evidence of milestone completion:
- Publicly available source-code of the complete toolchain
- Link to documentation site (URL TBD)
- Final video uploaded to Google drive
- Final report uploaded to Google drive
[RESOURCES] Who is in the project team and what are their roles?
TxPipe members involved in this project will be:
[BUDGET & COSTS] Please provide a cost breakdown of the proposed work and resources
FTE = Full-time equivalent
Software development:
- Rust developer: 1 FTE x 6 months = ₳ 154,286
- Technical Writer: 1 FTE x 3.5 months = ₳ 30,000
Project Management:
- Project Manager: 1/4 FTE x 6 months = ₳ 12,857
[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.