Skip to content

Commit 0615379

Browse files
committed
Merge rust-bitcoin#46: More dependency clean up
4b1d22a Bump version of bitcoin, remove hex hack (Nick Johnson) 906f5d2 Import serde as serde (Nick Johnson) 87bf93e Remove unused serde_test dependency (Nick Johnson) 2f518e9 Remove unused bincode dependency (Nick Johnson) 6718fd3 Use re-exported version of secp to avoid version mismatch (Nick Johnson) Pull request description: Drop unused dev-deps, clean up the `serde` import, and bump `bitcoin` to fix the min dep issue in hex. ACKs for top commit: tcharding: ACK 4b1d22a Tree-SHA512: bced9a15445c9cdfc3de63101725d3d6ae1b04acba25a62e412232b69fc5d290af47257435684df2757a4adf3787b3de8f37f0995152663ff8d3a8575ffa48b0
2 parents 7419722 + 4b1d22a commit 0615379

File tree

23 files changed

+31
-113
lines changed

23 files changed

+31
-113
lines changed

Cargo-minimal.lock

Lines changed: 4 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -36,21 +36,11 @@ version = "0.11.0"
3636
source = "registry+https://github.com/rust-lang/crates.io-index"
3737
checksum = "d965446196e3b7decd44aa7ee49e31d630118f90ef12f97900f262eb915c951d"
3838

