Skip to content

Latest commit

 

History

History
90 lines (62 loc) · 2.88 KB

File metadata and controls

90 lines (62 loc) · 2.88 KB

BTC 红包功能实现总结

功能概述

为 showbuzzv3 应用添加了 BTC 链红包支持,在不改变现有 MVC 红包逻辑的基础上,为 BTC 提供了特殊的限制和验证。

主要更改

1. 链配置更新 (src/utils/chains.ts)

  • 添加了 BTC 链配置,包括图标、精度等信息
  • 支持 8 位精度,聪作为最小单位,BTC 作为主单位

2. 红包表单 Store 更新 (src/stores/forms.ts)

  • 添加了 BTC 红包特殊常量:

    • BTC_MIN_TOTAL_SATS = 1500 (0.000015 BTC)
    • BTC_MAX_TOTAL_SATS = 10000000 (0.1 BTC)
    • BTC_MIN_PER_PACKET_SATS = 500 (0.000005 BTC)
    • BTC_MAX_PER_PACKET_SATS = 100000 (0.001 BTC)
    • BTC_MIN_QUANTITY = 3
    • BTC_MAX_QUANTITY = 100
  • 默认值设置:

    • BTC 红包:数量 3 个,总金额 0.00003 BTC,单位 BTC
    • 其他链:保持原有默认值
  • 验证逻辑:

    • validateQuantity(): BTC 链限制 3-100 个红包
    • validateAmount(): 实现 BTC 总金额和平均金额限制,带用户友好提示
    • reset(): 根据当前链设置不同默认值
  • 费率验证:

    • BTC 链的费率必须在 0.3-3 sat/vB 范围内
    • 超出范围时显示相应错误提示

3. 红包创建 UI 更新 (src/views/talk/components/modals/red-packet/Create.vue)

  • 移除了对 BTC 链的发红包限制
  • 添加了 BTC 链到可选链列表
  • 更新了单位切换逻辑:
    • BTC 链:BTC ↔ Sats
    • 其他链:Space ↔ Sats
  • 添加了链切换监听器,自动更新单位和默认值

4. 语言文件更新 (src/languages/zh.json)

  • 添加了 BTC 红包相关的错误提示信息:
    • 费率过高/过低提示
    • 总金额超限提示
    • 平均金额超限提示

功能特性

BTC 红包默认配置

  • 红包数量: 3 个 (最少 3 个,最多 100 个)
  • 总金额: 0.00003 BTC (3000 聪)
  • 金额范围: 0.000015-0.1 BTC (1500-10000000 聪)
  • 单个红包: 0.000005-0.001 BTC (500-100000 聪)

费率限制

  • 允许范围: 0.3-3 sat/vB
  • 超出提示: 显示友好的错误信息引导用户调整

用户体验

  • 自动根据当前链设置适当的默认值
  • 实时验证并自动修正超限输入
  • 切换链时自动更新界面和表单
  • 保持与 Space 红包一样的记忆功能

技术实现要点

  1. 链感知: 所有逻辑都基于chainStore.state.currentChain判断当前链
  2. 单位转换: 正确处理 BTC、聪和 Sats 之间的转换关系
  3. 向后兼容: 完全保持现有 MVC/Space 红包的功能和逻辑
  4. 用户友好: 提供清晰的错误提示和自动修正
  5. 状态管理: 正确处理表单状态重置和默认值设置

注意事项

  • 费率验证依赖于现有的chainStore.btcFeeRate()方法
  • 矿工费计算逻辑需要在giveRedPacket函数中实现
  • BTC 红包的实际发送逻辑需要与后端 API 协调
  • 保持了与现有红包系统的完全兼容性