![]() 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. |
||
---|---|---|
.github | ||
benchmarks | ||
crates | ||
examples | ||
.editorconfig | ||
.gitattributes | ||
.gitignore | ||
CHANGELOG.md | ||
CONTRIBUTING.md | ||
Cargo.lock | ||
Cargo.toml | ||
LICENSE | ||
README.md | ||
flake.lock | ||
flake.nix |
README.md
Getting Started
Hello, World!
Wanna get started right-away? Complete the Hello, World! tutorial!
Contributing
Want to contribute? See CONTRIBUTING.md to know how.
Changelog
Be on top of any updates using the CHANGELOG and the Project Tracking.
Stats
[!NOTE]
The name comes from Howard Aiken, an American physicist and a pioneer in computing.