Skip to main content

Module script

Module script 

Source
Expand description

§BSV Script

Bitcoin Script construction, parsing, execution, validation, and templates.

This module provides:

  • Opcode constants (op module)
  • Script chunks (ScriptChunk)
  • Script parsing and serialization (Script)
  • Locking and unlocking script types (LockingScript, UnlockingScript)
  • Script number encoding (script_num module)
  • Script evaluation errors (evaluation_error module)
  • Spend validation (Spend)
  • Script templates (template module, templates module)

§Example: Building Scripts

use bsv_rs::script::{Script, LockingScript, op};

// Create a P2PKH locking script from ASM
let script = Script::from_asm("OP_DUP OP_HASH160 0000000000000000000000000000000000000000 OP_EQUALVERIFY OP_CHECKSIG").unwrap();

// Build a script programmatically
let mut script = Script::new();
script
    .write_opcode(op::OP_DUP)
    .write_opcode(op::OP_HASH160)
    .write_bin(&[0u8; 20])
    .write_opcode(op::OP_EQUALVERIFY)
    .write_opcode(op::OP_CHECKSIG);

// Serialize to hex
let hex = script.to_hex();

// Convert to a locking script
let locking = LockingScript::from_script(script);
assert!(locking.is_locking_script());

§Example: Using Templates

use bsv_rs::script::templates::P2PKH;
use bsv_rs::script::template::{ScriptTemplate, SignOutputs};
use bsv_rs::primitives::ec::PrivateKey;

let private_key = PrivateKey::random();
let pubkey_hash = private_key.public_key().hash160();

// Create locking script
let template = P2PKH::new();
let locking = template.lock(&pubkey_hash)?;

// Or from an address
let locking = P2PKH::lock_from_address("1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2")?;

Re-exports§

pub use address::Address;
pub use chunk::ScriptChunk;
pub use evaluation_error::ExecutionContext;
pub use evaluation_error::ScriptEvaluationError;
pub use locking_script::LockingScript;
pub use script::Script;
pub use script_num::ScriptNum;
pub use spend::Spend;
pub use spend::SpendParams;
pub use template::ScriptTemplate;
pub use template::ScriptTemplateUnlock;
pub use template::SignOutputs;
pub use template::SigningContext;
pub use transaction::SimpleUtxo;
pub use transaction::SpendValidation;
pub use transaction::TransactionContext;
pub use transaction::TransactionInputContext;
pub use transaction::TransactionOutputContext;
pub use transaction::UtxoProvider;
pub use unlocking_script::UnlockingScript;
pub use bip276::*;

Modules§

address
Bitcoin address (P2PKH) representation.
bip276
BIP-276 script encoding for typed bitcoin-related data.
chunk
Script chunk representation.
evaluation_error
Script evaluation error with full execution context.
locking_script
Locking Script (scriptPubKey).
op
Bitcoin Script opcodes.
script
Bitcoin Script class.
script_num
Bitcoin Script number encoding.
spend
Bitcoin Script interpreter for spend validation.
template
Script template trait and types.
templates
Script templates for common transaction types.
transaction
Transaction interface traits for Script module integration.
unlocking_script
Unlocking Script (scriptSig).