funded
MLabs: Tooling upgrade for Conway compatibility.
Current Project Status
In Progress
Amount
Received
₳0
Amount
Requested
₳197,850
Percentage
Received
0.00%
Solution

We will upgrade our core Cardano tooling to ensure compatibility with the Conway era and enabling developers to build the latest features.

Problem

MLabs’ essential Cardano tooling requires upgrades for Conway-era compatibility and on-going maintenance.

Impact Alignment
Feasibility
Value for money

MLabs

1 member

MLabs: Tooling upgrade for Conway compatibility.

Please describe your proposed solution

Problem

Cardano’s CIP 57 support requires significant developer tools and infrastructure to enable smooth encoding and decoding of data, simplify usage for developers, and resolve compatibility and technical debt issues within existing systems like PLY. Without these improvements, developers face hurdles in implementing seamless data interactions, making it harder to scale and innovate on the Cardano platform.

Solution

We will update our core tooling suite - used in production and throughout the development of market-ready products to support these latest Cardano features. These projects include Ply, YtxP, Lambda Buffers, Tx-Village, Cardano.nix, and moving Plutip to Cardano-testnet

Market

Our target market includes Cardano developers, dApp creators, and projects building on the Cardano blockchain. By providing updated tooling, we enable these ecosystem participants to leverage the full potential of the Conway era, fostering innovation and growth in the Cardano ecosystem.

Please define the positive impact your project will have on the wider Cardano community

The project will significantly enhance the Cardano ecosystem by upgrading essential tools and libraries, ensuring compatibility with the latest Conway features. By implementing support for Plutus V3 types and introducing CIP 57 compliance, we are empowering developers to build more sophisticated decentralized applications (dApps) efficiently. This will foster innovation and attract more developers to the Cardano platform, ultimately driving growth and adoption within the ecosystem.

The successful implementation of these milestones will enable developers to leverage advanced features and functionalities provided by the Conway update, enhancing their ability to create and deploy dApps. It will provide robust, well-documented tools that simplify the development process, reducing the time and resources required to build compliant applications. Additionally, enhancing interoperability and standardization through adherence to CIPs will ensure that projects built on Cardano can seamlessly integrate with one another.

Quantitatively, we will track the number of developers adopting the upgraded tools and libraries, monitor the number of new dApps launched using the Plutus V3 types and CIP 57-compliant formats, and analyze the frequency of contributions to the associated GitHub repositories, such as issues raised, pull requests submitted, and user engagement metrics. Qualitatively, we will conduct feedback sessions with developers using the new features to gather insights on usability, functionality, and overall satisfaction. We will also collect case studies from developers who successfully implement their projects using the upgraded tools, showcasing their experiences and outcomes.

We will share the outputs and opportunities resulting from the project through work and documentation published on GitHub to assist developers in understanding and utilizing the new features effectively. Regular updates on project progress will be communicated through Cardano community channels, including forums, social media, and newsletters. All code will be made available on GitHub, allowing the community to inspect, modify, and build upon our work, fostering a collaborative environment.

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?

MLabs has a strong track record in Cardano development and tooling creation. As the creators and chief maintainers of the tools involved, we are confident in our capability to deliver the intended updates. Furthermore:

  • The Conway Update team includes experienced Cardano developers in the Cardano ecosystem.
  • We have successfully delivered numerous updates and similar projects before, through several Catalyst funds.
  • Our project is divided into clear milestones, allowing for regular validation of progress and approach.

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

Milestone 1: Updating YTxP to fully support the new Conway features

Outputs

This includes:

  • V3 support:
  • Yielding script is updated to support PlutusV3.
  • Supporting other Script Purposes:
  • Yielding script is updated to allow Certifying.
  • Yielding script is updated to allow Voting.
  • Yielding script is updated to allow Proposing.
  • Selective compilation:
  • Update script export to allow passing in a list of script purposes in order to perform selective compilation of the yielding script only including the ones requested by the user.
  • Documentation for this new option in the CLI.

Acceptance criteria

  • The yielding script is updated to V3, and this is demonstrated in the test suite.
  • Tests showing the yielding script being triggered at least once with each of the new script purposes.
  • CLI is updated with selective compilation, and the documentation is extended to describe how to use this new feature.

Evidence of milestone completion

  • Source code will be located at <https://github.com/mlabs-haskell/ytxp-lib>
  • CI jobs running tests that showcase the new supported script purposes.
  • Link to the documentation for the CLI that includes the new option for selective compilation.
  • Benchmarks on how much space can be saved using the new selective compilation.

Milestone 2: LambdaBuffers Conway support

Outputs

