diff --git a/BTC/Advanced/Multisign/OP_CHECKMULTISIGVERIFY/README.md b/BTC/Advanced/Multisign/OP_CHECKMULTISIGVERIFY/README.md index 7a8ab2b48..c3a6ac404 100644 --- a/BTC/Advanced/Multisign/OP_CHECKMULTISIGVERIFY/README.md +++ b/BTC/Advanced/Multisign/OP_CHECKMULTISIGVERIFY/README.md @@ -20,4 +20,29 @@ `OP_CHECKMULTISIGVERIFY` 结合了 `OP_CHECKMULTISIG` 和 `OP_VERIFY` 的功能。其主要目的是在验证多重签名后,立即判断验证结果并返回执行状态。 -脚本构建和签名过程可以参考[OP_CHECKMULTISIG](../OP_CHECKMULTISIG/README.md),这里不再赘述。 \ No newline at end of file +脚本构建和签名过程可以参考[OP_CHECKMULTISIG](../OP_CHECKMULTISIG/README.md),这里不再赘述。 + +### 具体案例 +在babylon业务中,会把用户的资产质押到一个Taproot地址里。根据官方披露的三条解锁路径都需要OP_CHECKSIGVERIFY来验证签名然后执行后续逻辑 +1. 时间锁路径,质押者到期可以赎回 +```js + OP_CHECKSIGVERIFY OP_CHECKSEQUENCEVERIFY +``` + +2. 解绑路径,质押者提前赎回 +``` + OP_CHECKSIGVERIFY + OP_CHECKSIG + OP_CHECKSIGADD ... OP_CHECKSIGADD + OP_GREATERTHANOREQUAL +``` + +3. 质押者作恶,惩罚路径 +```js + OP_CHECKSIGVERIFY + OP_CHECKSIGVERIFY + OP_CHECKSIG OP_CHECKSIGADD ... OP_CHECKSIGADD + OP_GREATERTHANOREQUAL +``` + +相关交易可以查看:https://mempool.space/zh/signet/tx/ceb126550481ecb69b45929b2b5869fd3975a707e6100b368d6cc15e4434ad9d \ No newline at end of file diff --git a/BTC/Basic/payment/P2PKH.md b/BTC/Basic/payment/P2PKH.md index 2f1289657..8a086dba0 100644 --- a/BTC/Basic/payment/P2PKH.md +++ b/BTC/Basic/payment/P2PKH.md @@ -14,9 +14,9 @@ OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG OP_DUP // 复制栈顶的元素 OP_HASH160 // 弹出栈顶元素,计算其SHA-256散列,然后计算RIPEMD-160散列 -OP_PUSHBYTES_20 // 推送20字节到栈顶 +OP_PUSHBYTES_20 // 推送20字节的公钥哈希到栈顶 18e1fad25b2983d5dbb2e2b96e3ce756a69b3bc2 // 公钥哈希 -OP_EQUALVERIFY // 比较栈顶元素 +OP_EQUALVERIFY // 比较栈顶元素是否匹配 OP_CHECKSIG // 验证数字签名 ``` diff --git a/BTC/Basic/payment/README.md b/BTC/Basic/payment/README.md index abc25bc33..962955520 100644 --- a/BTC/Basic/payment/README.md +++ b/BTC/Basic/payment/README.md @@ -27,4 +27,12 @@ OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG # 常见支付方式 -- [P2PKH](./P2PKH.md) +| 支付方式 | 全称 | 地址前缀 | 脚本类型 | 主要特点 | 示例地址 | +|----------|-------------------------|----------|----------|-------------------------------------------------|---------------| +| [P2PKH](./P2PKH.md) | Pay-to-Public-Key-Hash | 1 | P2PKH | 最常用,公钥哈希方式,隐私性好,地址以 "1" 开头 | 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa | +| [P2SH](./P2SH-P2PKH.md) | Pay-to-Script-Hash | 3 | P2SH | 支付到脚本的哈希值,支持复杂的脚本,地址以 "3" 开头 | 3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy | +| [P2WPKH](./P2WPKH.md) | Pay-to-Witness-Public-Key-Hash | bc1q | P2WPKH | 使用隔离见证(SegWit),更低交易费用,地址以 "bc1q" 开头 | bc1qar0srrr7xf6h4g1ks7zft6wz7x4n7pkjkcn6lq | +| P2WSH | Pay-to-Witness-Script-Hash | bc1q | P2WSH | 使用隔离见证,支持复杂脚本,地址以 "bc1q" 开头 | bc1qrp33g0q0s6fphxtww9g4ndzsd74ny3rps6m74dxg7mjsg5c0z9rhdj | +| [P2TR](./P2TR.md) | Pay-to-Taproot | bc1p | P2TR | 使用 Taproot 功能,优化脚本执行和隐私,地址以 "bc1p" 开头 | bc1p4gr63h6fp9hrkwpf4sjwx4s34a5w6b6ptfhl5k7vph3ykq6s5h7gx5m | + + diff --git a/BTC/Basic/tools/README.md b/BTC/Basic/tools/README.md index dffcbec24..d0668975e 100644 --- a/BTC/Basic/tools/README.md +++ b/BTC/Basic/tools/README.md @@ -5,12 +5,22 @@ ## 可用工具 -### dust计算 +### [dust计算](./dust.md) - **描述**:在比特币网络中,“尘埃”(Dust)是一个专有术语,它指的是一种非常小的比特币金额,这种金额小到它的交易费用可能会超过这笔金额本身的价值。因此,从经济角度来看,发送这样一笔交易是不划算的。 - **影响**:尘埃限制的存在主要是为了防止网络被大量的微小交易所拥堵,这些交易可能是无效的或试图进行“尘埃攻击”(发送大量的小额交易到多个地址,以试图追踪这些地址的所有者)。因此,比特币网络通过设置尘埃限制来保护网络不被这种小额交易滥用。 -### base58 编码/解码 +### [base58 编码/解码](./base58.md) - **描述**:Base58是一种二进制到文本的编码方式,主要用于编码比特币地址。 -- **使用方法**:Base58编码主要用于生成人类可读的公钥哈希(即比特币地址)和私钥的可导入格式。这样的格式不仅容易被人识别和处理,也方便在不同的应用和服务之间进行交易和管理。 \ No newline at end of file +- **使用方法**:Base58编码主要用于生成人类可读的公钥哈希(即比特币地址)和私钥的可导入格式。这样的格式不仅容易被人识别和处理,也方便在不同的应用和服务之间进行交易和管理。 + +### [Bech32 编码/解码](./bech32.md) + +- **描述**:Bech32 是一种字符编码方案,设计用于提高比特币地址的可读性和纠错能力。它是一种人类可读的编码方式,主要用于比特币隔离见证(SegWit)地址的表示。 +- **使用方法**:Bech32 编码用于生成比特币隔离见证地址(例如,P2WPKH 和 P2WSH 地址)。它采用了一个包含 32 个字符的字符集,使得地址既易于手动输入,又具有较强的错误检测能力。Bech32 地址以“bc1”开头,后跟若干字符,提供了更高的错误检测能力和更好的用户体验。 + +### [Bech32m 编码/解码](./bech32m.md) + +- **描述**:Bech32m 是 Bech32 的一种变体,专门用于 Taproot 地址的编码。它与 Bech32 在结构上类似,但引入了不同的错误检测机制,以增强对 Taproot 地址的支持。 +- **使用方法**:Bech32m 编码用于生成 Taproot 地址,这种地址以“bc1p”开头。Bech32m 提供了改进的错误检测能力,适合用于 Taproot 地址的使用。它在 Bech32 基础上增加了一些功能,确保 Taproot 地址具有更好的数据完整性和错误校验能力。 \ No newline at end of file