71 releases (24 breaking)

0.25.0 Apr 2, 2024
0.24.0 Mar 9, 2024
0.23.0 Feb 11, 2024
0.20.0 Nov 21, 2023
0.3.4 Dec 19, 2021

#714 in Magic Beans

Download history 82/week @ 2023-12-23 78/week @ 2023-12-30 37/week @ 2024-01-06 95/week @ 2024-01-13 114/week @ 2024-01-20 149/week @ 2024-01-27 236/week @ 2024-02-03 319/week @ 2024-02-10 609/week @ 2024-02-17 436/week @ 2024-02-24 406/week @ 2024-03-02 488/week @ 2024-03-09 351/week @ 2024-03-16 269/week @ 2024-03-23 368/week @ 2024-03-30 181/week @ 2024-04-06

1,218 downloads per month
Used in 8 crates (7 directly)

Apache-2.0

700KB
18K SLoC

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-network Network stack providing a multiplexer and mini-protocol implementations

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;

Dependencies

~10–27MB
~365K SLoC