X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Fchain%2Ftransaction.rs;fp=src%2Fchain%2Ftransaction.rs;h=00728b45033a53844ba94451d4d6907475b1d419;hb=d0e9137bc5f8f31cc5e9c63b94f1450bdb18b524;hp=0000000000000000000000000000000000000000;hpb=d8474c9d3c422dddf6cf4b5a4f52157a0277203a;p=rust-lightning diff --git a/src/chain/transaction.rs b/src/chain/transaction.rs new file mode 100644 index 00000000..00728b45 --- /dev/null +++ b/src/chain/transaction.rs @@ -0,0 +1,24 @@ +use bitcoin::util::hash::Sha256dHash; +use bitcoin::util::uint::Uint256; + +/// A reference to a transaction output. +#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Debug, Hash)] +pub struct OutPoint { + /// The referenced transaction's txid. + pub txid: Sha256dHash, + /// The index of the referenced output in its transaction's vout. + pub index: u16, +} + +impl OutPoint { + /// Creates a new `OutPoint` from the txid an the index. + pub fn new(txid: Sha256dHash, index: u16) -> OutPoint { + OutPoint { txid, index } + } + + /// Convert an `OutPoint` to a lightning channel id. + pub fn to_channel_id(&self) -> Uint256 { + // TODO: or le? + self.txid.into_be() ^ Uint256::from_u64(self.index as u64).unwrap() + } +}