Skip to content

Commit 904a21c

Browse files
committed
Merge #337: Depend on bitcoin v0.32.0
3a3446a Depend on bitcoin v0.32.0 (Tobin C. Harding) Pull request description: Done on top of #348 because I had to pin in the CI script, draft until that goes in. Depend on the latest release of `rust-bitcoin`. ACKs for top commit: apoelstra: ACK 3a3446a nice! lots of slight improvements here Tree-SHA512: badf1b26a030985c55a807b916e00c4199d5260ef69664ac6fc4db0182a13dc4433ca26f773d4ecbc9b61f5400f82c0a5f38d05f183e9a8aa6242f06a60397ed
2 parents 0cdbc25 + 3a3446a commit 904a21c

File tree

10 files changed

+177
-70
lines changed

10 files changed

+177
-70
lines changed

Cargo-minimal.lock

+74-14
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,28 @@
22
# It is not intended for manual editing.
33
version = 3
44

5+
[[package]]
6+
name = "arrayvec"
7+
version = "0.7.4"
8+
source = "registry+https://github.com/rust-lang/crates.io-index"
9+
checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711"
10+
511
[[package]]
612
name = "autocfg"
713
version = "1.2.0"
814
source = "registry+https://github.com/rust-lang/crates.io-index"
915
checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80"
1016

17+
[[package]]
18+
name = "base58ck"
19+
version = "0.1.0"
20+
source = "registry+https://github.com/rust-lang/crates.io-index"
21+
checksum = "2c8d66485a3a2ea485c1913c4572ce0256067a5377ac8c75c4960e1cda98605f"
22+
dependencies = [
23+
"bitcoin-internals 0.3.0",
24+
"bitcoin_hashes 0.14.0",
25+
]
26+
1127
[[package]]
1228
name = "base64"
1329
version = "0.13.1"
@@ -16,20 +32,23 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
1632

1733
[[package]]
1834
name = "bech32"
19-
version = "0.10.0-beta"
35+
version = "0.11.0"
2036
source = "registry+https://github.com/rust-lang/crates.io-index"
21-
checksum = "98f7eed2b2781a6f0b5c903471d48e15f56fb4e1165df8a9a2337fd1a59d45ea"
37+
checksum = "d965446196e3b7decd44aa7ee49e31d630118f90ef12f97900f262eb915c951d"
2238

