Please describe your proposed solution
The project aims to create a tool that simplifies the decoding of on-chain data, specifically datums and redeemers, on the Cardano blockchain. Currently, developers face challenges when dealing with CBOR-encoded data, as existing tools require manual effort to match data against specific schemas, leading to a cumbersome and error-prone process. Our solution provides an open-source tool that effortlessly converts CBOR data into a more accessible and human-readable format.
This tool will help developers by offering a seamless experience, saving time and reducing errors when working with on-chain data. By creating a public registry of datum and redeemer definitions, this project encourages a collaborative ecosystem where projects can share and use standardized schemas. Ultimately, this solution makes on-chain data more transparent and usable, benefiting the broader Cardano community by supporting more efficient and error-free development.
Project Overview:
- Public Registry:
- We will establish a public registry on GitHub where projects can host their datum and redeemer definitions. Our focus will be on optimally representing these definitions based on the CDDL specification, allowing individual elements to be named. The registry will also support type parameters, including inheritance and unions (e.g., Maybe<T> = Just<T> | Nothing).
- Open-Source Library:
- An open-source library will be developed, providing a function that converts CBOR into an object. This internal representation can be utilized by third parties—such as blockchain explorers, wallets and browser/IDE extensions—to display data in a custom way.
- Front-End Application:
- We will create and host an open-source front-end tool that allows users to paste CBOR data and view the readable datum according to a schema selected from the GitHub registry. The tool will also support locally defined schemas.
Example of Datum Decoding:
- Original CBOR:
- d8799fd87a80d87a801b0000019246e0ed9800ff
- Decoded via cbor.me:
- 121_0([_ 122_0([]), 122_0([]), 1727765999000_3, 0])
Decoded via Cardano explorers (Cexplorer, Cardanoscan):
{
"fields": [
{
"fields": [],
"constructor": 1
},
{
"fields": [],
"constructor": 1
},
{
"int": 1727765999000
},
{
"int": 0
}
],
"constructor": 0
}
Proposed more readable representation (table-aligned, expandable, with tooltips for field descriptions / formatting of timestamps / …)
WingRiders Launchpad node
(Node)
key: (Nothing)
next: (Nothing)
createdTime: 1727765999000
committed: 0