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.