库币Nonce计算

KuCoin Nonce Calculation

我很难计算连接到 KuCoin 交易所的随机数。我目前正在使用以下代码在 C# 中计算随机数:

long nonce = DateTime.UtcNow.Ticks;

我收到的错误如下:

"{\"code\":\"UNAUTH\",\"msg\":\"Invalid nonce\",\"success\":false,\"timestamp\":1539429475443}"

根据https://kucoinapidocs.docs.apiary.io/#introduction/authentication,库币API希望随机数是一个以毫秒表示的时间戳。

然而,https://docs.microsoft.com/en-us/dotnet/api/system.datetime.ticks?view=netframework-4.7.2 表示 DateTime.UtcNow.Ticks 表示 "ticks" 中的时间,其中滴答是十分之一微秒。

这意味着一毫秒有10,000个tick,因此要将.Ticks结果转换为Kucoin想要的毫秒值,您必须将其除以10,000:

long nonce = DateTime.UtcNow.Ticks / 10000;

Kucoin 文档没有明确说明它想要 unix 时间的值。 DateTime.Ticks 在 .net 中是基于第一年的 1 月 1 日,而 unix 纪元是在 1970 年 1 月 1 日。

您可以使用此代码获取您需要的值:

var CurrentTimestamp = (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc)).TotalMilliseconds