Implementation in repository:

  • Implementing codegen for all modules (Haskell, Plutarch, PlutusTx, Rust, TypeScript, PureScript) for all the new Plutus Ledger types <https://github.com/IntersectMBO/plutus/tree/master/plutus-ledger-api/src/PlutusLedgerApi/V3>
  • Create new golden tests for the above types, for all language modules.
  • Create new roundtrip tests for Eq, Json and PlutusData type classes (where applicable).
  • Implement new Plutus V3 types in plutus-ledger-api-rust and plutus-ledger-api-typescript.

Acceptance criteria

  • All Plutus V3 types are implemented.
  • All Plutus V3 types are covered by the golden tests.
  • All Plutus V3 have roundtrip tests for Eq, Json and PlutusData type classes (where applicable).

Evidence of milestone completion

  • Codegen implementation will be added to the github.com/mlabs-haskell/lambda-buffers repository.
  • Rust plutus-ledger-api types will be implemented in <https://github.com/mlabs-haskell/plutus-ledger-api-rust>
  • TypeScript plutus-ledger-api types will be implemented in <https://github.com/mlabs-haskell/plutus-ledger-api-typescript>

Milestone 3: TX Village Conway Compatibility

Outputs:

  • The transaction builder in the tx-village repository supports Conway types, allowing the creation of transactions from both V2 and V3 TxInfo types.
  • The builder correctly handles both V2 and V3 Plutus scripts.
  • Updated ledger simulator and flake-lang dependencies.
  • Type changes are integrated into the tx-indexer framework for correct parsing of V3 transactions.

Acceptance Criteria:

  • Tx-bakery successfully builds transactions using V3 TxInfo, verified through tests.
  • Ledger simulator dependencies are updated.
  • Tx-indexer correctly parses V3 transactions.

Evidence of Completion:

  • Updated libraries are available in the tx-village repository <https://github.com/mlabs-haskell/tx-village>
  • Continuous integration (CI) tests confirm that the implementation works correctly.

Milestone 4: Conway Support for cardano.nix

Outputs:

  • All cardano.nix modules are compatible with the latest versions of Cardano nodes in the Conway era, without major changes to the existing NixOS module interface.

Acceptance Criteria:

  • All packages used by the modules are updated to support the Conway era. (cardano-node, ogmios, kupo, blockfrost, oura, db-sync, etc).

Evidence of Completion:

  • The updated code is available in the cardano.nix repository. <https://github.com/mlabs-haskell/cardano.nix>
  • A CI job that runs the NixOS tests passes successfully.

Milestone 5: Light-weight local cluster solution to serve as an alternative for outdated plutip

Outputs:

  • NixOS modules that act as drop-in replacements for projects using Plutip as a private testnet launcher.
  • NixOS tests that ensure the module setup works with the tx-village end-to-end test suite, all run by a CI job.
  • Automatically generated, human-readable documentation on a GitHub Pages site.

Acceptance Criteria:

  • Source code is available in the tx-village repository.
  • CI jobs run tests and generate the documentation successfully.

Evidence of Completion:

  • The source code for the modules is available.
  • CI jobs confirm that tests run correctly.
  • Documentation is generated and accessible.

Final Milestone: PLY: Implementing CIP 57 Compatibility, Encoding/Decoding, and Schema Derivation

Outputs:

  • Ply updated with support for PlutusV3 types and CIP 57 in the mlabs-haskell/ply repository.
  • Ability to encode typed scripts into CIP 57 conforming JSON and decode them using tools for Haskell and CTL (Purescript).
  • Argument application mechanism that uses Ply types and schemas.
  • A test suite that covers encoding/decoding, argument application, and tests for PlyArgOf (unit and property tests).
  • Generic schema derivation for user-defined types with minimal user input.

Acceptance criteria:

  • Ply can write CIP 57 conforming typed scripts that can be read by CIP 57 parsers and Ply tools.
  • All tests in the test suite pass without errors.
  • Generic derivation works for arbitrary user-defined data types that can be encoded into Plutus Core.

Evidence of completion:

  • The repository contains updated code for encoding typed scripts into CIP 57-conforming JSON.
  • Test suite results show all tests passing, including round-trip tests, unit tests, and property tests.
  • Examples of successful schema derivation for user-defined types are demonstrated.
  • Documentation and code for the new features are available in the repository at <https://github.com/mlabs-haskell/ply>

Who is in the project team and what are their roles?

MLabs

MLabs has quickly become one of the premier development firms in the Cardano Ecosystem. We are an IOG Plutus Partner and work regularly with IOG to develop the Cardano blockchain and ecosystem. Our team is composed of talented developers who have helped build community projects such as:

  • Indigo
  • Liqwid
  • SundaeSwap
  • Minswap
  • Optim
  • Many others

Through our work with early-stage projects, we have one of the largest groups of Haskell/Plutus developers in the community.

Website: <https://mlabs.city/>

