Pallas Logo Pallas Logo

Rust-native building blocks for the Cardano blockchain ecosystem

GitHub Crates.io GitHub Workflow Status

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-traverse | Utilities to traverse over multi-era block data | | pallas-addresses | Encode / decode Cardano addresses of any type | | 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;