From d7e742118cc654438089614988de95252273bba4 Mon Sep 17 00:00:00 2001 From: Andrew Poelstra Date: Thu, 22 May 2025 21:02:18 +0000 Subject: [PATCH 1/8] add dependency on bitcoin-units --- Cargo.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index f6b8444a..de598a72 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,7 +15,7 @@ default = ["json-contract"] json-contract = ["serde_json"] "serde" = [ "bitcoin/serde", - "bitcoin/serde", + "bitcoin-units/serde", "secp256k1-zkp/serde", "actual-serde", ] @@ -24,6 +24,7 @@ base64 = ["bitcoin/base64"] [dependencies] bech32 = "0.11.0" bitcoin = "0.32.2" +bitcoin-units = { version = "1.0.0-rc.0", default-features = false, features = [ "std" ] } secp256k1-zkp = { version = "0.11.0", features = ["global-context", "hashes"] } # Used for ContractHash::from_json_contract. From 186515fe367197a1c51022854d48c9141bcfb846 Mon Sep 17 00:00:00 2001 From: Andrew Poelstra Date: Thu, 26 Jun 2025 02:14:28 +0000 Subject: [PATCH 2/8] serde: replace `actual_serde` with `dep:serde` We don't need to rename packages anymore to have an optional dependency that also triggers other depenedncies when enabled. --- Cargo.toml | 6 ++---- src/blind.rs | 6 +----- src/lib.rs | 3 +-- src/locktime.rs | 9 +++------ src/pset/map/global.rs | 4 ++-- src/pset/map/input.rs | 2 +- src/pset/map/output.rs | 4 ++-- src/pset/mod.rs | 2 +- src/pset/raw.rs | 18 +++--------------- src/schnorr.rs | 2 +- src/serde_utils.rs | 6 ++---- src/taproot.rs | 13 ++++++------- src/transaction.rs | 3 +-- 13 files changed, 26 insertions(+), 52 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index de598a72..2b3b32a1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,7 +17,7 @@ json-contract = ["serde_json"] "bitcoin/serde", "bitcoin-units/serde", "secp256k1-zkp/serde", - "actual-serde", + "dep:serde", ] base64 = ["bitcoin/base64"] @@ -30,9 +30,7 @@ secp256k1-zkp = { version = "0.11.0", features = ["global-context", "hashes"] } # Used for ContractHash::from_json_contract. serde_json = { version = "1.0", optional = true } -actual-serde = { package = "serde", version = "1.0.103", features = [ - "derive", -], optional = true } +serde = { version = "1.0.103", features = ["derive"], optional = true } [target.wasm32-unknown-unknown.dev-dependencies] diff --git a/src/blind.rs b/src/blind.rs index 340e62c5..c293d05a 100644 --- a/src/blind.rs +++ b/src/blind.rs @@ -229,11 +229,7 @@ impl RangeProofMessage { } /// Information about Transaction Input Asset -#[cfg_attr( - feature = "serde", - derive(Serialize, Deserialize), - serde(crate = "actual_serde") -)] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] #[derive(Debug, PartialEq, Eq, Clone, Copy, Hash)] pub struct TxOutSecrets { /// Asset diff --git a/src/lib.rs b/src/lib.rs index b54fc1f5..6aa2da4c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -32,8 +32,7 @@ pub extern crate bitcoin; pub extern crate secp256k1_zkp; /// Re-export of serde crate #[cfg(feature = "serde")] -#[macro_use] -pub extern crate actual_serde as serde; +pub extern crate serde; #[cfg(all(test, feature = "serde"))] extern crate serde_test; diff --git a/src/locktime.rs b/src/locktime.rs index e93f10b6..79c79c3e 100644 --- a/src/locktime.rs +++ b/src/locktime.rs @@ -66,8 +66,7 @@ pub const LOCK_TIME_THRESHOLD: u32 = 500_000_000; /// ``` #[allow(clippy::derive_ord_xor_partial_ord)] #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -#[cfg_attr(feature = "serde", serde(crate = "actual_serde"))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub enum LockTime { /// A block height lock time value. /// @@ -293,8 +292,7 @@ impl Decodable for LockTime { /// An absolute block height, guaranteed to always contain a valid height value. #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -#[cfg_attr(feature = "serde", serde(crate = "actual_serde"))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct Height(u32); impl Height { @@ -379,8 +377,7 @@ impl TryFrom for Height { /// `to_consensus_u32()`. Said another way, `Time(x)` means 'x seconds since epoch' _not_ '(x - /// threshold) seconds since epoch'. #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -#[cfg_attr(feature = "serde", serde(crate = "actual_serde"))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct Time(u32); impl Time { diff --git a/src/pset/map/global.rs b/src/pset/map/global.rs index 4f9b0e24..70d2cafb 100644 --- a/src/pset/map/global.rs +++ b/src/pset/map/global.rs @@ -58,7 +58,7 @@ const PSBT_ELEMENTS_GLOBAL_TX_MODIFIABLE: u8 = 0x01; /// Global transaction data #[derive(Debug, Clone, PartialEq)] -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize), serde(crate = "actual_serde"))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct TxData { /// Transaction version. Must be 2. pub version: u32, @@ -93,7 +93,7 @@ impl Default for TxData { /// A key-value map for global data. #[derive(Clone, Debug, PartialEq)] -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize), serde(crate = "actual_serde"))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct Global { /// Global transaction data #[cfg_attr(feature = "serde", serde(flatten))] diff --git a/src/pset/map/input.rs b/src/pset/map/input.rs index 72702525..f28dcf50 100644 --- a/src/pset/map/input.rs +++ b/src/pset/map/input.rs @@ -171,7 +171,7 @@ const PSBT_ELEMENTS_IN_BLINDED_ISSUANCE: u8 = 0x15; /// A key-value map for an input of the corresponding index in the unsigned /// transaction. #[derive(Clone, Debug, PartialEq)] -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize), serde(crate = "actual_serde"))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct Input { /// The non-witness transaction this input spends from. Should only be /// [`std::option::Option::Some`] for inputs which spend non-segwit outputs or diff --git a/src/pset/map/output.rs b/src/pset/map/output.rs index d86d3389..2eb7e027 100644 --- a/src/pset/map/output.rs +++ b/src/pset/map/output.rs @@ -87,7 +87,7 @@ const PSBT_ELEMENTS_OUT_BLIND_ASSET_PROOF: u8 = 0x0a; /// A key-value map for an output of the corresponding index in the unsigned /// transaction. #[derive(Clone, Default, Debug, PartialEq)] -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize), serde(crate = "actual_serde"))] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] pub struct Output { /// The redeem script for this output. pub redeem_script: Option