5个版本
0.1.4 | 2023年9月25日 |
---|---|
0.1.3 | 2023年8月15日 |
0.1.2 | 2023年4月18日 |
0.1.1 | 2023年3月9日 |
0.1.0 | 2023年2月15日 |
#6 in #everscale
每月 98 次下载
在 7 个crate中使用(通过 everscale-types)
32KB
903 行
Everscale 类型
状态:进行中
关于
一套用于Everscale区块链的原生类型和工具。
深受ton-labs-types
的启发,但更注重速度。
基本用法
从字节的表示形式中获取 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>()?;
虚拟化cell的使用方法相同
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
如何进行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
贡献
我们欢迎对项目的贡献!如果您注意到任何问题或错误,请随时打开问题或提交拉取请求。
许可协议
许可协议为以下之一
- Apache许可证,版本2.0(LICENSE-APACHE 或 https://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT 或 https://opensource.org/licenses/MIT)
由您选择。
依赖项
~265–710KB
~17K SLoC