miden_lib/note/
scripts.rs

1use miden_objects::{
2    note::NoteScript,
3    utils::{sync::LazyLock, Deserializable},
4    vm::Program,
5};
6
7// Initialize the P2ID note script only once
8static P2ID_SCRIPT: LazyLock<NoteScript> = LazyLock::new(|| {
9    let bytes = include_bytes!(concat!(env!("OUT_DIR"), "/assets/note_scripts/P2ID.masb"));
10    let program = Program::read_from_bytes(bytes).expect("Shipped P2ID script is well-formed");
11    NoteScript::new(program)
12});
13
14// Initialize the P2IDR note script only once
15static P2IDR_SCRIPT: LazyLock<NoteScript> = LazyLock::new(|| {
16    let bytes = include_bytes!(concat!(env!("OUT_DIR"), "/assets/note_scripts/P2IDR.masb"));
17    let program = Program::read_from_bytes(bytes).expect("Shipped P2IDR script is well-formed");
18    NoteScript::new(program)
19});
20
21// Initialize the SWAP note script only once
22static SWAP_SCRIPT: LazyLock<NoteScript> = LazyLock::new(|| {
23    let bytes = include_bytes!(concat!(env!("OUT_DIR"), "/assets/note_scripts/SWAP.masb"));
24    let program = Program::read_from_bytes(bytes).expect("Shipped SWAP script is well-formed");
25    NoteScript::new(program)
26});
27
28/// Returns the P2ID (Pay-to-ID) note script.
29pub fn p2id() -> NoteScript {
30    P2ID_SCRIPT.clone()
31}
32
33/// Returns the P2IDR (Pay-to-ID with recall) note script.
34pub fn p2idr() -> NoteScript {
35    P2IDR_SCRIPT.clone()
36}
37
38/// Returns the SWAP (Swap note) note script.
39pub fn swap() -> NoteScript {
40    SWAP_SCRIPT.clone()
41}