Update struct prefixes to Ui (#10874)
* Update comments * Use Ui prefix
This commit is contained in:
parent
6b45481bbb
commit
2669ccb864
|
@ -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!(
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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(()));
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue