X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Fln%2Fscript.rs;h=595085114b0cdec9ee5e2988fa869f5a264eef35;hb=71f4749e1c0d48a916c1ba3b0631d7796f61c074;hp=218b482769aeee3859fbd2422fc19a0e29010629;hpb=28d33ff9e03b7e3a0cd7ba3bc59f1303b3903f88;p=rust-lightning diff --git a/lightning/src/ln/script.rs b/lightning/src/ln/script.rs index 218b4827..59508511 100644 --- a/lightning/src/ln/script.rs +++ b/lightning/src/ln/script.rs @@ -5,18 +5,18 @@ use bitcoin::blockdata::script::{Builder, Script}; use bitcoin::hashes::Hash; use bitcoin::hash_types::{WPubkeyHash, WScriptHash}; use bitcoin::secp256k1::PublicKey; +use bitcoin::util::address::WitnessVersion; use ln::features::InitFeatures; use ln::msgs::DecodeError; use util::ser::{Readable, Writeable, Writer}; use core::convert::TryFrom; -use core::num::NonZeroU8; use io; /// A script pubkey for shutting down a channel as defined by [BOLT #2]. /// -/// [BOLT #2]: https://github.com/lightningnetwork/lightning-rfc/blob/master/02-peer-protocol.md +/// [BOLT #2]: https://github.com/lightning/bolts/blob/master/02-peer-protocol.md #[derive(Clone, PartialEq)] pub struct ShutdownScript(ShutdownScriptImpl); @@ -25,7 +25,7 @@ pub struct ShutdownScript(ShutdownScriptImpl); pub struct InvalidShutdownScript { /// The script that did not meet the requirements from [BOLT #2]. /// - /// [BOLT #2]: https://github.com/lightningnetwork/lightning-rfc/blob/master/02-peer-protocol.md + /// [BOLT #2]: https://github.com/lightning/bolts/blob/master/02-peer-protocol.md pub script: Script } @@ -84,9 +84,9 @@ impl ShutdownScript { /// # Errors /// /// This function may return an error if `program` is invalid for the segwit `version`. - pub fn new_witness_program(version: NonZeroU8, program: &[u8]) -> Result { + pub fn new_witness_program(version: WitnessVersion, program: &[u8]) -> Result { let script = Builder::new() - .push_int(version.get().into()) + .push_int(version as i64) .push_slice(&program) .into_script(); Self::try_from(script) @@ -122,7 +122,7 @@ pub(crate) fn is_bolt2_compliant(script: &Script, features: &InitFeatures) -> bo if script.is_p2pkh() || script.is_p2sh() || script.is_v0_p2wpkh() || script.is_v0_p2wsh() { true } else if features.supports_shutdown_anysegwit() { - script.is_witness_program() && script.as_bytes()[0] != SEGWIT_V0.into_u8() + script.is_witness_program() && script.as_bytes()[0] != SEGWIT_V0.to_u8() } else { false } @@ -180,7 +180,6 @@ mod shutdown_script_tests { use bitcoin::secp256k1::{PublicKey, SecretKey}; use ln::features::InitFeatures; use core::convert::TryFrom; - use core::num::NonZeroU8; use bitcoin::util::address::WitnessVersion; fn pubkey() -> bitcoin::util::key::PublicKey { @@ -239,9 +238,7 @@ mod shutdown_script_tests { #[test] fn generates_segwit_from_non_v0_witness_program() { let witness_program = Script::new_witness_program(WitnessVersion::V16, &[0; 40]); - - let version = NonZeroU8::new(WitnessVersion::V16 as u8).unwrap(); - let shutdown_script = ShutdownScript::new_witness_program(version, &[0; 40]).unwrap(); + let shutdown_script = ShutdownScript::new_witness_program(WitnessVersion::V16, &[0; 40]).unwrap(); assert!(shutdown_script.is_compatible(&InitFeatures::known())); assert!(!shutdown_script.is_compatible(&InitFeatures::known().clear_shutdown_anysegwit())); assert_eq!(shutdown_script.into_inner(), witness_program); @@ -253,12 +250,6 @@ mod shutdown_script_tests { assert!(ShutdownScript::try_from(op_return).is_err()); } - #[test] - fn fails_from_invalid_segwit_version() { - let version = NonZeroU8::new(17).unwrap(); - assert!(ShutdownScript::new_witness_program(version, &[0; 40]).is_err()); - } - #[test] fn fails_from_invalid_segwit_v0_witness_program() { let witness_program = Script::new_witness_program(WitnessVersion::V0, &[0; 2]); @@ -270,7 +261,6 @@ mod shutdown_script_tests { let witness_program = Script::new_witness_program(WitnessVersion::V16, &[0; 42]); assert!(ShutdownScript::try_from(witness_program).is_err()); - let version = NonZeroU8::new(WitnessVersion::V16 as u8).unwrap(); - assert!(ShutdownScript::new_witness_program(version, &[0; 42]).is_err()); + assert!(ShutdownScript::new_witness_program(WitnessVersion::V16, &[0; 42]).is_err()); } }