use bitcoin::blockdata::script::{Script,Builder};
use bitcoin::blockdata::opcodes;
use bitcoin::blockdata::transaction::{TxIn,TxOut,OutPoint,Transaction};
-use bitcoin::util::hash::{Sha256dHash};
use bitcoin_hashes::{Hash, HashEngine};
use bitcoin_hashes::sha256::Hash as Sha256;
use bitcoin_hashes::ripemd160::Hash as Ripemd160;
use bitcoin_hashes::hash160::Hash as Hash160;
+use bitcoin_hashes::sha256d::Hash as Sha256dHash;
use ln::channelmanager::PaymentHash;
let res = Sha256::from_engine(sha).into_inner();
let mut key = base_secret.clone();
- key.add_assign(&secp_ctx, &SecretKey::from_slice(&secp_ctx, &res)?)?;
+ key.add_assign(&res)?;
Ok(key)
}
sha.input(&base_point.serialize());
let res = Sha256::from_engine(sha).into_inner();
- let hashkey = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&secp_ctx, &res)?);
- base_point.combine(&secp_ctx, &hashkey)
+ let hashkey = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&res)?);
+ base_point.combine(&hashkey)
}
/// Derives a revocation key from its constituent parts
sha.input(&revocation_base_point.serialize());
sha.input(&per_commitment_point.serialize());
- SecretKey::from_slice(&secp_ctx, &Sha256::from_engine(sha).into_inner())?
+ Sha256::from_engine(sha).into_inner()
};
let commit_append_rev_hash_key = {
let mut sha = Sha256::engine();
sha.input(&per_commitment_point.serialize());
sha.input(&revocation_base_point.serialize());
- SecretKey::from_slice(&secp_ctx, &Sha256::from_engine(sha).into_inner())?
+ Sha256::from_engine(sha).into_inner()
};
let mut part_a = revocation_base_secret.clone();
- part_a.mul_assign(&secp_ctx, &rev_append_commit_hash_key)?;
+ part_a.mul_assign(&rev_append_commit_hash_key)?;
let mut part_b = per_commitment_secret.clone();
- part_b.mul_assign(&secp_ctx, &commit_append_rev_hash_key)?;
- part_a.add_assign(&secp_ctx, &part_b)?;
+ part_b.mul_assign(&commit_append_rev_hash_key)?;
+ part_a.add_assign(&part_b[..])?;
Ok(part_a)
}
sha.input(&revocation_base_point.serialize());
sha.input(&per_commitment_point.serialize());
- SecretKey::from_slice(&secp_ctx, &Sha256::from_engine(sha).into_inner())?
+ Sha256::from_engine(sha).into_inner()
};
let commit_append_rev_hash_key = {
let mut sha = Sha256::engine();
sha.input(&per_commitment_point.serialize());
sha.input(&revocation_base_point.serialize());
- SecretKey::from_slice(&secp_ctx, &Sha256::from_engine(sha).into_inner())?
+ Sha256::from_engine(sha).into_inner()
};
let mut part_a = revocation_base_point.clone();
part_a.mul_assign(&secp_ctx, &rev_append_commit_hash_key)?;
let mut part_b = per_commitment_point.clone();
part_b.mul_assign(&secp_ctx, &commit_append_rev_hash_key)?;
- part_a.combine(&secp_ctx, &part_b)
+ part_a.combine(&part_b)
}
pub struct TxCreationKeys {
/// Gets the "to_local" output redeemscript, ie the script which is time-locked or spendable by
/// the revocation key
pub fn get_revokeable_redeemscript(revocation_key: &PublicKey, to_self_delay: u16, delayed_payment_key: &PublicKey) -> Script {
- Builder::new().push_opcode(opcodes::All::OP_IF)
+ Builder::new().push_opcode(opcodes::all::OP_IF)
.push_slice(&revocation_key.serialize())
- .push_opcode(opcodes::All::OP_ELSE)
+ .push_opcode(opcodes::all::OP_ELSE)
.push_int(to_self_delay as i64)
.push_opcode(opcodes::OP_CSV)
- .push_opcode(opcodes::All::OP_DROP)
+ .push_opcode(opcodes::all::OP_DROP)
.push_slice(&delayed_payment_key.serialize())
- .push_opcode(opcodes::All::OP_ENDIF)
- .push_opcode(opcodes::All::OP_CHECKSIG)
+ .push_opcode(opcodes::all::OP_ENDIF)
+ .push_opcode(opcodes::all::OP_CHECKSIG)
.into_script()
}
pub fn get_htlc_redeemscript_with_explicit_keys(htlc: &HTLCOutputInCommitment, a_htlc_key: &PublicKey, b_htlc_key: &PublicKey, revocation_key: &PublicKey) -> Script {
let payment_hash160 = Ripemd160::hash(&htlc.payment_hash.0[..]).into_inner();
if htlc.offered {
- Builder::new().push_opcode(opcodes::All::OP_DUP)
- .push_opcode(opcodes::All::OP_HASH160)
+ Builder::new().push_opcode(opcodes::all::OP_DUP)
+ .push_opcode(opcodes::all::OP_HASH160)
.push_slice(&Hash160::hash(&revocation_key.serialize())[..])
- .push_opcode(opcodes::All::OP_EQUAL)
- .push_opcode(opcodes::All::OP_IF)
- .push_opcode(opcodes::All::OP_CHECKSIG)
- .push_opcode(opcodes::All::OP_ELSE)
+ .push_opcode(opcodes::all::OP_EQUAL)
+ .push_opcode(opcodes::all::OP_IF)
+ .push_opcode(opcodes::all::OP_CHECKSIG)
+ .push_opcode(opcodes::all::OP_ELSE)
.push_slice(&b_htlc_key.serialize()[..])
- .push_opcode(opcodes::All::OP_SWAP)
- .push_opcode(opcodes::All::OP_SIZE)
+ .push_opcode(opcodes::all::OP_SWAP)
+ .push_opcode(opcodes::all::OP_SIZE)
.push_int(32)
- .push_opcode(opcodes::All::OP_EQUAL)
- .push_opcode(opcodes::All::OP_NOTIF)
- .push_opcode(opcodes::All::OP_DROP)
+ .push_opcode(opcodes::all::OP_EQUAL)
+ .push_opcode(opcodes::all::OP_NOTIF)
+ .push_opcode(opcodes::all::OP_DROP)
.push_int(2)
- .push_opcode(opcodes::All::OP_SWAP)
+ .push_opcode(opcodes::all::OP_SWAP)
.push_slice(&a_htlc_key.serialize()[..])
.push_int(2)
- .push_opcode(opcodes::All::OP_CHECKMULTISIG)
- .push_opcode(opcodes::All::OP_ELSE)
- .push_opcode(opcodes::All::OP_HASH160)
+ .push_opcode(opcodes::all::OP_CHECKMULTISIG)
+ .push_opcode(opcodes::all::OP_ELSE)
+ .push_opcode(opcodes::all::OP_HASH160)
.push_slice(&payment_hash160)
- .push_opcode(opcodes::All::OP_EQUALVERIFY)
- .push_opcode(opcodes::All::OP_CHECKSIG)
- .push_opcode(opcodes::All::OP_ENDIF)
- .push_opcode(opcodes::All::OP_ENDIF)
+ .push_opcode(opcodes::all::OP_EQUALVERIFY)
+ .push_opcode(opcodes::all::OP_CHECKSIG)
+ .push_opcode(opcodes::all::OP_ENDIF)
+ .push_opcode(opcodes::all::OP_ENDIF)
.into_script()
} else {
- Builder::new().push_opcode(opcodes::All::OP_DUP)
- .push_opcode(opcodes::All::OP_HASH160)
+ Builder::new().push_opcode(opcodes::all::OP_DUP)
+ .push_opcode(opcodes::all::OP_HASH160)
.push_slice(&Hash160::hash(&revocation_key.serialize())[..])
- .push_opcode(opcodes::All::OP_EQUAL)
- .push_opcode(opcodes::All::OP_IF)
- .push_opcode(opcodes::All::OP_CHECKSIG)
- .push_opcode(opcodes::All::OP_ELSE)
+ .push_opcode(opcodes::all::OP_EQUAL)
+ .push_opcode(opcodes::all::OP_IF)
+ .push_opcode(opcodes::all::OP_CHECKSIG)
+ .push_opcode(opcodes::all::OP_ELSE)
.push_slice(&b_htlc_key.serialize()[..])
- .push_opcode(opcodes::All::OP_SWAP)
- .push_opcode(opcodes::All::OP_SIZE)
+ .push_opcode(opcodes::all::OP_SWAP)
+ .push_opcode(opcodes::all::OP_SIZE)
.push_int(32)
- .push_opcode(opcodes::All::OP_EQUAL)
- .push_opcode(opcodes::All::OP_IF)
- .push_opcode(opcodes::All::OP_HASH160)
+ .push_opcode(opcodes::all::OP_EQUAL)
+ .push_opcode(opcodes::all::OP_IF)
+ .push_opcode(opcodes::all::OP_HASH160)
.push_slice(&payment_hash160)
- .push_opcode(opcodes::All::OP_EQUALVERIFY)
+ .push_opcode(opcodes::all::OP_EQUALVERIFY)
.push_int(2)
- .push_opcode(opcodes::All::OP_SWAP)
+ .push_opcode(opcodes::all::OP_SWAP)
.push_slice(&a_htlc_key.serialize()[..])
.push_int(2)
- .push_opcode(opcodes::All::OP_CHECKMULTISIG)
- .push_opcode(opcodes::All::OP_ELSE)
- .push_opcode(opcodes::All::OP_DROP)
+ .push_opcode(opcodes::all::OP_CHECKMULTISIG)
+ .push_opcode(opcodes::all::OP_ELSE)
+ .push_opcode(opcodes::all::OP_DROP)
.push_int(htlc.cltv_expiry as i64)
.push_opcode(opcodes::OP_CLTV)
- .push_opcode(opcodes::All::OP_DROP)
- .push_opcode(opcodes::All::OP_CHECKSIG)
- .push_opcode(opcodes::All::OP_ENDIF)
- .push_opcode(opcodes::All::OP_ENDIF)
+ .push_opcode(opcodes::all::OP_DROP)
+ .push_opcode(opcodes::all::OP_CHECKSIG)
+ .push_opcode(opcodes::all::OP_ENDIF)
+ .push_opcode(opcodes::all::OP_ENDIF)
.into_script()
}
}