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