[GENERAL] Name and surname of main applicant
Angel Castillo
[GENERAL] Are you delivering this project as an individual or as an entity (whether formally incorporated or not)
Entity (Incorporated)
[GENERAL] Co-proposers and additional applicants
[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)
Develop a high-quality, MISRA-C compliant UPLC virtual machine within the Cardano-C library to enable local execution and cost calculation of UPLC scripts.
[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
We plan to release the UPLC virtual machine and all related components under the Apache License 2.0.
[METADATA] Horizons
Developer Tools
[SOLUTION] Please describe your proposed solution
We propose to develop a UPLC virtual machine within the Cardano-C library. This solution will include, UPLC data types and functions, serialization to and from Flat/CBOR and a CEK UPLC evaluation machine to accurately calculate execution costs of scripts within transactions.
Perceiving the Problem:
The current Cardano-C library lacks the capability to execute UPLC scripts locally, this will allow the library to evaluate scripts in transactions and calculate Tx fees and execution budgets locally without the need to make a request to a backend.
Approach and Justification:
Our approach to integrating a UPLC virtual machine directly into the Cardano-C library is driven by the necessity for a robust, feature-complete tool that supports the diverse needs of developers. By designing the library to be easily bindable to multiple languages, we ensure that these advanced capabilities are accessible not just in C but across all platforms that interact with the library. This strategic decision amplifies the impact and utility of the Cardano-C library.
Engagement and Beneficiaries:
The project will engage mostly blockchain developers and application builders.
Demonstrating and Proving Impact:
We will measure the impact of this project through developer adoption rates and feedback from the developer community and analytics on library usage will further validate the effectiveness of this integration.
Uniqueness and Importance to Cardano:
Our solution stands out through its uncompromising focus on security and validation. In the development of the UPLC virtual machine within the Cardano-C library, we adhere strictly to MISRA C compliance, ensuring the highest standards of code safety are met. This commitment extends to achieving near-complete code coverage, supplemented by rigorous testing practices including the use of tools like Valgrind to prevent memory leaks and ensure resource management.
Moreover, we employ testing techniques such as fuzzing and utilize multiple static analysis tools to thoroughly vet the codebase for vulnerabilities and errors. These measures are critical in a domain where reliability is paramount.
[IMPACT] Please define the positive impact your project will have on the wider Cardano community
Value to the Cardano Community:
The integration of a UPLC virtual machine within the Cardano-C library significantly enhances its utility and functionality, offering advanced tools that empower the community of blockchain developers. This addition not only strengthens the library's capabilities but also simplifies the complexities involved in dApp development and transaction creation for all users.
By incorporating this virtual machine, the Cardano-C library can abstract more of the underlying requirements essential for accurately building and validating transactions. Developers can rely on the library to handle the intricacies of script costs and their computations effectively.
This integration directly contributes to the growth and sophistication of the Cardano ecosystem, making it a more attractive platform for developers looking to build complex and scalable blockchain solutions.
Measuring Impact:
- Quantitative Measures: We will track the adoption rate of cardano-c library and its bindings.
- Qualitative Measures: Feedback from developers will be gathered. This feedback will help gauge user satisfaction and identify areas for further enhancement of the library.
[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?
Our team brings a deep wealth of experience and a proven track record in software development, particularly in the areas crucial for this project. My background includes extensive work on the Cardano and developing critical components such as serialization and cryptographic modules in TypeScript and C. I have over ten years of experience in C and C++ programming, with a focus on high-stakes applications.
Alejandro Claro, is a physicist and has been working as a Software Engineer for over 20 years developing products in C/C++ in mission critical projects. His expertise extends to software engineering, architecture design, API development, embedded system and compilers.
Our UPLC virtual machine with have extensive test coverage which will give us the assurance that our implementation works and implements all core functionalities correctly, (such as script execution and cost calculations).
For budget management, we have prepared a detailed budget that allocates funds to each phase of the project. The majority of our project costs are attributed to developer salaries, which directly correlate with time invested—making it straightforward to demonstrate and manage expenditures. Moreover, our use of the Catalyst project's milestone and fund distribution system ensures that funds are allocated equitably and transparently. This system not only guarantees that funding is disbursed as project milestones are achieved but also involves regular validation and verification by project reviewers, ensuring strict adherence to budgetary guidelines and project objectives.
[PROJECT MILESTONES] What are the key milestones you need to achieve in order to complete your project successfully?
Requirements Gathering and Architecture Design
A: Milestone Outputs
- Development of a comprehensive design document that details the technical specifications and architectural plans for integrating the UPLC virtual machine within the Cardano-C library.
- This document will outline the UPLC data types, functions, and serialization mechanisms needed, as well as the architectural design of the CEK machine for execution cost calculation.
B: Acceptance Criteria
- The design document must fully articulate the library's new architecture, including detailed interfaces for UPLC script execution and cost computation.
C: Evidence of Milestone Completion
- A set of documents articulating the planned architecture and functionality.
A: Milestone Outputs
- Development of the core components of the UPLC virtual machine, including data types, basic functions, and initial serialization/deserialization functionalities.
- Execution of initial unit tests to validate basic functionalities and integration into the Cardano-C library.
B: Acceptance Criteria
- Core components must be developed according to the specifications outlined in the design document.
- Initial tests must show that the components are functioning correctly and are integrated without disrupting existing library functionalities.
C: Evidence of Milestone Completion
- GitHub repository links to the committed code for the new components.
- A preliminary test report detailing results and any adjustments made.
- Documentation of testing procedures and outcomes, consolidated in a quality assurance report that includes testing outcomes and MISRA compliance.
Advanced Features Implementation and Comprehensive Testing
A: Milestone Outputs
- Completion of advanced features including full serialization capabilities and the CEK UPLC evaluation machine.
- Development and execution of a comprehensive testing protocol that includes unit, integration, and system tests across the UPLC components.
B: Acceptance Criteria
- Advanced features must be fully functional and integrate seamlessly with the Cardano-C library.
- Testing protocols must thoroughly evaluate all functionalities, demonstrating reliability and accuracy in script execution cost calculations.
C: Evidence of Milestone Completion
- Detailed test reports documenting the testing procedures, outcomes, and compliance with MISRA standards.
- GitHub updates with links to the second iteration of core modules, complete with detailed change logs.
Optimization, Final Testing, and Documentation
A: Milestone Outputs
- Conducting optimization tweaks to enhance performance and resource efficiency.
- Finalizing comprehensive documentation that covers setup, usage, and examples of the UPLC virtual machine.
B: Acceptance Criteria
- The UPLC virtual machine must demonstrate optimized performance and resource management in diverse scenarios.
- Documentation must be clear, thorough, and enable developers to easily integrate and utilize the new features.
C: Evidence of Milestone Completion
- Performance reports showcasing the efficiency improvements.
- The complete set of documentation, hosted on an accessible platform or repository.
- Detailed test reports documenting the testing procedures, outcomes, and compliance with MISRA standards.
Final Adjustments and Release
A: Milestone Outputs
- Incorporation of all feedback received during the testing phases to finalize the UPLC virtual machine.
- Official release of the updated Cardano-C library including the UPLC virtual machine.
B: Acceptance Criteria
- The final version of the library must meet all functional, security, and performance standards.
C: Evidence of Milestone Completion
- The final version of the library, available on GitHub or another version control system, along with all associated documentation.
- Complete set of documentation available online.
- Documentation of testing procedures and outcomes, consolidated in a quality assurance report that includes testing outcomes and MISRA compliance.
[RESOURCES] Who is in the project team and what are their roles?
Angel Castillo - Co-Lead Developer
- GitHub: https://github.com/AngelCastilloB
- LinkedIn: https://www.linkedin.com/in/angelcastillob/
- Role: Co-lead the project alongside Alejandro, focusing on the development and integration of the UPLC virtual machine within the Cardano-C library. Angel will leverage his extensive experience in C/C++ and his deep understanding of the Cardano blockchain to ensure the project adheres to the highest standards of quality and functionality.
- Experience: With over a decade of experience in developing mission-critical applications and a significant track record within the Cardano ecosystem, Angel brings crucial expertise in blockchain technology and library development.
Alejandro Claro - Co-Lead Developer
- Github: https://github.com/alejandroclaro
- LinkedIn: https://www.linkedin.com/in/alejandroclaro/
- Role: Share leadership and technical responsibilities with Angel, focusing on the architecture and compliance aspects of the UPLC virtual machine. Alejandro's background in software engineering and physics will be pivotal in addressing the computational and integration challenges of the project.
- Experience: Alejandro's career spans substantial roles in software development for electoral systems, with specialized skills in C/C++, and systems architecture. His academic grounding in physics and computational methods adds a unique depth to handling complex algorithmic challenges.
[BUDGET & COSTS] Please provide a cost breakdown of the proposed work and resources
Milestone 1: Initial Setup and Framework Development
- Duration: 1 month
- Budget Allocation: 30,000 ADA
- Angel Castillo: 15 days at 1,000 ADA/day = 15,000 ADA
- Alejandro Claro: 15 days at 1,000 ADA/day = 15,000 ADA
Milestone 2: Core Development and Initial Testing
- Duration: 2 months
- Budget Allocation: 60,000 ADA
- Angel Castillo: 30 days at 1,000 ADA/day = 30,000 ADA
- Alejandro Claro: 30 days at 1,000 ADA/day = 30,000 ADA
Milestone 3: Advanced Features Implementation and Comprehensive Testing
- Duration: 2 months
- Budget Allocation: 60,000 ADA
- Angel Castillo: 30 days at 1,000 ADA/day = 30,000 ADA
- Alejandro Claro: 30 days at 1,000 ADA/day = 30,000 ADA
Milestone 4: Optimization, Final Testing, and Documentation
- Duration: 1 month
- Budget Allocation: 30,000 ADA
- Angel Castillo: 15 days at 1,000 ADA/day = 15,000 ADA
- Alejandro Claro: 15 days at 1,000 ADA/day = 15,000 ADA
Milestone 5: Final Adjustments and Release
- Duration: 1 month
- Budget Allocation: 20,000 ADA
- Angel Castillo: 10 days at 1,000 ADA/day = 10,000 ADA
- Alejandro Claro: 10 days at 1,000 ADA/day = 10,000 ADA
[VALUE FOR MONEY] How does the cost of the project represent value for money for the Cardano ecosystem?
The costs associated with developing the UPLC virtual machine for the Cardano-C library are justified by the specialized nature of the work, the high standards required for blockchain technology, and the significant benefits it brings to the Cardano ecosystem.
The integration of a UPLC virtual machine will significantly enhance the capabilities of the Cardano-C library, making it a more robust tool for developers across the ecosystem, and via its bindings potentially to dozen of other programing languages.
Furthermore, the open-source nature of the project ensures that the developments will be freely available to the community, multiplying the return on investment as more developers leverage the new tools to create innovative applications on the Cardano platform.