X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Fchain%2Fkeysinterface.rs;h=c2e78a79394ea84cdbc69e88e269b863a614b948;hb=803d8041f143469993620ed75e84cba226b860fa;hp=c5ad6f28b263d85dd8559c0df82b5e6e9e91f1e7;hpb=bfd9646092e3c63f07d96df35dd72488af55a176;p=rust-lightning diff --git a/lightning/src/chain/keysinterface.rs b/lightning/src/chain/keysinterface.rs index c5ad6f28..c2e78a79 100644 --- a/lightning/src/chain/keysinterface.rs +++ b/lightning/src/chain/keysinterface.rs @@ -36,10 +36,11 @@ use chain::transaction::OutPoint; use ln::chan_utils; use ln::chan_utils::{HTLCOutputInCommitment, make_funding_redeemscript, ChannelPublicKeys, HolderCommitmentTransaction, ChannelTransactionParameters, CommitmentTransaction}; use ln::msgs::UnsignedChannelAnnouncement; +use ln::script::ShutdownScript; use prelude::*; use core::sync::atomic::{AtomicUsize, Ordering}; -use std::io::Error; +use io::{self, Error}; use ln::msgs::{DecodeError, MAX_VALUE_MSAT}; /// Information about a spendable output to a P2WSH script. See @@ -73,14 +74,14 @@ impl DelayedPaymentOutputDescriptor { } impl_writeable_tlv_based!(DelayedPaymentOutputDescriptor, { - (0, outpoint), - (2, per_commitment_point), - (4, to_self_delay), - (6, output), - (8, revocation_pubkey), - (10, channel_keys_id), - (12, channel_value_satoshis), -}, {}, {}); + (0, outpoint, required), + (2, per_commitment_point, required), + (4, to_self_delay, required), + (6, output, required), + (8, revocation_pubkey, required), + (10, channel_keys_id, required), + (12, channel_value_satoshis, required), +}); /// Information about a spendable output to our "payment key". See /// SpendableOutputDescriptor::StaticPaymentOutput for more details on how to spend this. @@ -104,11 +105,11 @@ impl StaticPaymentOutputDescriptor { pub const MAX_WITNESS_LENGTH: usize = 1 + 73 + 34; } impl_writeable_tlv_based!(StaticPaymentOutputDescriptor, { - (0, outpoint), - (2, output), - (4, channel_keys_id), - (6, channel_value_satoshis), -}, {}, {}); + (0, outpoint, required), + (2, output, required), + (4, channel_keys_id, required), + (6, channel_value_satoshis, required), +}); /// When on-chain outputs are created by rust-lightning (which our counterparty is not able to /// claim at any point in the future) an event is generated which you must track and be able to @@ -118,8 +119,8 @@ impl_writeable_tlv_based!(StaticPaymentOutputDescriptor, { #[derive(Clone, Debug, PartialEq)] pub enum SpendableOutputDescriptor { /// An output to a script which was provided via KeysInterface directly, either from - /// `get_destination_script()` or `get_shutdown_pubkey()`, thus you should already know how to - /// spend it. No secret keys are provided as rust-lightning was never given any key. + /// `get_destination_script()` or `get_shutdown_scriptpubkey()`, thus you should already know + /// how to spend it. No secret keys are provided as rust-lightning was never given any key. /// These may include outputs from a transaction punishing our counterparty or claiming an HTLC /// on-chain using the payment preimage or after it has timed out. StaticOutput { @@ -169,9 +170,9 @@ pub enum SpendableOutputDescriptor { impl_writeable_tlv_based_enum!(SpendableOutputDescriptor, (0, StaticOutput) => { - (0, outpoint), - (2, output), - }, {}, {}, + (0, outpoint, required), + (2, output, required), + }, ; (1, DelayedPaymentOutput), (2, StaticPaymentOutput), @@ -351,12 +352,11 @@ pub trait KeysInterface { /// This method should return a different value each time it is called, to avoid linking /// on-chain funds across channels as controlled to the same user. fn get_destination_script(&self) -> Script; - /// Get a public key which we will send funds to (in the form of a P2WPKH output) when closing - /// a channel. + /// Get a script pubkey which we will send funds to when closing a channel. /// /// This method should return a different value each time it is called, to avoid linking /// on-chain funds across channels as controlled to the same user. - fn get_shutdown_pubkey(&self) -> PublicKey; + fn get_shutdown_scriptpubkey(&self) -> ShutdownScript; /// Get a new set of Sign for per-channel secrets. These MUST be unique even if you /// restarted with some stale data! /// @@ -692,14 +692,14 @@ impl Writeable for InMemorySigner { self.channel_value_satoshis.write(writer)?; self.channel_keys_id.write(writer)?; - write_tlv_fields!(writer, {}, {}); + write_tlv_fields!(writer, {}); Ok(()) } } impl Readable for InMemorySigner { - fn read(reader: &mut R) -> Result { + fn read(reader: &mut R) -> Result { let _ver = read_ver_prefix!(reader, SERIALIZATION_VERSION); let funding_key = Readable::read(reader)?; @@ -717,7 +717,7 @@ impl Readable for InMemorySigner { &htlc_base_key); let keys_id = Readable::read(reader)?; - read_tlv_fields!(reader, {}, {}); + read_tlv_fields!(reader, {}); Ok(InMemorySigner { funding_key, @@ -1013,8 +1013,8 @@ impl KeysInterface for KeysManager { self.destination_script.clone() } - fn get_shutdown_pubkey(&self) -> PublicKey { - self.shutdown_pubkey.clone() + fn get_shutdown_scriptpubkey(&self) -> ShutdownScript { + ShutdownScript::new_p2wpkh_from_pubkey(self.shutdown_pubkey.clone()) } fn get_channel_signer(&self, _inbound: bool, channel_value_satoshis: u64) -> Self::Signer { @@ -1039,7 +1039,7 @@ impl KeysInterface for KeysManager { } fn read_chan_signer(&self, reader: &[u8]) -> Result { - InMemorySigner::read(&mut std::io::Cursor::new(reader)) + InMemorySigner::read(&mut io::Cursor::new(reader)) } fn sign_invoice(&self, invoice_preimage: Vec) -> Result {