Skip to content

Commit 6999fb9

Browse files
authored
precommit (#2071)
1 parent ba27ebf commit 6999fb9

File tree

4 files changed

+44
-5
lines changed

4 files changed

+44
-5
lines changed

governance/remote_executor/cli/src/main.rs

Lines changed: 38 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,10 @@ use {
4040
EXECUTOR_KEY_SEED,
4141
ID,
4242
},
43-
solana_client::rpc_client::RpcClient,
43+
solana_client::{
44+
rpc_client::RpcClient,
45+
rpc_config::RpcSendTransactionConfig,
46+
},
4447
solana_sdk::{
4548
instruction::{
4649
AccountMeta,
@@ -273,10 +276,40 @@ pub fn process_transaction(
273276
) -> Result<()> {
274277
let mut transaction =
275278
Transaction::new_with_payer(instructions.as_slice(), Some(&signers[0].pubkey()));
276-
transaction.sign(signers, rpc_client.get_latest_blockhash()?);
277-
let transaction_signature =
278-
rpc_client.send_and_confirm_transaction_with_spinner(&transaction)?;
279-
println!("Transaction successful : {transaction_signature:?}");
279+
let recent_blockhash = rpc_client.get_latest_blockhash()?;
280+
transaction.sign(signers, recent_blockhash);
281+
282+
// Simulate the transaction
283+
let simulation_result = rpc_client.simulate_transaction(&transaction)?;
284+
285+
// Check if simulation was successful
286+
if let Some(err) = simulation_result.value.err {
287+
println!("Transaction simulation failed: {:?}", err);
288+
if let Some(logs) = simulation_result.value.logs {
289+
println!("Simulation logs:");
290+
for (i, log) in logs.iter().enumerate() {
291+
println!(" {}: {}", i, log);
292+
}
293+
}
294+
return Err(anyhow::anyhow!("Transaction simulation failed"));
295+
}
296+
297+
// If simulation was successful, send the actual transaction
298+
let config = RpcSendTransactionConfig {
299+
skip_preflight: true,
300+
..RpcSendTransactionConfig::default()
301+
};
302+
let transaction_signature = rpc_client.send_transaction_with_config(&transaction, config)?;
303+
println!("Transaction sent: {transaction_signature:?}");
304+
305+
// Wait for confirmation
306+
rpc_client.confirm_transaction_with_spinner(
307+
&transaction_signature,
308+
&recent_blockhash,
309+
rpc_client.commitment(),
310+
)?;
311+
312+
println!("Transaction confirmed: {transaction_signature:?}");
280313
Ok(())
281314
}
282315

governance/remote_executor/programs/remote-executor/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ eclipse_mainnet = []
2727
mantis_testnet = []
2828
sonic_devnet = []
2929
sonic_testnet = []
30+
atlas_testnet = []
3031

3132
[dependencies]
3233
anchor-lang = {version = "0.25.0", features = ["init-if-needed"]}

governance/remote_executor/programs/remote-executor/src/state/governance_payload.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ pub const CHAIN_ID_ARRAY: &[(&str, u16)] = &[
2323
("mantis_testnet", 40004),
2424
("sonic_devnet", 40005),
2525
("sonic_testnet", 40006),
26+
("atlas_testnet", 40007),
2627
];
2728

2829
#[cfg(any(feature = "pythnet", feature = "pythtest"))]
@@ -46,6 +47,9 @@ pub const CHAIN_ID: u16 = 40005;
4647
#[cfg(feature = "sonic_testnet")]
4748
pub const CHAIN_ID: u16 = 40006;
4849

50+
#[cfg(feature = "atlas_testnet")]
51+
pub const CHAIN_ID: u16 = 40007;
52+
4953
#[derive(AnchorDeserialize, AnchorSerialize, Debug, PartialEq, Eq)]
5054
pub struct ExecutorPayload {
5155
pub header: GovernanceHeader,

governance/remote_executor/programs/remote-executor/src/state/posted_vaa.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ impl Owner for AnchorVaa {
2727
feature = "mantis_testnet",
2828
feature = "sonic_devnet",
2929
feature = "sonic_testnet",
30+
feature = "atlas_testnet",
3031
))]
3132
fn owner() -> Pubkey {
3233
Pubkey::from_str("HDwcJBJXjL9FpJ7UBsYBtaDjsBUhuLCUYoz3zr8SWWaQ").unwrap()

0 commit comments

Comments
 (0)