test pr: https://github.com/ckb-cell/rgbpp-sdk/pull/150

正常场景:

  1. 无引入新的 input 增加手续费:
  2. 新增 input 并增加手续费
  3. 指定变更输出索引

changeIndex: optional, return change to outputs[changeIndex], will return a new output if not specified - 创建一个低费率的交易。 - 使用相同的输入创建一个高费率的交易,同时指定一个变更输出索引。 - 确认新交易的费率和金额都大于旧交易,并且变更输出与原始交易相同,其他输出不变。

异常场景:

  1. 变更输出不可改变

  2. 费率一致

  3. 无法支付更多手续费

  4. 并发操作:同时尝试用不同的高费率交易替换同一个低费率交易,确保能够正确处理并发操作,不会发生冲突或意外情况。

  5. 大量输入和输出:创建一个具有大量输入和输出的交易,然后尝试替换它,以确保系统能够正确处理复杂的交易结构。

  6. 失败重试:构建在mempool 查询不到的交易,然后尝试替换交易,mempool能查询到。

  7. 验证没有多余input的情况:

    在没有额外的输入情况下,当修改交易的费率时,收集不到多余的input用来增加一个 out 用来返回 change

    1. 创建一个包含两个输入和两个输出的原始交易,其中输入和输出的金额分别为:
      • 输入1:1000
      • 输入2:5000
      • 输出3:1000
      • 输出4:4000
    2. 修改交易的费率,并验证交易的输出是否正确调整。在这种情况下,我们预期输出金额会变为:
      • 输出3:1000
      • 输出4:4000
      • 输出5: ***
    3. 确认收到不到多余的input 来增加一个 out5 用来返回 change如何处理

边界值场景:

  1. 最小费率和最小金额
  2. 最大费率和最大金额
  3. 添加feeRate 边界测试:

不同wallet发起的交易: