Pull-mirror of github.com/Sulkta-Coop/pallas. Canonical lives on GitHub; this is a LAN-fast read-only cache.
addresses the four TODO comments in pallas-txbuilder/src/transaction/model.rs and conway.rs around auxiliary_data + auxiliary_data_hash. without this the conway builder hardcodes auxiliary_data: None, which blocks CIP-20 / CIP-25 / CIP-68 metadata. implementation: - new StagingTransaction field: pub auxiliary_data: Option<Vec<u8>>. stored as opaque cbor bytes (caller encodes alonzo::AuxiliaryData) since AuxiliaryData itself doesn't impl Eq, which the rest of StagingTransaction requires. - builder methods .auxiliary_data(cbor) and .clear_auxiliary_data(). - conway::build_conway_raw now decodes the bytes back into AuxiliaryData::decode_fragment and plugs it into pallas_tx.auxiliary_data. the existing auxiliary_data_hash population block is unchanged — it already computes the hash from pallas_tx.auxiliary_data after assignment. - decode failures map to TxBuilderError::CorruptedTxBytes. tests: - auxiliary_data_round_trips_through_build: encodes a CIP-25-shaped metadata, attaches, builds, decodes resulting tx, asserts both body.auxiliary_data_hash matches expected_hash.compute_hash() and the aux re-encodes byte-equivalent. - no_auxiliary_data_means_no_hash: confirms the absence path still works (no aux → hash field stays None). both pre-existing tests (staging_json_roundtrip, built_json_roundtrip, test_script_data_hash) continue to pass — the new field defaults to None and rides alongside. PR upstream pending; using as a vendored patch via [patch.crates-io] on the Sulkta side until merge. |
||
|---|---|---|
| .chglog | ||
| .github | ||
| assets | ||
| examples | ||
| pallas | ||
| pallas-addresses | ||
| pallas-applying | ||
| pallas-bech32 | ||
| pallas-codec | ||
| pallas-configs | ||
| pallas-crypto | ||
| pallas-hardano | ||
| pallas-math | ||
| pallas-network | ||
| pallas-primitives | ||
| pallas-traverse | ||
| pallas-txbuilder | ||
| pallas-utxorpc | ||
| pallas-wallet | ||
| test_data | ||
| .gitignore | ||
| Cargo.toml | ||
| CHANGELOG.md | ||
| LICENSE | ||
| README.md | ||
| rustfmt.toml | ||
| SECURITY.md | ||
Rust-native building blocks for the Cardano blockchain ecosystem
Introduction
Pallas is an expanding collection of modules that re-implements common Ouroboros / Cardano logic in native Rust. This crate doesn't provide any particular application, it is meant to be used as a base layer to facilitate the development of higher-level use-cases, such as explorers, wallets, etc (who knows, maybe even a full node in a far away future).
Unboxing
The repository is organized as a Cargo workspace. Each Pallas "building block" lives in its own crate. The root pallas crate serves as an all-in-one dependency that re-exports all of the other modules in an hierarchically organized fashion, using Cargo features to tailor the setup for each use-case.
Core
| Crates | Description |
|---|---|
| pallas-codec | Shared CBOR encoding / decoding using minicbor lib |
| pallas-crypto | Shared Cryptographic primitives |
| pallas-math | Shared mathematics functions |
Network
| Crates | Description |
|---|---|
| pallas-network | Network stack providing multiplexer and mini-protocol implementations |
Ledger
| Crates | Description |
|---|---|
| pallas-primitives | Ledger primitives and cbor codec for the different Cardano eras |
| pallas-traverse | Utilities to traverse over multi-era block data |
| pallas-addresses | Encode / decode Cardano addresses of any type |
Wallet
| Crates | Description |
|---|---|
| pallas-wallet | Wallet utilities for secure key management |
| pallas-txbuilder | Ergonomic transaction builder |
Interop
| Crates | Description |
|---|---|
| pallas-hardano | Interoperability with implementation-specific artifacts of the Haskell Cardano node |
| pallas-utxorpc | Interoperability with the UTxO RPC specification |
Etymology
Pallas: (Greek mythology) goddess of wisdom and useful arts and prudent warfare;