-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
41 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
比特币脚本支持多种哈希运算。比特币脚本是一种基于堆栈的编程语言,它提供了一些操作码(opcode)用于处理哈希运算。以下是比特币脚本中常用的哈希运算指令: | ||
|
||
1. **`OP_HASH160`** | ||
- 计算数据的 **`RIPEMD-160(SHA-256(data))`**。也就是先对数据执行 SHA-256,然后将结果作为输入执行 RIPEMD-160。这个操作通常用于生成比特币地址(P2PKH 和 P2SH 地址)。 | ||
- **堆栈操作**:`<data> -> <hash160>` | ||
|
||
2. **`OP_SHA256`** | ||
- 计算数据的 **SHA-256** 哈希。SHA-256 是一种广泛使用的哈希算法,它输出 256 位(32 字节)的哈希值。 | ||
- **堆栈操作**:`<data> -> <sha256 hash>` | ||
|
||
3. **`OP_SHA1`** | ||
- 计算数据的 **SHA-1** 哈希。虽然 SHA-1 在某些场景下已被认为不再足够安全,但它仍然可以用于一些特定用途。 | ||
- **堆栈操作**:`<data> -> <sha1 hash>` | ||
|
||
4. **`OP_RIPEMD160`** | ||
- 计算数据的 **RIPEMD-160** 哈希。RIPEMD-160 是一种输出 160 位(20 字节)哈希值的算法,比特币地址格式(例如 P2PKH 地址)依赖此算法。 | ||
- **堆栈操作**:`<data> -> <ripemd160 hash>` | ||
|
||
### 示例:比特币支付脚本中使用哈希运算 | ||
|
||
以下是一个常见的 Pay-to-PubKey-Hash(P2PKH)交易脚本,它使用了 `OP_HASH160` 指令: | ||
|
||
#### 锁定脚本(ScriptPubKey) | ||
```bash | ||
OP_DUP OP_HASH160 <PubKeyHash> OP_EQUALVERIFY OP_CHECKSIG | ||
``` | ||
|
||
1. `OP_DUP`:复制堆栈上的公钥。 | ||
2. `OP_HASH160`:对公钥进行 SHA-256 和 RIPEMD-160 的双重哈希运算,生成公钥哈希(`PubKeyHash`)。 | ||
3. `OP_EQUALVERIFY`:验证计算出的哈希值是否等于给定的 `PubKeyHash`。 | ||
4. `OP_CHECKSIG`:验证签名是否有效。 | ||
|
||
#### 解锁脚本(ScriptSig) | ||
```bash | ||
<Signature> <PublicKey> | ||
``` | ||
|
||
解锁脚本提供了签名和公钥,脚本会先验证公钥对应的哈希是否匹配,然后验证签名的合法性。 | ||
|
||
### 总结 | ||
比特币脚本支持多种哈希运算,主要用于验证数据的完整性和确保交易的正确性。最常见的哈希运算是 `OP_HASH160`,用于生成比特币地址,并在 P2PKH 和 P2SH 类型的交易中应用。 |