pub fn derive_public_revocation_key<T: Verification>(
    secp_ctx: &Secp256k1<T>,
    per_commitment_point: &PublicKey,
    countersignatory_revocation_base_point: &PublicKey
) -> Result<PublicKey, SecpError>
Expand description

Derives a per-commitment-transaction revocation public key from its constituent parts. This is the public equivalend of derive_private_revocation_key - using only public keys to derive a public key instead of private keys.

Only the cheating participant owns a valid witness to propagate a revoked commitment transaction, thus per_commitment_point always come from cheater and revocation_base_point always come from punisher, which is the broadcaster of the transaction spending with this key knowledge.

Note that this is infallible iff we trust that at least one of the two input keys are randomly generated (ie our own).