over budget
Blaze: Plutus Data Serialisation
Current Project Status
Unfunded
Amount
Received
₳0
Amount
Requested
₳80,000
Percentage
Received
0.00%
Solution

Blaze will implement a blueprint package which can handle plutus data serialisation and deserialisation elegantly with the Blaze transaction builder and SDK.

Problem

Numerous issues and headaches in Cardano dApp development arise from the lack of safe, elegant, and easy-to-use Plutus data serialisation and blueprint generation utilities.

Impact Alignment
Feasibility
Value for Money
Impact Alignment

Team

2 members

Blaze: Plutus Data Serialisation

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

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.

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.

What are the key milestones you need to achieve in order to complete your project successfully?

Milestone 1: 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

Milestone 2: 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

Final Milestone: 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

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.

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.

No dependencies.

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.

close

Playlist

  • EP2: epoch_length

    Authored by: Darlington Kofa

    3m 24s
    Darlington Kofa
  • EP1: 'd' parameter

    Authored by: Darlington Kofa

    4m 3s
    Darlington Kofa
  • EP3: key_deposit

    Authored by: Darlington Kofa

    3m 48s
    Darlington Kofa
  • EP4: epoch_no

    Authored by: Darlington Kofa

    2m 16s
    Darlington Kofa
  • EP5: max_block_size

    Authored by: Darlington Kofa

    3m 14s
    Darlington Kofa
  • EP6: pool_deposit

    Authored by: Darlington Kofa

    3m 19s
    Darlington Kofa
  • EP7: max_tx_size

    Authored by: Darlington Kofa

    4m 59s
    Darlington Kofa
0:00
/
~0:00