- shutdown_scriptpubkey = Some(Script::from(v[272..272+len].to_vec()));
- } else if v.len() != 32+4*8+4+2*2+6*33 { // Message cant have 1 extra byte
- return Err(DecodeError::WrongLength);
- }
-
- Ok(Self {
- temporary_channel_id: deserialize(&v[0..32]).unwrap(),
- dust_limit_satoshis: byte_utils::slice_to_be64(&v[32..40]),
- max_htlc_value_in_flight_msat: byte_utils::slice_to_be64(&v[40..48]),
- channel_reserve_satoshis: byte_utils::slice_to_be64(&v[48..56]),
- htlc_minimum_msat: byte_utils::slice_to_be64(&v[56..64]),
- minimum_depth: byte_utils::slice_to_be32(&v[64..68]),
- to_self_delay: byte_utils::slice_to_be16(&v[68..70]),
- max_accepted_htlcs: byte_utils::slice_to_be16(&v[70..72]),
- funding_pubkey: secp_pubkey!(&ctx, &v[72..105]),
- revocation_basepoint: secp_pubkey!(&ctx, &v[105..138]),
- payment_basepoint: secp_pubkey!(&ctx, &v[138..171]),
- delayed_payment_basepoint: secp_pubkey!(&ctx, &v[171..204]),
- htlc_basepoint: secp_pubkey!(&ctx, &v[204..237]),
- first_per_commitment_point: secp_pubkey!(&ctx, &v[237..270]),
- shutdown_scriptpubkey: shutdown_scriptpubkey
- })
- }
-}
-impl MsgEncodable for AcceptChannel {
- fn encode(&self) -> Vec<u8> {
- let mut res = match &self.shutdown_scriptpubkey {
- &Some(ref script) => Vec::with_capacity(270 + 2 + script.len()),
- &None => Vec::with_capacity(270),
- };
- res.extend_from_slice(&serialize(&self.temporary_channel_id).unwrap()[..]);
- res.extend_from_slice(&byte_utils::be64_to_array(self.dust_limit_satoshis));
- res.extend_from_slice(&byte_utils::be64_to_array(self.max_htlc_value_in_flight_msat));
- res.extend_from_slice(&byte_utils::be64_to_array(self.channel_reserve_satoshis));
- res.extend_from_slice(&byte_utils::be64_to_array(self.htlc_minimum_msat));
- res.extend_from_slice(&byte_utils::be32_to_array(self.minimum_depth));
- res.extend_from_slice(&byte_utils::be16_to_array(self.to_self_delay));
- res.extend_from_slice(&byte_utils::be16_to_array(self.max_accepted_htlcs));
- res.extend_from_slice(&self.funding_pubkey.serialize());
- res.extend_from_slice(&self.revocation_basepoint.serialize());
- res.extend_from_slice(&self.payment_basepoint.serialize());
- res.extend_from_slice(&self.delayed_payment_basepoint.serialize());
- res.extend_from_slice(&self.htlc_basepoint.serialize());
- res.extend_from_slice(&self.first_per_commitment_point.serialize());
- if let &Some(ref script) = &self.shutdown_scriptpubkey {
- res.extend_from_slice(&byte_utils::be16_to_array(script.len() as u16));
- res.extend_from_slice(&script[..]);
- }
- res
- }
-}
-
-impl MsgDecodable for FundingCreated {
- fn decode(v: &[u8]) -> Result<Self, DecodeError> {
- if v.len() < 32+32+2+64 {
- return Err(DecodeError::WrongLength);
- }
- let ctx = Secp256k1::without_caps();
- Ok(Self {
- temporary_channel_id: deserialize(&v[0..32]).unwrap(),
- funding_txid: deserialize(&v[32..64]).unwrap(),
- funding_output_index: byte_utils::slice_to_be16(&v[64..66]),
- signature: secp_signature!(&ctx, &v[66..130]),
- })
- }
-}
-impl MsgEncodable for FundingCreated {
- fn encode(&self) -> Vec<u8> {
- let mut res = Vec::with_capacity(32+32+2+64);
- res.extend_from_slice(&serialize(&self.temporary_channel_id).unwrap()[..]);
- res.extend_from_slice(&serialize(&self.funding_txid).unwrap()[..]);
- res.extend_from_slice(&byte_utils::be16_to_array(self.funding_output_index));
- let secp_ctx = Secp256k1::without_caps();
- res.extend_from_slice(&self.signature.serialize_compact(&secp_ctx));
- res
- }
-}
-
-impl MsgDecodable for FundingSigned {
- fn decode(v: &[u8]) -> Result<Self, DecodeError> {
- if v.len() < 32+64 {
- return Err(DecodeError::WrongLength);
- }
- let ctx = Secp256k1::without_caps();
- Ok(Self {
- channel_id: deserialize(&v[0..32]).unwrap(),
- signature: secp_signature!(&ctx, &v[32..96]),