Skip to main content

bitcoin_primitives/script/
tag.rs

1// SPDX-License-Identifier: CC0-1.0
2
3//! Script tags.
4//!
5//! Tags are used to differentiate the different kinds of scripts that appear
6//! in Bitcoin transactions.
7
8/// Sealed trait representing a type of script.
9pub trait Tag {}
10
11/// A P2SH redeem script.
12#[derive(Clone, PartialOrd, Ord, PartialEq, Eq, Hash)]
13pub enum RedeemScriptTag {}
14impl Tag for RedeemScriptTag {}
15
16/// A script signature (scriptSig).
17#[derive(Clone, PartialOrd, Ord, PartialEq, Eq, Hash)]
18pub enum ScriptSigTag {}
19impl Tag for ScriptSigTag {}
20
21/// A script public key (scriptPubKey).
22#[derive(Clone, PartialOrd, Ord, PartialEq, Eq, Hash)]
23pub enum ScriptPubKeyTag {}
24impl Tag for ScriptPubKeyTag {}
25
26/// A Segwit v1 Taproot script.
27#[derive(Clone, PartialOrd, Ord, PartialEq, Eq, Hash)]
28pub enum TapScriptTag {}
29impl Tag for TapScriptTag {}
30
31/// A Segwit v0 witness script.
32#[derive(Clone, PartialOrd, Ord, PartialEq, Eq, Hash)]
33pub enum WitnessScriptTag {}
34impl Tag for WitnessScriptTag {}