projects
/
rust-lightning
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge pull request #2691 from wpaulino/refactor-channel-state
[rust-lightning]
/
lightning-block-sync
/
src
/
convert.rs
diff --git
a/lightning-block-sync/src/convert.rs
b/lightning-block-sync/src/convert.rs
index bf9e9577619a3fd0a1a7fecc3d79cd070bd706e1..0f9ab8c43baadcc8cb72eec2375a063e9c4ffb37 100644
(file)
--- a/
lightning-block-sync/src/convert.rs
+++ b/
lightning-block-sync/src/convert.rs
@@
-1,8
+1,8
@@
use crate::http::{BinaryResponse, JsonResponse};
use crate::http::{BinaryResponse, JsonResponse};
-use crate::utils::hex_to_
uint256
;
+use crate::utils::hex_to_
work
;
use crate::{BlockHeaderData, BlockSourceError};
use crate::{BlockHeaderData, BlockSourceError};
-use bitcoin::blockdata::block::{Block,
Block
Header};
+use bitcoin::blockdata::block::{Block, Header};
use bitcoin::consensus::encode;
use bitcoin::hash_types::{BlockHash, TxMerkleNode, Txid};
use bitcoin::hashes::hex::FromHex;
use bitcoin::consensus::encode;
use bitcoin::hash_types::{BlockHash, TxMerkleNode, Txid};
use bitcoin::hashes::hex::FromHex;
@@
-88,17
+88,21
@@
impl TryFrom<serde_json::Value> for BlockHeaderData {
} }
Ok(BlockHeaderData {
} }
Ok(BlockHeaderData {
- header: BlockHeader {
- version: get_field!("version", as_i64).try_into().map_err(|_| ())?,
+ header: Header {
+ version: bitcoin::blockdata::block::Version::from_consensus(
+ get_field!("version", as_i64).try_into().map_err(|_| ())?
+ ),
prev_blockhash: if let Some(hash_str) = response.get("previousblockhash") {
prev_blockhash: if let Some(hash_str) = response.get("previousblockhash") {
- BlockHash::from_
hex
(hash_str.as_str().ok_or(())?).map_err(|_| ())?
+ BlockHash::from_
str
(hash_str.as_str().ok_or(())?).map_err(|_| ())?
} else { BlockHash::all_zeros() },
} else { BlockHash::all_zeros() },
- merkle_root: TxMerkleNode::from_
hex
(get_field!("merkleroot", as_str)).map_err(|_| ())?,
+ merkle_root: TxMerkleNode::from_
str
(get_field!("merkleroot", as_str)).map_err(|_| ())?,
time: get_field!("time", as_u64).try_into().map_err(|_| ())?,
time: get_field!("time", as_u64).try_into().map_err(|_| ())?,
- bits: u32::from_be_bytes(<[u8; 4]>::from_hex(get_field!("bits", as_str)).map_err(|_| ())?),
+ bits: bitcoin::CompactTarget::from_consensus(
+ u32::from_be_bytes(<[u8; 4]>::from_hex(get_field!("bits", as_str)).map_err(|_| ())?)
+ ),
nonce: get_field!("nonce", as_u64).try_into().map_err(|_| ())?,
},
nonce: get_field!("nonce", as_u64).try_into().map_err(|_| ())?,
},
- chainwork: hex_to_
uint256
(get_field!("chainwork", as_str)).map_err(|_| ())?,
+ chainwork: hex_to_
work
(get_field!("chainwork", as_str)).map_err(|_| ())?,
height: get_field!("height", as_u64).try_into().map_err(|_| ())?,
})
}
height: get_field!("height", as_u64).try_into().map_err(|_| ())?,
})
}
@@
-132,7
+136,7
@@
impl TryInto<(BlockHash, Option<u32>)> for JsonResponse {
}
let hash = match &self.0["bestblockhash"] {
}
let hash = match &self.0["bestblockhash"] {
- serde_json::Value::String(hex_data) => match BlockHash::from_
hex
(&hex_data) {
+ serde_json::Value::String(hex_data) => match BlockHash::from_
str
(&hex_data) {
Err(_) => return Err(std::io::Error::new(std::io::ErrorKind::InvalidData, "invalid hex data")),
Ok(block_hash) => block_hash,
},
Err(_) => return Err(std::io::Error::new(std::io::ErrorKind::InvalidData, "invalid hex data")),
Ok(block_hash) => block_hash,
},
@@
-288,8
+292,8
@@
pub(crate) mod tests {
use super::*;
use bitcoin::blockdata::constants::genesis_block;
use bitcoin::hashes::Hash;
use super::*;
use bitcoin::blockdata::constants::genesis_block;
use bitcoin::hashes::Hash;
- use bitcoin::hashes::hex::ToHex;
use bitcoin::network::constants::Network;
use bitcoin::network::constants::Network;
+ use hex::DisplayHex;
use serde_json::value::Number;
use serde_json::Value;
use serde_json::value::Number;
use serde_json::Value;
@@
-298,14
+302,14
@@
pub(crate) mod tests {
fn from(data: BlockHeaderData) -> Self {
let BlockHeaderData { chainwork, height, header } = data;
serde_json::json!({
fn from(data: BlockHeaderData) -> Self {
let BlockHeaderData { chainwork, height, header } = data;
serde_json::json!({
- "chainwork": chainwork.to_
string()["0x".len()..]
,
+ "chainwork": chainwork.to_
be_bytes().as_hex().to_string()
,
"height": height,
"height": height,
- "version": header.version,
- "merkleroot": header.merkle_root.to_
hex
(),
+ "version": header.version
.to_consensus()
,
+ "merkleroot": header.merkle_root.to_
string
(),
"time": header.time,
"nonce": header.nonce,
"time": header.time,
"nonce": header.nonce,
- "bits": header.bits.to_
hex
(),
- "previousblockhash": header.prev_blockhash.to_
hex
(),
+ "bits": header.bits.to_
consensus().to_be_bytes().as_hex().to_string
(),
+ "previousblockhash": header.prev_blockhash.to_
string
(),
})
}
}
})
}
}
@@
-394,7
+398,7
@@
pub(crate) mod tests {
#[test]
fn into_block_header_from_json_response_with_valid_header_array() {
let genesis_block = genesis_block(Network::Bitcoin);
#[test]
fn into_block_header_from_json_response_with_valid_header_array() {
let genesis_block = genesis_block(Network::Bitcoin);
- let best_block_header =
Block
Header {
+ let best_block_header = Header {
prev_blockhash: genesis_block.block_hash(),
..genesis_block.header
};
prev_blockhash: genesis_block.block_hash(),
..genesis_block.header
};
@@
-541,7
+545,7
@@
pub(crate) mod tests {
fn into_block_hash_from_json_response_without_height() {
let block = genesis_block(Network::Bitcoin);
let response = JsonResponse(serde_json::json!({
fn into_block_hash_from_json_response_without_height() {
let block = genesis_block(Network::Bitcoin);
let response = JsonResponse(serde_json::json!({
- "bestblockhash": block.block_hash().to_
hex
(),
+ "bestblockhash": block.block_hash().to_
string
(),
}));
match TryInto::<(BlockHash, Option<u32>)>::try_into(response) {
Err(e) => panic!("Unexpected error: {:?}", e),
}));
match TryInto::<(BlockHash, Option<u32>)>::try_into(response) {
Err(e) => panic!("Unexpected error: {:?}", e),
@@
-556,7
+560,7
@@
pub(crate) mod tests {
fn into_block_hash_from_json_response_with_unexpected_blocks_type() {
let block = genesis_block(Network::Bitcoin);
let response = JsonResponse(serde_json::json!({
fn into_block_hash_from_json_response_with_unexpected_blocks_type() {
let block = genesis_block(Network::Bitcoin);
let response = JsonResponse(serde_json::json!({
- "bestblockhash": block.block_hash().to_
hex
(),
+ "bestblockhash": block.block_hash().to_
string
(),
"blocks": "foo",
}));
match TryInto::<(BlockHash, Option<u32>)>::try_into(response) {
"blocks": "foo",
}));
match TryInto::<(BlockHash, Option<u32>)>::try_into(response) {
@@
-572,7
+576,7
@@
pub(crate) mod tests {
fn into_block_hash_from_json_response_with_invalid_height() {
let block = genesis_block(Network::Bitcoin);
let response = JsonResponse(serde_json::json!({
fn into_block_hash_from_json_response_with_invalid_height() {
let block = genesis_block(Network::Bitcoin);
let response = JsonResponse(serde_json::json!({
- "bestblockhash": block.block_hash().to_
hex
(),
+ "bestblockhash": block.block_hash().to_
string
(),
"blocks": std::u64::MAX,
}));
match TryInto::<(BlockHash, Option<u32>)>::try_into(response) {
"blocks": std::u64::MAX,
}));
match TryInto::<(BlockHash, Option<u32>)>::try_into(response) {
@@
-588,7
+592,7
@@
pub(crate) mod tests {
fn into_block_hash_from_json_response_with_height() {
let block = genesis_block(Network::Bitcoin);
let response = JsonResponse(serde_json::json!({
fn into_block_hash_from_json_response_with_height() {
let block = genesis_block(Network::Bitcoin);
let response = JsonResponse(serde_json::json!({
- "bestblockhash": block.block_hash().to_
hex
(),
+ "bestblockhash": block.block_hash().to_
string
(),
"blocks": 1,
}));
match TryInto::<(BlockHash, Option<u32>)>::try_into(response) {
"blocks": 1,
}));
match TryInto::<(BlockHash, Option<u32>)>::try_into(response) {