exchange.IO("cancelTx", ...)
取消尚未上链的交易:使用与原交易相同的nonce,以更高的手续费发送一笔转给自己的0金额交易;该交易先上链后,原交易即失效。
exchange.IO(k, txHash)
exchange.IO(k, txHash, options)示例
取消一笔已发送的交易。
javascript
function main() {
var USDC = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
var spender = "0x1111111254EEB25477B68fb85Ed929f73A960582"
var txHash = exchange.IO("api", USDC, "approve", spender, "1000000")
Log("已发送:", txHash)
// 先使用 dryRun 查看替换交易的手续费(不发送)
Log(JSON.stringify(exchange.IO("cancelTx", txHash, { dryRun: true, multiplier: 1.5 })))
// 不再需要这笔交易:使用同一个 nonce 发送一笔转给自己的 0 金额交易,手续费更高,先上链即可替换原交易
var cancelHash = exchange.IO("cancelTx", txHash)
Log("取消交易:", cancelHash)
}返回值
| 类型 | 描述 |
string / object | 返回取消交易的哈希;启用 |
参数
| 名称 | 类型 | 必填 | 描述 |
k | string | 是 | 固定为 |
txHash | string | 是 | 待替换的、尚未上链的交易哈希,该交易必须由当前钱包发出。 |
options | object | 否 | 可选设置: |
参考
备注
替换交易沿用原交易的nonce,手续费按multiplier放大(默认值为1.125,最小值为1.1;节点要求替换交易的tip和maxFee均至少提高10%),且不低于当前网络的建议值。
取消操作不保证成功:如果原交易先被打包,取消交易将因nonce已被使用而失效。
当原交易已上链、节点查询不到原交易(例如通过私有通道发送),或原交易并非由当前钱包发出时,函数返回空值并报错。
目前仅支持以太坊(EVM)链,暂不支持波场(TRON)。
手续费的计算:原交易为EIP-1559交易时,小费取原小费×multiplier与当前建议小费中的较大者,最高费用取原最高费用×multiplier与2 × baseFee + 小费中的较大者;原交易为传统交易时,gas价格取原gas价格×multiplier与节点eth_gasPrice中的较大者。取消交易的gas上限为21000。
原交易在交易所对象配置的节点上查询;设置了exchange.IO("sendBase", ...)时,替换交易从该节点广播。