跳到主要内容

错误码

3. 错误码

3.1 JSON-RPC 标准错误

名称含义
-32700PARSE_ERRORJSON 解析失败
-32600INVALID_REQUEST非对象 / jsonrpc≠"2.0" / 写路由 batch / 空 batch / 读路由 batch 超过 20 条
-32601METHOD_NOT_FOUND未知方法
-32602INVALID_PARAMS参数非法(缺字段 / 类型错 / 格式错 / 资源不存在)
-32603INTERNAL_ERRORJournal / IO / 序列化异常

3.2 链层自定义错误

名称含义
-32000SERVER_BUSY背压 / state actor 不可用 / 链已停机 / 查询 10s 超时或排队超时 / action 限流(per-IP 50 rps、per-signer 20 rps)
-32001NONCE_REPLAYNonce 重放或不在窗口(error.dataaccount_nonce/got/window
-32002LEADER_UNREACHABLEFollower 无法连接 Leader
-32003LEADER_TIMEOUTFollower 请求 Leader 超时
-32004RESOURCE_NOT_FOUND资源不存在(well-formed 参数指向的市场/订单/仓位等解析不到;例外getAccount 对从未出现的合法地址返回零值壳;getMarketSettings 对合法 address + symbol 在无链上记录时返回默认偏好壳,均不抛此码)。REST 别名映射 404
-32010AUTH_FAILED签名/agent/权限不足(error.datareason: RejectReason

3.3 RejectReason 枚举(kept-reject 的业务拒因)

写操作在 auth 通过但业务校验失败时返回 status: "kept-reject"result.reason 为以下变体之一(externally-tagged JSON):

RejectReason 变体含义携带字段
InsufficientBalance余额 / IM 不足required(raw i128), have(raw i128);Cross 非 reduce_only 时 have 含 Cross uPnL(§7.0
ChainIdMismatchenvelope.chain_id 不匹配
UnsupportedActionVersionaction_version 不支持当前仅支持 2
SignerNotFoundsigner 对应账户不存在
NonceMismatchnonce 不在窗口内account_nonce, got, window
BadMasterSignaturesecp256k1 签名 verify 失败
AgentNotRegisteredrecover 地址既非 master 也非已注册 agent(含:未注册;或签错通道 / digest 不一致
AgentExpiredagent 委托已过期expires_at_ms
AgentRoleMissingagent 缺少所需角色
MasterOnlyAction该 Action 只允许 master 直签
AccountRoleMissing签名者缺少所需角色
SymbolNotFoundaction 中的 symbol 不存在
MarketNotFoundmarket_id 解析不到
MarketNotActive市场 lifecycle 不允许该操作(如非 Active 时非 reduce_only 下单/重挂)
QuoteNotAvailable无可用 oracle 报价(改价重挂 / 下单)
AmendNoChange改单无有效变更
AmendOrderNotResting目标单不在挂簿
OrderTargetInvalidorder_id / client_order_id 定位非法
CancelOwnerMismatch非挂单 owner
AccountNotFoundtarget 账户不存在
PriceNonPositive限价 ≤ 0
QtyNonPositive数量 ≤ 0
DecimalPrecisionExceededdecimal string 超精度或非法格式
PriceQtyOverflow价量乘法溢出
NotionalOverflow名义值溢出
DustNotionalFillqty>0 但名义值截断为 0(native 市场常见于 price=0);整单拒
FeeOverflow手续费溢出
PostOnlyRejectedPostOnly 单会立即成交
FokRejectedFOK 无法按原数量全部成交。matcher 引擎拒收时也出现在 RuntimeReject.engine_reasonreduce-only FOK 盘口不足但仍有可平量时走 Core::Rejected / result.reason
MarketEmergencyHalt市场处于紧急熔断
PositionNotFound无对应持仓(别名;wire 多为 ClosePositionNoPosition / PositionNotFlat
ReduceOnlyWouldOpenOrFlipreduce_only 会开仓或翻仓(仓位为 0 / 同向 / 可平量已为 0)。文档旧名 ReduceOnlyRejected 仍可能出现在旧材料;SDK 将二者映射到此标签
DuplicateLiveOrderIdorder_id 仍在活单,或本进程内已完全成交过(T22);SDK 常映射为 DuplicateClientOrderId
EventBudgetExceeded单笔交易事件数超限
BatchSizeExceeded批量操作子项数超限
InvalidCommandmatcher 引擎拒收
ReferralSelf不能绑定自己的推荐码
ReferrerAlreadyBound已绑定推荐码(只能绑一次)
ReferralCodeNotFound推荐码未注册
ReferralCodeAlreadyExists推荐码已被他人占用
ReferralCodeAlreadyRegistered本账户已注册过推荐码
ReferralCodeInvalid推荐码格式不合法(3–32 字符,ASCII 字母/数字/_/-
RebateRatioOutOfRange返佣比例 > 10 000 bps(100 %)ratio_bps(u32)
RebateRatioOwnerNotReferrerSetAccountRebateRatio 目标未注册推荐码
InviterKeepRatioOutOfRange邀请者自留比例 > 10 000 bpsratio_bps(u32)
MissingAccountForInviterKeepRatio设置自留比例时目标账户不存在
GtdExpiryInPastGTD 过期时刻在过去
TriggerNotFound触发单不存在
TriggerOwnerMismatch非触发单 owner
TriggerPriceNonPositive触发价 ≤ 0
TriggerWouldExecuteImmediatelymark 已满足触发方向trigger_price(raw), mark_price(raw)
TriggerCountCapExceeded账户活跃触发单达上限(256)max
TriggerLimitUnreachableAtFirestop-limit 触发价与限价方向矛盾trigger_price(raw), limit_price(raw)
AmendTriggerNoChange触发单改单无有效变更
AmendTriggerPayloadMismatchMarket 载荷误传 new_limit_price / new_tif
OcoCrossMarketUnsupportedOCO 两腿跨市场
OcoDuplicateLegOCO 两腿参数重复
OcoActivePairsCapExceeded账户 Active OCO 达上限
OcoLegValidationFailedOCO 腿参数校验失败detail
OcoPairNotFoundOCO pair 不存在
OcoNotOwner非 OCO owner
OcoAlreadyResolvedOCO 已 Resolved

注意result.reason 中的数值字段为 raw i128(整型),未做 decimal 投影。同一笔交易中 result.events[] 内的对应 Rejected 事件已经过 ADR-0026 投影为 decimal string。