Skip to content

Commit abdce16

Browse files
Add a test "TestHyperliquid_GoLimitOrders" for nonce collision
1 parent 48cca34 commit abdce16

File tree

2 files changed

+26
-7
lines changed

2 files changed

+26
-7
lines changed

hyperliquid/hyperliquid_test.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package hyperliquid
22

33
import (
44
"os"
5+
"sync"
56
"testing"
67
)
78

@@ -141,3 +142,20 @@ func TestHyperliquid_LimitOrder(t *testing.T) {
141142
}
142143
t.Logf("LimitOrder(TifGtc, BTC, -0.01, 120000, false): %+v", order2)
143144
}
145+
146+
func TestHyperliquid_GoLimitOrders(t *testing.T) {
147+
client := GetHyperliquidAPI()
148+
wg := &sync.WaitGroup{}
149+
for i := 0; i < 10; i++ {
150+
wg.Add(1)
151+
go func(wg *sync.WaitGroup) {
152+
defer wg.Done()
153+
order, err := client.LimitOrder(TifGtc, "BTC", 0.001, 60000, false)
154+
if err != nil {
155+
t.Errorf("Error: %v", err)
156+
}
157+
t.Logf("LimitOrder(TifGtc, BTC, 0.01, 70000, false): %+v", order)
158+
}(wg)
159+
}
160+
wg.Wait()
161+
}

hyperliquid/utils.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,14 @@ import (
99
"github.com/ethereum/go-ethereum/common/hexutil"
1010
)
1111

12+
// global nonce counter
13+
var nonceCounter = time.Now().UnixMilli()
14+
15+
// Hyperliquid uses timestamps in milliseconds for nonce
16+
func GetNonce() uint64 {
17+
return uint64(atomic.AddInt64(&nonceCounter, 1))
18+
}
19+
1220
// Retruns a random cloid (Client Order ID)
1321
func GetRandomCloid() string {
1422
buf := make([]byte, 16)
@@ -56,13 +64,6 @@ func GetSlippage(sl *float64) float64 {
5664
return slippage
5765
}
5866

59-
var nonceCounter = time.Now().UnixMilli()
60-
61-
// Hyperliquid uses timestamps in milliseconds for nonce
62-
func GetNonce() uint64 {
63-
return uint64(atomic.AddInt64(&nonceCounter, 1))
64-
}
65-
6667
// Returns default time range of 90 days
6768
// Returns the start time and end time in milliseconds
6869
func GetDefaultTimeRange() (int64, int64) {

0 commit comments

Comments
 (0)