design-patterns

This project is dedicated to simplifying complex Plutus smart contract design patterns on the Cardano blockchain through the creation of two distinct libraries: one for Plutarch and another for Aiken. These libraries are designed to abstract away some of the more unintuitive and lesser-known design patterns, making them more accessible to developers. Below is an overview of the key features and design patterns these libraries address:

Key Features

  • Transaction Level Validation: Abstracts the intricacies of spending validator validation through:

    • Stake Validators using the "withdraw zero" trick.
    • Minting Policies for enhanced control and security.
  • Input/Output Indexing with Redeemers: Simplifies the management of input/output indexing, streamlining the process of associating redeemers with their respective inputs or outputs.

  • Strict Boolean Validation Checks: Offers a robust framework for implementing boolean binary operators, ensuring strict validation checks across Plutus, Plutarch, and Aiken.

  • PlutusTypeEnum Redeemers: Introduces an efficient data encoding method for simple redeemers, utilizing Enums to minimize complexity and optimize performance.

  • Normalization Techniques: Enhances data integrity and contract reliability through:

    • TxInfoMint Normalization: Cleanses txInfoMint data to eliminate 0 lovelace value entries, ensuring cleaner and more accurate data representation.
    • Validity Range Normalization: Standardizes the treatment of validity ranges, ensuring consistent and predictable contract behavior.

Documentation Overview

Each of the following documents provides a deep dive into the specific design patterns and features implemented in the libraries:

For more detailed information on each feature and design pattern, please refer to the individual documents.