#原始类型 #工具 #everscale #区块链 #类型 #状态 #ton-labs-types

everscale-types

一组用于 EverScale 区块链的原生类型和工具

18 个版本

0.1.0-rc.72024 年 6 月 10 日
0.1.0-rc.62023 年 10 月 24 日
0.1.0-rc.52023 年 9 月 25 日
0.1.0-rc.02023 年 7 月 27 日
0.1.0-pre.22022 年 12 月 28 日

#818 in 神奇豆子

Download history 17/week @ 2024-04-14 20/week @ 2024-04-21 20/week @ 2024-04-28 18/week @ 2024-05-05 15/week @ 2024-05-12 21/week @ 2024-05-19 14/week @ 2024-05-26 16/week @ 2024-06-02 142/week @ 2024-06-09 33/week @ 2024-06-16 24/week @ 2024-06-23 2/week @ 2024-06-30 32/week @ 2024-07-07 16/week @ 2024-07-14 2/week @ 2024-07-21 110/week @ 2024-07-28

每月下载量 160
6 个包中(直接使用 4 个)

MIT/Apache

1.5MB
31K SLoC

Logo

Everscale 类型   crates-io-batch docs-badge rust-version-badge workflow-badge

状态:WIP

关于

一组用于 EverScale 区块链的原生类型和工具。

深受 ton-labs-types 的启发,但更加注重速度。

基本用法

从字节的 Vec<u8> 表示形式获取 Cell

use everscale_types::boc::Boc;

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

将任何模型(例如 MerkleProof)编码为 base64 BOC 表示形式,反之亦然

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>()?:

Cell 获取特定的 EverScale 类型

use everscale_types::models::BlockProof;

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

虚拟化单元的用法相同

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

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

您还可以使用 CellBuilder 创建任何 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()?;

开发

如何进行基准测试

cargo bench boc
cargo bench dict

如何进行 miri 检查

# Add Miri component
rustup +nightly component add miri

# Run all tests with Miri
cargo +nightly miri test

如何进行模糊测试

# 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

贡献

我们欢迎对该项目的贡献!如果您发现任何问题或错误,请随时提交问题或发送拉取请求。

许可协议

许可协议为以下之一

由您选择。

依赖项

~1.8–9MB
~78K SLoC