Thanks to visit codestin.com
Credit goes to lib.rs

#blockchain #tycho #status

tycho-types

A set of primitive types and utilities for the Tycho node

5 releases

Uses new Rust 2024

new 0.3.2 Jan 27, 2026
0.3.1 Dec 30, 2025
0.3.0 Sep 30, 2025
0.2.1 Jul 25, 2025
0.2.0 Jun 26, 2025

#9 in #tycho

Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App

310 downloads per month
Used in 18 crates (16 directly)

MIT/Apache

1.5MB
39K SLoC

tycho-types   crates-io-batch docs-badge rust-version-badge workflow-badge

Status: WIP

About

A set of primitive types and utilities for the Tycho node.

Basic usage

Decode Cell from bytes using the BOC (Bag Of Cells) format:

use tycho_types::boc::Boc;

let cell: Cell = Boc::decode(bytes)?;

Encode TLB model e.g.MerkleProof:

use tycho_types::boc::BocRepr;

let proof = MerkleProof::create_for_cell(cell.as_ref(), some_filter).build()?;

let encoded = BocRepr::encode_base64(proof)?;
let decoded = BocRepr::decode_base64(encoded)?:

Parse TLB type from Cell:

use tycho_types::models::BlockProof;

let proof: BlockProof = cell.parse::<BlockProof>()?;

Parse TLB type from proof cell (partially pruned):

use tycho_types::cell::DynCell;
use tycho_types::models::Block;

let virt_cell: &DynCell = proof.virtualize();
let block = virt_cell.parse::<Block>()?;

Use CellBuilder to create any Cell:

let mut builder = CellBuilder::new();
builder.store_bit_one()?;
builder.store_u32(100u32)?
builder.store_slice(slice)?;
builder.store_raw(&[0xdd, 0x55], 10)?;

// store references to another cells
builder.store_reference(cell)?;
builder.store_reference(another_cell)?;

let final_cell: Cell = builder.build()?;

// === or ===
let other_cell: Cell = CellBuilder::build_from((
    true,
    100u32,
    cell,
    another_cell,
))?;

Development

How to bench

cargo bench boc
cargo bench dict

How to miri check

# Add Miri component
rustup +nightly component add miri

# Run all tests with Miri
cargo +nightly miri test

How to fuzz

# Install fuzzer
cargo install cargo-fuzz

# Run any of the fuzzer targets
cargo +nightly fuzz run boc_decode -j 12
cargo +nightly fuzz run boc_decode_encode -j 12
cargo +nightly fuzz run boc_decode_pair -j 12
cargo +nightly fuzz run boc_dict -j 12
cargo +nightly fuzz run boc_message -j 12

Contributing

We welcome contributions to the project! If you notice any issues or errors, feel free to open an issue or submit a pull request.

License

Licensed under either of

at your option.

Dependencies

~1.9–5.5MB
~106K SLoC