Core team

Senior Developer

Drazen Popvic

Full-stack Cardano distributed application (dApp) developer and auditor, working on several Cardano dApps spanning Haskell, Purescript, Rust, and Nix language environments. Worked on decentralized protocols based on the Cardano blockchain including decentralized exchange, synthetic assets, oracle protocols, and programmable money. In particular, he was the technical lead on the Cardano Open Oracle Protocol and was responsible for design and implementation.

LinkedIn [https://www.linkedin.com/in/dra%C5%BEen-popovi%C4%87-70355949/]

Senior Developer

Gergely Szabo

Cardano distributed application (dApp) developer with a full-stack web engineer background, working on several dApps and supporting libraries for dApp development, using languages such as Haskell, Rust, PureScript, and Nix. Worked as a technical lead on a Cardano Sidechain project, and was the creator of BPI, a Plutus backend service (now deprecated), and tx-bakery, a Rust-based Cardano transaction builder library.

https://github.com/szg251

Software Developer

Connor Fang

Connor Fang is a Haskell engineer at MLabs. With over three years of experience in the Cardano stack, he has helped develop and maintain various protocols and open-source projects. Notably, he implemented a significant portion of Liqwid’s agora governance protocol’s on-chain part. He specializes in various on-chain and off-chain toolkits, including but not limited to Plutarch, CTL, and nix, and he hopes that his passion can bring power to Cardano’s growth.

https://github.com/chfanghr

Project Manager

Jordan Hill

Seasoned Delivery Manager specializing in blockchain technology and non-EVM chains, adept at orchestrating cross-functional teams for timely and budget-conscious project deliveries. With expertise in both on-chain and off-chain development, Jordan crafts blockchain solutions that harness the potential of decentralized systems, driving innovation in the field.

https://www.linkedin.com/in/jordan-hill-64024772/

Please provide a cost breakdown of the proposed work and resources

Milestone 1 (YTxP Update and Support): 138 hours

14 h - Research verifying the new Chang+1 HF staking semantics

11 h - Update YTxP to v3 scripts

15 h - Add support for Certifying Script Purpose

15 h - Add support for Proposing Script Purpose

14 h - Add support for Voting Script Purpose

22 h - Research Selective script compilation

47 h - Add CLI to selectively compile requested parts of the script in order to reduce size

Milestone 2 (LambdaBuffers Conway Support): 44 hours

Milestone 3 (Transaction Village Conway Compatibility): 77 hours

Milestone 4 (Conway Support for cardano.nix): 66 hours

Milestone 5 (Light-weight Local Cluster Solution): 22 hours

Final Milestone (PLY: Implementing CIP 57 Compatibility): 180 hours

22 h - Research and design integration for CIP 57, focusing on how it fits within the current Cardano protocol

22 h - Develop key components using Plutarch, focusing on efficient validator design and on-chain logic

22 h - Work with Purescript and CTL to integrate with off-chain components and ensure compatibility

19 h - Implement encoding/decoding logic to support CIP 57, focusing on streamlining data processing

19 h - Automate the derivation process for PlyArg, reducing manual code generation

19 h - Add decoding support for CIP 57 in the Cardano Transaction Library (CTL) to handle new transaction types

19 h - Update project dependencies to ensure synchrony with the latest developments in the Cardano ecosystem

19 h - Simplify data encoding so that users don't have to provide it separately, enhancing user experience

19 h - Perform thorough testing to validate the implementation and ensure all components work as expected

Subtotal: 527 hours @110 USD/hour = 57,970 USD

Total (@ rate $0.293 USD / ADA): 197,850 ADA

**In the interest of full transparency, please note we have applied a conservative USD/ADA exchange rate in pricing this proposal. This is to ensure our operations remain stable regardless of market conditions. Although we firmly believe the future of Cardano is bright, we recognize the price of ADA and all cryptocurrencies is inherently volatile. Our financial obligations are denominated in fiat. Most importantly, this includes the salary of our engineers whose hard work makes projects like this possible.

In the unlikely scenario of severe negative price movement beyond our forecasted rate, it is possible that MLabs may need to temporarily suspend work on this proposal until the market recovers. Rest assured, this decision would be made solely to protect our business's long-term viability and never taken lightly. We appreciate your understanding and support, and we are excited to see what we can achieve together.

No dependencies.

How does the cost of the project represent value for money for the Cardano ecosystem?

By upgrading essential tooling, we're enabling the entire Cardano developer community to leverage Conway-era features, accelerating ecosystem growth and adoption while delivering excellent value for the cost of this proposal. Moreover, the tooling upgrades will have a lasting impact, benefiting the ecosystem well beyond the project's duration. As previously mentioned, all our work will be open-source, providing ongoing value to the community without additional cost.

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