sBTC 提现

概览

停机问题 sBTC 提现合约arrow-up-right (sbtc-withdrawal.clar)管理 sBTC 系统的提现流程。它处理提现请求的发起、接受和拒绝,确保对提现请求进行适当的验证并与其他 sBTC 合约进行交互。

常量

错误代码

  • ERR_INVALID_ADDR_VERSION (u500):无效的地址版本。

  • ERR_INVALID_ADDR_HASHBYTES (u501):无效的地址哈希字节数。

  • ERR_DUST_LIMIT (u502):提现金额低于尘埃限额(dust limit)。

  • ERR_INVALID_REQUEST (u503):无效的提现请求 ID。

  • ERR_INVALID_CALLER (u504):调用者不是当前的签名者主体。

  • ERR_ALREADY_PROCESSED (u505):提现请求已被处理。

  • ERR_FEE_TOO_HIGH (u505):支付的费用高于请求的费用。

  • ERR_WITHDRAWAL_INDEX_PREFIX:提现索引错误的前缀。

  • ERR_WITHDRAWAL_INDEX (u506):通用提现索引错误。

其他常量

  • MAX_ADDRESS_VERSION (u6):地址版本的最大值。

  • MAX_ADDRESS_VERSION_BUFF_20 (u4):20 字节哈希的最大版本。

  • MAX_ADDRESS_VERSION_BUFF_32 (u6):32 字节哈希的最大版本。

  • DUST_LIMIT (u546):提现的最小 sBTC 数量。

公开函数

initiate-withdrawal-request

发起一个新的提现请求。

  • 参数:

    • amount: uint - 要提现的 sBTC 数量

    • recipient: { version: (buff 1), hashbytes: (buff 32) } - 比特币地址详情

    • max-fee: uint - 提现的最大费用

  • 返回: (response uint uint)

accept-withdrawal-request

接受提现请求。

  • 参数:

    • request-id: uint - 提现请求 ID

    • bitcoin-txid: (buff 32) - 比特币交易 ID

    • signer-bitmap: uint - 签名者位图

    • output-index: uint - 比特币交易中的输出索引

    • fee: uint - 实际支付的费用

  • 返回: (response bool uint)

reject-withdrawal-request

拒绝提现请求。

  • 参数:

    • request-id: uint - 提现请求 ID

    • signer-bitmap: uint - 签名者位图

  • 返回: (response bool uint)

complete-withdrawals

处理多个提现请求(接受或拒绝)。

  • 参数:

    • withdrawals: (list 600 {...}) - 提现详情列表

  • 返回: (response uint uint)

只读函数

validate-recipient

验证接收者的比特币地址格式。

  • 参数:

    • recipient: { version: (buff 1), hashbytes: (buff 32) } - 比特币地址详情

  • 返回: (response bool uint)

私有函数

complete-individual-withdrawal-helper

用于在批量操作中处理单个提现的辅助函数。

  • 参数:

    • withdrawal: {...} - 单个提现详情

    • helper-response: (response uint uint) - 处理的累加器

  • 返回: (response uint uint)

与其他合约的交互

  • .sbtc-token:调用 protocol-lock, protocol-burn-locked, protocol-mint,和 protocol-unlock 用于代币操作。

  • .sbtc-registry:调用 create-withdrawal-request, get-withdrawal-request, get-current-signer-data, complete-withdrawal-accept,和 complete-withdrawal-reject 用于管理提现请求和签名者数据。

安全注意事项

1

访问控制

只有当前的签名者主体可以接受或拒绝提现请求。

2

尘埃限额

强制执行最低提现金额以防止垃圾交易并确保经济可行性。

3

费用管理

确保实际支付的费用不会超过用户设置的最大费用。

4

地址验证

实现对比特币地址格式的彻底验证。

5

状态管理

防止对提现请求的重复处理。

比特币地址类型

合约支持多种比特币地址类型,包括:

  • P2PKH(付给公钥哈希)

  • P2SH(付给脚本哈希)

  • P2SH-P2WPKH(P2SH 嵌套 P2WPKH)

  • P2SH-P2WSH(P2SH 嵌套 P2WSH)

  • P2WPKH(付给见证公钥哈希)

  • P2WSH(付给见证脚本哈希)

  • P2TR(付给 Taproot)

每种地址类型在接收者结构中由特定的版本字节和哈希字节格式表示。

这有帮助吗?