solana_block_decoder/block/
ui_block.rs1
2use {
3 crate::{
4 block::{
5 encoded_block::{EncodedTransactionWithStatusMeta, EncodedConfirmedBlock},
6 },
7 },
8 solana_sdk::{
9 clock::{Slot, UnixTimestamp},
10 },
11 solana_transaction_status::{
12 Rewards,
13 },
14 serde_derive::{Serialize,Deserialize},
15};
16
17#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
18#[serde(rename_all = "camelCase")]
19pub struct UiConfirmedBlock {
20 pub previous_blockhash: String,
21 pub blockhash: String,
22 pub parent_slot: Slot,
23 #[serde(default, skip_serializing_if = "Option::is_none")]
24 pub transactions: Option<Vec<EncodedTransactionWithStatusMeta>>,
25 #[serde(default, skip_serializing_if = "Option::is_none")]
26 pub signatures: Option<Vec<String>>,
27 #[serde(default, skip_serializing_if = "Option::is_none")]
28 pub rewards: Option<Rewards>,
29 #[serde(default, skip_serializing_if = "Option::is_none")]
30 pub num_reward_partitions: Option<u64>,
31 pub block_time: Option<UnixTimestamp>,
32 pub block_height: Option<u64>,
33}
34
35impl From<EncodedConfirmedBlock> for UiConfirmedBlock {
36 fn from(block: EncodedConfirmedBlock) -> Self {
37 Self {
38 previous_blockhash: block.previous_blockhash,
39 blockhash: block.blockhash,
40 parent_slot: block.parent_slot,
41 transactions: Some(block.transactions),
42 signatures: None, rewards: Some(block.rewards),
44 num_reward_partitions: block.num_partitions,
45 block_time: block.block_time,
46 block_height: block.block_height,
47 }
48 }
49}