理解 BSV 中的 Locking Script:花费条件的核心机制
Locking script 是 BSV 交易中不可或缺的部分,它定义了 UTXO 的花费条件。本文从基础概念出发,逐步解析 locking script 的位置、与地址的关系、表达方式及其在应用中的重要性。
林知衡
technical_editor
在 BSV(Bitcoin SV)网络中,资金并不存储在传统的“账户”中,而是以未花费交易输出(UTXO)的形式存在。每个可花费的输出都带有一个锁定脚本(locking script),它定义了未来花费这笔资金所需满足的条件。理解 locking script 是掌握 BSV 底层资产控制权的关键。
Locking Script 的作用
一个交易输出仅包含金额是不够的。例如,假设一个输出包含 1000 satoshis,如果没有花费条件,网络无法确定谁有权使用它——任何人都可以将该输出作为输入引用。因此,每个输出必须包含锁定脚本,明确表达:
未来要花费这笔资金,必须满足这些条件。
在常见的付款中,条件通常是:“提供一个与特定公钥对应的有效数字签名。”
Locking Script 的位置
Locking script 位于交易的输出部分。简化的交易结构如下:
当一个输出尚未被花费时,它就是一个 UTXO。未来的交易若要花费它,需要在输入中提供解锁脚本(unlocking script)或解锁数据。这两个脚本书写在一个组合脚本中,共同执行验证:
如果结果为真,则花费有效;否则交易被拒绝。
Locking Script 与地址的关系
地址并非 locking script 本身,但地址通常可以帮助钱包生成对应的 locking script。以常用的 P2PKH(Pay to Public Key Hash)为例,地址背后对应一个公钥哈希(Hash160)。钱包根据地址生成 locking script,其逻辑大致为:
- 未来花费者必须提供:
- 一个公钥。
- 一个签名。
- 同时验证:
- 提供的公钥的哈希值等于锁定的哈希值。
- 签名能被该公钥验证。
因此,地址是用户友好的收款标识,而 locking script 是链上真实的花费条件。
Locking Script 可以表达的多种模式
除了普通的单签支付,Bitcoin Script 编程语言可以表达多种复杂条件:
- 多签条件:需要多个签名才能花费。
- 哈希原像条件:提供某个哈希的原像(如秘密值)即可花费。
- 时间或序列约束:基于绝对时间(
OP_CHECKLOCKTIMEVERIFY)或相对时间(OP_CHECKSEQUENCEVERIFY)限制。 - 数据输出:例如
OP_RETURN用于在链上存储任意数据,此类输出通常不可作为普通资金花费。 - 应用协议状态:在代币、凭证或智能合约场景中,locking script 可以表达资产归属、状态更新权限等。
BSV 生态特别强调 Script 的表达能力,这使得它不仅是简单的转账系统,还能支持复杂的链上应用。
Locking Script 与 UTXO 控制权
UTXO 的控制权并不绑定到用户名或账户,而是完全由 locking script 定义。例如:
- 如果 locking script 要求某个私钥的签名,则持有该私钥的人可以花费该 UTXO。
- 如果要求多个签名,则必须满足多签条件。
- 如果是一个不可花费的数据输出(如
OP_RETURN),则该输出不能再作为普通资金花费。
因此,理解 locking script 就等于理解 BSV 中“谁能花钱”的底层规则。
Locking Script 在 BSV 应用中的实践
在 BSV 应用中,locking script 不仅用于支付,还可作为应用状态的一部分。例如:
- 代币输出的 locking script 可以表达资产的所有权。
- 凭证输出可以定义谁能更新或撤销该凭证。
- 应用状态输出可以要求特定签名才能推进状态机。
- 数据输出可以用特定格式让 Overlay 网络识别。
但设计复杂的 locking script 需要谨慎,因为脚本的复杂程度会影响交易的标准性、手续费、验证成本以及矿工或服务的接受度。
新手常见误解
- Locking script 不是地址:地址是 locking script 的简写表示,而非脚本本身。
- Locking script 在输出中,不在输入中:输入提供的是解锁脚本,与输出的锁定脚本配合验证。
- 金额和 locking script 共同构成输出的核心:缺少任何一个,输出都无法被正确使用。
- 谁能花费 UTXO 取决于 locking script 和解锁数据是否匹配:与用户身份无关,完全由技术条件决定。
- 普通地址支付只是 locking script 的一种常见模板:BSV 支持远不止 P2PKH 一种模式。
- 复杂脚本不一定被广泛接受:需要关注比特币网络的标准交易策略和矿工政策。
参考来源
推荐文章
区块链2026年6月1日
标准脚本 vs 非标准脚本:BSV 开发中容易被忽略的边界
共识上有效的交易,网络不一定处理。理解标准脚本与矿工策略,避免交易广播失败。
区块链2026年6月1日
解读Bitcoin Script:基于栈的脚本语言及其执行模型
Bitcoin Script是一种基于栈执行的脚本语言,用于验证交易花费条件。本文从栈的概念出发,通过例子说明其执行过程,并探讨P2PKH、受限设计、BSV应用等关键点,帮助理解这一链上验证语言的核心机制。
区块链2026年6月1日
OP_RETURN:BSV链上数据写入入门
了解OP_RETURN的基本概念、与普通支付的区别、数据格式要求、隐私注意事项以及应用场景。