1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
use crate::avm::parser::Context;
use crate::pvm::parser::block_parser::BlockData;
use crate::utils::cb58::encode;
use crate::utils::conversion::pop_i64;
use rust_base58::ToBase58;
use std::borrow::Borrow;
use std::error::Error;
use tracing::{instrument, trace};

#[instrument(fields(block_id = %_context.tx_id, block_type = "abort_block"))]
pub fn abort_block_parser(
    _raw_msg: &[u8],
    _context: &mut Context,
) -> Result<BlockData, Box<dyn Error>> {
    let parent_block_id = encode(&_raw_msg[*_context.offset..=(*_context.offset + 31)]).to_base58();
    trace!("Parent block id : {:?}", parent_block_id);

    *_context.offset += 32;

    let height = pop_i64(_raw_msg[*_context.offset..=(*_context.offset + 7)].borrow());
    trace!("Block Height : {:?}", height);

    *_context.offset += 8;

    Ok(BlockData {
        type_id: 1,
        height,
        parent_block_id,
        transactions: vec![],
        credentials: vec![],
    })
}