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.
As already explained, Pallas aims at being an expanding set of components. The following tables describe the currently available crates, as well as the planned ones.
Ouroboros Network
| Crates |
Description |
| pallas-multiplexer |
Multithreaded Ouroboros multiplexer implementation using mpsc channels |
| pallas-miniprotocols |
Implementation of the Ouroboros network mini-protocols state-machines |
Ouroboros Consensus
| Crates |
Description |
| pallas-leadership |
Implementation of the slot leadership selection algorithm |
| pallas-selection |
Implementation of the consensus chain-selection algorithm |
Cardano Ledger
| Crates |
Description |
| pallas-primitives |
Ledger primitives and cbor codec for the different Cardano eras |
| pallas-ticking |
Time passage implementation for consensus algorithm |
| pallas-applying |
Logic for validating and applying new blocks and txs to the chain state |
| pallas-forecasting |
Ledger forecasting algorithm to be used by the consensus layer |
Shared
| Crates |
Description |
| pallas-crypto |
Shared Cryptographic primitives |
| pallas-codec |
Shared CBOR encoding / decoding using minicbor lib |
Etymology
Pallas: (Greek mythology) goddess of wisdom and useful arts and prudent warfare;