{"author":{"address":"0x5F12C3e92E008A076315f110f798AA579c2d732b","user":"https://learnblockchain.cn/people/5744"},"content":{"body":"### 常用的操作码\r\n##### 1.基本操作码\r\n\r\n- **OP_0 (0x00)** 💡**作用**: 将数值0（false）压入堆栈。 💡**用途**: 通常用于标记或填充空位。\r\n- **OP_1 (0x51) 到 OP_16 (0x60)** 💡**作用**: 将数值 1 到 16 压入堆栈。 💡**用途**: 用于条件语句和多重签名验证。\r\n\r\n##### 2.堆栈操作\r\n\r\n- **OP_DUP (0x76)** 💡**作用**: 复制堆栈顶部的项。 💡**用途**: 常用于重复使用堆栈顶部的值。\r\n- **OP_DROP (0x75)** 💡**作用**: 移除堆栈顶部的项。 💡**用途**: 删除不再需要的值。\r\n- **OP_SWAP (0x7c)** 💡**作用**: 交换堆栈顶部的两项。 💡**用途**: 改变堆栈中项的顺序。\r\n\r\n##### 3.算术和逻辑操作\r\n\r\n- **OP_ADD (0x93)** 💡**作用**: 将堆栈顶部的两个数相加并将结果压入堆栈。 💡**用途**: 执行简单的加法操作。\r\n- **OP_EQUAL (0x87)** 💡**作用**: 比较堆栈顶部的两个值，如果相等则返回true（压入1），否则返回false（压入0）。 💡**用途**: 比较两个值是否相等。\r\n- **OP_EQUALVERIFY (0x88)** 💡**作用**: 运行OP_EQUAL，然后根据结果决定是否继续执行脚本。如果结果为false，则脚本失败。 💡**用途**: 常用于验证签名等条件。\r\n\r\n##### 4.加密和哈希操作\r\n\r\n- **OP_SHA256 (0xa8)** 💡**作用**: 对堆栈顶部的项执行SHA-256哈希运算，并将结果压入堆栈。 💡**用途**: 生成数据的哈希值。\r\n- **OP_HASH160 (0xa9)** 💡**作用**: 对堆栈顶部的项先执行SHA-256哈希运算，再执行RIPEMD-160哈希运算，并将结果压入堆栈。 💡**用途**: 生成比特币地址的哈希值。\r\n- **OP_CHECKSIG (0xac)** 💡**作用**: 验证堆栈顶部的签名是否有效。 💡**用途**: 确认交易的有效性。\r\n- **OP_CHECKMULTISIG (0xae)** 💡**作用**: 验证多个签名是否有效。 💡**用途**: 多重签名验证。\r\n\r\n##### 5.条件操作\r\n\r\n- **OP_IF (0x63)** 💡**作用**: 如果堆栈顶部的值为true，则执行接下来的操作码，直到遇到OP_ELSE或OP_ENDIF。 💡**用途**: 用于条件执行。\r\n- **OP_ELSE (0x67)** 💡**作用**: 与OP_IF配合使用，执行OP_IF条件为false时的操作码。 💡**用途**: 用于条件执行。\r\n- **OP_ENDIF (0x68)** 💡**作用**: 结束条件执行块。 💡**用途**: 用于条件执行。\r\n### script\r\n\r\n![script.png](https://img.learnblockchain.cn/attachments/2024/08/AKQH2mQl66d281bcef008.png)\r\n\r\n### address\r\n\r\n![address.jpg](https://img.learnblockchain.cn/attachments/2024/08/gCCboPL366d281cd1c700.jpg)","title":"BTC 脚本与地址总结"},"history":null,"timestamp":1725549563,"version":1}