Add a flag to simulateTransaction to use most recent blockhash
This commit is contained in:
parent
4eb6deee2d
commit
96cef5260c
|
@ -28,6 +28,8 @@ pub struct RpcSendTransactionConfig {
|
||||||
pub struct RpcSimulateTransactionConfig {
|
pub struct RpcSimulateTransactionConfig {
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub sig_verify: bool,
|
pub sig_verify: bool,
|
||||||
|
#[serde(default)]
|
||||||
|
pub use_most_recent_blockhash: bool,
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
pub commitment: Option<CommitmentConfig>,
|
pub commitment: Option<CommitmentConfig>,
|
||||||
pub encoding: Option<UiTransactionEncoding>,
|
pub encoding: Option<UiTransactionEncoding>,
|
||||||
|
|
|
@ -2969,7 +2969,7 @@ pub mod rpc_full {
|
||||||
debug!("simulate_transaction rpc request received");
|
debug!("simulate_transaction rpc request received");
|
||||||
let config = config.unwrap_or_default();
|
let config = config.unwrap_or_default();
|
||||||
let encoding = config.encoding.unwrap_or(UiTransactionEncoding::Base58);
|
let encoding = config.encoding.unwrap_or(UiTransactionEncoding::Base58);
|
||||||
let (_, transaction) = deserialize_transaction(data, encoding)?;
|
let (_, mut transaction) = deserialize_transaction(data, encoding)?;
|
||||||
|
|
||||||
if config.sig_verify {
|
if config.sig_verify {
|
||||||
if let Err(e) = verify_transaction(&transaction) {
|
if let Err(e) = verify_transaction(&transaction) {
|
||||||
|
@ -2978,6 +2978,9 @@ pub mod rpc_full {
|
||||||
}
|
}
|
||||||
|
|
||||||
let bank = &*meta.bank(config.commitment);
|
let bank = &*meta.bank(config.commitment);
|
||||||
|
if config.use_most_recent_blockhash {
|
||||||
|
transaction.message.recent_blockhash = bank.last_blockhash();
|
||||||
|
}
|
||||||
let (result, logs) = bank.simulate_transaction(transaction);
|
let (result, logs) = bank.simulate_transaction(transaction);
|
||||||
|
|
||||||
Ok(new_response(
|
Ok(new_response(
|
||||||
|
|
|
@ -3206,6 +3206,7 @@ Simulate sending a transaction
|
||||||
- `sigVerify: <bool>` - if true the transaction signatures will be verified (default: false)
|
- `sigVerify: <bool>` - if true the transaction signatures will be verified (default: false)
|
||||||
- `commitment: <string>` - (optional) [Commitment](jsonrpc-api.md#configuring-state-commitment) level to simulate the transaction at (default: `"finalized"`).
|
- `commitment: <string>` - (optional) [Commitment](jsonrpc-api.md#configuring-state-commitment) level to simulate the transaction at (default: `"finalized"`).
|
||||||
- `encoding: <string>` - (optional) Encoding used for the transaction data. Either `"base58"` (*slow*, **DEPRECATED**), or `"base64"`. (default: `"base58"`).
|
- `encoding: <string>` - (optional) Encoding used for the transaction data. Either `"base58"` (*slow*, **DEPRECATED**), or `"base64"`. (default: `"base58"`).
|
||||||
|
- `useMostRecentBlockhash: <bool>` - (optional) if true the transaction recent blockhash will be ignored and overridden with the most recent blockhash. (default: false)
|
||||||
|
|
||||||
#### Results:
|
#### Results:
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue