Catalyst milestone 5 (FINAL): Project scaffold for Rust, JavaScript and Haskell
Outputs
-
A documented project scaffold that demonstrates the end-to-end use of LambdaBuffers with Rust, JavaScript, Haskell and PlutusTx language ecosystems.
-
A project scaffold that demonstrates end-to-end use of LambdaBuffers with Rust can be found here.
-
A project scaffold that demonstrates end-to-end use of LambdaBuffers with JavaScript (TypeScript) can be found here.
-
A project scaffold that demonstrates end-to-end use of LambdaBuffers with Haskell to create transactions can be found here.
-
A project scaffold that demonstrates end-to-end use of LambdaBuffers with Haskell for onchain scripts using Plutarch can be found here.
-
A project scaffold that demonstrates end-to-end use of LambdaBuffers with PlutusTx for onchain scripts can be found here.
-
The LambdaBuffers schema used in all the aforementioned projects can be found here.
-
-
Demonstrate how to use LambdaBuffers to manage and exchange JSON-based configuration between different language ecosystems supported by LambdaBuffers.
-
The JSON-based configuration defined with LambdaBuffers is over here.
-
The Rust transaction building project uses such JSON-based configuration over here.
-
The JavaScript (TypeScript) transaction building project uses such JSON-based configuration in its testsuite here.
-
The Haskell project uses such JSON-based configuration over here.
-
-
More importantly, demonstrates how to use LambdaBuffers to specify and exchange Plutus Datum between Plutus scripting languages and transaction-building frameworks.
-
A specification for Plutus Datum using LambdaBuffers is given here where we see its usage in Plutus scripting languages and transaction-building frameworks in the following files:
-
With the PlutusTx Plutus scripting language, we see it deserializes the
EqDatum
in theeqValidator
defined here. -
With the Plutarch Plutus scripting language, we see it deserializes the
EqDatum
in theeqValidator
defined here. -
With Rust, we can see it uses an
EqDatum
to build a transaction over here. -
With TypeScript, we can see it uses an
EqDatum
to build a transaction over here. -
With Haskell, we can see it uses an
EqDatum
to build a transaction over here.
-
-
-
A fully tested and documented LambdaBuffers support for Rust, JavaScript, Haskell and PlutusTx language ecosystems.
-
A full example project with LambdaBuffers complete with automated tests for Rust can be found here.
-
A full example project with LambdaBuffers complete with automated tests for JavaScript (TypeScript) can be found here.
-
A full example project with LambdaBuffers complete with automated tests for Haskell (using Rust's tx-village library) can be found here and here.
-
A full example project with LambdaBuffers for creating validators with PlutusTx can be found here.
-
-
A documented scaffold project that serves to demonstrate how to use LambdaBuffers with the newly supported languages for easy adoption.
-
A scaffold project that serves to demonstrate how to use LambdaBuffers with the newly supported languages for easy adoption are given in the previous bullet point.
-
The
README.md
serves as documentation for the scaffold projects which demonstrate how LambdaBuffers may be used with such languages.
-
-
Final close-out report.
- This document is the close-out report.
-
Final closeout video.
- Final closeout video can be found here.
Acceptance Criteria
-
A LambdaBuffers scaffold repository is made available that demonstrates a working end-to-end use of LambdaBuffers with Rust, JavaScript, Haskell and PlutusTx language ecosystems.
- A LambdaBuffers scaffold repository that demonstrates a working end-to-end use of LambdaBuffers with Rust, JavaScript (TypeScript), Haskell, and PlutusTx is provided here.
-
The scaffold uses LambdaBuffers to specify JSON configuration.
- The JSON-based configuration defined with LambdaBuffers is over here.
-
The scaffold uses LambdaBuffers to specify Plutus Datum.
- The scaffold uses LambdaBuffers to specify Plutus Datum here.
-
Final closeout video is publicly available.
- Final closeout video that is publicly available can be found here.
Evidence of Milestone Completion
-
The completed and reviewed LambdaBuffers scaffold project that uses LambdaBuffers to specify and exchange JSON based configuration between Rust, JavaScript, Haskell and PlutusTx language ecosystems.
-
The completed and reviewed LambdaBuffers scaffold project that uses LambdaBuffers to specify and exchange JSON based configuration in Rust was implemented in PR #12.
-
The completed and reviewed LambdaBuffers scaffold project that uses LambdaBuffers to specify and exchange JSON based configuration in JavaScript (TypeScript) was implemented in PR #18.
-
The completed and reviewed LambdaBuffers scaffold project that uses LambdaBuffers to specify and exchange JSON based configuration in Haskell was implemented in PR #27.
-
The completed and reviewed LambdaBuffers scaffold project that uses LambdaBuffers to specify and exchange JSON based configuration in PlutusTx was originally implemented in PR #1 and more recently updated in PR #25.
-
-
The completed and reviewed LambdaBuffers scaffold project that uses LambdaBuffers to specify and exchange Plutus Datums between Rust, JavaScript, Haskell and PlutusTx language ecosystems.
-
The completed and reviewed LambdaBuffers scaffold project that uses LambdaBuffers to specify and exchange Plutus Datums configuration in Rust was implemented in PR #12.
-
The completed and reviewed LambdaBuffers scaffold project that uses LambdaBuffers to specify and exchange Plutus Datums configuration in JavaScript (TypeScript) was implemented in PR #18.
-
The completed and reviewed LambdaBuffers scaffold project that uses LambdaBuffers to specify and exchange Plutus Datums configuration in Haskell was implemented in PR #27.
-
The completed and reviewed LambdaBuffers scaffold project that uses LambdaBuffers to specify and exchange Plutus Datums configuration in PlutusTx was originally implemented in PR #1 and more recently updated in PR #25.
-
-
We will record a video demonstrating the LambdaBuffers toolkit, how LambdaBuffers schemas are written and checked, and how code is generated from them in the newly supported programming languages.
- A video demonstrating the LambdaBuffers toolkit, how LambdaBuffers schemas are written and checked, and how code is generated from them in the newly supported programming languages can be found here.
-
We will publish a fully documented scaffold project that demonstrates how LambdaBuffers is used in Cardano dApp projects.
- The fully documented scaffold project that demonstrates how LambdaBuffers is used in Cardano dApp projects is in the lambda-buffers-for-cardano repository.
-
Link to final closeout video.
- Final closeout video can be found here.