From ec3637e17646b21489b2bb7001b48c1f8223502c Mon Sep 17 00:00:00 2001 From: jlest01 <174762002+jlest01@users.noreply.github.com> Date: Wed, 18 Sep 2024 19:13:36 -0300 Subject: [PATCH] Update `testmempoolaccept` RPC --- client/src/client.rs | 5 ++++- integration_test/src/main.rs | 8 ++++---- json/src/lib.rs | 15 +++++++++++---- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/client/src/client.rs b/client/src/client.rs index 2f809a79..a3fc2d3f 100644 --- a/client/src/client.rs +++ b/client/src/client.rs @@ -862,10 +862,13 @@ pub trait RpcApi: Sized { fn test_mempool_accept( &self, rawtxs: &[R], + maxfeerate: Option, ) -> Result> { let hexes: Vec = rawtxs.to_vec().into_iter().map(|r| r.raw_hex().into()).collect(); - self.call("testmempoolaccept", &[hexes.into()]) + let mut args = [hexes.into(), opt_into_json(maxfeerate)?]; + let defaults = [null()]; + self.call("testmempoolaccept", handle_defaults(&mut args, &defaults)) } fn stop(&self) -> Result { diff --git a/integration_test/src/main.rs b/integration_test/src/main.rs index c3236bb9..f60588fe 100644 --- a/integration_test/src/main.rs +++ b/integration_test/src/main.rs @@ -761,13 +761,13 @@ fn test_test_mempool_accept(cl: &Client) { let tx = cl.create_raw_transaction(&[input.clone()], &output, Some(500_000), Some(false)).unwrap(); - let res = cl.test_mempool_accept(&[&tx]).unwrap(); - assert!(!res[0].allowed); + let res = cl.test_mempool_accept(&[&tx], None).unwrap(); + assert!(res[0].allowed.is_some() && !res[0].allowed.unwrap()); assert!(res[0].reject_reason.is_some()); let signed = cl.sign_raw_transaction_with_wallet(&tx, None, None).unwrap().transaction().unwrap(); - let res = cl.test_mempool_accept(&[&signed]).unwrap(); - assert!(res[0].allowed, "not allowed: {:?}", res[0].reject_reason); + let res = cl.test_mempool_accept(&[&signed], None).unwrap(); + assert!(res[0].allowed.unwrap(), "not allowed: {:?}", res[0].reject_reason); } fn test_wallet_create_funded_psbt(cl: &Client) { diff --git a/json/src/lib.rs b/json/src/lib.rs index 25f3508e..ac71e27a 100644 --- a/json/src/lib.rs +++ b/json/src/lib.rs @@ -833,15 +833,18 @@ impl SignRawTransactionResult { #[derive(Clone, PartialEq, Eq, Debug, Deserialize, Serialize)] pub struct TestMempoolAcceptResult { pub txid: bitcoin::Txid, - pub allowed: bool, - #[serde(rename = "reject-reason")] - pub reject_reason: Option, + pub wtxid: bitcoin::Txid, + #[serde(rename = "package-error")] + pub package_error: Option, + pub allowed: Option, /// Virtual transaction size as defined in BIP 141 (only present when 'allowed' is true) /// Added in Bitcoin Core v0.21 pub vsize: Option, /// Transaction fees (only present if 'allowed' is true) /// Added in Bitcoin Core v0.21 pub fees: Option, + #[serde(rename = "reject-reason")] + pub reject_reason: Option, } #[derive(Clone, PartialEq, Eq, Debug, Deserialize, Serialize)] @@ -849,7 +852,11 @@ pub struct TestMempoolAcceptResultFees { /// Transaction fee in BTC #[serde(with = "bitcoin::amount::serde::as_btc")] pub base: Amount, - // unlike GetMempoolEntryResultFees, this only has the `base` fee + /// The effective feerate per KvB + #[serde(rename = "effective-feerate", with = "bitcoin::amount::serde::as_btc")] + pub effective_feerate: Amount, + #[serde(rename = "effective-includes")] + pub effective_includes: Vec, } #[derive(Copy, Clone, PartialEq, Eq, Debug, Deserialize, Serialize)]