Skip to main content

avalanche_rs/pvm/parser/
commit_block_parser.rs

1use crate::avm::parser::Context;
2use crate::pvm::parser::block_parser::BlockData;
3use crate::utils::cb58::encode;
4use crate::utils::conversion::pop_i64;
5use rust_base58::ToBase58;
6use std::borrow::Borrow;
7use std::error::Error;
8use tracing::{instrument, trace};
9
10#[instrument(fields(block_id = % _context.tx_id, block_type = "commit_block"))]
11pub fn commit_block_parser(
12    _raw_msg: &[u8],
13    _context: &mut Context,
14) -> Result<BlockData, Box<dyn Error>> {
15    let parent_block_id = encode(&_raw_msg[*_context.offset..=(*_context.offset + 31)]).to_base58();
16    trace!("Parent block id : {:?}", parent_block_id);
17
18    *_context.offset += 32;
19
20    let height = pop_i64(_raw_msg[*_context.offset..=(*_context.offset + 7)].borrow());
21    trace!("Height : {:?}", height);
22
23    *_context.offset += 8;
24
25    Ok(BlockData {
26        type_id: 2,
27        height,
28        parent_block_id,
29        transactions: vec![],
30        credentials: vec![],
31    })
32}