[x] Integration tooling for the build environment (Cabal, Spago. Nix).
LambdaBuffers team developed and provided their users with a set of Nix utility functions for building .lbf schemas into all the supported target language environments. Additionally, we extended the Nix support for working with Haskell and Purescript projects to allow for adding data and library dependencies which is crucial for adoption of any tool that leverages automated code generation.
The LB Cardano Demo project demonstrates the use of said Nix functions which results in a very concise and complete scaffold for any LambdaBuffers powered project.
[x] Continuous integration for regularly deploying toolkit packages to a package repository.
Hercules CI has been operating on the LambdaBuffers repo since the very start, and all the packages are readily available using Nix.
[x] A Cardano dApp project partnership to help integrate the toolkit in their development and build environments.
The LB Cardano Demo project demonstrates the end to end Cardano dApp that uses LambdaBuffers and Plutus scripts written in both Plutarch and PlutusTx, whereas Cardano Transaction Library is used to construct transactions and test against the real network (using Plutip) that everything works as intended.
[x] Documentation for integrating the build environment.
The LB Cardano Demo project demonstrates how to use LambdaBuffers and users are recommended to refer to that repo's README to help them integrate LambdaBuffers in their project.
[x] Cardano dApp project maintains all the Plutus domain types in the configuration file and has fully equipped type libraries made available automatically via build environment integration tooling.
A demo project exists at https://github.com/mlabs-haskell/lambdabuffers-cardano-demo that showcase end to end use of the LambdaBuffers toolkit. The project defines the plutus and configuration API in api directory, the validation directory contains the same onchain script logic implemented using PlutusTx and Plutarch, the transactions directory contains transaction building logic using Cardano Transaction Library. All the devops is achieved using concise build.nix Nix based build recipes for each sub-project. Finally, the CI is also instructed to run the end to end test that tries out both Plutarch and PlutusTx scripts assuring it works as intended.
Evidence of Milestone Completion
[x] Completed and reviewed build environment integration tooling and source code are available in the project repository.
The extras contains all the Nix libraries the LB team developed to facilitate and streamline Cardano dApp development using LambdaBuffers and supported language ecosystems (Haskell, Purescript, Cardano Transaction Library, PlutusTx and Plutarch).
[x] Toolkit packages are available in the package repository.
All LambdaBuffers tools are available using Nix.
[x] Proof of use is provided by the partner dApp.
The LB Cardano Demo project demonstrates the end to end Cardano dApp that uses LambdaBuffers and Plutus scripts written in both Plutarch and PlutusTx, whereas Cardano Transaction Library is used to construct transactions and test against the real network (using Plutip) that everything works as intended.
[x] Tooling use documentation is available in the project repository.
The LB Cardano Demo project demonstrates how to use LambdaBuffers and users are recommended to refer to that repo's README to help them integrate LambdaBuffers in their project.
Outputs
[x] Integration tooling for the build environment (Cabal, Spago. Nix).
.lbf
schemas into all the supported target language environments. Additionally, we extended the Nix support for working with Haskell and Purescript projects to allow for adding data and library dependencies which is crucial for adoption of any tool that leverages automated code generation.[x] Continuous integration for regularly deploying toolkit packages to a package repository.
[x] A Cardano dApp project partnership to help integrate the toolkit in their development and build environments.
[x] Documentation for integrating the build environment.
Acceptance Criteria
[x] Toolkit packages are available in a package repository (eg. Nixpkgs, Hackage)
[x] Cardano dApp project maintains all the Plutus domain types in the configuration file and has fully equipped type libraries made available automatically via build environment integration tooling.
api
directory, thevalidation
directory contains the same onchain script logic implemented using PlutusTx and Plutarch, thetransactions
directory contains transaction building logic using Cardano Transaction Library. All the devops is achieved using concisebuild.nix
Nix based build recipes for each sub-project. Finally, the CI is also instructed to run the end to end test that tries out both Plutarch and PlutusTx scripts assuring it works as intended.Evidence of Milestone Completion
[x] Completed and reviewed build environment integration tooling and source code are available in the project repository.
[x] Toolkit packages are available in the package repository.
[x] Proof of use is provided by the partner dApp.
[x] Tooling use documentation is available in the project repository.
References:
Catalyst project sheet