39-
[[package]]
40-
name = "bincode"
41-
version = "1.3.1"
42-
source = "registry+https://github.com/rust-lang/crates.io-index"
43-
checksum = "f30d3a39baa26f9651f17b375061f3233dde33424a8b72b0dbe93a68a0bc896d"
44-
dependencies = [
45-
"byteorder",
46-
"serde",
47-
]
48-
4939
[[package]]
5040
name = "bitcoin"
51-
version = "0.32.6"
41+
version = "0.32.8"
5242
source = "registry+https://github.com/rust-lang/crates.io-index"
53-
checksum = "ad8929a18b8e33ea6b3c09297b687baaa71fb1b97353243a3f1029fad5c59c5b"
43+
checksum = "1e499f9fc0407f50fe98af744ab44fa67d409f76b6772e1689ec8485eb0c0f66"
5444
dependencies = [
5545
"base58ck",
5646
"base64",
@@ -116,12 +106,6 @@ dependencies = [
116106
"serde",
117107
]
118108

119-
[[package]]
120-
name = "byteorder"
121-
version = "1.3.0"
122-
source = "registry+https://github.com/rust-lang/crates.io-index"
123-
checksum = "60f0b0d4c0a382d2734228fd12b5a6b5dac185c60e938026fd31b265b94f9bd2"
124-
125109
[[package]]
126110
name = "cc"
127111
version = "1.0.28"
@@ -147,9 +131,9 @@ dependencies = [
147131

148132
[[package]]
149133
name = "hex-conservative"
150-
version = "0.2.1"
134+
version = "0.2.2"
151135
source = "registry+https://github.com/rust-lang/crates.io-index"
152-
checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd"
136+
checksum = "fda06d18ac606267c40c04e41b9947729bf8b9efe74bd4e82b61a5f26a510b9f"
153137
dependencies = [
154138
"arrayvec",
155139
]
@@ -202,14 +186,10 @@ name = "psbt-v2"
202186
version = "0.2.0"
203187
dependencies = [
204188
"anyhow",
205-
"bincode",
206189
"bitcoin",
207-
"hex-conservative",
208190
"miniscript",
209-
"secp256k1",
210191
"serde",
211192
"serde_json",
212-
"serde_test",
213193
]
214194

215195
[[package]]
@@ -319,15 +299,6 @@ dependencies = [
319299
"serde",
320300
]
321301

322-
[[package]]
323-
name = "serde_test"
324-
version = "1.0.19"
325-
source = "registry+https://github.com/rust-lang/crates.io-index"
326-
checksum = "482765e11e55174e2d74a611674d09ed96712c00e0777e305a0c416dfef5fa40"
327-
dependencies = [
328-
"serde",
329-
]
330-
331302
[[package]]
332303
name = "syn"
333304
version = "2.0.46"

Cargo-recent.lock

Lines changed: 4 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -36,20 +36,11 @@ version = "0.11.0"
3636
source = "registry+https://github.com/rust-lang/crates.io-index"
3737
checksum = "d965446196e3b7decd44aa7ee49e31d630118f90ef12f97900f262eb915c951d"
3838

39-
[[package]]
40-
name = "bincode"
41-
version = "1.3.3"
42-
source = "registry+https://github.com/rust-lang/crates.io-index"
43-
checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad"
44-
dependencies = [
45-
"serde",
46-
]
47-
4839
[[package]]
4940
name = "bitcoin"
50-
version = "0.32.7"
41+
version = "0.32.8"
5142
source = "registry+https://github.com/rust-lang/crates.io-index"
52-
checksum = "0fda569d741b895131a88ee5589a467e73e9c4718e958ac9308e4f7dc44b6945"
43+
checksum = "1e499f9fc0407f50fe98af744ab44fa67d409f76b6772e1689ec8485eb0c0f66"
5344
dependencies = [
5445
"base58ck",
5546
"base64",
@@ -134,9 +125,9 @@ dependencies = [
134125

135126
[[package]]
136127
name = "hex-conservative"
137-
version = "0.2.1"
128+
version = "0.2.2"
138129
source = "registry+https://github.com/rust-lang/crates.io-index"
139-
checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd"
130+
checksum = "fda06d18ac606267c40c04e41b9947729bf8b9efe74bd4e82b61a5f26a510b9f"
140131
dependencies = [
141132
"arrayvec",
142133
]
@@ -198,14 +189,10 @@ name = "psbt-v2"
198189
version = "0.2.0"
199190
dependencies = [
200191
"anyhow",
201-
"bincode",
202192
"bitcoin",
203-
"hex-conservative",
204193
"miniscript",
205-
"secp256k1",
206194
"serde",
207195
"serde_json",
208-
"serde_test",
209196
]
210197

211198
[[package]]
@@ -306,15 +293,6 @@ dependencies = [
306293
"serde",
307294
]
308295

309-
[[package]]
310-
name = "serde_test"
311-
version = "1.0.177"
312-
source = "registry+https://github.com/rust-lang/crates.io-index"
313-
checksum = "7f901ee573cab6b3060453d2d5f0bae4e6d628c23c0a962ff9b5f1d7c8d4f1ed"
314-
dependencies = [
315-
"serde",
316-
]
317-
318296
[[package]]
319297
name = "shlex"
320298
version = "1.3.0"

Cargo.toml

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,30 +20,23 @@ rustdoc-args = ["--cfg", "docsrs"]
2020
default = ["std"]
2121
std = ["bitcoin/std", "miniscript?/std"]
2222
rand = ["std", "bitcoin/rand-std"]
23-
serde = ["dep:actual-serde", "bitcoin/serde"]
23+
serde = ["dep:serde", "bitcoin/serde"]
2424
base64 = ["bitcoin/base64"]
2525
miniscript = ["dep:miniscript", "miniscript?/no-std"]
2626

2727
[dependencies]
28-
bitcoin = { version = "0.32.6", default-features = false }
29-
# Workaround for minimal version resolution bug in bitcoin 0.32.x series.
30-
# bitcoin 0.32.6 depends on hex-conservative 0.2.0, which incorrectly specifies
31-
# arrayvec = "0.7" instead of "0.7.2". Is fixed in hex-conservative 0.2.1.
32-
hex-conservative = { version = "0.2.1", default-features = false }
28+
bitcoin = { version = "0.32.8", default-features = false }
3329

3430
miniscript = { version = "12.2.0", default-features = false, optional = true }
35-
actual-serde = { package = "serde", version = "1.0.195", default-features = false, features = ["derive", "alloc"], optional = true }
31+
serde = { version = "1.0.195", default-features = false, features = ["derive", "alloc"], optional = true }
3632

3733
[dev-dependencies]
3834
anyhow = "1.0.86"
3935
serde_json = "1.0.68"
40-
serde_test = "1.0.19"
41-
bincode = "1.3.1"
42-
secp256k1 = { version = "0.29", features = ["rand-std", "global-context"] }
4336

4437
[[example]]
4538
name = "v0"
46-
required-features = ["std"]
39+
required-features = ["std", "rand"]
4740

4841
[[example]]
4942
name = "v2"

examples/v0.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use psbt_v2::bitcoin::bip32::{DerivationPath, Fingerprint};
1313
use psbt_v2::bitcoin::hashes::Hash as _;
1414
use psbt_v2::bitcoin::locktime::absolute;
1515
use psbt_v2::bitcoin::opcodes::all::OP_CHECKMULTISIG;
16-
use psbt_v2::bitcoin::secp256k1::{self, rand, SECP256K1};
16+
use psbt_v2::bitcoin::secp256k1::{self, rand, Secp256k1};
1717
use psbt_v2::bitcoin::{
1818
script, transaction, Address, Amount, CompressedPublicKey, Network, OutPoint, PublicKey,
1919
ScriptBuf, Sequence, Transaction, TxIn, TxOut, Txid, Witness,
@@ -230,7 +230,8 @@ impl Entity {
230230

231231
let mut keys = BTreeMap::new();
232232
keys.insert(pk, sk);
233-
psbt.sign(&keys, SECP256K1).expect("failed to sign psbt");
233+
let secp = Secp256k1::new();
234+
psbt.sign(&keys, &secp).expect("failed to sign psbt");
234235

235236
Ok(psbt)
236237
}
@@ -240,7 +241,8 @@ impl Entity {
240241
///
241242
/// In a real application these would come from actual secrets.
242243
fn random_keys() -> (secp256k1::SecretKey, secp256k1::PublicKey) {
244+
let secp = Secp256k1::new();
243245
let sk = secp256k1::SecretKey::new(&mut rand::thread_rng());
244-
let pk = sk.public_key(SECP256K1);
246+
let pk = sk.public_key(&secp);
245247
(sk, pk)
246248
}

examples/v2.rs

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use psbt_v2::bitcoin::bip32::{DerivationPath, KeySource, Xpriv, Xpub};
1414
use psbt_v2::bitcoin::hashes::Hash as _;
1515
use psbt_v2::bitcoin::locktime::absolute;
1616
use psbt_v2::bitcoin::opcodes::all::OP_CHECKMULTISIG;
17-
use psbt_v2::bitcoin::secp256k1::{self, SECP256K1};
17+
use psbt_v2::bitcoin::secp256k1::{self, Secp256k1};
1818
use psbt_v2::bitcoin::{
1919
script, Address, Amount, CompressedPublicKey, Network, OutPoint, PublicKey, ScriptBuf,
2020
Sequence, TxOut, Txid,
@@ -241,17 +241,18 @@ impl Default for Bob {
241241
/// An entity that can take on one of the PSBT roles.
242242
pub struct Entity {
243243
master: Xpriv,
244+
secp: Secp256k1<secp256k1::All>,
244245
}
245246

246247
impl Entity {
247248
/// Creates a new entity with random keys.
248-
pub fn new(master: Xpriv) -> Self { Self { master } }
249+
pub fn new(master: Xpriv) -> Self { Self { master, secp: Secp256k1::new() } }
249250

250251
/// Returns the pubkey for this entity at `derivation_path`.
251252
fn public_key(&self, derivation_path: &str) -> anyhow::Result<bitcoin::PublicKey> {
252253
let path = DerivationPath::from_str(derivation_path)?;
253-
let xpriv = self.master.derive_priv(SECP256K1, &path)?;
254-
let pk = Xpub::from_priv(SECP256K1, &xpriv);
254+
let xpriv = self.master.derive_priv(&self.secp, &path)?;
255+
let pk = Xpub::from_priv(&self.secp, &xpriv);
255256
Ok(pk.to_pub().into())
256257
}
257258

@@ -270,20 +271,20 @@ impl Entity {
270271
derivation_path: &str,
271272
) -> anyhow::Result<(secp256k1::PublicKey, KeySource)> {
272273
let path = DerivationPath::from_str(derivation_path)?;
273-
let xpriv = self.master.derive_priv(SECP256K1, &path).expect("failed to derive xpriv");
274-
let fingerprint = xpriv.fingerprint(SECP256K1);
274+
let xpriv = self.master.derive_priv(&self.secp, &path).expect("failed to derive xpriv");
275+
let fingerprint = xpriv.fingerprint(&self.secp);
275276
let sk = xpriv.to_priv();
276-
Ok((sk.public_key(SECP256K1).inner, (fingerprint, path)))
277+
Ok((sk.public_key(&self.secp).inner, (fingerprint, path)))
277278
}
278279

279280
/// Signs any ECDSA inputs for which we have keys.
280281
pub fn sign_ecdsa(&self, psbt: Psbt, derivation_path: &str) -> anyhow::Result<Psbt> {
281282
// Usually we'd have to check this was our input and provide the correct key.
282283
let path = DerivationPath::from_str(derivation_path)?;
283-
let xpriv = self.master.derive_priv(SECP256K1, &path)?;
284+
let xpriv = self.master.derive_priv(&self.secp, &path)?;
284285

285286
let signer = Signer::new(psbt)?;
286-
match signer.sign(&xpriv, SECP256K1) {
287+
match signer.sign(&xpriv, &self.secp) {
287288
Ok((psbt, _signing_keys)) => Ok(psbt),
288289
Err(e) => panic!("signing failed: {:?}", e),
289290
}

rbmt.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# Examples to run with specific features enabled.
55
# Format: "example_name:feature1 feature2"
66
examples = [
7-
"v0:std",
7+
"v0:std rand",
88
"v2:std",
99
"v2-separate-creator-constructor:std",
1010
]

src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ extern crate alloc;
1919

2020
#[cfg(feature = "serde")]
2121
#[macro_use]
22-
extern crate actual_serde as serde;
22+
extern crate serde;
2323

2424
/// Re-export of the `rust-bitcoin` crate.
2525
pub extern crate bitcoin;

src/raw.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ use crate::serialize::{Deserialize, Serialize};
2828
/// - `<keypair> := <key> <value>`
2929
#[derive(Debug, PartialEq, Eq)]
3030
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
31-
#[cfg_attr(feature = "serde", serde(crate = "actual_serde"))]
3231
pub struct Pair {
3332
/// The key of this key-value pair.
3433
pub key: Key,
@@ -76,7 +75,6 @@ impl Deserialize for Pair {
7675
/// deserializing.
7776
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
7877
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
79-
#[cfg_attr(feature = "serde", serde(crate = "actual_serde"))]
8078
pub struct Key {
8179
/// The `keytype` of this PSBT map key (`keytype`).
8280
pub type_value: u8,
@@ -138,7 +136,6 @@ pub type ProprietaryType = u8;
138136
/// structure according to BIP 174.
139137
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
140138
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
141-
#[cfg_attr(feature = "serde", serde(crate = "actual_serde"))]
142139
pub struct ProprietaryKey<Subtype = ProprietaryType>
143140
where
144141
Subtype: Copy + From<u8> + Into<u8>,

src/serde_utils.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,15 +171,13 @@ pub mod btreemap_as_seq_byte_values {
171171

172172
/// A custom key-value pair type that serialized the bytes as hex.
173173
#[derive(Debug, Deserialize)]
174-
#[serde(crate = "actual_serde")]
175174
struct OwnedPair<T>(
176175
T,
177176
#[serde(deserialize_with = "crate::serde_utils::hex_bytes::deserialize")] Vec<u8>,
178177
);
179178

180179
/// A custom key-value pair type that serialized the bytes as hex.
181180
#[derive(Debug, Serialize)]
182-
#[serde(crate = "actual_serde")]
183181
struct BorrowedPair<'a, T: 'static>(
184182
&'a T,
185183
#[serde(serialize_with = "crate::serde_utils::hex_bytes::serialize")] &'a [u8],

src/sighash_type.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ use crate::prelude::*;
1414
/// for converting to/from [`PsbtSighashType`] from/to the desired signature hash type they need.
1515
#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
1616
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
17-
#[cfg_attr(feature = "serde", serde(crate = "actual_serde"))]
1817
pub struct PsbtSighashType {
1918
pub(crate) inner: u32,
2019
}

0 commit comments

Comments
 (0)