比特币脚本支持多种哈希运算。比特币脚本是一种基于堆栈的编程语言,它提供了一些操作码(opcode)用于处理哈希运算。以下是比特币脚本中常用的哈希运算指令:
-
OP_HASH160
- 计算数据的
RIPEMD-160(SHA-256(data))
。也就是先对数据执行 SHA-256,然后将结果作为输入执行 RIPEMD-160。这个操作通常用于生成比特币地址(P2PKH 和 P2SH 地址)。 - 堆栈操作:
<data> -> <hash160>
- 计算数据的
-
OP_SHA256
- 计算数据的 SHA-256 哈希。SHA-256 是一种广泛使用的哈希算法,它输出 256 位(32 字节)的哈希值。
- 堆栈操作:
<data> -> <sha256 hash>
-
OP_SHA1
- 计算数据的 SHA-1 哈希。虽然 SHA-1 在某些场景下已被认为不再足够安全,但它仍然可以用于一些特定用途。
- 堆栈操作:
<data> -> <sha1 hash>
-
OP_RIPEMD160
- 计算数据的 RIPEMD-160 哈希。RIPEMD-160 是一种输出 160 位(20 字节)哈希值的算法,比特币地址格式(例如 P2PKH 地址)依赖此算法。
- 堆栈操作:
<data> -> <ripemd160 hash>
以下是一个常见的 Pay-to-PubKey-Hash(P2PKH)交易脚本,它使用了 OP_HASH160
指令:
OP_DUP OP_HASH160 <PubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
OP_DUP
:复制堆栈上的公钥。OP_HASH160
:对公钥进行 SHA-256 和 RIPEMD-160 的双重哈希运算,生成公钥哈希(PubKeyHash
)。OP_EQUALVERIFY
:验证计算出的哈希值是否等于给定的PubKeyHash
。OP_CHECKSIG
:验证签名是否有效。
<Signature> <PublicKey>
解锁脚本提供了签名和公钥,脚本会先验证公钥对应的哈希是否匹配,然后验证签名的合法性。
比特币脚本支持多种哈希运算,主要用于验证数据的完整性和确保交易的正确性。最常见的哈希运算是 OP_HASH160
,用于生成比特币地址,并在 P2PKH 和 P2SH 类型的交易中应用。