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.