Binance'e özel bir istek yaptığınızda, isteklerin güvenliğini artırmak için mesaj imzalanır. Mesaj, yerel saati alır ve imzalanan mesajın içinde gönderir; yerel saat Binance sunucularıyla 5 saniyeden fazla bir farka sahipse, istek reddedilir. Bu nedenle, yerel saatinizin senkronize olduğunu doğrulamanız önemlidir; bunu işletim sisteminiz için senkronizasyon zamanı yöntemini kullanarak yapabilirsiniz.
Mantık aşağıdaki gibidir:
if (timestamp < (serverTime + 1000) && (serverTime - timestamp) <= recvWindow) {
// process request
} else {
// reject request
}
5000 veya daha az küçük bir recvWindow kullanılması önerilir! Maksimum 60000 milisaniyeyi geçemez.
Binance sunucu saatini, Binance sunucusunun saatini döndüren GetServerTime yöntemini çağırarak kontrol edebilirsiniz
RecvWindow varsayılan olarak 5000'dir, bu değer REST_API.BinanceOptions.RecvWindow özelliği kullanılarak artırılabilir.
Uygulamanız yerel saatin senkronize kalmasını garanti edemiyorsa, örneğin güvenilir bir zaman hizmeti bulunmayan başsız (headless) bir sunucuda çalışıyorsa, her özel isteğin reddedilmesi yerine bileşenin bu sapmayı düzeltmesine izin verebilirsiniz. REST_API.BinanceOptions.UseServerTimeOffset özelliğini True olarak ayarlayın (varsayılan değeri False'dır) ve Binance sunucu saati ile yerel saatiniz arasındaki farkı ölçmek istediğinizde, örneğin başlangıçta bir kez ya da kendi belirlediğiniz bir zamanlamayla, yeni SyncServerTime yöntemini çağırın. SyncServerTime, GetServerTime'ı çağırır, sonucu yerel saatle karşılaştırır ve farkı saklar. Bundan sonra, imzalanan her isteğin zaman damgasına, SyncServerTime'ın sakladığı bu fark dahil edilir.
Ölçülen fark, salt okunur ServerTimeOffset özelliği üzerinden milisaniye cinsinden kullanılabilir; Binance sunucu saati yerel saatinizin ilerisindeyken bu değer pozitiftir. Hiçbir şey otomatik olarak ölçülmez veya uygulanmaz, SyncServerTime açıkça çağrılmalı ve UseServerTimeOffset etkinleştirilmelidir; bu nedenle imzalanan bir istek yalnızca uygulama bunu talep ettiğinde ayarlanır.