4 releases
0.20.3 | Nov 10, 2024 |
---|---|
0.19.5 | Oct 25, 2024 |
0.19.4 | Oct 24, 2024 |
0.19.3 | Oct 11, 2024 |
0.19.3-beta.1 |
|
#564 in Magic Beans
224 downloads per month
Used in anychain-ton
270KB
6.5K
SLoC
Rust SDK for The Open Network
Rust SDK for The Open Network
Features
- Support parsing and generation of Cell and BagOfCell for more convenient interaction with data structures
- Support of existing Wallet versions
- Derive wallet address
- Support of TON Mnemonics
- NaCl-compatible Ed25519 signing of transactions
Usage
To use this library in your Rust application, add the following to your Cargo.toml file:
[dependencies]
tonlib-core = "0.20"
Then, in your Rust code, you can import the library with:
use tonlib_core;
Package contents
Cell
Data structures and helpers for building and parsing Cell and Bag of Cells. See the documentation on ton.org for details.
Message
Data structures, builders, and parsers for Message See the documentation on ton.org for details.
Includes standard messages for Jetton, NFT, and Soulbound NFT, specified by TON Enhancement Proposal.
Mnemonic
Data structure to store mnemonic.
Types
Data structures for storage and easy conversion of Ton Smart-contract Address and Ton Transaction Id
Wallet
Data structure for deriving wallet addresses.
Usage examples
Cell
Creating a Cell
and writing data to it:
use anyhow::anyhow;
use tonlib_core::TonAddress;
use tonlib_core::cell::CellBuilder;
fn write_cell() -> anyhow::Result<()> {
let mut writer = CellBuilder::new();
let addr = TonAddress::from_base64_url("EQDk2VTvn04SUKJrW7rXahzdF8_Qi6utb0wj43InCu9vdjrR")?;
let cell = writer
.store_u32(32, 0xFAD45AADu32)?
.store_bit(true)?
.store_u8(8, 234u8)?
.store_slice(&[0xFA, 0xD4, 0x5A, 0xAD, 0xAA, 0x12, 0xFF, 0x45])?
.store_address(&addr)?
.store_string("Hello, TON")?
.build()?;
# Ok(())
}
Reading data from a Cell
:
use tonlib_core::cell::Cell;
fn read_cell(cell: Cell) -> anyhow::Result<()> {
let mut reader = cell.parser();
let u32_value = reader.load_u32(32)?;
let bit_value = reader.load_bit()?;
let u8_value = reader.load_u8(8)?;
let bytes_value = reader.load_bytes(8)?;
let address_value = reader.load_address()?;
let str_value = reader.ensure_empty()?;
Ok(())
}
Dependencies
~5MB
~96K SLoC