比特币脚本是一种简单的基于堆栈的编程语言,用于定义比特币交易中如何使用输出。它的功能是作为交易输出的锁定和解锁机制。
脚本包含两个部分:锁定脚本(或 scriptPubKey),它附加到输出并指定花费输出的条件;解锁脚本(或 scriptSig),它附加到输入并提供满足这些条件所需的数据。当节点收到一笔花费交易时,它会将这些脚本组合在一起,并使用称为堆栈的数据结构从左到右运行它们。如果结果有效,则交易被授权。
了解比特币的交易输入输出模型:什么是 UTXO?
比特币脚本并非图灵完备的编程语言,这意味着它们不支持循环或其他可能消耗过多计算资源的构造。这一限制确保了网络的安全性和效率。虽然 P2PKH(支付到公钥哈希)是最常用的脚本类型,但更复杂的脚本可以实现多重签名地址等功能,其中需要多个签名才能授权一笔交易。
比特币脚本有目的设计为不是图灵完备,这有几个重要原因: