不够。币安现货API的-1021既可能表示请求时间戳超出recvWindow,也可能表示客户端时间领先服务器过多。只把recvWindow调大,无法消除所有时间校验错误。
请求有效期与网络等待不同
recvWindow表示这份签名请求允许保持有效的时间,单位固定为毫秒,默认5000,最大60000。它没有把客户端的网络等待时间延长到同样数值,也不表示下单后订单只会保留这么久。
timestamp可以用毫秒或微秒表达,但必须反映当前客户端时间;recvWindow仍按毫秒填写。把这两个字段误当成同一单位,或者直接使用秒级时间戳,都应列入参数核对范围。
时钟领先不能靠扩大窗口补救
服务器的校验条件同时约束时间戳不得领先服务器达到一秒,以及请求距当前服务器时间不得超过窗口。即使窗口给得很大,本机时钟明显走快仍可能被拒绝;转发撮合引擎前还会再次检查有效期。
排查时应检查系统时间同步、签名生成时刻、请求排队耗时和发送参数。若请求先签名再长时间等待发送,应重新生成符合当前时间的签名请求,不能只替换时间戳却保留旧签名。
在交易所接口排错里,-1021和签名无效的-1022是不同错误。使用时间核对工具时,重点检查实际偏差与单位;窗口设到最大值,也不能证明链路已经恢复正常。
原创文章,作者:eastbtc,如若转载,请注明出处:https://www.eastbtc.com/exchange/29497.html