Wanneer u een private verzoek aan Binance doet, wordt het bericht ondertekend om de beveiliging van de verzoeken te verhogen. Het bericht neemt de lokale tijd en verzendt deze binnen het ondertekende bericht. Als de lokale tijd een verschil van meer dan 5 seconden met de Binance-servers heeft, wordt het verzoek geweigerd. Het is dus belangrijk om te verifiëren dat uw lokale tijd is gesynchroniseerd. U kunt dit doen met de tijdsynchronisatiemethode voor uw besturingssysteem.
De logica is als volgt:
if (timestamp < (serverTime + 1000) && (serverTime - timestamp) <= recvWindow) {
// process request
} else {
// reject request
}
Het wordt aanbevolen om een klein recvWindow van 5000 of minder te gebruiken! Het maximum kan niet meer dan 60000 milliseconden zijn.
U kunt de Binance-servertijd controleren door de methode GetServerTime aan te roepen, die de tijd van de Binance-server retourneert
De RecvWindow is standaard 5000; deze waarde kan worden verhoogd via de eigenschap REST_API.BinanceOptions.RecvWindow.
Als uw toepassing niet kan garanderen dat de lokale klok gesynchroniseerd blijft, bijvoorbeeld bij een headless server zonder betrouwbare tijdsdienst, kunt u de component de afwijking laten corrigeren in plaats van dat elk private verzoek wordt geweigerd. Stel REST_API.BinanceOptions.UseServerTimeOffset in op True (standaard False) en roep de nieuwe methode SyncServerTime aan wanneer u het verschil tussen de klok van de Binance-server en uw lokale klok wilt meten, bijvoorbeeld eenmalig bij het opstarten of volgens een eigen schema. SyncServerTime roept GetServerTime aan, vergelijkt dit met de lokale klok en slaat het verschil op. Vanaf dat moment bevat de tijdstempel van elk ondertekend verzoek die opgeslagen afwijking.
Het gemeten verschil is beschikbaar via de alleen-lezen eigenschap ServerTimeOffset, in milliseconden, positief wanneer de klok van de Binance-server voorloopt op uw lokale klok. Er wordt niets automatisch gemeten of toegepast, SyncServerTime moet expliciet worden aangeroepen en UseServerTimeOffset moet zijn ingeschakeld, zodat een ondertekend verzoek alleen wordt aangepast wanneer de toepassing daarom vraagt.