什么是比特币脚本(Script)?

Intermediate
3m

比特币脚本是一种简单的基于堆栈的编程语言,用于定义比特币交易中如何使用输出。它的功能是作为交易输出的锁定和解锁机制。

脚本包含两个部分:锁定脚本(或 scriptPubKey),它附加到输出并指定花费输出的条件;解锁脚本(或 scriptSig),它附加到输入并提供满足这些条件所需的数据。当节点收到一笔花费交易时,它会将这些脚本组合在一起,并使用称为堆栈的数据结构从左到右运行它们。如果结果有效,则交易被授权。

了解比特币的交易输入输出模型:什么是 UTXO?

比特币脚本并非图灵完备的编程语言,这意味着它们不支持循环或其他可能消耗过多计算资源的构造。这一限制确保了网络的安全性和效率。虽然 P2PKH(支付到公钥哈希)是最常用的脚本类型,但更复杂的脚本可以实现多重签名地址等功能,其中需要多个签名才能授权一笔交易。

比特币脚本有目的设计为不是图灵完备,这有几个重要原因:

  • 安全性和可预测性:通过限制脚本功能,不允许使用循环和任意分支等功能,黑客就没办法使用这种脚本语言写一些死循环(会造成网络瘫痪),或者一些能导致 DOS 攻击的恶意代码,也就避免了比特币网络受到 DOS 攻击。
  • 确保所有节点都能快速验证交易对于维持比特币的去中心化至关重要。非图灵完备的脚本语言保证了交易验证保持计算可行和可预测,避免了复杂脚本可能需要大量处理能力和时间的场景。
  • 降低复杂性:比特币脚本的简单性降低了无意中实现图灵完备性的风险,这种风险在添加额外功能时很容易发生。它保持了一种与比特币设计理念一致的简单脚本方法,即稳健和安全。

比特币

What else do you want to learn?

Send
delate
Use TokenInsight App All Crypto Insights Are In Your Hands
Open