Sommige bugs treden altijd op. Andere volgens een vast patroon. De Huobi- en HTX-signeerfout die in 2026.9 is verholpen, was van de tweede soort, en dat maakte hem veel lastiger te achterhalen: op een host die buiten UTC draaide, mislukten privéverzoeken een deel van elke dag en werkten ze de rest van de dag gewoon. Dat lijkt precies op een sporadisch authenticatieprobleem, tot iemand merkt dat het patroon samenvalt met de klok.
Een timestamp opgebouwd uit twee verschillende klokken
Huobi en HTX vereisen allebei dat het ondertekende verzoek een timestamp in UTC bevat, opgemaakt als yyyy-MM-ddTHH:mm:ss. De signeerroutine in TsgcWS_API_Huobi_Base, gedeeld door zowel TsgcWSAPI_Huobi als TsgcWSAPI_HTX, bouwde die timestamp op uit twee verschillende bronnen: het datumgedeelte kwam van de lokale systeemklok, het tijdgedeelte kwam van UTC. Op de meeste machines zijn de lokale datum en de UTC-datum het grootste deel van de dag gelijk, dus leek er niets mis. Rond middernacht UTC, op elke host waarvan de lokale tijdzoneverschuiving aan de andere kant van die grens lag, kwamen de datum en de tijd niet meer met elkaar overeen, kwam de signature die Huobi aan zijn eigen kant berekende niet meer overeen, en werd het verzoek geweigerd.
De oplossing haalt zowel de datum als de tijd uit dezelfde UTC-waarde:
uses
sgcBase_Helpers;
var
vUTC: TDateTime;
vTimeStamp: string;
begin
vUTC := sgcGetDateTimeAsUTC;
vTimeStamp := FormatDateTime('yyyy-mm-dd', vUTC) + 'T' +
FormatDateTime('hh:nn:ss', vUTC);
end;
Er hoeft niets geconfigureerd te worden. TsgcWSAPI_Huobi en TsgcWSAPI_HTX roepen allebei dezelfde signeerroutine aan, dus zijn ze samen verholpen:
uses
sgcWebSocket, sgcWebSocket_APIs;
var
oHuobi: TsgcWSAPI_Huobi;
begin
oHuobi := TsgcWSAPI_Huobi.Create(nil);
oHuobi.Client := oClient;
oHuobi.Huobi.ApiKey := 'your_api_key';
oHuobi.Huobi.ApiSecret := 'your_api_secret';
oClient.Active := True;
// Authentication now signs with a timestamp taken entirely from UTC.
oHuobi.SubscribeOrderUpdates('btcusdt');
end;
Als uw logs laten zien dat privéverzoeken naar Huobi of HTX leken te mislukken zonder duidelijke aanleiding, dan is dit hoogstwaarschijnlijk de oorzaak, vooral als uw servers niet op UTC draaien.
Privé-abonnementen verloren bij herverbinden
Huobi was ook een van de meerdere exchange-clients die te maken hadden met een afzonderlijk herverbindingsprobleem, verholpen in dezelfde ronde: nadat de WatchDog opnieuw had verbonden, werden privé-abonnementen, orders, saldi en fills niet opnieuw verzonden. De herverbinding zelf slaagde en werd ook zo gelogd, dus was er niets dat erop wees dat de privéfeeds die u vóór de verbroken verbinding ontving, nu stilletjes verdwenen waren. Die heruitzending maakt nu deel uit van hetzelfde resubscribe-pad dat openbare marktdata-abonnementen na een herverbinding al herstelde.
Upgraden
Beide fixes zijn drop-in. Er is geen property om in te stellen en geen code om te wijzigen: de signature is nu gewoon correct, en de heruitzending bij herverbinden omvat nu ook uw privé-abonnementen.
Vragen, feedback of hulp bij migratie? Neem contact op — u krijgt antwoord van de mensen die de code hebben geschreven.
