Pull-mirror of github.com/Sulkta-Coop/pallas. Canonical lives on GitHub; this is a LAN-fast read-only cache.
Find a file
Pi Lanningham fc2728639f
feat: Make the underlying TxBody type generic
* WIP

* Fix compilation on windows machines

* Make TxBody generic

Technically we should be generic over TxBody for arbitrary ouroboros implementations; however, that makes things awkward.  So, we introduce GenericClient and GenericServer, with concrete types that instantiate them to Cardano specific types.  We could have done this with default type arguments, but this pushes the type system to it's limits and it often can't infer the correct type

* More examples tweaks; clippy and fmt

* Remove unneccesary defaults

* Tag 24 is no longer mysterious

It means raw CBOR

* Cargo fmt

One day I'll configure vscode to do this on safe
2023-02-20 10:19:06 -05:00
.chglog docs: Add retroactive change log 2022-04-29 20:34:12 -03:00
.github ci: Skip publish confirmation prompt 2022-04-30 12:18:54 -03:00
assets chore: Add logo assets 2022-02-06 21:36:42 -03:00
examples feat: Make the underlying TxBody type generic 2023-02-20 10:19:06 -05:00
pallas Release 0.18.0 2023-02-04 09:01:11 -03:00
pallas-addresses Release 0.18.0 2023-02-04 09:01:11 -03:00
pallas-bech32 feat(miniprotocols): Implement tx submission client (#220) 2023-02-03 20:38:12 -05:00
pallas-codec Release 0.18.0 2023-02-04 09:01:11 -03:00
pallas-crypto Return the remote socket address when accepting a connection (#227) 2023-02-09 21:58:08 -05:00
pallas-miniprotocols feat: Make the underlying TxBody type generic 2023-02-20 10:19:06 -05:00
pallas-multiplexer Return the remote socket address when accepting a connection (#227) 2023-02-09 21:58:08 -05:00
pallas-primitives feat: Add constants for known miniprotocols 2023-02-05 06:13:55 -05:00
pallas-traverse feat: Add constants for known miniprotocols 2023-02-05 06:13:55 -05:00
test_data fix: Provide original hash for inline datum (#221) 2023-02-03 14:58:39 -03:00
.gitignore feat: Add Vasil / Babbage compatibility (#126) 2022-06-20 22:09:42 -03:00
Cargo.toml feat: Introduce Addresses crate (#137) 2022-06-23 22:31:12 -03:00
CHANGELOG.md Release 0.18.0 2023-02-04 09:01:11 -03:00
LICENSE Fill in place holders 2021-12-02 19:55:54 -03:00
README.md chore: Fix README badge (#217) 2023-01-26 07:26:36 -03:00
rustfmt.toml Implement multiplexer and mini-protocols PoC 2021-11-20 11:33:45 -03:00

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;