pub trait SpendableScript:
Send
+ Sync
+ 'static
+ Any {
// Required methods
fn as_any(&self) -> &dyn Any;
fn kind(&self) -> ScriptKind<'_>;
fn to_script_buf(&self) -> ScriptBuf;
}
Expand description
A trait that marks all script types. Each script has a generate_script_inputs
(eg. WinternitzCommit::generate_script_inputs
) function that
generates the witness for the script using various arguments. A dyn SpendableScript
is cast into a concrete ScriptKind
to
generate a witness, the trait object can be used to generate the script_buf.
We store [Arc<dyn SpendableScript>
]s inside a super::transaction::TxHandler
input, and we cast them into a ScriptKind
when signing.
When creating a new Script, make sure you add it to the ScriptKind
enum and add a test for it below.
Otherwise, it will not be spendable.