$EX5 预售已开启 — 种子轮 · 500M 固定供应量 · 50% 销毁 · 通过 EX5 Exchange 完成 KYC参与 →
更新于

比特币 Script 入门:智能交易逻辑的基础

高级

简而言之: 什么是比特币 Script?它如何运作,又有哪些功能?在这篇详细的技术指南中,我们将深入解析 Script 语言的结构及其实际应用。

比特币的可编程性:Script 为何存在

比特币不仅是一套数字货币系统——它还是一个平台,允许将特定的条件逻辑编码到交易中。这种可编程性是通过一种名为 Script 的简单语言实现的。

Script 定义了比特币交易的锁定和解锁条件。虽然它不如以太坊的智能合约灵活,但比特币 Script 能够通过更简单的机制实现强大的自定义逻辑。

什么是 Script?它如何运作?

Script 是一种基于栈的编程语言。其指令(即操作码,OP code)要么将数据压入栈中,要么对栈中已有的元素进行操作。

Script 出现在比特币交易的两个主要组成部分中:

  • ScriptPubKey:由接收方地址指定的锁定脚本。
  • ScriptSig:由发送方提供的解锁脚本。

这两段脚本会被拼接起来并一起执行。如果最终执行结果在栈顶留下“true”,则该交易有效。

比特币 Script 的主要特点

  • 非图灵完备:没有循环,也不会无限执行。这是有意为之的安全设计。
  • 确定性:相同的输入总是产生相同的输出。
  • 极简:专为核心功能而设计,避免不必要的复杂性。
  • 基于栈:基于 LIFO(后进先出)数据结构运行。

常见的脚本类型

1. P2PKH(支付到公钥哈希)

比特币中的标准交易格式。

  • ScriptPubKey:OP_DUP OP_HASH160 <PubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
  • ScriptSig:<Signature> <PublicKey>

只有持有相应私钥的人才能解锁这笔资金。

2. P2SH(支付到脚本哈希)

允许将更复杂的脚本表示为单个哈希地址。

  • ScriptPubKey:OP_HASH160 <ScriptHash> OP_EQUAL
  • ScriptSig:<Signature(s)> ... <RedeemScript>

常用于多重签名或时间锁定支付。

3. 多重签名(Multisig)

需要多个有效签名才能授权一笔交易。

示例:2-of-3 多重签名脚本:
OP_2 <PubKey1> <PubKey2> <PubKey3> OP_3 OP_CHECKMULTISIG

通常嵌入在 P2SH 结构中。

重要操作码概览

Script 使用操作码(OP code)来定义逻辑。常见的操作码包括:

  • OP_DUP:复制栈顶元素。
  • OP_HASH160:先执行 SHA-256,再执行 RIPEMD-160。
  • OP_EQUALVERIFY:比较两个值;若不相同则报错。
  • OP_CHECKSIG:验证数字签名。
  • OP_CHECKLOCKTIMEVERIFY:强制执行基于时间的花费限制。

脚本将这些操作码组合起来,形成用于验证花费条件的逻辑链。

比特币 Script 技术示例

基础 P2PKH 示例

  • ScriptSig:<Signature> <PublicKey>
  • ScriptPubKey:OP_DUP OP_HASH160 <PubKeyHash> OP_EQUALVERIFY OP_CHECKSIG

两者一起执行时,栈会逐步处理每个步骤,以验证所有权并授权支付。

时间锁定脚本

ScriptPubKey:<LockTime> OP_CHECKLOCKTIMEVERIFY OP_DROP <PubKey> OP_CHECKSIG

在到达指定的时间或区块高度之前,资金无法花费。适用于托管、遗产继承或分阶段释放资金等场景。

比特币 Script 能构建什么?

  • 多重签名钱包
  • 时间锁定支付
  • 在闪电网络中开设通道
  • 托管系统
  • 受限的花费条件(例如一次性输出)

Script 在简洁性与功能性之间取得了平衡,这与比特币的设计原则一致。

比特币 Script 为何重要

比特币 Script 证明了比特币不仅仅是数字货币。它让交易能够包含可编程逻辑,在不牺牲安全性的前提下,提供更大的灵活性和无需信任的条件。

常见问题:关于比特币 Script 的疑问

问:比特币 Script 是图灵完备的吗?
答:不是。出于安全考虑,它刻意避免了循环和随机性。

问:比特币 Script 能支持 NFT 或 DeFi 吗?
答:只能以有限的形式支持。可以实现代币控制或托管等基础功能,但无法实现完整的 DeFi 逻辑。

问:现在还在添加新的操作码吗?
答:是的。随着隔离见证(SegWit)和 Taproot 等升级,已经引入了新的操作码,更多操作码也在讨论之中。

结论:Script 是比特币的智能层

比特币 Script 定义了驱动整个网络的交易逻辑。虽然它需要较深的技术理解,但对于开发者、安全专家和协议设计者来说,它是一项至关重要的工具。

随着越来越多的用户探索比特币 Script,他们会发现比特币究竟有多么灵活、安全和可编程。

建议:

  • 使用测试网(testnet)安全地试验比特币 Script。
  • 透彻理解 ScriptSig 与 ScriptPubKey 之间的区别。
  • 通过实际编写脚本来学习操作码。
  • 动手实践多重签名和时间锁场景,加深理解。
  • 定期关注 Bitcoin Core 文档和 GitHub 上的 BIP 存档。