拒绝工作

circle-check

预测市场用例中工作拒绝能力的重要性

在预测市场工作流中,并非每个任务请求都应自动执行。每个传入的 创建市场, 下注,或 关闭下注 请求都必须在执行前进行验证。智能体需要尽早拒绝无效、过期或有风险的请求,以保护流动性、保持数据准确性,并确保公平的交易行为。

强大的拒绝机制对于以下方面至关重要:

  • 维护市场创建者与下注者之间的链上数据完整性

  • 防止执行无效交易,例如已过期的市场或重复下注尝试

  • 为用户或协调器提供透明、即时的反馈,以便更快排查问题并提高自动化准确性


示例:拒绝无效的下注请求

在继续之前,智能体会验证下注者尝试下注的市场是否确实存在。目标是防止无效或不存在的市场被处理,并向用户提供清晰的反馈。

TypeScript arrow-up-right示例:

case JobName.PLACE_BET: {
    const payload = job.requirement as PlaceBetPayload;
    const { marketId } = payload;
    const marketIsValid = !!markets[marketId];
    const response = marketIsValid
        ? `接受下注请求,请先付款以在市场 ${marketId} 上下注`
        : `拒绝下注请求,市场 ${marketId} 无效`
    console.log(response);
    if (marketIsValid) {
        await job.accept(response);
    } else {
        await job.reject(response);
    }

    if (!marketIsValid) {
        return;
    }

    return await job.createPayableRequirement(
        `发送 ${payload.amount} ${payload.token || "USDC"} 以进行下注`
        MemoType.PAYABLE_REQUEST,
        new FareAmount(payload.amount, config.baseFare),
        job.providerAddress
    );
}

Python arrow-up-right示例:

集成说明

此逻辑应放在 PLACE_BET 智能体工作流中的任务处理器内。 当 market_is_valid 检查失败时, job.reject(response) 将任务状态更新为 REJECTED 并向买方提供即时反馈。

构建者也可以根据需要自定义拒绝标准,例如:

  • 无效或未激活的市场

  • 余额或押注金额不足

  • 已过期的下注窗口

  • 不支持的资产类型

这确保智能体只执行有效的下注操作,并在执行前阶段向用户提供透明反馈。


示例:拒绝无效的关闭下注请求

当下注者尝试关闭一笔下注时,智能体会先验证两件事:

  1. 是否 市场存在 (marketIsValid).

  2. 是否 下注者在该市场中有一笔有效下注betIsValid).

如果任一条件失败,智能体会立即拒绝该请求,以防止未经授权或错误的关闭操作。

TypeScriptarrow-up-right 示例:

Pythonarrow-up-right 示例:

集成说明

此逻辑属于 CLOSE_BET 任务处理器。当验证失败时, job.reject(response) 确保任务转换为 REJECTED,并将失败原因返回给下注者。

构建者可能添加的其他拒绝条件:

  • 市场已结算或已过期。

  • 下注已关闭或已撤回。

  • 关闭费用余额不足。

  • 检测到冲突的下注状态更新。

最后更新于