Add a comment explaining the issues in ZIPs 205 and 208
And add the network to the difficulty filter error.
This commit is contained in:
parent
a7ad73feac
commit
405c0644f9
|
@ -70,12 +70,19 @@ pub fn difficulty_is_valid(
|
||||||
))?;
|
))?;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Difficulty filter
|
// The difficulty filter is also context-free.
|
||||||
|
//
|
||||||
|
// ZIP 205 and ZIP 208 incorrectly describe testnet minimum difficulty blocks
|
||||||
|
// as a change to the difficulty filter. But in `zcashd`, it is implemented
|
||||||
|
// as a change to the difficulty adjustment algorithm. So we don't need to
|
||||||
|
// do anything special for testnet here.
|
||||||
|
// For details, see https://github.com/zcash/zips/issues/416
|
||||||
if hash > &difficulty_threshold {
|
if hash > &difficulty_threshold {
|
||||||
Err(BlockError::DifficultyFilter(
|
Err(BlockError::DifficultyFilter(
|
||||||
*height,
|
*height,
|
||||||
*hash,
|
*hash,
|
||||||
difficulty_threshold,
|
difficulty_threshold,
|
||||||
|
network,
|
||||||
))?;
|
))?;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -234,7 +234,8 @@ fn difficulty_validation_failure() -> Result<(), Report> {
|
||||||
// Validate the block
|
// Validate the block
|
||||||
let result = check::difficulty_is_valid(&block.header, Network::Mainnet, &height, &bad_hash)
|
let result = check::difficulty_is_valid(&block.header, Network::Mainnet, &height, &bad_hash)
|
||||||
.unwrap_err();
|
.unwrap_err();
|
||||||
let expected = BlockError::DifficultyFilter(height, bad_hash, difficulty_threshold);
|
let expected =
|
||||||
|
BlockError::DifficultyFilter(height, bad_hash, difficulty_threshold, Network::Mainnet);
|
||||||
assert_eq!(expected, result);
|
assert_eq!(expected, result);
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
|
@ -108,10 +108,13 @@ pub enum BlockError {
|
||||||
zebra_chain::work::difficulty::ExpandedDifficulty,
|
zebra_chain::work::difficulty::ExpandedDifficulty,
|
||||||
),
|
),
|
||||||
|
|
||||||
#[error("block {0:?} has a hash {1:?} that is easier than the difficulty threshold {2:?}")]
|
#[error(
|
||||||
|
"block {0:?} on {3:?} has a hash {1:?} that is easier than its difficulty threshold {2:?}"
|
||||||
|
)]
|
||||||
DifficultyFilter(
|
DifficultyFilter(
|
||||||
zebra_chain::block::Height,
|
zebra_chain::block::Height,
|
||||||
zebra_chain::block::Hash,
|
zebra_chain::block::Hash,
|
||||||
zebra_chain::work::difficulty::ExpandedDifficulty,
|
zebra_chain::work::difficulty::ExpandedDifficulty,
|
||||||
|
zebra_chain::parameters::Network,
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue