Skip to content

A set of primitive types and utilities for the Everscale blockchain.

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

broxus/everscale-types

Folders and files

NameName
Last commit message
Last commit date

Latest commit

9c9296d · Jan 28, 2025
Jul 24, 2024
Jan 24, 2025
Sep 20, 2024
Jan 24, 2025
Jan 28, 2025
Nov 15, 2022
Jan 9, 2025
Dec 9, 2022
Dec 9, 2022
Apr 22, 2024

Repository files navigation

Logo

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

Status: WIP

About

A set of primitive types and utilities for the Everscale blockchain.

Heavily inspired by ton-labs-types, but with much more emphasis on speed.

Basic usage

Get Cell from Vec<u8> representation of bytes

use everscale_types::boc::Boc;

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

Encode any model e.g.MerkleProof to base64 BOC representation and vice versa

use everscale_types::boc::BocRepr;

let cell = MerkleProof::create_for_cell(cell.as_ref(), EMPTY_CELL_HASH)
            .build()
            .unwrap();

let encoded = BocRepr::encode_base64(&cell).unwrap();

let decoded = Boc::decode_base64(encoded)?.as_ref().parse::<MerkleProof>()?:

Get specific everscale type from Cell

use everscale_types::models::BlockProof;

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

Same usage for virtualized cell

use everscale_types::prelude::DynCell;
use everscale_types::models::Block;

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

You can also 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 = builder.build()?;

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.

About

A set of primitive types and utilities for the Everscale blockchain.

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages