Cuando se realiza una solicitud privada a Binance, el mensaje se firma para aumentar la seguridad de las solicitudes. El mensaje toma la hora local y la envía dentro del mensaje firmado; si la hora local tiene una diferencia superior a 5 segundos con los servidores de Binance, la solicitud será rechazada. Por lo tanto, es importante verificar que su hora local esté sincronizada; puede hacerlo utilizando el método de sincronización de hora de su sistema operativo.
La lógica es la siguiente:
if (timestamp < (serverTime + 1000) && (serverTime - timestamp) <= recvWindow) {
// process request
} else {
// reject request
}
Se recomienda utilizar un recvWindow pequeño de 5000 o menos. El máximo no puede superar los 60 000 milisegundos.
Puede consultar la hora del servidor Binance llamando al método GetServerTime, que devolverá la hora del servidor Binance
El valor predeterminado de RecvWindow es 5000; este valor puede incrementarse mediante la propiedad REST_API.BinanceOptions.RecvWindow.
Si su aplicación no puede garantizar que el reloj local permanezca sincronizado, por ejemplo un servidor headless que carezca de un servicio de hora fiable, puede dejar que el componente corrija la desviación en lugar de que se rechace cada solicitud privada. Establezca REST_API.BinanceOptions.UseServerTimeOffset en True (por defecto False) y llame al nuevo método SyncServerTime siempre que desee medir la diferencia entre el reloj del servidor de Binance y su reloj local, por ejemplo una vez al iniciar o según la programación que usted elija. SyncServerTime llama a GetServerTime, la compara con el reloj local y almacena la diferencia. A partir de ese momento, la marca de tiempo de cada solicitud firmada incluye ese desfase almacenado.
La diferencia medida está disponible a través de la propiedad de solo lectura ServerTimeOffset, en milisegundos, con valor positivo cuando el reloj del servidor de Binance está adelantado respecto a su reloj local. Nada se mide ni se aplica de forma automática, SyncServerTime debe llamarse de forma explícita y UseServerTimeOffset debe estar habilitado, de modo que una solicitud firmada solo se ajusta cuando la aplicación lo solicita.