[GENERAL] Name and surname of main applicant
Micah Kendall
[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)
4
[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)
Blaze will implement a blueprint package which can handle plutus data serialisation and deserialisation elegantly with the Blaze transaction builder and SDK.
[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
Blaze is an open source project and will remain open source for it's entirety, all work in this catalyst proposal will be open-source in the same repository at https://github.com/butaneprotocol/blaze-cardano
It will be released as part of the @blaze-cardano/core package https://www.npmjs.com/package/@blaze-cardano/core
[SOLUTION] Please describe your proposed solution
Blaze will develop a lightweight package for handling the serialisation and deserialisation of plutus data to be used in transaction building. It will be easy to use, safe, and familiar to developers who have experience with Typescript. Features include:
- Completely type-safe datums/redeemers with generated classes to handle serialization (similar design patterns to cardano-js-sdk)
- Associating datums/redeemers with specific scripts so the right data is passed into each script (eliminates risk of accidentally locking funds by sending malformed datums) and deserializing UTxO datums can be handled automatically
- Integration into Blaze TX builder to enforce only the correct datum serialisation is used with particular scripts (according to blueprint interface)
- Scripts derived from blueprint including parameter application remain type-safe
- Utilities for automatically handling basic types like addresses, policy IDs which can enforce length-checks, hex-encoding, e.t.c.
- Intuitive construction of Plutus data in typescript, using idiomatic patterns such as discriminated unions
[IMPACT] Please define the positive impact your project will have on the wider Cardano community
Offering a smooth data serialisation solution will dramatically reduce the time developers spend on bug-fixing, while also minimising lines of code and overall codebase bloat. Every Cardano developer requires some form of serialisation method, so we believe this project could have a positive impact across the ecosystem.
[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?
The Butane team has demonstrated itself as one of the top development teams in Cardano, producing a highly well-received protocol testnet and yellowpaper which has encouraged community and developer confidence in their technical merit. Blaze, in its current state, already offers a clean and efficient transaction building SDK and emulator that is being integrated within Butane to be used as the protocol's off-chain component.
Given the project is open source and has utility to effectively all developers on Cardano, the intention is to gather feedback from the developer community to shape Blaze into a highly efficient and usable platform for building applications on.
[PROJECT MILESTONES] What are the key milestones you need to achieve in order to complete your project successfully?
Lucid Data Feature-Parity
A: Milestone outputs
- SDK upgraded to allow usage of the blueprint standard json-schema for serialisation
- Datums/redeemers can be decoded/encoded without advanced type safety
B: Acceptance criteria
- Code implementation
- Documentation
- Examples
C: Evidence of milestone completion
- Docs/Examples available on https://blaze.butane.dev
- Github release / Versioning
- NPM package published
Auto-generated Data Classes and Types for Advanced Safety
A: Milestone outputs
- Upgraded blueprint generator which auto-generates classes and complex types for user datums, redeemers, and scripts
- Generated types and classes can be used with the SDK to safely and seamlessly construct data and send to/query from scripts
B: Acceptance criteria
- Code implementation
- Documentation
- Examples
C: Evidence of milestone completion
- Docs/Examples available on https://blaze.butane.dev
- Github release / Versioning
- NPM package published
Utilities for Handling Common Plutus Types Safely
A: Milestone outputs
- Mappings from cardano-js-sdk types to Plutus types that handle conversions and checks automatically (e.g. serializing addresses, credentials, asset classes)
- Integrations with the SDK that allow for the automatic serialization of common types as transactions are built and chain queries are made
B: Acceptance criteria
- Code implementation
- Documentation
- Examples
C: Evidence of milestone completion
- Docs/Examples available on https://blaze.butane.dev
- Github release / Versioning
- NPM package published
[RESOURCES] Who is in the project team and what are their roles?
Blaze is developed and maintained by the Butane team, developers with relevant skills will be considered and recruited where appropriate.
[BUDGET & COSTS] Please provide a cost breakdown of the proposed work and resources
All costs of the project go towards manpower costs (contracted / employed developers).
1 developer to undertake the project over 4 months, 20,000 ADA per month.
Tasks include the development of features, maintaining the library, and extensive documentation.
[VALUE FOR MONEY] How does the cost of the project represent value for money for the Cardano ecosystem?
The funding request is lower than the standard salary of a developer for the experience required to develop a plutus data handling library. By Blaze incorporating this package, it will be fully self-contained, and so developers are able to fully migrate to using a purely Javascript transaction builder which can allow for transaction building in-browser which benefits from features such as server side rendering.