Binance | 私有请求时间

当您向 Binance 发出私有请求时,消息会被签名以提高请求的安全性。消息包含本地时间并发送在签名消息中,如果本地时间与 Binance 服务器的差异超过 5 秒,请求将被拒绝。因此,验证本地时间是否已同步非常重要,您可以使用操作系统的时间同步方法来实现。

 

逻辑如下:

 

if (timestamp < (serverTime + 1000) && (serverTime - timestamp) <= recvWindow) {
  // process request
} else {
  // reject request
}

 

建议使用较小的 recvWindow(5000 或更小)!最大值不能超过 60000 毫秒。

 

您可以通过调用方法 GetServerTime 查看 Binance 服务器时间,该方法将返回 Binance 服务器的时间。

 

RecvWindow 默认值为 5000,可通过属性 REST_API.BinanceOptions.RecvWindow 增大该值。

 

如果您的应用程序无法保证本地时钟保持同步,例如没有可靠时间服务的无头服务器,您可以让组件校正这种时钟漂移,而不必让每个私有请求都被拒绝。将 REST_API.BinanceOptions.UseServerTimeOffset 设置为 True(默认值为 False),并在需要测量 Binance 服务器时钟与本地时钟之间差异时,调用新增的 SyncServerTime 方法,例如仅在启动时调用一次,或按您自行选定的计划定期调用。SyncServerTime 会调用 GetServerTime,将其与本地时钟进行比较,并存储该差值。此后,每个已签名请求的时间戳中都会包含该存储的偏移量。

 

测得的差值可通过只读属性 ServerTimeOffset 获取,单位为毫秒,当 Binance 服务器时钟领先于本地时钟时,该值为正。系统不会自动进行测量或应用,必须显式调用 SyncServerTime 并启用 UseServerTimeOffset,因此只有在应用程序主动请求时,已签名的请求才会被调整。