Update struct prefixes to Ui (#10874)

* Update comments

* Use Ui prefix
This commit is contained in:
Tyera Eulberg 2020-07-01 14:06:40 -06:00 committed by GitHub
parent 6b45481bbb
commit 2669ccb864
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 68 additions and 66 deletions

View File

@ -54,7 +54,7 @@ use solana_stake_program::{
stake_instruction::LockupArgs, stake_instruction::LockupArgs,
stake_state::{Lockup, StakeAuthorize}, stake_state::{Lockup, StakeAuthorize},
}; };
use solana_transaction_status::{EncodedTransaction, TransactionEncoding}; use solana_transaction_status::{EncodedTransaction, UiTransactionEncoding};
use solana_vote_program::vote_state::VoteAuthorize; use solana_vote_program::vote_state::VoteAuthorize;
use std::{ use std::{
collections::HashMap, collections::HashMap,
@ -1173,7 +1173,7 @@ fn process_confirm(
if let Some(transaction_status) = status { if let Some(transaction_status) = status {
if config.verbose { if config.verbose {
match rpc_client match rpc_client
.get_confirmed_transaction(signature, TransactionEncoding::Binary) .get_confirmed_transaction(signature, UiTransactionEncoding::Binary)
{ {
Ok(confirmed_transaction) => { Ok(confirmed_transaction) => {
println!( println!(

View File

@ -5,7 +5,7 @@ use solana_sdk::{
hash::Hash, native_token::lamports_to_sol, program_utils::limited_deserialize, hash::Hash, native_token::lamports_to_sol, program_utils::limited_deserialize,
transaction::Transaction, transaction::Transaction,
}; };
use solana_transaction_status::RpcTransactionStatusMeta; use solana_transaction_status::UiTransactionStatusMeta;
use std::{collections::HashMap, fmt, io}; use std::{collections::HashMap, fmt, io};
// Pretty print a "name value" // Pretty print a "name value"
@ -81,7 +81,7 @@ pub fn println_signers(
pub fn write_transaction<W: io::Write>( pub fn write_transaction<W: io::Write>(
w: &mut W, w: &mut W,
transaction: &Transaction, transaction: &Transaction,
transaction_status: &Option<RpcTransactionStatusMeta>, transaction_status: &Option<UiTransactionStatusMeta>,
prefix: &str, prefix: &str,
) -> io::Result<()> { ) -> io::Result<()> {
let message = &transaction.message; let message = &transaction.message;
@ -204,7 +204,7 @@ pub fn write_transaction<W: io::Write>(
pub fn println_transaction( pub fn println_transaction(
transaction: &Transaction, transaction: &Transaction,
transaction_status: &Option<RpcTransactionStatusMeta>, transaction_status: &Option<UiTransactionStatusMeta>,
prefix: &str, prefix: &str,
) { ) {
let mut w = Vec::new(); let mut w = Vec::new();

View File

@ -28,7 +28,7 @@ use solana_sdk::{
transaction::{self, Transaction}, transaction::{self, Transaction},
}; };
use solana_transaction_status::{ use solana_transaction_status::{
ConfirmedBlock, ConfirmedTransaction, TransactionEncoding, TransactionStatus, ConfirmedBlock, ConfirmedTransaction, TransactionStatus, UiTransactionEncoding,
}; };
use solana_vote_program::vote_state::MAX_LOCKOUT_HISTORY; use solana_vote_program::vote_state::MAX_LOCKOUT_HISTORY;
use std::{ use std::{
@ -238,13 +238,13 @@ impl RpcClient {
} }
pub fn get_confirmed_block(&self, slot: Slot) -> ClientResult<ConfirmedBlock> { pub fn get_confirmed_block(&self, slot: Slot) -> ClientResult<ConfirmedBlock> {
self.get_confirmed_block_with_encoding(slot, TransactionEncoding::Json) self.get_confirmed_block_with_encoding(slot, UiTransactionEncoding::Json)
} }
pub fn get_confirmed_block_with_encoding( pub fn get_confirmed_block_with_encoding(
&self, &self,
slot: Slot, slot: Slot,
encoding: TransactionEncoding, encoding: UiTransactionEncoding,
) -> ClientResult<ConfirmedBlock> { ) -> ClientResult<ConfirmedBlock> {
self.send(RpcRequest::GetConfirmedBlock, json!([slot, encoding])) self.send(RpcRequest::GetConfirmedBlock, json!([slot, encoding]))
} }
@ -285,7 +285,7 @@ impl RpcClient {
pub fn get_confirmed_transaction( pub fn get_confirmed_transaction(
&self, &self,
signature: &Signature, signature: &Signature,
encoding: TransactionEncoding, encoding: UiTransactionEncoding,
) -> ClientResult<ConfirmedTransaction> { ) -> ClientResult<ConfirmedTransaction> {
self.send( self.send(
RpcRequest::GetConfirmedTransaction, RpcRequest::GetConfirmedTransaction,

View File

@ -40,7 +40,7 @@ use solana_sdk::{
transaction::{self, Transaction}, transaction::{self, Transaction},
}; };
use solana_transaction_status::{ use solana_transaction_status::{
ConfirmedBlock, ConfirmedTransaction, TransactionEncoding, TransactionStatus, ConfirmedBlock, ConfirmedTransaction, TransactionStatus, UiTransactionEncoding,
}; };
use solana_vote_program::vote_state::{VoteState, MAX_LOCKOUT_HISTORY}; use solana_vote_program::vote_state::{VoteState, MAX_LOCKOUT_HISTORY};
use std::{ use std::{
@ -541,7 +541,7 @@ impl JsonRpcRequestProcessor {
pub fn get_confirmed_block( pub fn get_confirmed_block(
&self, &self,
slot: Slot, slot: Slot,
encoding: Option<TransactionEncoding>, encoding: Option<UiTransactionEncoding>,
) -> Result<Option<ConfirmedBlock>> { ) -> Result<Option<ConfirmedBlock>> {
if self.config.enable_rpc_transaction_history if self.config.enable_rpc_transaction_history
&& slot && slot
@ -710,7 +710,7 @@ impl JsonRpcRequestProcessor {
pub fn get_confirmed_transaction( pub fn get_confirmed_transaction(
&self, &self,
signature: Signature, signature: Signature,
encoding: Option<TransactionEncoding>, encoding: Option<UiTransactionEncoding>,
) -> Result<Option<ConfirmedTransaction>> { ) -> Result<Option<ConfirmedTransaction>> {
if self.config.enable_rpc_transaction_history { if self.config.enable_rpc_transaction_history {
Ok(self Ok(self
@ -1031,7 +1031,7 @@ pub trait RpcSol {
&self, &self,
meta: Self::Metadata, meta: Self::Metadata,
slot: Slot, slot: Slot,
encoding: Option<TransactionEncoding>, encoding: Option<UiTransactionEncoding>,
) -> Result<Option<ConfirmedBlock>>; ) -> Result<Option<ConfirmedBlock>>;
#[rpc(meta, name = "getBlockTime")] #[rpc(meta, name = "getBlockTime")]
@ -1050,7 +1050,7 @@ pub trait RpcSol {
&self, &self,
meta: Self::Metadata, meta: Self::Metadata,
signature_str: String, signature_str: String,
encoding: Option<TransactionEncoding>, encoding: Option<UiTransactionEncoding>,
) -> Result<Option<ConfirmedTransaction>>; ) -> Result<Option<ConfirmedTransaction>>;
#[rpc(meta, name = "getConfirmedSignaturesForAddress")] #[rpc(meta, name = "getConfirmedSignaturesForAddress")]
@ -1525,7 +1525,7 @@ impl RpcSol for RpcSolImpl {
&self, &self,
meta: Self::Metadata, meta: Self::Metadata,
slot: Slot, slot: Slot,
encoding: Option<TransactionEncoding>, encoding: Option<UiTransactionEncoding>,
) -> Result<Option<ConfirmedBlock>> { ) -> Result<Option<ConfirmedBlock>> {
meta.get_confirmed_block(slot, encoding) meta.get_confirmed_block(slot, encoding)
} }
@ -1547,7 +1547,7 @@ impl RpcSol for RpcSolImpl {
&self, &self,
meta: Self::Metadata, meta: Self::Metadata,
signature_str: String, signature_str: String,
encoding: Option<TransactionEncoding>, encoding: Option<UiTransactionEncoding>,
) -> Result<Option<ConfirmedTransaction>> { ) -> Result<Option<ConfirmedTransaction>> {
let signature = verify_signature(&signature_str)?; let signature = verify_signature(&signature_str)?;
meta.get_confirmed_transaction(signature, encoding) meta.get_confirmed_transaction(signature, encoding)
@ -1647,7 +1647,7 @@ pub mod tests {
system_transaction, system_transaction,
transaction::{self, TransactionError}, transaction::{self, TransactionError},
}; };
use solana_transaction_status::{EncodedTransaction, RpcMessage, TransactionWithStatusMeta}; use solana_transaction_status::{EncodedTransaction, TransactionWithStatusMeta, UiMessage};
use solana_vote_program::{ use solana_vote_program::{
vote_instruction, vote_instruction,
vote_state::{Vote, VoteInit, MAX_LOCKOUT_HISTORY}, vote_state::{Vote, VoteInit, MAX_LOCKOUT_HISTORY},
@ -3213,8 +3213,8 @@ pub mod tests {
if transaction.signatures[0] == confirmed_block_signatures[0].to_string() { if transaction.signatures[0] == confirmed_block_signatures[0].to_string() {
let meta = meta.unwrap(); let meta = meta.unwrap();
let transaction_recent_blockhash = match transaction.message { let transaction_recent_blockhash = match transaction.message {
RpcMessage::Parsed(message) => message.recent_blockhash, UiMessage::Parsed(message) => message.recent_blockhash,
RpcMessage::Raw(message) => message.recent_blockhash, UiMessage::Raw(message) => message.recent_blockhash,
}; };
assert_eq!(transaction_recent_blockhash, blockhash.to_string()); assert_eq!(transaction_recent_blockhash, blockhash.to_string());
assert_eq!(meta.status, Ok(())); assert_eq!(meta.status, Ok(()));

View File

@ -37,8 +37,8 @@ use solana_sdk::{
transaction::Transaction, transaction::Transaction,
}; };
use solana_transaction_status::{ use solana_transaction_status::{
ConfirmedBlock, ConfirmedTransaction, EncodedTransaction, Rewards, RpcTransactionStatusMeta, ConfirmedBlock, ConfirmedTransaction, EncodedTransaction, Rewards, TransactionStatusMeta,
TransactionEncoding, TransactionStatusMeta, TransactionWithStatusMeta, TransactionWithStatusMeta, UiTransactionEncoding, UiTransactionStatusMeta,
}; };
use solana_vote_program::{vote_instruction::VoteInstruction, vote_state::TIMESTAMP_SLOT_INTERVAL}; use solana_vote_program::{vote_instruction::VoteInstruction, vote_state::TIMESTAMP_SLOT_INTERVAL};
use std::{ use std::{
@ -1516,7 +1516,7 @@ impl Blockstore {
pub fn get_confirmed_block( pub fn get_confirmed_block(
&self, &self,
slot: Slot, slot: Slot,
encoding: Option<TransactionEncoding>, encoding: Option<UiTransactionEncoding>,
) -> Result<ConfirmedBlock> { ) -> Result<ConfirmedBlock> {
datapoint_info!( datapoint_info!(
"blockstore-rpc-api", "blockstore-rpc-api",
@ -1528,7 +1528,7 @@ impl Blockstore {
if *lowest_cleanup_slot > 0 && *lowest_cleanup_slot >= slot { if *lowest_cleanup_slot > 0 && *lowest_cleanup_slot >= slot {
return Err(BlockstoreError::SlotCleanedUp); return Err(BlockstoreError::SlotCleanedUp);
} }
let encoding = encoding.unwrap_or(TransactionEncoding::Json); let encoding = encoding.unwrap_or(UiTransactionEncoding::Json);
if self.is_root(slot) { if self.is_root(slot) {
let slot_meta_cf = self.db.column::<cf::SlotMeta>(); let slot_meta_cf = self.db.column::<cf::SlotMeta>();
let slot_meta = match slot_meta_cf.get(slot)? { let slot_meta = match slot_meta_cf.get(slot)? {
@ -1579,7 +1579,7 @@ impl Blockstore {
fn map_transactions_to_statuses<'a>( fn map_transactions_to_statuses<'a>(
&self, &self,
slot: Slot, slot: Slot,
encoding: TransactionEncoding, encoding: UiTransactionEncoding,
iterator: impl Iterator<Item = Transaction> + 'a, iterator: impl Iterator<Item = Transaction> + 'a,
) -> Vec<TransactionWithStatusMeta> { ) -> Vec<TransactionWithStatusMeta> {
iterator iterator
@ -1591,7 +1591,7 @@ impl Blockstore {
meta: self meta: self
.read_transaction_status((signature, slot)) .read_transaction_status((signature, slot))
.expect("Expect database get to succeed") .expect("Expect database get to succeed")
.map(RpcTransactionStatusMeta::from), .map(UiTransactionStatusMeta::from),
} }
}) })
.collect() .collect()
@ -1761,7 +1761,7 @@ impl Blockstore {
pub fn get_confirmed_transaction( pub fn get_confirmed_transaction(
&self, &self,
signature: Signature, signature: Signature,
encoding: Option<TransactionEncoding>, encoding: Option<UiTransactionEncoding>,
) -> Result<Option<ConfirmedTransaction>> { ) -> Result<Option<ConfirmedTransaction>> {
datapoint_info!( datapoint_info!(
"blockstore-rpc-api", "blockstore-rpc-api",
@ -1770,7 +1770,7 @@ impl Blockstore {
if let Some((slot, status)) = self.get_transaction_status(signature)? { if let Some((slot, status)) = self.get_transaction_status(signature)? {
let transaction = self.find_transaction_in_slot(slot, signature)? let transaction = self.find_transaction_in_slot(slot, signature)?
.expect("Transaction to exist in slot entries if it exists in statuses and hasn't been cleaned up"); .expect("Transaction to exist in slot entries if it exists in statuses and hasn't been cleaned up");
let encoding = encoding.unwrap_or(TransactionEncoding::Json); let encoding = encoding.unwrap_or(UiTransactionEncoding::Json);
let encoded_transaction = EncodedTransaction::encode(transaction, encoding); let encoded_transaction = EncodedTransaction::encode(transaction, encoding);
Ok(Some(ConfirmedTransaction { Ok(Some(ConfirmedTransaction {
slot, slot,
@ -5100,7 +5100,7 @@ pub mod tests {
.put_meta_bytes(slot - 1, &serialize(&parent_meta).unwrap()) .put_meta_bytes(slot - 1, &serialize(&parent_meta).unwrap())
.unwrap(); .unwrap();
let expected_transactions: Vec<(Transaction, Option<RpcTransactionStatusMeta>)> = entries let expected_transactions: Vec<(Transaction, Option<UiTransactionStatusMeta>)> = entries
.iter() .iter()
.cloned() .cloned()
.filter(|entry| !entry.is_tick()) .filter(|entry| !entry.is_tick())
@ -5164,7 +5164,7 @@ pub mod tests {
.iter() .iter()
.cloned() .cloned()
.map(|(tx, meta)| TransactionWithStatusMeta { .map(|(tx, meta)| TransactionWithStatusMeta {
transaction: EncodedTransaction::encode(tx, TransactionEncoding::Json), transaction: EncodedTransaction::encode(tx, UiTransactionEncoding::Json),
meta, meta,
}) })
.collect(), .collect(),
@ -5185,7 +5185,7 @@ pub mod tests {
.iter() .iter()
.cloned() .cloned()
.map(|(tx, meta)| TransactionWithStatusMeta { .map(|(tx, meta)| TransactionWithStatusMeta {
transaction: EncodedTransaction::encode(tx, TransactionEncoding::Json), transaction: EncodedTransaction::encode(tx, UiTransactionEncoding::Json),
meta, meta,
}) })
.collect(), .collect(),
@ -5802,7 +5802,7 @@ pub mod tests {
blockstore.insert_shreds(shreds, None, false).unwrap(); blockstore.insert_shreds(shreds, None, false).unwrap();
blockstore.set_roots(&[slot - 1, slot]).unwrap(); blockstore.set_roots(&[slot - 1, slot]).unwrap();
let expected_transactions: Vec<(Transaction, Option<RpcTransactionStatusMeta>)> = entries let expected_transactions: Vec<(Transaction, Option<UiTransactionStatusMeta>)> = entries
.iter() .iter()
.cloned() .cloned()
.filter(|entry| !entry.is_tick()) .filter(|entry| !entry.is_tick())
@ -5845,7 +5845,7 @@ pub mod tests {
for (transaction, status) in expected_transactions.clone() { for (transaction, status) in expected_transactions.clone() {
let signature = transaction.signatures[0]; let signature = transaction.signatures[0];
let encoded_transaction = let encoded_transaction =
EncodedTransaction::encode(transaction, TransactionEncoding::Json); EncodedTransaction::encode(transaction, UiTransactionEncoding::Json);
let expected_transaction = ConfirmedTransaction { let expected_transaction = ConfirmedTransaction {
slot, slot,
transaction: TransactionWithStatusMeta { transaction: TransactionWithStatusMeta {
@ -6073,7 +6073,7 @@ pub mod tests {
let map = blockstore.map_transactions_to_statuses( let map = blockstore.map_transactions_to_statuses(
slot, slot,
TransactionEncoding::Json, UiTransactionEncoding::Json,
transactions.into_iter(), transactions.into_iter(),
); );
assert_eq!(map.len(), 5); assert_eq!(map.len(), 5);

View File

@ -7,7 +7,7 @@ use solana_sdk::{
pubkey::Pubkey, signature::Signature, transaction::Transaction, pubkey::Pubkey, signature::Signature, transaction::Transaction,
}; };
use solana_stake_program::{stake_instruction::StakeInstruction, stake_state::Lockup}; use solana_stake_program::{stake_instruction::StakeInstruction, stake_state::Lockup};
use solana_transaction_status::{ConfirmedBlock, RpcTransactionStatusMeta, TransactionEncoding}; use solana_transaction_status::{ConfirmedBlock, UiTransactionEncoding, UiTransactionStatusMeta};
use std::{collections::HashMap, thread::sleep, time::Duration}; use std::{collections::HashMap, thread::sleep, time::Duration};
pub type PubkeyString = String; pub type PubkeyString = String;
@ -65,7 +65,7 @@ impl AccountsInfo {
fn process_transaction( fn process_transaction(
slot: Slot, slot: Slot,
transaction: &Transaction, transaction: &Transaction,
meta: &RpcTransactionStatusMeta, meta: &UiTransactionStatusMeta,
accounts: &mut HashMap<PubkeyString, AccountInfo>, accounts: &mut HashMap<PubkeyString, AccountInfo>,
) { ) {
let mut last_instruction = true; let mut last_instruction = true;
@ -289,7 +289,7 @@ fn load_blocks(
let mut blocks = vec![]; let mut blocks = vec![];
for slot in slots.into_iter() { for slot in slots.into_iter() {
let block = let block =
rpc_client.get_confirmed_block_with_encoding(slot, TransactionEncoding::Binary)?; rpc_client.get_confirmed_block_with_encoding(slot, UiTransactionEncoding::Binary)?;
blocks.push((slot, block)); blocks.push((slot, block));
} }
Ok(blocks) Ok(blocks)

View File

@ -16,23 +16,24 @@ use solana_sdk::{
transaction::{Result, Transaction, TransactionError}, transaction::{Result, Transaction, TransactionError},
}; };
/// A duplicate representation of an Instruction for pretty JSON serialization
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase", untagged)] #[serde(rename_all = "camelCase", untagged)]
pub enum RpcInstruction { pub enum UiInstruction {
Compiled(RpcCompiledInstruction), Compiled(UiCompiledInstruction),
Parsed(Value), Parsed(Value),
} }
/// A duplicate representation of a CompiledInstruction for pretty JSON serialization /// A duplicate representation of a CompiledInstruction for pretty JSON serialization
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct RpcCompiledInstruction { pub struct UiCompiledInstruction {
pub program_id_index: u8, pub program_id_index: u8,
pub accounts: Vec<u8>, pub accounts: Vec<u8>,
pub data: String, pub data: String,
} }
impl From<&CompiledInstruction> for RpcCompiledInstruction { impl From<&CompiledInstruction> for UiCompiledInstruction {
fn from(instruction: &CompiledInstruction) -> Self { fn from(instruction: &CompiledInstruction) -> Self {
Self { Self {
program_id_index: instruction.program_id_index, program_id_index: instruction.program_id_index,
@ -62,9 +63,10 @@ impl Default for TransactionStatusMeta {
} }
} }
/// A duplicate representation of TransactionStatusMeta with `err` field
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct RpcTransactionStatusMeta { pub struct UiTransactionStatusMeta {
pub err: Option<TransactionError>, pub err: Option<TransactionError>,
pub status: Result<()>, // This field is deprecated. See https://github.com/solana-labs/solana/issues/9302 pub status: Result<()>, // This field is deprecated. See https://github.com/solana-labs/solana/issues/9302
pub fee: u64, pub fee: u64,
@ -72,7 +74,7 @@ pub struct RpcTransactionStatusMeta {
pub post_balances: Vec<u64>, pub post_balances: Vec<u64>,
} }
impl From<TransactionStatusMeta> for RpcTransactionStatusMeta { impl From<TransactionStatusMeta> for UiTransactionStatusMeta {
fn from(meta: TransactionStatusMeta) -> Self { fn from(meta: TransactionStatusMeta) -> Self {
Self { Self {
err: meta.status.clone().err(), err: meta.status.clone().err(),
@ -129,47 +131,47 @@ pub struct ConfirmedTransaction {
/// A duplicate representation of a Transaction for pretty JSON serialization /// A duplicate representation of a Transaction for pretty JSON serialization
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct RpcTransaction { pub struct UiTransaction {
pub signatures: Vec<String>, pub signatures: Vec<String>,
pub message: RpcMessage, pub message: UiMessage,
} }
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase", untagged)] #[serde(rename_all = "camelCase", untagged)]
pub enum RpcMessage { pub enum UiMessage {
Parsed(RpcParsedMessage), Parsed(UiParsedMessage),
Raw(RpcRawMessage), Raw(UiRawMessage),
} }
/// A duplicate representation of a Message for pretty JSON serialization /// A duplicate representation of a Message, in raw format, for pretty JSON serialization
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct RpcRawMessage { pub struct UiRawMessage {
pub header: MessageHeader, pub header: MessageHeader,
pub account_keys: Vec<String>, pub account_keys: Vec<String>,
pub recent_blockhash: String, pub recent_blockhash: String,
pub instructions: Vec<RpcCompiledInstruction>, pub instructions: Vec<UiCompiledInstruction>,
} }
/// A duplicate representation of a Message for pretty JSON serialization /// A duplicate representation of a Message, in parsed format, for pretty JSON serialization
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct RpcParsedMessage { pub struct UiParsedMessage {
pub account_keys: Value, pub account_keys: Value,
pub recent_blockhash: String, pub recent_blockhash: String,
pub instructions: Vec<RpcInstruction>, pub instructions: Vec<UiInstruction>,
} }
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub struct TransactionWithStatusMeta { pub struct TransactionWithStatusMeta {
pub transaction: EncodedTransaction, pub transaction: EncodedTransaction,
pub meta: Option<RpcTransactionStatusMeta>, pub meta: Option<UiTransactionStatusMeta>,
} }
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
pub enum TransactionEncoding { pub enum UiTransactionEncoding {
Binary, Binary,
Json, Json,
JsonParsed, JsonParsed,
@ -179,18 +181,18 @@ pub enum TransactionEncoding {
#[serde(rename_all = "camelCase", untagged)] #[serde(rename_all = "camelCase", untagged)]
pub enum EncodedTransaction { pub enum EncodedTransaction {
Binary(String), Binary(String),
Json(RpcTransaction), Json(UiTransaction),
} }
impl EncodedTransaction { impl EncodedTransaction {
pub fn encode(transaction: Transaction, encoding: TransactionEncoding) -> Self { pub fn encode(transaction: Transaction, encoding: UiTransactionEncoding) -> Self {
match encoding { match encoding {
TransactionEncoding::Binary => EncodedTransaction::Binary( UiTransactionEncoding::Binary => EncodedTransaction::Binary(
bs58::encode(bincode::serialize(&transaction).unwrap()).into_string(), bs58::encode(bincode::serialize(&transaction).unwrap()).into_string(),
), ),
_ => { _ => {
let message = if encoding == TransactionEncoding::Json { let message = if encoding == UiTransactionEncoding::Json {
RpcMessage::Raw(RpcRawMessage { UiMessage::Raw(UiRawMessage {
header: transaction.message.header, header: transaction.message.header,
account_keys: transaction account_keys: transaction
.message .message
@ -207,7 +209,7 @@ impl EncodedTransaction {
.collect(), .collect(),
}) })
} else { } else {
RpcMessage::Parsed(RpcParsedMessage { UiMessage::Parsed(UiParsedMessage {
account_keys: parse_accounts(&transaction.message), account_keys: parse_accounts(&transaction.message),
recent_blockhash: transaction.message.recent_blockhash.to_string(), recent_blockhash: transaction.message.recent_blockhash.to_string(),
instructions: transaction instructions: transaction
@ -218,15 +220,15 @@ impl EncodedTransaction {
let program_id = let program_id =
instruction.program_id(&transaction.message.account_keys); instruction.program_id(&transaction.message.account_keys);
if let Some(parsed_instruction) = parse(program_id, instruction) { if let Some(parsed_instruction) = parse(program_id, instruction) {
RpcInstruction::Parsed(parsed_instruction) UiInstruction::Parsed(parsed_instruction)
} else { } else {
RpcInstruction::Compiled(instruction.into()) UiInstruction::Compiled(instruction.into())
} }
}) })
.collect(), .collect(),
}) })
}; };
EncodedTransaction::Json(RpcTransaction { EncodedTransaction::Json(UiTransaction {
signatures: transaction signatures: transaction
.signatures .signatures
.iter() .iter()

View File

@ -16,7 +16,7 @@ use solana_sdk::{
clock::Slot, hash::Hash, native_token::lamports_to_sol, program_utils::limited_deserialize, clock::Slot, hash::Hash, native_token::lamports_to_sol, program_utils::limited_deserialize,
pubkey::Pubkey, pubkey::Pubkey,
}; };
use solana_transaction_status::{ConfirmedBlock, TransactionEncoding}; use solana_transaction_status::{ConfirmedBlock, UiTransactionEncoding};
use solana_vote_program::vote_instruction::VoteInstruction; use solana_vote_program::vote_instruction::VoteInstruction;
use std::{ use std::{
collections::HashMap, collections::HashMap,
@ -226,7 +226,7 @@ fn load_blocks(
let mut blocks = vec![]; let mut blocks = vec![];
for slot in slots.into_iter() { for slot in slots.into_iter() {
let block = let block =
rpc_client.get_confirmed_block_with_encoding(slot, TransactionEncoding::Binary)?; rpc_client.get_confirmed_block_with_encoding(slot, UiTransactionEncoding::Binary)?;
blocks.push((slot, block)); blocks.push((slot, block));
} }
Ok(blocks) Ok(blocks)