aiken/crates/uplc
KtorZ 821f7bd8c7
Fix ToPlutusData serializer for V3
This is intense, as we still want to preserve the serializer for V1 &
  V2, and I've tried as much as possible to avoid polluting the
  application layer with many enum types such as:

  ```
  pub enum TxOut {
    V1(TransactionOutput),
    V2(TransactionOutput),
    V3(TransactionOutput),
  }
  ```

  Those types make working with the script context cumbersome, and are
  only truly required to provide different serialisation strategies. So
  instead, we keep one top-level `TxInfo V1/V2/V3` type, and we ensure
  to pass serialization strategies as type wrappers.

  This way, the strategy propagates through the structure up until it's
  eliminated when it reaches the relevant types.

  All-in-all, this strikes a correct balance between maintainability and
  repetition; and it makes it possible to define _different but mostly
  identical_ encoders for the various versions.

  With it, I've been able to successfully encode a V3 script context and
  match it against one produced using the Haskell libraries. More to
  come.
2024-08-13 10:55:23 +02:00
..
src Fix ToPlutusData serializer for V3 2024-08-13 10:55:23 +02:00
test_data chore: update the conformance tests 2024-02-20 13:05:28 -05:00
tests fix: fmt check 2024-05-30 16:09:32 +07:00
Cargo.toml Fix ToPlutusData serializer for V3 2024-08-13 10:55:23 +02:00
README.md chore: readmes in uplc and cli 2022-06-18 23:15:05 -04:00

README.md

Untyped Plutus Core

A crate for working with untyped plutus core. It handles parsing, conversion between various forms, and flat encoding/decoding.