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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
use serde::{Deserialize, Serialize};
use solana_program::clock::UnixTimestamp;
#[derive(Clone, Serialize, Deserialize)]
pub struct Block {
/// Basically the epoch this block belongs to
pub epoch: u32,
/// Parent block hash of the current block
pub previous_hash: String,
/// Validator producing said block
pub producer: String,
/// This block's hash
pub hash: String,
/// Parent block's number
pub parent_number: u64,
/// This block's number
pub number: u64,
/// Total count of transactions in the block
pub number_of_transactions: u32,
/// Total number of successful transactions
pub successful_transactions: u32,
/// Total transaction fees accumulated in the transactions within this block
pub total_tx_fees: u64,
/// Total number of rewards
pub number_of_rewards: u32,
/// Total amount of rewards accrued in this block
pub total_reward_amount: u64,
/// Total amount of compute units consumed
pub total_compute_units_consumed: u64,
/// Absolute limit of compute units
pub total_compute_units_limit: u64,
/// Time this block was proposed
pub block_time: u64
}
/// Record an instance of a transaction transfer at any given time.
/// Routing key
/// <account>#<mint>#<timestamp>
/// Schema column qualifiers
/// type —> receive | send
/// amount (in finalised format, e.g. 0.000031 <eth, excluded>)
/// txHash
///
#[derive(Clone, Serialize, Deserialize)]
pub struct Transfer {
// The transaction this instruction belongs to.
pub transaction_hash: String,
// Status of the transaction,
pub status: u16,
// The account that will give up the amount.
pub source: String,
// Should this be a token-based transfer, this will be the associated token account of the source.
pub source_association: Option<String>,
// The account that will receive the amount.
pub destination: String,
// Should this be a token-based transfer, this will be the associated token account of the destination.
pub destination_association: Option<String>,
// If this is empty, the balance relates to lamports. If its NOT empty, the balance relates to the
// token in question.
pub token: Option<String>,
// The amount transferred
pub amount: i128,
// Epoch time for when this input was added to the db.
pub timestamp: u64,
}
#[derive(Clone, Deserialize, Serialize)]
pub struct TransactionInfo {
pub hash: String,
pub status: u16,
pub fee: u64,
pub total_cu_consumed: u64,
pub program_consumptions: Vec<ProgramConsumption>,
pub transfers: Vec<Transfer>
}
#[derive(Clone, Deserialize, Serialize)]
pub struct ProgramConsumption {
pub tx: String,
pub status: u16,
pub line: u32,
pub program: String,
pub cu_consumed: u64,
pub cu_limit: u64,
pub timestamp: UnixTimestamp
}