fixed bip66
This commit is contained in:
parent
d054d3592d
commit
eef94cc65f
|
@ -10,6 +10,9 @@ pub struct ConsensusParams {
|
|||
/// Block height at which BIP65 becomes active.
|
||||
/// See https://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki
|
||||
pub bip65_height: u32,
|
||||
/// Block height at which BIP65 becomes active.
|
||||
/// See https://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki
|
||||
pub bip66_height: u32,
|
||||
}
|
||||
|
||||
impl ConsensusParams {
|
||||
|
@ -18,14 +21,17 @@ impl ConsensusParams {
|
|||
Magic::Mainnet | Magic::Other(_) => ConsensusParams {
|
||||
bip16_time: 1333238400, // Apr 1 2012
|
||||
bip65_height: 388381, // 000000000000000004c2b624ed5d7756c508d90fd0da2c7c679febfa6c4735f0
|
||||
bip66_height: 363725, // 00000000000000000379eaa19dce8c9b722d46ae6a57c2f1a988119488b50931
|
||||
},
|
||||
Magic::Testnet => ConsensusParams {
|
||||
bip16_time: 1333238400, // Apr 1 2012
|
||||
bip65_height: 581885, // 00000000007f6655f22f98e72ed80d8b06dc761d5da09df0fa1dc4be4f861eb6
|
||||
bip66_height: 330776, // 000000002104c8c45e99a8853285a3b592602a3ccde2b832481da85e9e4ba182
|
||||
},
|
||||
Magic::Regtest | Magic::Unitest => ConsensusParams {
|
||||
bip16_time: 1333238400, // Apr 1 2012
|
||||
bip65_height: 1351,
|
||||
bip66_height: 1251,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
@ -47,4 +53,11 @@ mod tests {
|
|||
assert_eq!(ConsensusParams::with_magic(Magic::Testnet).bip65_height, 581885);
|
||||
assert_eq!(ConsensusParams::with_magic(Magic::Regtest).bip65_height, 1351);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_consensus_params_bip66_height() {
|
||||
assert_eq!(ConsensusParams::with_magic(Magic::Mainnet).bip66_height, 363725);
|
||||
assert_eq!(ConsensusParams::with_magic(Magic::Testnet).bip66_height, 330776);
|
||||
assert_eq!(ConsensusParams::with_magic(Magic::Regtest).bip66_height, 1251);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -77,5 +77,10 @@ impl VerificationFlags {
|
|||
self.verify_clocktimeverify = value;
|
||||
self
|
||||
}
|
||||
|
||||
pub fn verify_dersig(mut self, value: bool) -> Self {
|
||||
self.verify_dersig = value;
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -300,6 +300,7 @@ pub struct TransactionEval<'a> {
|
|||
store: DuplexTransactionOutputProvider<'a>,
|
||||
verify_p2sh: bool,
|
||||
verify_clocktime: bool,
|
||||
verify_dersig: bool,
|
||||
}
|
||||
|
||||
impl<'a> TransactionEval<'a> {
|
||||
|
@ -312,12 +313,14 @@ impl<'a> TransactionEval<'a> {
|
|||
) -> Self {
|
||||
let verify_p2sh = time >= params.bip16_time;
|
||||
let verify_clocktime = height >= params.bip65_height;
|
||||
let verify_dersig = height >= params.bip66_height;
|
||||
|
||||
TransactionEval {
|
||||
transaction: transaction,
|
||||
store: store,
|
||||
verify_p2sh: verify_p2sh,
|
||||
verify_clocktime: verify_clocktime,
|
||||
verify_dersig: verify_dersig,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -346,7 +349,8 @@ impl<'a> TransactionRule for TransactionEval<'a> {
|
|||
|
||||
let flags = VerificationFlags::default()
|
||||
.verify_p2sh(self.verify_p2sh)
|
||||
.verify_clocktimeverify(self.verify_clocktime);
|
||||
.verify_clocktimeverify(self.verify_clocktime)
|
||||
.verify_dersig(self.verify_dersig);
|
||||
|
||||
try!(verify_script(&input, &output, &flags, &checker).map_err(|_| TransactionError::Signature(index)));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue