Script Templates
Overview
Purpose
Basic Usage
import { Transaction, P2PKH, PrivateKey } from '@bsv/sdk';
const privKey = PrivateKey.fromWif('L5EY1SbTvvPNSdCYQe1EJHfXCBBT4PmnF6CDbzCm9iifZptUvDGB');
const recipientAddress = '1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa';
// Create P2PKH template instance
const p2pkh = new P2PKH();
const tx = new Transaction();
// Create locking script for output
const lockingScript = p2pkh.lock(recipientAddress);
tx.addOutput({
lockingScript,
satoshis: 10000
});
// Create unlocking script template for input
const unlockingTemplate = p2pkh.unlock(privKey);
tx.addInput({
sourceTXID: '4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b',
sourceOutputIndex: 0,
unlockingScriptTemplate: unlockingTemplate
});
// Sign transaction (unlocking script generated automatically)
await tx.sign();
console.log('Transaction created with P2PKH template');Key Features
1. P2PKH Template (Pay to Public Key Hash)
2. Custom Script Templates
3. Time-Locked Template
4. Multi-Signature Template
API Reference
ScriptTemplate Interface
P2PKH Template
Creating Custom Templates
Common Patterns
Pattern 1: Reusable Template Factory
Pattern 2: Template Composition
Pattern 3: Protocol-Specific Templates
Security Considerations
Performance Considerations
Related Components
Code Examples
Best Practices
Troubleshooting
Issue: Template unlock fails during signing
Issue: Custom template generates invalid script
Issue: Unlock template estimation inaccurate
Issue: Template not working with BRC protocol
Further Reading
Status
Last updated
