Skip to content

Commit 85092b4

Browse files
committed
Upgrade bitcoin dependency to actual version 0.31.0-rc2
Based on PR rust-bitcoin/rust-bitcoincore-rpc#311
1 parent 13671d7 commit 85092b4

File tree

9 files changed

+37
-34
lines changed

9 files changed

+37
-34
lines changed

client/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,3 @@ jsonrpc = "0.14.0"
2828
# Used for deserialization of JSON.
2929
serde = "1"
3030
serde_json = "1"
31-
bitcoin-private = "0.1.0"

client/src/client.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@ use std::iter::FromIterator;
1414
use std::path::PathBuf;
1515
use std::{fmt, result};
1616

17-
use crate::bitcoin::{self, consensus};
17+
use crate::{bitcoin, deserialize_hex};
1818
use bitcoin::hex::DisplayHex;
1919
use jsonrpc;
2020
use serde;
2121
use serde_json;
2222

2323
use crate::bitcoin::address::{NetworkUnchecked, NetworkChecked};
24-
use crate::bitcoin::hex::FromHex;
24+
use crate::bitcoin::hashes::hex::FromHex;
2525
use crate::bitcoin::secp256k1::ecdsa::Signature;
2626
use crate::bitcoin::{
2727
Address, Amount, Block, OutPoint, PrivateKey, PublicKey, Script, Transaction,
@@ -335,7 +335,7 @@ pub trait RpcApi: Sized {
335335

336336
fn get_block(&self, hash: &bitcoin::BlockHash) -> Result<Block> {
337337
let hex: String = self.call("getblock", &[into_json(hash)?, 0.into()])?;
338-
Ok(consensus::deserialize_hex(&hex)?)
338+
deserialize_hex(&hex)
339339
}
340340

341341
fn get_block_hex(&self, hash: &bitcoin::BlockHash) -> Result<String> {
@@ -349,7 +349,7 @@ pub trait RpcApi: Sized {
349349

350350
fn get_block_header(&self, hash: &bitcoin::BlockHash) -> Result<bitcoin::block::Header> {
351351
let hex: String = self.call("getblockheader", &[into_json(hash)?, false.into()])?;
352-
Ok(consensus::deserialize_hex(&hex)?)
352+
deserialize_hex(&hex)
353353
}
354354

355355
fn get_block_header_info(
@@ -493,7 +493,7 @@ pub trait RpcApi: Sized {
493493
) -> Result<Transaction> {
494494
let mut args = [into_json(txid)?, into_json(false)?, opt_into_json(block_hash)?];
495495
let hex: String = self.call("getrawtransaction", handle_defaults(&mut args, &[null()]))?;
496-
Ok(consensus::deserialize_hex(&hex)?)
496+
deserialize_hex(&hex)
497497
}
498498

499499
fn get_raw_transaction_hex(
@@ -790,7 +790,7 @@ pub trait RpcApi: Sized {
790790
replaceable: Option<bool>,
791791
) -> Result<Transaction> {
792792
let hex: String = self.create_raw_transaction_hex(utxos, outs, locktime, replaceable)?;
793-
Ok(consensus::deserialize_hex(&hex)?)
793+
deserialize_hex(&hex)
794794
}
795795

796796
fn decode_raw_transaction<R: RawTx>(

client/src/error.rs

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
use std::{error, fmt, io};
1212

1313
use crate::bitcoin;
14-
use crate::bitcoin::hex;
14+
use crate::bitcoin::hashes::hex;
1515
use crate::bitcoin::secp256k1;
1616
use jsonrpc;
1717
use serde_json;
@@ -23,7 +23,6 @@ pub enum Error {
2323
Hex(hex::HexToBytesError),
2424
Json(serde_json::error::Error),
2525
BitcoinSerialization(bitcoin::consensus::encode::Error),
26-
BitcoinDeserializeHex(bitcoin::consensus::DecodeHexError),
2726
Secp256k1(secp256k1::Error),
2827
Io(io::Error),
2928
InvalidAmount(bitcoin::amount::ParseAmountError),
@@ -58,12 +57,6 @@ impl From<bitcoin::consensus::encode::Error> for Error {
5857
}
5958
}
6059

61-
impl From<bitcoin::consensus::DecodeHexError> for Error {
62-
fn from(e: bitcoin::consensus::DecodeHexError) -> Error {
63-
Error::BitcoinDeserializeHex(e)
64-
}
65-
}
66-
6760
impl From<secp256k1::Error> for Error {
6861
fn from(e: secp256k1::Error) -> Error {
6962
Error::Secp256k1(e)
@@ -89,7 +82,6 @@ impl fmt::Display for Error {
8982
Error::Hex(ref e) => write!(f, "hex decode error: {}", e),
9083
Error::Json(ref e) => write!(f, "JSON error: {}", e),
9184
Error::BitcoinSerialization(ref e) => write!(f, "Bitcoin serialization error: {}", e),
92-
Error::BitcoinDeserializeHex(ref e) => write!(f, "Bitcoin deserialize hex error: {}", e),
9385
Error::Secp256k1(ref e) => write!(f, "secp256k1 error: {}", e),
9486
Error::Io(ref e) => write!(f, "I/O error: {}", e),
9587
Error::InvalidAmount(ref e) => write!(f, "invalid amount: {}", e),
@@ -111,7 +103,6 @@ impl error::Error for Error {
111103
Error::Hex(ref e) => Some(e),
112104
Error::Json(ref e) => Some(e),
113105
Error::BitcoinSerialization(ref e) => Some(e),
114-
Error::BitcoinDeserializeHex(ref e) => Some(e),
115106
Error::Secp256k1(ref e) => Some(e),
116107
Error::Io(ref e) => Some(e),
117108
_ => None,

client/src/lib.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ pub extern crate jsonrpc;
2727
pub extern crate blackcoinmore_rpc_json;
2828
pub use crate::json::bitcoin;
2929
pub use blackcoinmore_rpc_json as json;
30+
use json::bitcoin::consensus::{Decodable, ReadExt};
31+
use json::bitcoin::hex::HexToBytesIter;
3032

3133
mod client;
3234
mod error;
@@ -35,3 +37,15 @@ mod queryable;
3537
pub use crate::client::*;
3638
pub use crate::error::Error;
3739
pub use crate::queryable::*;
40+
41+
fn deserialize_hex<T: Decodable>(hex: &str) -> Result<T> {
42+
let mut reader = HexToBytesIter::new(&hex)?;
43+
let object = Decodable::consensus_decode(&mut reader)?;
44+
if reader.read_u8().is_ok() {
45+
Err(Error::BitcoinSerialization(bitcoin::consensus::encode::Error::ParseFailed(
46+
"data not consumed entirely when explicitly deserializing",
47+
)))
48+
} else {
49+
Ok(object)
50+
}
51+
}

client/src/queryable.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ impl<C: RpcApi> Queryable<C> for bitcoin::block::Block {
2828
fn query(rpc: &C, id: &Self::Id) -> Result<Self> {
2929
let rpc_name = "getblock";
3030
let hex: String = rpc.call(rpc_name, &[serde_json::to_value(id)?, 0.into()])?;
31-
let bytes: Vec<u8> = bitcoin::hex::FromHex::from_hex(&hex)?;
31+
let bytes: Vec<u8> = bitcoin::hashes::hex::FromHex::from_hex(&hex)?;
3232
Ok(bitcoin::consensus::encode::deserialize(&bytes)?)
3333
}
3434
}
@@ -39,7 +39,7 @@ impl<C: RpcApi> Queryable<C> for bitcoin::transaction::Transaction {
3939
fn query(rpc: &C, id: &Self::Id) -> Result<Self> {
4040
let rpc_name = "getrawtransaction";
4141
let hex: String = rpc.call(rpc_name, &[serde_json::to_value(id)?])?;
42-
let bytes: Vec<u8> = bitcoin::hex::FromHex::from_hex(&hex)?;
42+
let bytes: Vec<u8> = bitcoin::hashes::hex::FromHex::from_hex(&hex)?;
4343
Ok(bitcoin::consensus::encode::deserialize(&bytes)?)
4444
}
4545
}

integration_test/run.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ if blackmored -version | grep -q "v0\.\(19\|2\)"; then
2323
BLOCKFILTERARG="-blockfilterindex=1"
2424
fi
2525

26-
blackmored -regtest $BLOCKFILTERARG \
26+
./blackmored -regtest $BLOCKFILTERARG \
2727
-datadir=${TESTDIR}/2 \
2828
-connect=127.0.0.1:12348 \
2929
-rpcport=12349 \

integration_test/src/main.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,19 @@ use std::collections::HashMap;
1717
use std::str::FromStr;
1818

1919
use bitcoin::absolute::LockTime;
20-
use bitcoin::address::NetworkChecked;
20+
use bitcoin::address::{NetworkChecked, NetworkUnchecked};
2121
use blackcoinmore_rpc::json;
2222
use blackcoinmore_rpc::jsonrpc::error::Error as JsonRpcError;
2323
use blackcoinmore_rpc::{Auth, Client, Error, RpcApi};
2424

2525
use crate::json::BlockStatsFields as BsFields;
2626
use bitcoin::consensus::encode::{deserialize, serialize_hex};
27-
use bitcoin::hex::FromHex;
27+
use bitcoin::hashes::hex::FromHex;
2828
use bitcoin::hashes::Hash;
2929
use bitcoin::{secp256k1, ScriptBuf, sighash};
30-
use bitcoin::address::{Address, NetworkUnchecked};
3130
use bitcoin::{
32-
Amount, Network, OutPoint, PrivateKey,
33-
Sequence, SignedAmount, Transaction, TxIn, TxOut, Txid, Witness,
31+
transaction, Address, Amount, Network, OutPoint, PrivateKey, Sequence, SignedAmount,
32+
Transaction, TxIn, TxOut, Txid, Witness,
3433
};
3534
use blackcoinmore_rpc::blackcoinmore_rpc_json::{
3635
GetBlockTemplateModes, GetBlockTemplateRules, ScanTxOutRequest,
@@ -589,7 +588,7 @@ fn test_sign_raw_transaction_with_send_raw_transaction(cl: &Client) {
589588
let unspent = unspent.into_iter().nth(0).unwrap();
590589

591590
let tx = Transaction {
592-
version: bitcoin::transaction::Version::ONE,
591+
version: transaction::Version::ONE,
593592
lock_time: LockTime::ZERO,
594593
input: vec![TxIn {
595594
previous_output: OutPoint {
@@ -618,7 +617,7 @@ fn test_sign_raw_transaction_with_send_raw_transaction(cl: &Client) {
618617
let txid = cl.send_raw_transaction(&res.transaction().unwrap()).unwrap();
619618

620619
let tx = Transaction {
621-
version: bitcoin::transaction::Version::ONE,
620+
version: transaction::Version::ONE,
622621
lock_time: LockTime::ZERO,
623622
input: vec![TxIn {
624623
previous_output: OutPoint {
@@ -1375,6 +1374,7 @@ fn test_add_multisig_address(cl: &Client) {
13751374
assert!(cl.add_multisig_address(addresses.len(), &addresses, None, Some(json::AddressType::Bech32)).is_ok());
13761375
}
13771376

1377+
#[rustfmt::skip]
13781378
fn test_derive_addresses(cl: &Client) {
13791379
let descriptor = r"pkh(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c)#62k9sn4x";
13801380
assert_eq!(cl.derive_addresses(descriptor, None).unwrap(), vec!["mrkwtj5xpYQjHeJe5wsweNjVeTKkvR5fCr".parse::<Address<NetworkUnchecked>>().unwrap()]);

json/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,3 @@ serde = { version = "1", features = [ "derive" ] }
2424
serde_json = "1"
2525

2626
bitcoin = { version = "0.31.0-rc2", features = ["serde", "rand", "rand-std"], git = "http://github.com/CoinBlack/rust-blackcoin", branch = "develop" }
27-
bitcoin-private = "0.1.0"

json/src/lib.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ use std::collections::HashMap;
2828
use bitcoin::address::NetworkUnchecked;
2929
use bitcoin::block::Version;
3030
use bitcoin::consensus::encode;
31-
use bitcoin::hex::FromHex;
31+
use bitcoin::hashes::hex::FromHex;
3232
use bitcoin::hashes::sha256;
3333
use bitcoin::{Address, Amount, PrivateKey, PublicKey, SignedAmount, Transaction, ScriptBuf, Script, bip158, bip32, Network};
3434
use serde::de::Error as SerdeError;
@@ -41,7 +41,7 @@ use std::fmt;
4141
///
4242
/// The module is compatible with the serde attribute.
4343
pub mod serde_hex {
44-
use bitcoin::hex::{FromHex, DisplayHex};
44+
use bitcoin::hex::{DisplayHex, FromHex};
4545
use serde::de::Error;
4646
use serde::{Deserializer, Serializer};
4747

@@ -55,7 +55,7 @@ pub mod serde_hex {
5555
}
5656

5757
pub mod opt {
58-
use bitcoin::hex::{FromHex, DisplayHex};
58+
use bitcoin::hex::{DisplayHex, FromHex};
5959
use serde::de::Error;
6060
use serde::{Deserializer, Serializer};
6161

@@ -175,7 +175,7 @@ pub struct GetWalletInfoResult {
175175
#[serde(rename = "paytxfee", with = "bitcoin::amount::serde::as_btc")]
176176
pub pay_tx_fee: Amount,
177177
#[serde(rename = "hdseedid")]
178-
pub hd_seed_id: Option<bitcoin::XKeyIdentifier>,
178+
pub hd_seed_id: Option<bitcoin::bip32::XKeyIdentifier>,
179179
pub private_keys_enabled: bool,
180180
pub avoid_reuse: Option<bool>,
181181
pub scanning: Option<ScanningDetails>,
@@ -960,7 +960,7 @@ pub struct GetAddressInfoResultEmbedded {
960960
#[serde(rename = "hdkeypath")]
961961
pub hd_key_path: Option<bip32::DerivationPath>,
962962
#[serde(rename = "hdseedid")]
963-
pub hd_seed_id: Option<bitcoin::XKeyIdentifier>,
963+
pub hd_seed_id: Option<bitcoin::bip32::XKeyIdentifier>,
964964
#[serde(default)]
965965
pub labels: Vec<GetAddressInfoResultLabel>,
966966
}
@@ -1014,7 +1014,7 @@ pub struct GetAddressInfoResult {
10141014
#[serde(rename = "hdkeypath")]
10151015
pub hd_key_path: Option<bip32::DerivationPath>,
10161016
#[serde(rename = "hdseedid")]
1017-
pub hd_seed_id: Option<bitcoin::XKeyIdentifier>,
1017+
pub hd_seed_id: Option<bitcoin::bip32::XKeyIdentifier>,
10181018
pub labels: Vec<GetAddressInfoResultLabel>,
10191019
/// Deprecated in v0.20.0. See `labels` field instead.
10201020
#[deprecated(note = "since Core v0.20.0")]

0 commit comments

Comments
 (0)