pub trait Signable {
// Required methods
fn pubkey(&self) -> Pubkey;
fn signable_data(&self) -> Cow<'_, [u8]>;
fn get_signature(&self) -> Signature;
fn set_signature(&mut self, signature: Signature);
// Provided methods
fn sign(&mut self, keypair: &Keypair) { ... }
fn verify(&self) -> bool { ... }
}