Expand description
§BSV Script
Bitcoin Script construction, parsing, execution, validation, and templates.
This module provides:
- Opcode constants (
opmodule) - Script chunks (
ScriptChunk) - Script parsing and serialization (
Script) - Locking and unlocking script types (
LockingScript,UnlockingScript) - Script number encoding (
script_nummodule) - Script evaluation errors (
evaluation_errormodule) - Spend validation (
Spend) - Script templates (
templatemodule,templatesmodule)
§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).