Add rust client support for getRecentPrioritizationFees (#29558)
This commit is contained in:
parent
9692cfef98
commit
e0d2a40d85
|
@ -79,6 +79,7 @@ pub enum RpcRequest {
|
|||
)]
|
||||
GetRecentBlockhash,
|
||||
GetRecentPerformanceSamples,
|
||||
GetRecentPrioritizationFees,
|
||||
GetHighestSnapshotSlot,
|
||||
#[deprecated(
|
||||
since = "1.9.0",
|
||||
|
@ -158,6 +159,7 @@ impl fmt::Display for RpcRequest {
|
|||
RpcRequest::GetProgramAccounts => "getProgramAccounts",
|
||||
RpcRequest::GetRecentBlockhash => "getRecentBlockhash",
|
||||
RpcRequest::GetRecentPerformanceSamples => "getRecentPerformanceSamples",
|
||||
RpcRequest::GetRecentPrioritizationFees => "getRecentPrioritizationFees",
|
||||
RpcRequest::GetHighestSnapshotSlot => "getHighestSnapshotSlot",
|
||||
RpcRequest::GetSnapshotSlot => "getSnapshotSlot",
|
||||
RpcRequest::GetSignaturesForAddress => "getSignaturesForAddress",
|
||||
|
|
|
@ -13,8 +13,8 @@ use {
|
|||
Response, RpcAccountBalance, RpcBlockProduction, RpcBlockProductionRange, RpcBlockhash,
|
||||
RpcConfirmedTransactionStatusWithSignature, RpcContactInfo, RpcFees, RpcIdentity,
|
||||
RpcInflationGovernor, RpcInflationRate, RpcInflationReward, RpcKeyedAccount,
|
||||
RpcPerfSample, RpcResponseContext, RpcSimulateTransactionResult, RpcSnapshotSlotInfo,
|
||||
RpcStakeActivation, RpcSupply, RpcVersionInfo, RpcVoteAccountInfo,
|
||||
RpcPerfSample, RpcPrioritizationFee, RpcResponseContext, RpcSimulateTransactionResult,
|
||||
RpcSnapshotSlotInfo, RpcStakeActivation, RpcSupply, RpcVersionInfo, RpcVoteAccountInfo,
|
||||
RpcVoteAccountStatus, StakeActivationState,
|
||||
},
|
||||
},
|
||||
|
@ -419,6 +419,10 @@ impl RpcSender for MockSender {
|
|||
num_slots: 123,
|
||||
sample_period_secs: 60,
|
||||
}])?,
|
||||
"getRecentPrioritizationFees" => serde_json::to_value(vec![RpcPrioritizationFee {
|
||||
slot: 123_456_789,
|
||||
prioritization_fee: 10_000,
|
||||
}])?,
|
||||
"getIdentity" => serde_json::to_value(RpcIdentity {
|
||||
identity: PUBKEY.to_string(),
|
||||
})?,
|
||||
|
|
|
@ -3535,6 +3535,49 @@ impl RpcClient {
|
|||
.await
|
||||
}
|
||||
|
||||
/// Returns a list of minimum prioritization fees from recent blocks.
|
||||
/// Takes an optional vector of addresses; if any addresses are provided, the response will
|
||||
/// reflect the minimum prioritization fee to land a transaction locking all of the provided
|
||||
/// accounts as writable.
|
||||
///
|
||||
/// Currently, a node's prioritization-fee cache stores data from up to 150 blocks.
|
||||
///
|
||||
/// # RPC Reference
|
||||
///
|
||||
/// This method corresponds directly to the [`getRecentPrioritizationFees`] RPC method.
|
||||
///
|
||||
/// [`getRecentPrioritizationFees`]: https://docs.solana.com/developing/clients/jsonrpc-api#getrecentprioritizationfees
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// # use solana_rpc_client_api::client_error::Error;
|
||||
/// # use solana_rpc_client::nonblocking::rpc_client::RpcClient;
|
||||
/// # use solana_sdk::signature::{Keypair, Signer};
|
||||
/// # futures::executor::block_on(async {
|
||||
/// # let rpc_client = RpcClient::new_mock("succeeds".to_string());
|
||||
/// # let alice = Keypair::new();
|
||||
/// # let bob = Keypair::new();
|
||||
/// let addresses = vec![alice.pubkey(), bob.pubkey()];
|
||||
/// let prioritization_fees = rpc_client.get_recent_prioritization_fees(
|
||||
/// &addresses,
|
||||
/// ).await?;
|
||||
/// # Ok::<(), Error>(())
|
||||
/// # })?;
|
||||
/// # Ok::<(), Error>(())
|
||||
/// ```
|
||||
pub async fn get_recent_prioritization_fees(
|
||||
&self,
|
||||
addresses: &[Pubkey],
|
||||
) -> ClientResult<Vec<RpcPrioritizationFee>> {
|
||||
let addresses: Vec<_> = addresses
|
||||
.iter()
|
||||
.map(|address| address.to_string())
|
||||
.collect();
|
||||
self.send(RpcRequest::GetRecentPrioritizationFees, json!([addresses]))
|
||||
.await
|
||||
}
|
||||
|
||||
/// Returns the identity pubkey for the current node.
|
||||
///
|
||||
/// # RPC Reference
|
||||
|
|
|
@ -2916,6 +2916,41 @@ impl RpcClient {
|
|||
self.invoke((self.rpc_client.as_ref()).get_recent_performance_samples(limit))
|
||||
}
|
||||
|
||||
/// Returns a list of minimum prioritization fees from recent blocks.
|
||||
/// Takes an optional vector of addresses; if any addresses are provided, the response will
|
||||
/// reflect the minimum prioritization fee to land a transaction locking all of the provided
|
||||
/// accounts as writable.
|
||||
///
|
||||
/// Currently, a node's prioritization-fee cache stores data from up to 150 blocks.
|
||||
///
|
||||
/// # RPC Reference
|
||||
///
|
||||
/// This method corresponds directly to the [`getRecentPrioritizationFees`] RPC method.
|
||||
///
|
||||
/// [`getRecentPrioritizationFees`]: https://docs.solana.com/developing/clients/jsonrpc-api#getrecentprioritizationfees
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// # use solana_rpc_client_api::client_error::Error;
|
||||
/// # use solana_rpc_client::rpc_client::RpcClient;
|
||||
/// # use solana_sdk::signature::{Keypair, Signer};
|
||||
/// # let rpc_client = RpcClient::new_mock("succeeds".to_string());
|
||||
/// # let alice = Keypair::new();
|
||||
/// # let bob = Keypair::new();
|
||||
/// let addresses = vec![alice.pubkey(), bob.pubkey()];
|
||||
/// let prioritization_fees = rpc_client.get_recent_prioritization_fees(
|
||||
/// &addresses,
|
||||
/// )?;
|
||||
/// # Ok::<(), Error>(())
|
||||
/// ```
|
||||
pub fn get_recent_prioritization_fees(
|
||||
&self,
|
||||
addresses: &[Pubkey],
|
||||
) -> ClientResult<Vec<RpcPrioritizationFee>> {
|
||||
self.invoke((self.rpc_client.as_ref()).get_recent_prioritization_fees(addresses))
|
||||
}
|
||||
|
||||
/// Returns the identity pubkey for the current node.
|
||||
///
|
||||
/// # RPC Reference
|
||||
|
|
Loading…
Reference in New Issue