2339
[[package]]
2440
name = "bitcoin"
25-
version = "0.31.2"
41+
version = "0.32.0"
2642
source = "registry+https://github.com/rust-lang/crates.io-index"
27-
checksum = "6c85783c2fe40083ea54a33aa2f0ba58831d90fcd190f5bdc47e74e84d2a96ae"
43+
checksum = "7170e7750a20974246f17ece04311b4205a6155f1db564c5b224af817663c3ea"
2844
dependencies = [
45+
"base58ck",
2946
"bech32",
30-
"bitcoin-internals",
31-
"bitcoin_hashes",
32-
"hex-conservative",
47+
"bitcoin-internals 0.3.0",
48+
"bitcoin-io",
49+
"bitcoin-units",
50+
"bitcoin_hashes 0.14.0",
51+
"hex-conservative 0.2.0",
3352
"hex_lit",
3453
"secp256k1",
3554
"serde",
@@ -40,7 +59,29 @@ name = "bitcoin-internals"
4059
version = "0.2.0"
4160
source = "registry+https://github.com/rust-lang/crates.io-index"
4261
checksum = "9425c3bf7089c983facbae04de54513cce73b41c7f9ff8c845b54e7bc64ebbfb"
62+
63+
[[package]]
64+
name = "bitcoin-internals"
65+
version = "0.3.0"
66+
source = "registry+https://github.com/rust-lang/crates.io-index"
67+
checksum = "30bdbe14aa07b06e6cfeffc529a1f099e5fbe249524f8125358604df99a4bed2"
68+
dependencies = [
69+
"serde",
70+
]
71+
72+
[[package]]
73+
name = "bitcoin-io"
74+
version = "0.1.2"
75+
source = "registry+https://github.com/rust-lang/crates.io-index"
76+
checksum = "340e09e8399c7bd8912f495af6aa58bea0c9214773417ffaa8f6460f93aaee56"
77+
78+
[[package]]
79+
name = "bitcoin-units"
80+
version = "0.1.1"
81+
source = "registry+https://github.com/rust-lang/crates.io-index"
82+
checksum = "cb54da0b28892f3c52203a7191534033e051b6f4b52bc15480681b57b7e036f5"
4383
dependencies = [
84+
"bitcoin-internals 0.3.0",
4485
"serde",
4586
]
4687

@@ -50,8 +91,18 @@ version = "0.13.0"
5091
source = "registry+https://github.com/rust-lang/crates.io-index"
5192
checksum = "1930a4dabfebb8d7d9992db18ebe3ae2876f0a305fab206fd168df931ede293b"
5293
dependencies = [
53-
"bitcoin-internals",
54-
"hex-conservative",
94+
"bitcoin-internals 0.2.0",
95+
"hex-conservative 0.1.1",
96+
]
97+
98+
[[package]]
99+
name = "bitcoin_hashes"
100+
version = "0.14.0"
101+
source = "registry+https://github.com/rust-lang/crates.io-index"
102+
checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16"
103+
dependencies = [
104+
"bitcoin-io",
105+
"hex-conservative 0.2.0",
55106
"serde",
56107
]
57108

@@ -136,6 +187,15 @@ version = "0.1.1"
136187
source = "registry+https://github.com/rust-lang/crates.io-index"
137188
checksum = "30ed443af458ccb6d81c1e7e661545f94d3176752fb1df2f543b902a1e0f51e2"
138189

190+
[[package]]
191+
name = "hex-conservative"
192+
version = "0.2.0"
193+
source = "registry+https://github.com/rust-lang/crates.io-index"
194+
checksum = "e1aa273bf451e37ed35ced41c71a5e2a4e29064afb104158f2514bcd71c2c986"
195+
dependencies = [
196+
"arrayvec",
197+
]
198+
139199
[[package]]
140200
name = "hex_lit"
141201
version = "0.1.1"
@@ -298,21 +358,21 @@ checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1"
298358

299359
[[package]]
300360
name = "secp256k1"
301-
version = "0.28.2"
361+
version = "0.29.0"
302362
source = "registry+https://github.com/rust-lang/crates.io-index"
303-
checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10"
363+
checksum = "0e0cc0f1cf93f4969faf3ea1c7d8a9faed25918d96affa959720823dfe86d4f3"
304364
dependencies = [
305-
"bitcoin_hashes",
365+
"bitcoin_hashes 0.13.0",
306366
"rand",
307367
"secp256k1-sys",
308368
"serde",
309369
]
310370

311371
[[package]]
312372
name = "secp256k1-sys"
313-
version = "0.9.2"
373+
version = "0.10.0"
314374
source = "registry+https://github.com/rust-lang/crates.io-index"
315-
checksum = "e5d1746aae42c19d583c3c1a8c646bfad910498e2051c551a7f2e3c0c9fbb7eb"
375+
checksum = "1433bd67156263443f14d603720b082dd3121779323fce20cba2aa07b874bc1b"
316376
dependencies = [
317377
"cc",
318378
]

Cargo-recent.lock

+74-14
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,28 @@
22
# It is not intended for manual editing.
33
version = 3
44

5+
[[package]]
6+
name = "arrayvec"
7+
version = "0.7.4"
8+
source = "registry+https://github.com/rust-lang/crates.io-index"
9+
checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711"
10+
511
[[package]]
612
name = "autocfg"
713
version = "1.2.0"
814
source = "registry+https://github.com/rust-lang/crates.io-index"
915
checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80"
1016

17+
[[package]]
18+
name = "base58ck"
19+
version = "0.1.0"
20+
source = "registry+https://github.com/rust-lang/crates.io-index"
21+
checksum = "2c8d66485a3a2ea485c1913c4572ce0256067a5377ac8c75c4960e1cda98605f"
22+
dependencies = [
23+
"bitcoin-internals 0.3.0",
24+
"bitcoin_hashes 0.14.0",
25+
]
26+
1127
[[package]]
1228
name = "base64"
1329
version = "0.13.1"
@@ -16,20 +32,23 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
1632

1733
[[package]]
1834
name = "bech32"
19-
version = "0.10.0-beta"
35+
version = "0.11.0"
2036
source = "registry+https://github.com/rust-lang/crates.io-index"
21-
checksum = "98f7eed2b2781a6f0b5c903471d48e15f56fb4e1165df8a9a2337fd1a59d45ea"
37+
checksum = "d965446196e3b7decd44aa7ee49e31d630118f90ef12f97900f262eb915c951d"
2238

2339
[[package]]
2440
name = "bitcoin"
25-
version = "0.31.2"
41+
version = "0.32.0"
2642
source = "registry+https://github.com/rust-lang/crates.io-index"
27-
checksum = "6c85783c2fe40083ea54a33aa2f0ba58831d90fcd190f5bdc47e74e84d2a96ae"
43+
checksum = "7170e7750a20974246f17ece04311b4205a6155f1db564c5b224af817663c3ea"
2844
dependencies = [
45+
"base58ck",
2946
"bech32",
30-
"bitcoin-internals",
31-
"bitcoin_hashes",
32-
"hex-conservative",
47+
"bitcoin-internals 0.3.0",
48+
"bitcoin-io",
49+
"bitcoin-units",
50+
"bitcoin_hashes 0.14.0",
51+
"hex-conservative 0.2.0",
3352
"hex_lit",
3453
"secp256k1",
3554
"serde",
@@ -40,7 +59,29 @@ name = "bitcoin-internals"
4059
version = "0.2.0"
4160
source = "registry+https://github.com/rust-lang/crates.io-index"
4261
checksum = "9425c3bf7089c983facbae04de54513cce73b41c7f9ff8c845b54e7bc64ebbfb"
62+
63+
[[package]]
64+
name = "bitcoin-internals"
65+
version = "0.3.0"
66+
source = "registry+https://github.com/rust-lang/crates.io-index"
67+
checksum = "30bdbe14aa07b06e6cfeffc529a1f099e5fbe249524f8125358604df99a4bed2"
68+
dependencies = [
69+
"serde",
70+
]
71+
72+
[[package]]
73+
name = "bitcoin-io"
74+
version = "0.1.2"
75+
source = "registry+https://github.com/rust-lang/crates.io-index"
76+
checksum = "340e09e8399c7bd8912f495af6aa58bea0c9214773417ffaa8f6460f93aaee56"
77+
78+
[[package]]
79+
name = "bitcoin-units"
80+
version = "0.1.1"
81+
source = "registry+https://github.com/rust-lang/crates.io-index"
82+
checksum = "cb54da0b28892f3c52203a7191534033e051b6f4b52bc15480681b57b7e036f5"
4383
dependencies = [
84+
"bitcoin-internals 0.3.0",
4485
"serde",
4586
]
4687

@@ -50,8 +91,18 @@ version = "0.13.0"
5091
source = "registry+https://github.com/rust-lang/crates.io-index"
5192
checksum = "1930a4dabfebb8d7d9992db18ebe3ae2876f0a305fab206fd168df931ede293b"
5293
dependencies = [
53-
"bitcoin-internals",
54-
"hex-conservative",
94+
"bitcoin-internals 0.2.0",
95+
"hex-conservative 0.1.1",
96+
]
97+
98+
[[package]]
99+
name = "bitcoin_hashes"
100+
version = "0.14.0"
101+
source = "registry+https://github.com/rust-lang/crates.io-index"
102+
checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16"
103+
dependencies = [
104+
"bitcoin-io",
105+
"hex-conservative 0.2.0",
55106
"serde",
56107
]
57108

@@ -136,6 +187,15 @@ version = "0.1.1"
136187
source = "registry+https://github.com/rust-lang/crates.io-index"
137188
checksum = "30ed443af458ccb6d81c1e7e661545f94d3176752fb1df2f543b902a1e0f51e2"
138189

190+
[[package]]
191+
name = "hex-conservative"
192+
version = "0.2.0"
193+
source = "registry+https://github.com/rust-lang/crates.io-index"
194+
checksum = "e1aa273bf451e37ed35ced41c71a5e2a4e29064afb104158f2514bcd71c2c986"
195+
dependencies = [
196+
"arrayvec",
197+
]
198+
139199
[[package]]
140200
name = "hex_lit"
141201
version = "0.1.1"
@@ -298,21 +358,21 @@ checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1"
298358

299359
[[package]]
300360
name = "secp256k1"
301-
version = "0.28.2"
361+
version = "0.29.0"
302362
source = "registry+https://github.com/rust-lang/crates.io-index"
303-
checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10"
363+
checksum = "0e0cc0f1cf93f4969faf3ea1c7d8a9faed25918d96affa959720823dfe86d4f3"
304364
dependencies = [
305-
"bitcoin_hashes",
365+
"bitcoin_hashes 0.13.0",
306366
"rand",
307367
"secp256k1-sys",
308368
"serde",
309369
]
310370

311371
[[package]]
312372
name = "secp256k1-sys"
313-
version = "0.9.2"
373+
version = "0.10.0"
314374
source = "registry+https://github.com/rust-lang/crates.io-index"
315-
checksum = "e5d1746aae42c19d583c3c1a8c646bfad910498e2051c551a7f2e3c0c9fbb7eb"
375+
checksum = "1433bd67156263443f14d603720b082dd3121779323fce20cba2aa07b874bc1b"
316376
dependencies = [
317377
"cc",
318378
]

client/examples/test_against_node.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,9 @@ fn main_result() -> Result<(), Error> {
3737

3838
let bitcoin_block: bitcoin::Block = rpc.get_by_id(&best_block_hash)?;
3939
println!("best block hash by `get`: {}", bitcoin_block.header.prev_blockhash);
40-
let bitcoin_tx: bitcoin::Transaction = rpc.get_by_id(&bitcoin_block.txdata[0].txid())?;
41-
println!("tx by `get`: {}", bitcoin_tx.txid());
40+
let bitcoin_tx: bitcoin::Transaction =
41+
rpc.get_by_id(&bitcoin_block.txdata[0].compute_txid())?;
42+
println!("tx by `get`: {}", bitcoin_tx.compute_txid());
4243

4344
Ok(())
4445
}

client/src/client.rs

+7-6
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ use std::iter::FromIterator;
1515
use std::path::PathBuf;
1616
use std::{fmt, result};
1717

18-
use crate::{bitcoin, deserialize_hex};
18+
use crate::bitcoin;
19+
use crate::bitcoin::consensus::encode;
1920
use bitcoin::hex::DisplayHex;
2021
use jsonrpc;
2122
use serde;
@@ -163,7 +164,7 @@ pub trait RawTx: Sized + Clone {
163164

164165
impl<'a> RawTx for &'a Transaction {
165166
fn raw_hex(self) -> String {
166-
bitcoin::consensus::encode::serialize_hex(self)
167+
encode::serialize_hex(self)
167168
}
168169
}
169170

@@ -333,7 +334,7 @@ pub trait RpcApi: Sized {
333334

334335
fn get_block(&self, hash: &bitcoin::BlockHash) -> Result<Block> {
335336
let hex: String = self.call("getblock", &[into_json(hash)?, 0.into()])?;
336-
deserialize_hex(&hex)
337+
Ok(encode::deserialize_hex(&hex)?)
337338
}
338339

339340
fn get_block_hex(&self, hash: &bitcoin::BlockHash) -> Result<String> {
@@ -347,7 +348,7 @@ pub trait RpcApi: Sized {
347348

348349
fn get_block_header(&self, hash: &bitcoin::BlockHash) -> Result<bitcoin::block::Header> {
349350
let hex: String = self.call("getblockheader", &[into_json(hash)?, false.into()])?;
350-
deserialize_hex(&hex)
351+
Ok(encode::deserialize_hex(&hex)?)
351352
}
352353

353354
fn get_block_header_info(
@@ -491,7 +492,7 @@ pub trait RpcApi: Sized {
491492
) -> Result<Transaction> {
492493
let mut args = [into_json(txid)?, into_json(false)?, opt_into_json(block_hash)?];
493494
let hex: String = self.call("getrawtransaction", handle_defaults(&mut args, &[null()]))?;
494-
deserialize_hex(&hex)
495+
Ok(encode::deserialize_hex(&hex)?)
495496
}
496497

497498
fn get_raw_transaction_hex(
@@ -788,7 +789,7 @@ pub trait RpcApi: Sized {
788789
replaceable: Option<bool>,
789790
) -> Result<Transaction> {
790791
let hex: String = self.create_raw_transaction_hex(utxos, outs, locktime, replaceable)?;
791-
deserialize_hex(&hex)
792+
Ok(encode::deserialize_hex(&hex)?)
792793
}
793794

794795
fn decode_raw_transaction<R: RawTx>(

client/src/error.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ pub enum Error {
2222
JsonRpc(jsonrpc::error::Error),
2323
Hex(hex::HexToBytesError),
2424
Json(serde_json::error::Error),
25-
BitcoinSerialization(bitcoin::consensus::encode::Error),
25+
BitcoinSerialization(bitcoin::consensus::encode::FromHexError),
2626
Secp256k1(secp256k1::Error),
2727
Io(io::Error),
2828
InvalidAmount(bitcoin::amount::ParseAmountError),
@@ -51,8 +51,8 @@ impl From<serde_json::error::Error> for Error {
5151
}
5252
}
5353

54-
impl From<bitcoin::consensus::encode::Error> for Error {
55-
fn from(e: bitcoin::consensus::encode::Error) -> Error {
54+
impl From<bitcoin::consensus::encode::FromHexError> for Error {
55+
fn from(e: bitcoin::consensus::encode::FromHexError) -> Error {
5656
Error::BitcoinSerialization(e)
5757
}
5858
}

0 commit comments

Comments
 (0)