diff --git a/src/main.rs b/src/main.rs index cb756ea..59d3daa 100644 --- a/src/main.rs +++ b/src/main.rs @@ -64,11 +64,12 @@ async fn main() -> Result<()> { let (_plan, prepared) = prepare_and_build(txu, &adapters, &kp_pub)?; // 2) Blockhash fresco + slot - let (new_bh, ctx_slot) = rpc.get_latest_blockhash().await?; + let (latest_blockhash, ctx_slot) = rpc.get_latest_blockhash().await?; + println!("latest_blockhash: {latest_blockhash}"); //si borro esto parece q no refresba bien latest_blockhash println!("Latest slot solana: {ctx_slot}"); // 3) Actualiza blockhash del mensaje - let vm = set_recent_blockhash(prepared.message, new_bh); + let vm = set_recent_blockhash(prepared.message, latest_blockhash); // 4) Firma con tu keypair let vtx = sign_versioned_tx(vm, &[&kp])?; @@ -81,7 +82,7 @@ async fn main() -> Result<()> { // 6) Enviar - let sig = rpc.send_transaction(&vtx, Some(ctx_slot)).await?; + let sig = rpc.send_transaction(&vtx, None).await?; println!("🚀 Enviada: {}", sig); diff --git a/src/rpc.rs b/src/rpc.rs index 06080e1..e4da1f8 100644 --- a/src/rpc.rs +++ b/src/rpc.rs @@ -93,13 +93,11 @@ struct GetLatestBlockhashValue { } #[derive(Serialize)] +#[serde(rename_all = "camelCase")] struct SimSendConfig<'a> { encoding: &'a str, // "base64" - #[serde(rename = "sigVerify")] - sig_verify: bool, // false - #[serde(rename = "replaceRecentBlockhash")] - replace_recent_blockhash: bool, // true/false - #[serde(rename = "commitment")] + sig_verify: bool, + replace_recent_blockhash: bool, // false commitment: &'a str, #[serde(skip_serializing_if = "Option::is_none")] @@ -107,7 +105,7 @@ struct SimSendConfig<'a> { #[serde(skip_serializing_if = "Option::is_none")] skip_preflight: Option, - #[serde(skip_serializing_if = "Option::is_none", rename = "minContextSlot")] + #[serde(skip_serializing_if = "Option::is_none")] min_context_slot: Option, } @@ -158,7 +156,7 @@ impl Rpc for HttpRpc { replace_recent_blockhash: false, // usa el mismo blockhash que envías commitment: &self.commitment, preflight_commitment: Some(&self.commitment), - skip_preflight: None, + skip_preflight: Some(true), min_context_slot, }; @@ -169,6 +167,7 @@ impl Rpc for HttpRpc { params: Some(vec![serde_json::json!(tx_b64), serde_json::to_value(cfg)?]), }; + let resp: RpcResponse = self .client .post(&self.url) @@ -193,9 +192,9 @@ impl Rpc for HttpRpc { sig_verify: false, replace_recent_blockhash: false, commitment: &self.commitment, - preflight_commitment: Some(&self.commitment), - skip_preflight: Some(false), - min_context_slot, // 👈 importante + preflight_commitment: None, + skip_preflight: Some(true), + min_context_slot: None }; let req = RpcRequest {