pallas/examples/block-decode/src/main.rs
2022-03-18 16:12:50 -03:00

33 lines
1.2 KiB
Rust

use std::fmt::Debug;
use pallas::ledger::primitives::{alonzo, byron, probing, Era, Fragment};
fn pretty_print(block: impl Debug) {
println!("{:?}", block)
}
fn main() {
let blocks = vec![
include_str!("blocks/byron.block"),
include_str!("blocks/shelley.block"),
include_str!("blocks/mary.block"),
include_str!("blocks/allegra.block"),
include_str!("blocks/alonzo.block"),
];
for block_str in blocks.iter() {
let bytes = hex::decode(block_str).expect("valid hex");
match probing::probe_block_cbor_era(&bytes) {
probing::Outcome::Matched(era) => match era {
Era::Byron => pretty_print(byron::Block::decode_fragment(&bytes)),
// we use alonzo for everything post-shelly since it's backward compatible
Era::Shelley => pretty_print(alonzo::BlockWrapper::decode_fragment(&bytes)),
Era::Allegra => pretty_print(alonzo::BlockWrapper::decode_fragment(&bytes)),
Era::Mary => pretty_print(alonzo::BlockWrapper::decode_fragment(&bytes)),
Era::Alonzo => pretty_print(alonzo::BlockWrapper::decode_fragment(&bytes)),
},
_ => println!("couldn't infer block era"),
};
}
}