@drift-labs/sdk 2.0.16 → 2.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/dlob/DLOB.d.ts +10 -16
- package/lib/dlob/DLOB.js +128 -102
- package/lib/dlob/DLOBNode.d.ts +3 -5
- package/lib/dlob/DLOBNode.js +6 -7
- package/lib/dlob/DLOBOrders.d.ts +16 -0
- package/lib/dlob/DLOBOrders.js +40 -0
- package/lib/dlob/NodeList.d.ts +2 -2
- package/lib/dlob/NodeList.js +2 -9
- package/lib/dlob/dlobIdl.json +245 -0
- package/lib/idl/drift.json +5 -0
- package/package.json +1 -1
- package/src/dlob/DLOB.ts +165 -145
- package/src/dlob/DLOBNode.ts +5 -15
- package/src/dlob/DLOBOrders.ts +49 -0
- package/src/dlob/NodeList.ts +2 -17
- package/src/dlob/dlobIdl.json +245 -0
- package/src/idl/drift.json +5 -0
- package/tests/dlob/test.ts +305 -645
package/tests/dlob/test.ts
CHANGED
|
@@ -22,12 +22,9 @@ import {
|
|
|
22
22
|
ZERO,
|
|
23
23
|
} from '../../src';
|
|
24
24
|
|
|
25
|
-
import {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
mockStateAccount,
|
|
29
|
-
MockUserMap,
|
|
30
|
-
} from './helpers';
|
|
25
|
+
import { mockPerpMarkets, mockSpotMarkets, mockStateAccount } from './helpers';
|
|
26
|
+
import { isVariant } from '../../lib';
|
|
27
|
+
import { DLOBOrdersCoder } from '../../src/dlob/DLOBOrders';
|
|
31
28
|
|
|
32
29
|
function insertOrderToDLOB(
|
|
33
30
|
dlob: DLOB,
|
|
@@ -234,15 +231,7 @@ function printCrossedNodes(n: NodeToFill, slot: number) {
|
|
|
234
231
|
|
|
235
232
|
describe('DLOB Tests', () => {
|
|
236
233
|
it('Fresh DLOB is empty', () => {
|
|
237
|
-
const
|
|
238
|
-
|
|
239
|
-
const dlob = new DLOB(
|
|
240
|
-
mockPerpMarkets,
|
|
241
|
-
mockSpotMarkets,
|
|
242
|
-
mockStateAccount,
|
|
243
|
-
mockUserMap,
|
|
244
|
-
false
|
|
245
|
-
);
|
|
234
|
+
const dlob = new DLOB();
|
|
246
235
|
const vAsk = new BN(11);
|
|
247
236
|
const vBid = new BN(10);
|
|
248
237
|
const slot = 12;
|
|
@@ -311,30 +300,11 @@ describe('DLOB Tests', () => {
|
|
|
311
300
|
const vAsk = new BN(15);
|
|
312
301
|
const vBid = new BN(10);
|
|
313
302
|
|
|
314
|
-
const mockUserMap = new MockUserMap();
|
|
315
303
|
const user0 = Keypair.generate();
|
|
316
|
-
const user0Auth = Keypair.generate();
|
|
317
304
|
const user1 = Keypair.generate();
|
|
318
|
-
const user1Auth = Keypair.generate();
|
|
319
305
|
const user2 = Keypair.generate();
|
|
320
|
-
|
|
321
|
-
const
|
|
322
|
-
const user3Auth = Keypair.generate();
|
|
323
|
-
const user4 = Keypair.generate();
|
|
324
|
-
const user4Auth = Keypair.generate();
|
|
325
|
-
mockUserMap.addUserAccountAuthority(user0.publicKey, user0Auth.publicKey);
|
|
326
|
-
mockUserMap.addUserAccountAuthority(user1.publicKey, user1Auth.publicKey);
|
|
327
|
-
mockUserMap.addUserAccountAuthority(user2.publicKey, user2Auth.publicKey);
|
|
328
|
-
mockUserMap.addUserAccountAuthority(user3.publicKey, user3Auth.publicKey);
|
|
329
|
-
mockUserMap.addUserAccountAuthority(user4.publicKey, user4Auth.publicKey);
|
|
330
|
-
|
|
331
|
-
const dlob = new DLOB(
|
|
332
|
-
mockPerpMarkets,
|
|
333
|
-
mockSpotMarkets,
|
|
334
|
-
mockStateAccount,
|
|
335
|
-
mockUserMap,
|
|
336
|
-
false
|
|
337
|
-
);
|
|
306
|
+
|
|
307
|
+
const dlob = new DLOB();
|
|
338
308
|
const marketIndex = 0;
|
|
339
309
|
|
|
340
310
|
const slot = 12;
|
|
@@ -408,20 +378,177 @@ describe('DLOB Tests', () => {
|
|
|
408
378
|
}
|
|
409
379
|
expect(thrown, 'should throw after clearing').to.equal(true);
|
|
410
380
|
});
|
|
381
|
+
|
|
382
|
+
it('DLOB orders', () => {
|
|
383
|
+
const vAsk = new BN(15);
|
|
384
|
+
const vBid = new BN(10);
|
|
385
|
+
|
|
386
|
+
const user0 = Keypair.generate();
|
|
387
|
+
const user1 = Keypair.generate();
|
|
388
|
+
const user2 = Keypair.generate();
|
|
389
|
+
const user3 = Keypair.generate();
|
|
390
|
+
const user4 = Keypair.generate();
|
|
391
|
+
|
|
392
|
+
const dlob = new DLOB();
|
|
393
|
+
const marketIndex = 0;
|
|
394
|
+
|
|
395
|
+
insertOrderToDLOB(
|
|
396
|
+
dlob,
|
|
397
|
+
user0.publicKey,
|
|
398
|
+
OrderType.LIMIT,
|
|
399
|
+
MarketType.PERP,
|
|
400
|
+
1, // orderId
|
|
401
|
+
marketIndex,
|
|
402
|
+
new BN(11), // price
|
|
403
|
+
BASE_PRECISION, // quantity
|
|
404
|
+
PositionDirection.LONG,
|
|
405
|
+
vBid,
|
|
406
|
+
vAsk
|
|
407
|
+
);
|
|
408
|
+
insertOrderToDLOB(
|
|
409
|
+
dlob,
|
|
410
|
+
user1.publicKey,
|
|
411
|
+
OrderType.LIMIT,
|
|
412
|
+
MarketType.PERP,
|
|
413
|
+
2, // orderId
|
|
414
|
+
marketIndex,
|
|
415
|
+
new BN(12), // price
|
|
416
|
+
BASE_PRECISION, // quantity
|
|
417
|
+
PositionDirection.LONG,
|
|
418
|
+
vBid,
|
|
419
|
+
vAsk
|
|
420
|
+
);
|
|
421
|
+
insertOrderToDLOB(
|
|
422
|
+
dlob,
|
|
423
|
+
user2.publicKey,
|
|
424
|
+
OrderType.LIMIT,
|
|
425
|
+
MarketType.PERP,
|
|
426
|
+
3, // orderId
|
|
427
|
+
marketIndex,
|
|
428
|
+
new BN(13), // price
|
|
429
|
+
BASE_PRECISION, // quantity
|
|
430
|
+
PositionDirection.LONG,
|
|
431
|
+
vBid,
|
|
432
|
+
vAsk
|
|
433
|
+
);
|
|
434
|
+
|
|
435
|
+
insertOrderToDLOB(
|
|
436
|
+
dlob,
|
|
437
|
+
user3.publicKey,
|
|
438
|
+
OrderType.MARKET,
|
|
439
|
+
MarketType.PERP,
|
|
440
|
+
4, // orderId
|
|
441
|
+
marketIndex,
|
|
442
|
+
new BN(12), // price
|
|
443
|
+
new BN(1).mul(BASE_PRECISION), // quantity
|
|
444
|
+
PositionDirection.SHORT,
|
|
445
|
+
vBid,
|
|
446
|
+
vAsk
|
|
447
|
+
);
|
|
448
|
+
insertOrderToDLOB(
|
|
449
|
+
dlob,
|
|
450
|
+
user4.publicKey,
|
|
451
|
+
OrderType.MARKET,
|
|
452
|
+
MarketType.PERP,
|
|
453
|
+
5, // orderId
|
|
454
|
+
marketIndex,
|
|
455
|
+
new BN(12), // price
|
|
456
|
+
new BN(1).mul(BASE_PRECISION), // quantity
|
|
457
|
+
PositionDirection.SHORT,
|
|
458
|
+
vBid,
|
|
459
|
+
vAsk
|
|
460
|
+
);
|
|
461
|
+
// insert some limit buys above vamm bid, below ask
|
|
462
|
+
insertOrderToDLOB(
|
|
463
|
+
dlob,
|
|
464
|
+
user0.publicKey,
|
|
465
|
+
OrderType.LIMIT,
|
|
466
|
+
MarketType.SPOT,
|
|
467
|
+
6, // orderId
|
|
468
|
+
marketIndex,
|
|
469
|
+
new BN(11), // price
|
|
470
|
+
BASE_PRECISION, // quantity
|
|
471
|
+
PositionDirection.LONG,
|
|
472
|
+
vBid,
|
|
473
|
+
vAsk
|
|
474
|
+
);
|
|
475
|
+
insertOrderToDLOB(
|
|
476
|
+
dlob,
|
|
477
|
+
user1.publicKey,
|
|
478
|
+
OrderType.LIMIT,
|
|
479
|
+
MarketType.SPOT,
|
|
480
|
+
7, // orderId
|
|
481
|
+
marketIndex,
|
|
482
|
+
new BN(12), // price
|
|
483
|
+
BASE_PRECISION, // quantity
|
|
484
|
+
PositionDirection.LONG,
|
|
485
|
+
vBid,
|
|
486
|
+
vAsk
|
|
487
|
+
);
|
|
488
|
+
insertOrderToDLOB(
|
|
489
|
+
dlob,
|
|
490
|
+
user2.publicKey,
|
|
491
|
+
OrderType.LIMIT,
|
|
492
|
+
MarketType.SPOT,
|
|
493
|
+
8, // orderId
|
|
494
|
+
marketIndex,
|
|
495
|
+
new BN(13), // price
|
|
496
|
+
BASE_PRECISION, // quantity
|
|
497
|
+
PositionDirection.LONG,
|
|
498
|
+
vBid,
|
|
499
|
+
vAsk
|
|
500
|
+
);
|
|
501
|
+
|
|
502
|
+
insertOrderToDLOB(
|
|
503
|
+
dlob,
|
|
504
|
+
user3.publicKey,
|
|
505
|
+
OrderType.MARKET,
|
|
506
|
+
MarketType.SPOT,
|
|
507
|
+
9, // orderId
|
|
508
|
+
marketIndex,
|
|
509
|
+
new BN(12), // price
|
|
510
|
+
new BN(1).mul(BASE_PRECISION), // quantity
|
|
511
|
+
PositionDirection.SHORT,
|
|
512
|
+
vBid,
|
|
513
|
+
vAsk
|
|
514
|
+
);
|
|
515
|
+
insertOrderToDLOB(
|
|
516
|
+
dlob,
|
|
517
|
+
user4.publicKey,
|
|
518
|
+
OrderType.MARKET,
|
|
519
|
+
MarketType.SPOT,
|
|
520
|
+
10, // orderId
|
|
521
|
+
marketIndex,
|
|
522
|
+
new BN(12), // price
|
|
523
|
+
new BN(1).mul(BASE_PRECISION), // quantity
|
|
524
|
+
PositionDirection.SHORT,
|
|
525
|
+
vBid,
|
|
526
|
+
vAsk
|
|
527
|
+
);
|
|
528
|
+
|
|
529
|
+
const dlobOrders = dlob.getDLOBOrders();
|
|
530
|
+
expect(dlobOrders.length).to.equal(10);
|
|
531
|
+
expect(isVariant(dlobOrders[0].order.marketType, 'perp')).to.equal(true);
|
|
532
|
+
expect(isVariant(dlobOrders[5].order.marketType, 'spot')).to.equal(true);
|
|
533
|
+
|
|
534
|
+
const coder = DLOBOrdersCoder.create();
|
|
535
|
+
const encodedOrders = coder.encode(dlobOrders);
|
|
536
|
+
const decodedDLOBOrders = coder.decode(encodedOrders);
|
|
537
|
+
expect(decodedDLOBOrders.length).to.equal(10);
|
|
538
|
+
expect(isVariant(decodedDLOBOrders[0].order.marketType, 'perp')).to.equal(
|
|
539
|
+
true
|
|
540
|
+
);
|
|
541
|
+
expect(isVariant(decodedDLOBOrders[5].order.marketType, 'spot')).to.equal(
|
|
542
|
+
true
|
|
543
|
+
);
|
|
544
|
+
});
|
|
411
545
|
});
|
|
412
546
|
|
|
413
547
|
describe('DLOB Perp Tests', () => {
|
|
414
548
|
it('Test proper bids', () => {
|
|
415
549
|
const vAsk = new BN(15);
|
|
416
550
|
const vBid = new BN(10);
|
|
417
|
-
const
|
|
418
|
-
const dlob = new DLOB(
|
|
419
|
-
mockPerpMarkets,
|
|
420
|
-
mockSpotMarkets,
|
|
421
|
-
mockStateAccount,
|
|
422
|
-
mockUserMap,
|
|
423
|
-
false
|
|
424
|
-
);
|
|
551
|
+
const dlob = new DLOB();
|
|
425
552
|
const marketIndex = 0;
|
|
426
553
|
|
|
427
554
|
const slot = 12;
|
|
@@ -504,8 +631,6 @@ describe('DLOB Perp Tests', () => {
|
|
|
504
631
|
}
|
|
505
632
|
|
|
506
633
|
const user = Keypair.generate();
|
|
507
|
-
const userAuth = Keypair.generate();
|
|
508
|
-
mockUserMap.addUserAccountAuthority(user.publicKey, userAuth.publicKey);
|
|
509
634
|
|
|
510
635
|
insertOrderToDLOB(
|
|
511
636
|
dlob,
|
|
@@ -612,14 +737,7 @@ describe('DLOB Perp Tests', () => {
|
|
|
612
737
|
it('Test proper bids on multiple markets', () => {
|
|
613
738
|
const vAsk = new BN(15);
|
|
614
739
|
const vBid = new BN(10);
|
|
615
|
-
const
|
|
616
|
-
const dlob = new DLOB(
|
|
617
|
-
mockPerpMarkets,
|
|
618
|
-
mockSpotMarkets,
|
|
619
|
-
mockStateAccount,
|
|
620
|
-
mockUserMap,
|
|
621
|
-
false
|
|
622
|
-
);
|
|
740
|
+
const dlob = new DLOB();
|
|
623
741
|
const marketIndex0 = 0;
|
|
624
742
|
const marketIndex1 = 1;
|
|
625
743
|
|
|
@@ -702,8 +820,6 @@ describe('DLOB Perp Tests', () => {
|
|
|
702
820
|
}
|
|
703
821
|
|
|
704
822
|
const user = Keypair.generate();
|
|
705
|
-
const userAuth = Keypair.generate();
|
|
706
|
-
mockUserMap.addUserAccountAuthority(user.publicKey, userAuth.publicKey);
|
|
707
823
|
|
|
708
824
|
insertOrderToDLOB(
|
|
709
825
|
dlob,
|
|
@@ -767,14 +883,7 @@ describe('DLOB Perp Tests', () => {
|
|
|
767
883
|
it('Test proper asks', () => {
|
|
768
884
|
const vAsk = new BN(15);
|
|
769
885
|
const vBid = new BN(10);
|
|
770
|
-
const
|
|
771
|
-
const dlob = new DLOB(
|
|
772
|
-
mockPerpMarkets,
|
|
773
|
-
mockSpotMarkets,
|
|
774
|
-
mockStateAccount,
|
|
775
|
-
mockUserMap,
|
|
776
|
-
false
|
|
777
|
-
);
|
|
886
|
+
const dlob = new DLOB();
|
|
778
887
|
const marketIndex = 0;
|
|
779
888
|
|
|
780
889
|
const slot = 12;
|
|
@@ -857,8 +966,6 @@ describe('DLOB Perp Tests', () => {
|
|
|
857
966
|
}
|
|
858
967
|
|
|
859
968
|
const user = Keypair.generate();
|
|
860
|
-
const userAuth = Keypair.generate();
|
|
861
|
-
mockUserMap.addUserAccountAuthority(user.publicKey, userAuth.publicKey);
|
|
862
969
|
|
|
863
970
|
insertOrderToDLOB(
|
|
864
971
|
dlob,
|
|
@@ -954,14 +1061,7 @@ describe('DLOB Perp Tests', () => {
|
|
|
954
1061
|
it('Test insert market orders', () => {
|
|
955
1062
|
const vAsk = new BN(11);
|
|
956
1063
|
const vBid = new BN(10);
|
|
957
|
-
const
|
|
958
|
-
const dlob = new DLOB(
|
|
959
|
-
mockPerpMarkets,
|
|
960
|
-
mockSpotMarkets,
|
|
961
|
-
mockStateAccount,
|
|
962
|
-
mockUserMap,
|
|
963
|
-
false
|
|
964
|
-
);
|
|
1064
|
+
const dlob = new DLOB();
|
|
965
1065
|
const marketIndex = 0;
|
|
966
1066
|
const oracle = {
|
|
967
1067
|
price: vBid.add(vAsk).div(new BN(2)),
|
|
@@ -973,8 +1073,6 @@ describe('DLOB Perp Tests', () => {
|
|
|
973
1073
|
// 3 mkt buys
|
|
974
1074
|
for (let i = 0; i < 3; i++) {
|
|
975
1075
|
const user = Keypair.generate();
|
|
976
|
-
const userAuth = Keypair.generate();
|
|
977
|
-
mockUserMap.addUserAccountAuthority(user.publicKey, userAuth.publicKey);
|
|
978
1076
|
|
|
979
1077
|
insertOrderToDLOB(
|
|
980
1078
|
dlob,
|
|
@@ -994,8 +1092,6 @@ describe('DLOB Perp Tests', () => {
|
|
|
994
1092
|
// 3 mkt sells
|
|
995
1093
|
for (let i = 0; i < 3; i++) {
|
|
996
1094
|
const user = Keypair.generate();
|
|
997
|
-
const userAuth = Keypair.generate();
|
|
998
|
-
mockUserMap.addUserAccountAuthority(user.publicKey, userAuth.publicKey);
|
|
999
1095
|
|
|
1000
1096
|
insertOrderToDLOB(
|
|
1001
1097
|
dlob,
|
|
@@ -1066,34 +1162,14 @@ describe('DLOB Perp Tests', () => {
|
|
|
1066
1162
|
hasSufficientNumberOfDataPoints: true,
|
|
1067
1163
|
};
|
|
1068
1164
|
|
|
1069
|
-
const mockUserMap = new MockUserMap();
|
|
1070
1165
|
const user0 = Keypair.generate();
|
|
1071
|
-
const userAuth0 = Keypair.generate();
|
|
1072
1166
|
const user1 = Keypair.generate();
|
|
1073
|
-
const userAuth1 = Keypair.generate();
|
|
1074
1167
|
const user2 = Keypair.generate();
|
|
1075
|
-
const userAuth2 = Keypair.generate();
|
|
1076
1168
|
const user3 = Keypair.generate();
|
|
1077
|
-
const userAuth3 = Keypair.generate();
|
|
1078
1169
|
const user4 = Keypair.generate();
|
|
1079
|
-
const userAuth4 = Keypair.generate();
|
|
1080
1170
|
const user5 = Keypair.generate();
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
mockUserMap.addUserAccountAuthority(user0.publicKey, userAuth0.publicKey);
|
|
1084
|
-
mockUserMap.addUserAccountAuthority(user1.publicKey, userAuth1.publicKey);
|
|
1085
|
-
mockUserMap.addUserAccountAuthority(user2.publicKey, userAuth2.publicKey);
|
|
1086
|
-
mockUserMap.addUserAccountAuthority(user3.publicKey, userAuth3.publicKey);
|
|
1087
|
-
mockUserMap.addUserAccountAuthority(user4.publicKey, userAuth4.publicKey);
|
|
1088
|
-
mockUserMap.addUserAccountAuthority(user5.publicKey, userAuth5.publicKey);
|
|
1089
|
-
|
|
1090
|
-
const dlob = new DLOB(
|
|
1091
|
-
mockPerpMarkets,
|
|
1092
|
-
mockSpotMarkets,
|
|
1093
|
-
mockStateAccount,
|
|
1094
|
-
mockUserMap,
|
|
1095
|
-
false
|
|
1096
|
-
);
|
|
1171
|
+
|
|
1172
|
+
const dlob = new DLOB();
|
|
1097
1173
|
const marketIndex = 0;
|
|
1098
1174
|
insertOrderToDLOB(
|
|
1099
1175
|
dlob,
|
|
@@ -1238,34 +1314,14 @@ describe('DLOB Perp Tests', () => {
|
|
|
1238
1314
|
hasSufficientNumberOfDataPoints: true,
|
|
1239
1315
|
};
|
|
1240
1316
|
|
|
1241
|
-
const mockUserMap = new MockUserMap();
|
|
1242
1317
|
const user0 = Keypair.generate();
|
|
1243
|
-
const userAuth0 = Keypair.generate();
|
|
1244
1318
|
const user1 = Keypair.generate();
|
|
1245
|
-
const userAuth1 = Keypair.generate();
|
|
1246
1319
|
const user2 = Keypair.generate();
|
|
1247
|
-
const userAuth2 = Keypair.generate();
|
|
1248
1320
|
const user3 = Keypair.generate();
|
|
1249
|
-
const userAuth3 = Keypair.generate();
|
|
1250
1321
|
const user4 = Keypair.generate();
|
|
1251
|
-
const userAuth4 = Keypair.generate();
|
|
1252
1322
|
const user5 = Keypair.generate();
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
mockUserMap.addUserAccountAuthority(user0.publicKey, userAuth0.publicKey);
|
|
1256
|
-
mockUserMap.addUserAccountAuthority(user1.publicKey, userAuth1.publicKey);
|
|
1257
|
-
mockUserMap.addUserAccountAuthority(user2.publicKey, userAuth2.publicKey);
|
|
1258
|
-
mockUserMap.addUserAccountAuthority(user3.publicKey, userAuth3.publicKey);
|
|
1259
|
-
mockUserMap.addUserAccountAuthority(user4.publicKey, userAuth4.publicKey);
|
|
1260
|
-
mockUserMap.addUserAccountAuthority(user5.publicKey, userAuth5.publicKey);
|
|
1261
|
-
|
|
1262
|
-
const dlob = new DLOB(
|
|
1263
|
-
mockPerpMarkets,
|
|
1264
|
-
mockSpotMarkets,
|
|
1265
|
-
mockStateAccount,
|
|
1266
|
-
mockUserMap,
|
|
1267
|
-
false
|
|
1268
|
-
);
|
|
1323
|
+
|
|
1324
|
+
const dlob = new DLOB();
|
|
1269
1325
|
const marketIndex = 0;
|
|
1270
1326
|
|
|
1271
1327
|
// insert floating bids
|
|
@@ -1430,30 +1486,13 @@ describe('DLOB Perp Tests', () => {
|
|
|
1430
1486
|
const vAsk = new BN(15);
|
|
1431
1487
|
const vBid = new BN(10);
|
|
1432
1488
|
|
|
1433
|
-
const mockUserMap = new MockUserMap();
|
|
1434
1489
|
const user0 = Keypair.generate();
|
|
1435
|
-
const user0Auth = Keypair.generate();
|
|
1436
1490
|
const user1 = Keypair.generate();
|
|
1437
|
-
const user1Auth = Keypair.generate();
|
|
1438
1491
|
const user2 = Keypair.generate();
|
|
1439
|
-
const user2Auth = Keypair.generate();
|
|
1440
1492
|
const user3 = Keypair.generate();
|
|
1441
|
-
const user3Auth = Keypair.generate();
|
|
1442
1493
|
const user4 = Keypair.generate();
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
mockUserMap.addUserAccountAuthority(user1.publicKey, user1Auth.publicKey);
|
|
1446
|
-
mockUserMap.addUserAccountAuthority(user2.publicKey, user2Auth.publicKey);
|
|
1447
|
-
mockUserMap.addUserAccountAuthority(user3.publicKey, user3Auth.publicKey);
|
|
1448
|
-
mockUserMap.addUserAccountAuthority(user4.publicKey, user4Auth.publicKey);
|
|
1449
|
-
|
|
1450
|
-
const dlob = new DLOB(
|
|
1451
|
-
mockPerpMarkets,
|
|
1452
|
-
mockSpotMarkets,
|
|
1453
|
-
mockStateAccount,
|
|
1454
|
-
mockUserMap,
|
|
1455
|
-
false
|
|
1456
|
-
);
|
|
1494
|
+
|
|
1495
|
+
const dlob = new DLOB();
|
|
1457
1496
|
const marketIndex = 0;
|
|
1458
1497
|
|
|
1459
1498
|
// insert some limit buys above vamm bid, below ask
|
|
@@ -1554,7 +1593,9 @@ describe('DLOB Perp Tests', () => {
|
|
|
1554
1593
|
slot: new BN(12),
|
|
1555
1594
|
confidence: new BN(1),
|
|
1556
1595
|
hasSufficientNumberOfDataPoints: true,
|
|
1557
|
-
}
|
|
1596
|
+
},
|
|
1597
|
+
mockStateAccount,
|
|
1598
|
+
mockPerpMarkets[marketIndex]
|
|
1558
1599
|
);
|
|
1559
1600
|
console.log(`Filled nodes: ${nodesToFillAfter.length}`);
|
|
1560
1601
|
for (const n of nodesToFillAfter) {
|
|
@@ -1575,27 +1616,12 @@ describe('DLOB Perp Tests', () => {
|
|
|
1575
1616
|
const vAsk = new BN(15);
|
|
1576
1617
|
const vBid = new BN(10);
|
|
1577
1618
|
|
|
1578
|
-
const mockUserMap = new MockUserMap();
|
|
1579
1619
|
const user0 = Keypair.generate();
|
|
1580
|
-
const user0Auth = Keypair.generate();
|
|
1581
1620
|
const user1 = Keypair.generate();
|
|
1582
|
-
const user1Auth = Keypair.generate();
|
|
1583
1621
|
const user2 = Keypair.generate();
|
|
1584
|
-
const user2Auth = Keypair.generate();
|
|
1585
1622
|
const user3 = Keypair.generate();
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
mockUserMap.addUserAccountAuthority(user1.publicKey, user1Auth.publicKey);
|
|
1589
|
-
mockUserMap.addUserAccountAuthority(user2.publicKey, user2Auth.publicKey);
|
|
1590
|
-
mockUserMap.addUserAccountAuthority(user3.publicKey, user3Auth.publicKey);
|
|
1591
|
-
|
|
1592
|
-
const dlob = new DLOB(
|
|
1593
|
-
mockPerpMarkets,
|
|
1594
|
-
mockSpotMarkets,
|
|
1595
|
-
mockStateAccount,
|
|
1596
|
-
mockUserMap,
|
|
1597
|
-
false
|
|
1598
|
-
);
|
|
1623
|
+
|
|
1624
|
+
const dlob = new DLOB();
|
|
1599
1625
|
const marketIndex = 0;
|
|
1600
1626
|
|
|
1601
1627
|
// insert some limit sells below vAMM ask, above bid
|
|
@@ -1686,7 +1712,9 @@ describe('DLOB Perp Tests', () => {
|
|
|
1686
1712
|
slot: new BN(endSlot),
|
|
1687
1713
|
confidence: new BN(1),
|
|
1688
1714
|
hasSufficientNumberOfDataPoints: true,
|
|
1689
|
-
}
|
|
1715
|
+
},
|
|
1716
|
+
mockStateAccount,
|
|
1717
|
+
mockPerpMarkets[marketIndex]
|
|
1690
1718
|
);
|
|
1691
1719
|
console.log(`Filled nodes: ${nodesToFillAfter.length}`);
|
|
1692
1720
|
for (const n of nodesToFillAfter) {
|
|
@@ -1719,30 +1747,13 @@ describe('DLOB Perp Tests', () => {
|
|
|
1719
1747
|
const vAsk = new BN(15);
|
|
1720
1748
|
const vBid = new BN(8);
|
|
1721
1749
|
|
|
1722
|
-
const mockUserMap = new MockUserMap();
|
|
1723
1750
|
const user0 = Keypair.generate();
|
|
1724
|
-
const user0Auth = Keypair.generate();
|
|
1725
1751
|
const user1 = Keypair.generate();
|
|
1726
|
-
const user1Auth = Keypair.generate();
|
|
1727
1752
|
const user2 = Keypair.generate();
|
|
1728
|
-
const user2Auth = Keypair.generate();
|
|
1729
1753
|
const user3 = Keypair.generate();
|
|
1730
|
-
const user3Auth = Keypair.generate();
|
|
1731
1754
|
const user4 = Keypair.generate();
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
mockUserMap.addUserAccountAuthority(user1.publicKey, user1Auth.publicKey);
|
|
1735
|
-
mockUserMap.addUserAccountAuthority(user2.publicKey, user2Auth.publicKey);
|
|
1736
|
-
mockUserMap.addUserAccountAuthority(user3.publicKey, user3Auth.publicKey);
|
|
1737
|
-
mockUserMap.addUserAccountAuthority(user4.publicKey, user4Auth.publicKey);
|
|
1738
|
-
|
|
1739
|
-
const dlob = new DLOB(
|
|
1740
|
-
mockPerpMarkets,
|
|
1741
|
-
mockSpotMarkets,
|
|
1742
|
-
mockStateAccount,
|
|
1743
|
-
mockUserMap,
|
|
1744
|
-
false
|
|
1745
|
-
);
|
|
1755
|
+
|
|
1756
|
+
const dlob = new DLOB();
|
|
1746
1757
|
const marketIndex = 0;
|
|
1747
1758
|
|
|
1748
1759
|
const slot = 12;
|
|
@@ -1801,7 +1812,9 @@ describe('DLOB Perp Tests', () => {
|
|
|
1801
1812
|
slot, // auction over
|
|
1802
1813
|
Date.now(),
|
|
1803
1814
|
MarketType.PERP,
|
|
1804
|
-
oracle
|
|
1815
|
+
oracle,
|
|
1816
|
+
mockStateAccount,
|
|
1817
|
+
mockPerpMarkets[marketIndex]
|
|
1805
1818
|
);
|
|
1806
1819
|
expect(nodesToFillBefore.length).to.equal(0);
|
|
1807
1820
|
|
|
@@ -1840,7 +1853,9 @@ describe('DLOB Perp Tests', () => {
|
|
|
1840
1853
|
slot, // auction over
|
|
1841
1854
|
Date.now(),
|
|
1842
1855
|
MarketType.PERP,
|
|
1843
|
-
oracle
|
|
1856
|
+
oracle,
|
|
1857
|
+
mockStateAccount,
|
|
1858
|
+
mockPerpMarkets[marketIndex]
|
|
1844
1859
|
);
|
|
1845
1860
|
const mktNodes = dlob.findExpiredNodesToFill(
|
|
1846
1861
|
marketIndex,
|
|
@@ -1870,51 +1885,20 @@ describe('DLOB Perp Tests', () => {
|
|
|
1870
1885
|
const vAsk = new BN(15);
|
|
1871
1886
|
const vBid = new BN(8);
|
|
1872
1887
|
|
|
1873
|
-
const mockUserMap = new MockUserMap();
|
|
1874
1888
|
const user0 = Keypair.generate();
|
|
1875
|
-
const user0Auth = Keypair.generate();
|
|
1876
1889
|
const user1 = Keypair.generate();
|
|
1877
|
-
const user1Auth = Keypair.generate();
|
|
1878
1890
|
const user2 = Keypair.generate();
|
|
1879
|
-
const user2Auth = Keypair.generate();
|
|
1880
1891
|
const user3 = Keypair.generate();
|
|
1881
|
-
const user3Auth = Keypair.generate();
|
|
1882
1892
|
const user4 = Keypair.generate();
|
|
1883
|
-
const user4Auth = Keypair.generate();
|
|
1884
1893
|
const user5 = Keypair.generate();
|
|
1885
|
-
const user5Auth = Keypair.generate();
|
|
1886
1894
|
const user6 = Keypair.generate();
|
|
1887
|
-
const user6Auth = Keypair.generate();
|
|
1888
1895
|
const user7 = Keypair.generate();
|
|
1889
|
-
const user7Auth = Keypair.generate();
|
|
1890
1896
|
const user8 = Keypair.generate();
|
|
1891
|
-
const user8Auth = Keypair.generate();
|
|
1892
1897
|
const user9 = Keypair.generate();
|
|
1893
|
-
const user9Auth = Keypair.generate();
|
|
1894
1898
|
const user10 = Keypair.generate();
|
|
1895
|
-
const user10Auth = Keypair.generate();
|
|
1896
1899
|
const user11 = Keypair.generate();
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
mockUserMap.addUserAccountAuthority(user1.publicKey, user1Auth.publicKey);
|
|
1900
|
-
mockUserMap.addUserAccountAuthority(user2.publicKey, user2Auth.publicKey);
|
|
1901
|
-
mockUserMap.addUserAccountAuthority(user3.publicKey, user3Auth.publicKey);
|
|
1902
|
-
mockUserMap.addUserAccountAuthority(user4.publicKey, user4Auth.publicKey);
|
|
1903
|
-
mockUserMap.addUserAccountAuthority(user5.publicKey, user5Auth.publicKey);
|
|
1904
|
-
mockUserMap.addUserAccountAuthority(user6.publicKey, user6Auth.publicKey);
|
|
1905
|
-
mockUserMap.addUserAccountAuthority(user7.publicKey, user7Auth.publicKey);
|
|
1906
|
-
mockUserMap.addUserAccountAuthority(user8.publicKey, user8Auth.publicKey);
|
|
1907
|
-
mockUserMap.addUserAccountAuthority(user9.publicKey, user9Auth.publicKey);
|
|
1908
|
-
mockUserMap.addUserAccountAuthority(user10.publicKey, user10Auth.publicKey);
|
|
1909
|
-
mockUserMap.addUserAccountAuthority(user11.publicKey, user11Auth.publicKey);
|
|
1910
|
-
|
|
1911
|
-
const dlob = new DLOB(
|
|
1912
|
-
mockPerpMarkets,
|
|
1913
|
-
mockSpotMarkets,
|
|
1914
|
-
mockStateAccount,
|
|
1915
|
-
mockUserMap,
|
|
1916
|
-
false
|
|
1917
|
-
);
|
|
1900
|
+
|
|
1901
|
+
const dlob = new DLOB();
|
|
1918
1902
|
const marketIndex = 0;
|
|
1919
1903
|
|
|
1920
1904
|
const slot = 20;
|
|
@@ -2126,7 +2110,8 @@ describe('DLOB Perp Tests', () => {
|
|
|
2126
2110
|
marketIndex,
|
|
2127
2111
|
slot,
|
|
2128
2112
|
oracle.price,
|
|
2129
|
-
MarketType.PERP
|
|
2113
|
+
MarketType.PERP,
|
|
2114
|
+
mockStateAccount
|
|
2130
2115
|
);
|
|
2131
2116
|
console.log(`nodesToTriggeR: ${nodesToTrigger.length}`);
|
|
2132
2117
|
for (const [idx, n] of nodesToTrigger.entries()) {
|
|
@@ -2138,21 +2123,10 @@ describe('DLOB Perp Tests', () => {
|
|
|
2138
2123
|
const vAsk = new BN(15);
|
|
2139
2124
|
const vBid = new BN(8);
|
|
2140
2125
|
|
|
2141
|
-
const mockUserMap = new MockUserMap();
|
|
2142
2126
|
const user0 = Keypair.generate();
|
|
2143
|
-
const user0Auth = Keypair.generate();
|
|
2144
2127
|
const user1 = Keypair.generate();
|
|
2145
|
-
const user1Auth = Keypair.generate();
|
|
2146
|
-
mockUserMap.addUserAccountAuthority(user0.publicKey, user0Auth.publicKey);
|
|
2147
|
-
mockUserMap.addUserAccountAuthority(user1.publicKey, user1Auth.publicKey);
|
|
2148
2128
|
|
|
2149
|
-
const dlob = new DLOB(
|
|
2150
|
-
mockPerpMarkets,
|
|
2151
|
-
mockSpotMarkets,
|
|
2152
|
-
mockStateAccount,
|
|
2153
|
-
mockUserMap,
|
|
2154
|
-
false
|
|
2155
|
-
);
|
|
2129
|
+
const dlob = new DLOB();
|
|
2156
2130
|
const marketIndex = 0;
|
|
2157
2131
|
|
|
2158
2132
|
const slot = 20;
|
|
@@ -2206,7 +2180,9 @@ describe('DLOB Perp Tests', () => {
|
|
|
2206
2180
|
slot: new BN(slot0),
|
|
2207
2181
|
confidence: new BN(1),
|
|
2208
2182
|
hasSufficientNumberOfDataPoints: true,
|
|
2209
|
-
}
|
|
2183
|
+
},
|
|
2184
|
+
mockStateAccount,
|
|
2185
|
+
mockPerpMarkets[marketIndex]
|
|
2210
2186
|
);
|
|
2211
2187
|
expect(nodesToFillBefore.length).to.equal(0);
|
|
2212
2188
|
|
|
@@ -2225,7 +2201,9 @@ describe('DLOB Perp Tests', () => {
|
|
|
2225
2201
|
slot: new BN(slot1),
|
|
2226
2202
|
confidence: new BN(1),
|
|
2227
2203
|
hasSufficientNumberOfDataPoints: true,
|
|
2228
|
-
}
|
|
2204
|
+
},
|
|
2205
|
+
mockStateAccount,
|
|
2206
|
+
mockPerpMarkets[marketIndex]
|
|
2229
2207
|
);
|
|
2230
2208
|
console.log(`Filled nodes: ${nodesToFillAfter.length}`);
|
|
2231
2209
|
for (const n of nodesToFillAfter) {
|
|
@@ -2242,30 +2220,13 @@ describe('DLOB Perp Tests', () => {
|
|
|
2242
2220
|
const vAsk = new BN(15).mul(PRICE_PRECISION);
|
|
2243
2221
|
const vBid = new BN(8).mul(PRICE_PRECISION);
|
|
2244
2222
|
|
|
2245
|
-
const mockUserMap = new MockUserMap();
|
|
2246
2223
|
const user0 = Keypair.generate();
|
|
2247
|
-
const user0Auth = Keypair.generate();
|
|
2248
2224
|
const user1 = Keypair.generate();
|
|
2249
|
-
const user1Auth = Keypair.generate();
|
|
2250
2225
|
const user2 = Keypair.generate();
|
|
2251
|
-
const user2Auth = Keypair.generate();
|
|
2252
2226
|
const user3 = Keypair.generate();
|
|
2253
|
-
const user3Auth = Keypair.generate();
|
|
2254
2227
|
const user4 = Keypair.generate();
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
mockUserMap.addUserAccountAuthority(user1.publicKey, user1Auth.publicKey);
|
|
2258
|
-
mockUserMap.addUserAccountAuthority(user2.publicKey, user2Auth.publicKey);
|
|
2259
|
-
mockUserMap.addUserAccountAuthority(user3.publicKey, user3Auth.publicKey);
|
|
2260
|
-
mockUserMap.addUserAccountAuthority(user4.publicKey, user4Auth.publicKey);
|
|
2261
|
-
|
|
2262
|
-
const dlob = new DLOB(
|
|
2263
|
-
mockPerpMarkets,
|
|
2264
|
-
mockSpotMarkets,
|
|
2265
|
-
mockStateAccount,
|
|
2266
|
-
mockUserMap,
|
|
2267
|
-
false
|
|
2268
|
-
);
|
|
2228
|
+
|
|
2229
|
+
const dlob = new DLOB();
|
|
2269
2230
|
const marketIndex = 0;
|
|
2270
2231
|
|
|
2271
2232
|
const slot = 12;
|
|
@@ -2340,7 +2301,9 @@ describe('DLOB Perp Tests', () => {
|
|
|
2340
2301
|
slot: new BN(slot),
|
|
2341
2302
|
confidence: new BN(1),
|
|
2342
2303
|
hasSufficientNumberOfDataPoints: true,
|
|
2343
|
-
}
|
|
2304
|
+
},
|
|
2305
|
+
mockStateAccount,
|
|
2306
|
+
mockPerpMarkets[marketIndex]
|
|
2344
2307
|
);
|
|
2345
2308
|
expect(nodesToFillBefore.length).to.equal(0);
|
|
2346
2309
|
|
|
@@ -2384,7 +2347,9 @@ describe('DLOB Perp Tests', () => {
|
|
|
2384
2347
|
slot: new BN(slot),
|
|
2385
2348
|
confidence: new BN(1),
|
|
2386
2349
|
hasSufficientNumberOfDataPoints: true,
|
|
2387
|
-
}
|
|
2350
|
+
},
|
|
2351
|
+
mockStateAccount,
|
|
2352
|
+
mockPerpMarkets[marketIndex]
|
|
2388
2353
|
);
|
|
2389
2354
|
const mktNodes = dlob.findExpiredNodesToFill(
|
|
2390
2355
|
marketIndex,
|
|
@@ -2418,30 +2383,13 @@ describe('DLOB Perp Tests', () => {
|
|
|
2418
2383
|
const vAsk = new BN(15).mul(PRICE_PRECISION);
|
|
2419
2384
|
const vBid = new BN(8).mul(PRICE_PRECISION);
|
|
2420
2385
|
|
|
2421
|
-
const mockUserMap = new MockUserMap();
|
|
2422
2386
|
const user0 = Keypair.generate();
|
|
2423
|
-
const user0Auth = Keypair.generate();
|
|
2424
2387
|
const user1 = Keypair.generate();
|
|
2425
|
-
const user1Auth = Keypair.generate();
|
|
2426
2388
|
const user2 = Keypair.generate();
|
|
2427
|
-
const user2Auth = Keypair.generate();
|
|
2428
2389
|
const user3 = Keypair.generate();
|
|
2429
|
-
const user3Auth = Keypair.generate();
|
|
2430
2390
|
const user4 = Keypair.generate();
|
|
2431
|
-
|
|
2432
|
-
|
|
2433
|
-
mockUserMap.addUserAccountAuthority(user1.publicKey, user1Auth.publicKey);
|
|
2434
|
-
mockUserMap.addUserAccountAuthority(user2.publicKey, user2Auth.publicKey);
|
|
2435
|
-
mockUserMap.addUserAccountAuthority(user3.publicKey, user3Auth.publicKey);
|
|
2436
|
-
mockUserMap.addUserAccountAuthority(user4.publicKey, user4Auth.publicKey);
|
|
2437
|
-
|
|
2438
|
-
const dlob = new DLOB(
|
|
2439
|
-
mockPerpMarkets,
|
|
2440
|
-
mockSpotMarkets,
|
|
2441
|
-
mockStateAccount,
|
|
2442
|
-
mockUserMap,
|
|
2443
|
-
false
|
|
2444
|
-
);
|
|
2391
|
+
|
|
2392
|
+
const dlob = new DLOB();
|
|
2445
2393
|
const marketIndex = 0;
|
|
2446
2394
|
|
|
2447
2395
|
const slot = 12;
|
|
@@ -2556,7 +2504,9 @@ describe('DLOB Perp Tests', () => {
|
|
|
2556
2504
|
auctionOverTs, // auction in progress
|
|
2557
2505
|
ts,
|
|
2558
2506
|
MarketType.PERP,
|
|
2559
|
-
oracle
|
|
2507
|
+
oracle,
|
|
2508
|
+
mockStateAccount,
|
|
2509
|
+
mockPerpMarkets[marketIndex]
|
|
2560
2510
|
);
|
|
2561
2511
|
|
|
2562
2512
|
console.log(`Filled nodes: ${nodesToFillAfter.length}`);
|
|
@@ -2578,30 +2528,13 @@ describe('DLOB Perp Tests', () => {
|
|
|
2578
2528
|
const vAsk = new BN(15).mul(PRICE_PRECISION);
|
|
2579
2529
|
const vBid = new BN(8).mul(PRICE_PRECISION);
|
|
2580
2530
|
|
|
2581
|
-
const mockUserMap = new MockUserMap();
|
|
2582
2531
|
const user0 = Keypair.generate();
|
|
2583
|
-
const user0Auth = Keypair.generate();
|
|
2584
2532
|
const user1 = Keypair.generate();
|
|
2585
|
-
const user1Auth = Keypair.generate();
|
|
2586
2533
|
const user2 = Keypair.generate();
|
|
2587
|
-
const user2Auth = Keypair.generate();
|
|
2588
2534
|
const user3 = Keypair.generate();
|
|
2589
|
-
const user3Auth = Keypair.generate();
|
|
2590
2535
|
const user4 = Keypair.generate();
|
|
2591
|
-
|
|
2592
|
-
|
|
2593
|
-
mockUserMap.addUserAccountAuthority(user1.publicKey, user1Auth.publicKey);
|
|
2594
|
-
mockUserMap.addUserAccountAuthority(user2.publicKey, user2Auth.publicKey);
|
|
2595
|
-
mockUserMap.addUserAccountAuthority(user3.publicKey, user3Auth.publicKey);
|
|
2596
|
-
mockUserMap.addUserAccountAuthority(user4.publicKey, user4Auth.publicKey);
|
|
2597
|
-
|
|
2598
|
-
const dlob = new DLOB(
|
|
2599
|
-
mockPerpMarkets,
|
|
2600
|
-
mockSpotMarkets,
|
|
2601
|
-
mockStateAccount,
|
|
2602
|
-
mockUserMap,
|
|
2603
|
-
false
|
|
2604
|
-
);
|
|
2536
|
+
|
|
2537
|
+
const dlob = new DLOB();
|
|
2605
2538
|
const marketIndex = 0;
|
|
2606
2539
|
|
|
2607
2540
|
const slot = 12;
|
|
@@ -2670,7 +2603,9 @@ describe('DLOB Perp Tests', () => {
|
|
|
2670
2603
|
slot,
|
|
2671
2604
|
Date.now(),
|
|
2672
2605
|
MarketType.PERP,
|
|
2673
|
-
oracle
|
|
2606
|
+
oracle,
|
|
2607
|
+
mockStateAccount,
|
|
2608
|
+
mockPerpMarkets[marketIndex]
|
|
2674
2609
|
);
|
|
2675
2610
|
expect(nodesToFillBefore.length).to.equal(0);
|
|
2676
2611
|
|
|
@@ -2709,7 +2644,9 @@ describe('DLOB Perp Tests', () => {
|
|
|
2709
2644
|
slot, // auction in progress
|
|
2710
2645
|
Date.now(),
|
|
2711
2646
|
MarketType.PERP,
|
|
2712
|
-
oracle
|
|
2647
|
+
oracle,
|
|
2648
|
+
mockStateAccount,
|
|
2649
|
+
mockPerpMarkets[marketIndex]
|
|
2713
2650
|
);
|
|
2714
2651
|
const mktNodes = dlob.findExpiredNodesToFill(
|
|
2715
2652
|
marketIndex,
|
|
@@ -2761,30 +2698,13 @@ describe('DLOB Perp Tests', () => {
|
|
|
2761
2698
|
const vAsk = new BN(15).mul(PRICE_PRECISION);
|
|
2762
2699
|
const vBid = new BN(8).mul(PRICE_PRECISION);
|
|
2763
2700
|
|
|
2764
|
-
const mockUserMap = new MockUserMap();
|
|
2765
2701
|
const user0 = Keypair.generate();
|
|
2766
|
-
const user0Auth = Keypair.generate();
|
|
2767
2702
|
const user1 = Keypair.generate();
|
|
2768
|
-
const user1Auth = Keypair.generate();
|
|
2769
2703
|
const user2 = Keypair.generate();
|
|
2770
|
-
const user2Auth = Keypair.generate();
|
|
2771
2704
|
const user3 = Keypair.generate();
|
|
2772
|
-
const user3Auth = Keypair.generate();
|
|
2773
2705
|
const user4 = Keypair.generate();
|
|
2774
|
-
|
|
2775
|
-
|
|
2776
|
-
mockUserMap.addUserAccountAuthority(user1.publicKey, user1Auth.publicKey);
|
|
2777
|
-
mockUserMap.addUserAccountAuthority(user2.publicKey, user2Auth.publicKey);
|
|
2778
|
-
mockUserMap.addUserAccountAuthority(user3.publicKey, user3Auth.publicKey);
|
|
2779
|
-
mockUserMap.addUserAccountAuthority(user4.publicKey, user4Auth.publicKey);
|
|
2780
|
-
|
|
2781
|
-
const dlob = new DLOB(
|
|
2782
|
-
mockPerpMarkets,
|
|
2783
|
-
mockSpotMarkets,
|
|
2784
|
-
mockStateAccount,
|
|
2785
|
-
mockUserMap,
|
|
2786
|
-
false
|
|
2787
|
-
);
|
|
2706
|
+
|
|
2707
|
+
const dlob = new DLOB();
|
|
2788
2708
|
const marketIndex = 0;
|
|
2789
2709
|
|
|
2790
2710
|
const slot = 12;
|
|
@@ -2856,7 +2776,9 @@ describe('DLOB Perp Tests', () => {
|
|
|
2856
2776
|
slot,
|
|
2857
2777
|
ts,
|
|
2858
2778
|
MarketType.PERP,
|
|
2859
|
-
oracle
|
|
2779
|
+
oracle,
|
|
2780
|
+
mockStateAccount,
|
|
2781
|
+
mockPerpMarkets[marketIndex]
|
|
2860
2782
|
);
|
|
2861
2783
|
expect(nodesToFillBefore.length).to.equal(0);
|
|
2862
2784
|
|
|
@@ -2903,7 +2825,9 @@ describe('DLOB Perp Tests', () => {
|
|
|
2903
2825
|
afterAuctionSlot,
|
|
2904
2826
|
afterAuctionTs,
|
|
2905
2827
|
MarketType.PERP,
|
|
2906
|
-
oracle
|
|
2828
|
+
oracle,
|
|
2829
|
+
mockStateAccount,
|
|
2830
|
+
mockPerpMarkets[marketIndex]
|
|
2907
2831
|
);
|
|
2908
2832
|
|
|
2909
2833
|
console.log(`Filled nodes: ${nodesToFillAfter.length}`);
|
|
@@ -2938,24 +2862,11 @@ describe('DLOB Perp Tests', () => {
|
|
|
2938
2862
|
const vAsk = new BN(15).mul(PRICE_PRECISION);
|
|
2939
2863
|
const vBid = new BN(8).mul(PRICE_PRECISION);
|
|
2940
2864
|
|
|
2941
|
-
const mockUserMap = new MockUserMap();
|
|
2942
2865
|
const user0 = Keypair.generate();
|
|
2943
|
-
const user0Auth = Keypair.generate();
|
|
2944
2866
|
const user1 = Keypair.generate();
|
|
2945
|
-
const user1Auth = Keypair.generate();
|
|
2946
2867
|
const user2 = Keypair.generate();
|
|
2947
|
-
|
|
2948
|
-
|
|
2949
|
-
mockUserMap.addUserAccountAuthority(user1.publicKey, user1Auth.publicKey);
|
|
2950
|
-
mockUserMap.addUserAccountAuthority(user2.publicKey, user2Auth.publicKey);
|
|
2951
|
-
|
|
2952
|
-
const dlob = new DLOB(
|
|
2953
|
-
mockPerpMarkets,
|
|
2954
|
-
mockSpotMarkets,
|
|
2955
|
-
mockStateAccount,
|
|
2956
|
-
mockUserMap,
|
|
2957
|
-
false
|
|
2958
|
-
);
|
|
2868
|
+
|
|
2869
|
+
const dlob = new DLOB();
|
|
2959
2870
|
const marketIndex = 0;
|
|
2960
2871
|
|
|
2961
2872
|
const slot = 12;
|
|
@@ -3023,7 +2934,9 @@ describe('DLOB Perp Tests', () => {
|
|
|
3023
2934
|
slot,
|
|
3024
2935
|
ts,
|
|
3025
2936
|
MarketType.PERP,
|
|
3026
|
-
oracle
|
|
2937
|
+
oracle,
|
|
2938
|
+
mockStateAccount,
|
|
2939
|
+
mockPerpMarkets[marketIndex]
|
|
3027
2940
|
);
|
|
3028
2941
|
expect(nodesToFillBefore.length).to.equal(0);
|
|
3029
2942
|
|
|
@@ -3038,7 +2951,9 @@ describe('DLOB Perp Tests', () => {
|
|
|
3038
2951
|
afterAuctionSlot,
|
|
3039
2952
|
afterAuctionTs,
|
|
3040
2953
|
MarketType.PERP,
|
|
3041
|
-
oracle
|
|
2954
|
+
oracle,
|
|
2955
|
+
mockStateAccount,
|
|
2956
|
+
mockPerpMarkets[marketIndex]
|
|
3042
2957
|
);
|
|
3043
2958
|
|
|
3044
2959
|
console.log(`Book state after fill:`);
|
|
@@ -3076,21 +2991,10 @@ describe('DLOB Perp Tests', () => {
|
|
|
3076
2991
|
const vAsk = new BN(20).mul(PRICE_PRECISION);
|
|
3077
2992
|
const vBid = new BN(5).mul(PRICE_PRECISION);
|
|
3078
2993
|
|
|
3079
|
-
const mockUserMap = new MockUserMap();
|
|
3080
2994
|
const user0 = Keypair.generate();
|
|
3081
|
-
const user0Auth = Keypair.generate();
|
|
3082
2995
|
const user1 = Keypair.generate();
|
|
3083
|
-
const user1Auth = Keypair.generate();
|
|
3084
|
-
mockUserMap.addUserAccountAuthority(user0.publicKey, user0Auth.publicKey);
|
|
3085
|
-
mockUserMap.addUserAccountAuthority(user1.publicKey, user1Auth.publicKey);
|
|
3086
2996
|
|
|
3087
|
-
const dlob = new DLOB(
|
|
3088
|
-
mockPerpMarkets,
|
|
3089
|
-
mockSpotMarkets,
|
|
3090
|
-
mockStateAccount,
|
|
3091
|
-
mockUserMap,
|
|
3092
|
-
false
|
|
3093
|
-
);
|
|
2997
|
+
const dlob = new DLOB();
|
|
3094
2998
|
const marketIndex = 0;
|
|
3095
2999
|
|
|
3096
3000
|
const slot = 12;
|
|
@@ -3145,7 +3049,9 @@ describe('DLOB Perp Tests', () => {
|
|
|
3145
3049
|
slot,
|
|
3146
3050
|
ts,
|
|
3147
3051
|
MarketType.PERP,
|
|
3148
|
-
oracle
|
|
3052
|
+
oracle,
|
|
3053
|
+
mockStateAccount,
|
|
3054
|
+
mockPerpMarkets[marketIndex]
|
|
3149
3055
|
);
|
|
3150
3056
|
console.log(`Filled nodes: ${nodesToFillBefore.length}`);
|
|
3151
3057
|
for (const n of nodesToFillBefore) {
|
|
@@ -3164,107 +3070,14 @@ describe('DLOB Perp Tests', () => {
|
|
|
3164
3070
|
).to.equal(3);
|
|
3165
3071
|
});
|
|
3166
3072
|
|
|
3167
|
-
it('Test will not fill two limit orders by same authority', () => {
|
|
3168
|
-
const vAsk = new BN(20).mul(PRICE_PRECISION);
|
|
3169
|
-
const vBid = new BN(5).mul(PRICE_PRECISION);
|
|
3170
|
-
|
|
3171
|
-
const mockUserMap = new MockUserMap();
|
|
3172
|
-
const user0 = Keypair.generate();
|
|
3173
|
-
const user0Auth = Keypair.generate();
|
|
3174
|
-
const user1 = Keypair.generate();
|
|
3175
|
-
mockUserMap.addUserAccountAuthority(user0.publicKey, user0Auth.publicKey);
|
|
3176
|
-
mockUserMap.addUserAccountAuthority(user1.publicKey, user0Auth.publicKey);
|
|
3177
|
-
|
|
3178
|
-
const dlob = new DLOB(
|
|
3179
|
-
mockPerpMarkets,
|
|
3180
|
-
mockSpotMarkets,
|
|
3181
|
-
mockStateAccount,
|
|
3182
|
-
mockUserMap,
|
|
3183
|
-
false
|
|
3184
|
-
);
|
|
3185
|
-
const marketIndex = 0;
|
|
3186
|
-
|
|
3187
|
-
const slot = 12;
|
|
3188
|
-
const ts = 12;
|
|
3189
|
-
const oracle = {
|
|
3190
|
-
price: vBid.add(vAsk).div(new BN(2)), // 11.5
|
|
3191
|
-
slot: new BN(slot),
|
|
3192
|
-
confidence: new BN(1),
|
|
3193
|
-
hasSufficientNumberOfDataPoints: true,
|
|
3194
|
-
};
|
|
3195
|
-
|
|
3196
|
-
// insert a sell below the bid, but above vBid
|
|
3197
|
-
insertOrderToDLOB(
|
|
3198
|
-
dlob,
|
|
3199
|
-
user0.publicKey,
|
|
3200
|
-
OrderType.LIMIT,
|
|
3201
|
-
MarketType.PERP,
|
|
3202
|
-
3, // orderId
|
|
3203
|
-
marketIndex,
|
|
3204
|
-
new BN(10).mul(PRICE_PRECISION), // price; crosses bid
|
|
3205
|
-
new BN(1).mul(BASE_PRECISION), // quantity
|
|
3206
|
-
PositionDirection.SHORT,
|
|
3207
|
-
vAsk,
|
|
3208
|
-
vBid,
|
|
3209
|
-
new BN(slot),
|
|
3210
|
-
new BN(200)
|
|
3211
|
-
);
|
|
3212
|
-
// insert a buy above the vBid
|
|
3213
|
-
insertOrderToDLOB(
|
|
3214
|
-
dlob,
|
|
3215
|
-
user1.publicKey,
|
|
3216
|
-
OrderType.LIMIT,
|
|
3217
|
-
MarketType.PERP,
|
|
3218
|
-
2, // orderId
|
|
3219
|
-
marketIndex,
|
|
3220
|
-
new BN(15).mul(PRICE_PRECISION), // price,
|
|
3221
|
-
new BN(8768).mul(BASE_PRECISION).div(new BN(10000)), // quantity
|
|
3222
|
-
PositionDirection.LONG,
|
|
3223
|
-
vBid,
|
|
3224
|
-
vAsk,
|
|
3225
|
-
new BN(slot),
|
|
3226
|
-
new BN(200)
|
|
3227
|
-
);
|
|
3228
|
-
|
|
3229
|
-
console.log(`Book state before fill:`);
|
|
3230
|
-
printBookState(dlob, marketIndex, vBid, vAsk, slot, oracle);
|
|
3231
|
-
|
|
3232
|
-
const nodesToFillBefore = dlob.findNodesToFill(
|
|
3233
|
-
marketIndex,
|
|
3234
|
-
vBid,
|
|
3235
|
-
vAsk,
|
|
3236
|
-
slot,
|
|
3237
|
-
ts,
|
|
3238
|
-
MarketType.PERP,
|
|
3239
|
-
oracle
|
|
3240
|
-
);
|
|
3241
|
-
console.log(`Filled nodes: ${nodesToFillBefore.length}`);
|
|
3242
|
-
for (const n of nodesToFillBefore) {
|
|
3243
|
-
printCrossedNodes(n, slot);
|
|
3244
|
-
}
|
|
3245
|
-
|
|
3246
|
-
expect(nodesToFillBefore.length).to.equal(0);
|
|
3247
|
-
});
|
|
3248
|
-
|
|
3249
3073
|
it('Test fills 0 price market order with limit orders better than vAMM', () => {
|
|
3250
3074
|
const vAsk = new BN(20).mul(PRICE_PRECISION);
|
|
3251
3075
|
const vBid = new BN(5).mul(PRICE_PRECISION);
|
|
3252
3076
|
|
|
3253
|
-
const mockUserMap = new MockUserMap();
|
|
3254
3077
|
const user0 = Keypair.generate();
|
|
3255
|
-
const user0Auth = Keypair.generate();
|
|
3256
3078
|
const user1 = Keypair.generate();
|
|
3257
|
-
const user1Auth = Keypair.generate();
|
|
3258
|
-
mockUserMap.addUserAccountAuthority(user0.publicKey, user0Auth.publicKey);
|
|
3259
|
-
mockUserMap.addUserAccountAuthority(user1.publicKey, user1Auth.publicKey);
|
|
3260
3079
|
|
|
3261
|
-
const dlob = new DLOB(
|
|
3262
|
-
mockPerpMarkets,
|
|
3263
|
-
mockSpotMarkets,
|
|
3264
|
-
mockStateAccount,
|
|
3265
|
-
mockUserMap,
|
|
3266
|
-
false
|
|
3267
|
-
);
|
|
3080
|
+
const dlob = new DLOB();
|
|
3268
3081
|
const marketIndex = 0;
|
|
3269
3082
|
|
|
3270
3083
|
const slot = 12;
|
|
@@ -3325,7 +3138,9 @@ describe('DLOB Perp Tests', () => {
|
|
|
3325
3138
|
auctionEndSlot, // auction ends
|
|
3326
3139
|
ts,
|
|
3327
3140
|
MarketType.PERP,
|
|
3328
|
-
oracle
|
|
3141
|
+
oracle,
|
|
3142
|
+
mockStateAccount,
|
|
3143
|
+
mockPerpMarkets[marketIndex]
|
|
3329
3144
|
);
|
|
3330
3145
|
console.log(`Nodes to fill: ${nodesToFillBefore.length}`);
|
|
3331
3146
|
for (const n of nodesToFillBefore) {
|
|
@@ -3349,14 +3164,7 @@ describe('DLOB Spot Tests', () => {
|
|
|
3349
3164
|
it('Test proper bids', () => {
|
|
3350
3165
|
const vAsk = new BN(115);
|
|
3351
3166
|
const vBid = new BN(100);
|
|
3352
|
-
const
|
|
3353
|
-
const dlob = new DLOB(
|
|
3354
|
-
mockPerpMarkets,
|
|
3355
|
-
mockSpotMarkets,
|
|
3356
|
-
mockStateAccount,
|
|
3357
|
-
mockUserMap,
|
|
3358
|
-
false
|
|
3359
|
-
);
|
|
3167
|
+
const dlob = new DLOB();
|
|
3360
3168
|
const marketIndex = 0;
|
|
3361
3169
|
|
|
3362
3170
|
const slot = 12;
|
|
@@ -3420,8 +3228,6 @@ describe('DLOB Spot Tests', () => {
|
|
|
3420
3228
|
|
|
3421
3229
|
for (const t of testCases) {
|
|
3422
3230
|
const user0 = Keypair.generate();
|
|
3423
|
-
const user0Auth = Keypair.generate();
|
|
3424
|
-
mockUserMap.addUserAccountAuthority(user0.publicKey, user0Auth.publicKey);
|
|
3425
3231
|
|
|
3426
3232
|
insertOrderToDLOB(
|
|
3427
3233
|
dlob,
|
|
@@ -3474,14 +3280,7 @@ describe('DLOB Spot Tests', () => {
|
|
|
3474
3280
|
it('Test proper bids on multiple markets', () => {
|
|
3475
3281
|
const vAsk = new BN(15);
|
|
3476
3282
|
const vBid = new BN(10);
|
|
3477
|
-
const
|
|
3478
|
-
const dlob = new DLOB(
|
|
3479
|
-
mockPerpMarkets,
|
|
3480
|
-
mockSpotMarkets,
|
|
3481
|
-
mockStateAccount,
|
|
3482
|
-
mockUserMap,
|
|
3483
|
-
false
|
|
3484
|
-
);
|
|
3283
|
+
const dlob = new DLOB();
|
|
3485
3284
|
const marketIndex0 = 0;
|
|
3486
3285
|
const marketIndex1 = 1;
|
|
3487
3286
|
|
|
@@ -3553,8 +3352,6 @@ describe('DLOB Spot Tests', () => {
|
|
|
3553
3352
|
|
|
3554
3353
|
for (const t of testCases) {
|
|
3555
3354
|
const user0 = Keypair.generate();
|
|
3556
|
-
const user0Auth = Keypair.generate();
|
|
3557
|
-
mockUserMap.addUserAccountAuthority(user0.publicKey, user0Auth.publicKey);
|
|
3558
3355
|
|
|
3559
3356
|
insertOrderToDLOB(
|
|
3560
3357
|
dlob,
|
|
@@ -3618,14 +3415,7 @@ describe('DLOB Spot Tests', () => {
|
|
|
3618
3415
|
it('Test proper asks', () => {
|
|
3619
3416
|
const vAsk = new BN(15);
|
|
3620
3417
|
const vBid = new BN(10);
|
|
3621
|
-
const
|
|
3622
|
-
const dlob = new DLOB(
|
|
3623
|
-
mockPerpMarkets,
|
|
3624
|
-
mockSpotMarkets,
|
|
3625
|
-
mockStateAccount,
|
|
3626
|
-
mockUserMap,
|
|
3627
|
-
false
|
|
3628
|
-
);
|
|
3418
|
+
const dlob = new DLOB();
|
|
3629
3419
|
const marketIndex = 0;
|
|
3630
3420
|
|
|
3631
3421
|
const slot = 12;
|
|
@@ -3689,8 +3479,6 @@ describe('DLOB Spot Tests', () => {
|
|
|
3689
3479
|
|
|
3690
3480
|
for (const t of testCases) {
|
|
3691
3481
|
const user0 = Keypair.generate();
|
|
3692
|
-
const user0Auth = Keypair.generate();
|
|
3693
|
-
mockUserMap.addUserAccountAuthority(user0.publicKey, user0Auth.publicKey);
|
|
3694
3482
|
|
|
3695
3483
|
insertOrderToDLOB(
|
|
3696
3484
|
dlob,
|
|
@@ -3751,21 +3539,12 @@ describe('DLOB Spot Tests', () => {
|
|
|
3751
3539
|
confidence: new BN(1),
|
|
3752
3540
|
hasSufficientNumberOfDataPoints: true,
|
|
3753
3541
|
};
|
|
3754
|
-
const
|
|
3755
|
-
const dlob = new DLOB(
|
|
3756
|
-
mockPerpMarkets,
|
|
3757
|
-
mockSpotMarkets,
|
|
3758
|
-
mockStateAccount,
|
|
3759
|
-
mockUserMap,
|
|
3760
|
-
false
|
|
3761
|
-
);
|
|
3542
|
+
const dlob = new DLOB();
|
|
3762
3543
|
const marketIndex = 0;
|
|
3763
3544
|
|
|
3764
3545
|
// 3 mkt buys
|
|
3765
3546
|
for (let i = 0; i < 3; i++) {
|
|
3766
3547
|
const user0 = Keypair.generate();
|
|
3767
|
-
const user0Auth = Keypair.generate();
|
|
3768
|
-
mockUserMap.addUserAccountAuthority(user0.publicKey, user0Auth.publicKey);
|
|
3769
3548
|
|
|
3770
3549
|
insertOrderToDLOB(
|
|
3771
3550
|
dlob,
|
|
@@ -3785,8 +3564,6 @@ describe('DLOB Spot Tests', () => {
|
|
|
3785
3564
|
// 3 mkt sells
|
|
3786
3565
|
for (let i = 0; i < 3; i++) {
|
|
3787
3566
|
const user0 = Keypair.generate();
|
|
3788
|
-
const user0Auth = Keypair.generate();
|
|
3789
|
-
mockUserMap.addUserAccountAuthority(user0.publicKey, user0Auth.publicKey);
|
|
3790
3567
|
|
|
3791
3568
|
insertOrderToDLOB(
|
|
3792
3569
|
dlob,
|
|
@@ -3853,34 +3630,14 @@ describe('DLOB Spot Tests', () => {
|
|
|
3853
3630
|
hasSufficientNumberOfDataPoints: true,
|
|
3854
3631
|
};
|
|
3855
3632
|
|
|
3856
|
-
const mockUserMap = new MockUserMap();
|
|
3857
3633
|
const user0 = Keypair.generate();
|
|
3858
|
-
const userAuth0 = Keypair.generate();
|
|
3859
3634
|
const user1 = Keypair.generate();
|
|
3860
|
-
const userAuth1 = Keypair.generate();
|
|
3861
3635
|
const user2 = Keypair.generate();
|
|
3862
|
-
const userAuth2 = Keypair.generate();
|
|
3863
3636
|
const user3 = Keypair.generate();
|
|
3864
|
-
const userAuth3 = Keypair.generate();
|
|
3865
3637
|
const user4 = Keypair.generate();
|
|
3866
|
-
const userAuth4 = Keypair.generate();
|
|
3867
3638
|
const user5 = Keypair.generate();
|
|
3868
|
-
|
|
3869
|
-
|
|
3870
|
-
mockUserMap.addUserAccountAuthority(user0.publicKey, userAuth0.publicKey);
|
|
3871
|
-
mockUserMap.addUserAccountAuthority(user1.publicKey, userAuth1.publicKey);
|
|
3872
|
-
mockUserMap.addUserAccountAuthority(user2.publicKey, userAuth2.publicKey);
|
|
3873
|
-
mockUserMap.addUserAccountAuthority(user3.publicKey, userAuth3.publicKey);
|
|
3874
|
-
mockUserMap.addUserAccountAuthority(user4.publicKey, userAuth4.publicKey);
|
|
3875
|
-
mockUserMap.addUserAccountAuthority(user5.publicKey, userAuth5.publicKey);
|
|
3876
|
-
|
|
3877
|
-
const dlob = new DLOB(
|
|
3878
|
-
mockPerpMarkets,
|
|
3879
|
-
mockSpotMarkets,
|
|
3880
|
-
mockStateAccount,
|
|
3881
|
-
mockUserMap,
|
|
3882
|
-
false
|
|
3883
|
-
);
|
|
3639
|
+
|
|
3640
|
+
const dlob = new DLOB();
|
|
3884
3641
|
const marketIndex = 0;
|
|
3885
3642
|
insertOrderToDLOB(
|
|
3886
3643
|
dlob,
|
|
@@ -4017,34 +3774,13 @@ describe('DLOB Spot Tests', () => {
|
|
|
4017
3774
|
const vAsk = new BN(15);
|
|
4018
3775
|
const vBid = new BN(10);
|
|
4019
3776
|
|
|
4020
|
-
const mockUserMap = new MockUserMap();
|
|
4021
3777
|
const user0 = Keypair.generate();
|
|
4022
|
-
const userAuth0 = Keypair.generate();
|
|
4023
3778
|
const user1 = Keypair.generate();
|
|
4024
|
-
const userAuth1 = Keypair.generate();
|
|
4025
3779
|
const user2 = Keypair.generate();
|
|
4026
|
-
const userAuth2 = Keypair.generate();
|
|
4027
|
-
const user3 = Keypair.generate();
|
|
4028
|
-
const userAuth3 = Keypair.generate();
|
|
4029
3780
|
const user4 = Keypair.generate();
|
|
4030
|
-
const userAuth4 = Keypair.generate();
|
|
4031
3781
|
const user5 = Keypair.generate();
|
|
4032
|
-
|
|
4033
|
-
|
|
4034
|
-
mockUserMap.addUserAccountAuthority(user0.publicKey, userAuth0.publicKey);
|
|
4035
|
-
mockUserMap.addUserAccountAuthority(user1.publicKey, userAuth1.publicKey);
|
|
4036
|
-
mockUserMap.addUserAccountAuthority(user2.publicKey, userAuth2.publicKey);
|
|
4037
|
-
mockUserMap.addUserAccountAuthority(user3.publicKey, userAuth3.publicKey);
|
|
4038
|
-
mockUserMap.addUserAccountAuthority(user4.publicKey, userAuth4.publicKey);
|
|
4039
|
-
mockUserMap.addUserAccountAuthority(user5.publicKey, userAuth5.publicKey);
|
|
4040
|
-
|
|
4041
|
-
const dlob = new DLOB(
|
|
4042
|
-
mockPerpMarkets,
|
|
4043
|
-
mockSpotMarkets,
|
|
4044
|
-
mockStateAccount,
|
|
4045
|
-
mockUserMap,
|
|
4046
|
-
false
|
|
4047
|
-
);
|
|
3782
|
+
|
|
3783
|
+
const dlob = new DLOB();
|
|
4048
3784
|
const marketIndex = 0;
|
|
4049
3785
|
|
|
4050
3786
|
// insert some limit buys above vamm bid, below ask
|
|
@@ -4101,7 +3837,9 @@ describe('DLOB Spot Tests', () => {
|
|
|
4101
3837
|
slot: new BN(12),
|
|
4102
3838
|
confidence: new BN(1),
|
|
4103
3839
|
hasSufficientNumberOfDataPoints: true,
|
|
4104
|
-
}
|
|
3840
|
+
},
|
|
3841
|
+
mockStateAccount,
|
|
3842
|
+
mockSpotMarkets[marketIndex]
|
|
4105
3843
|
);
|
|
4106
3844
|
expect(nodesToFillBefore.length).to.equal(0);
|
|
4107
3845
|
|
|
@@ -4145,7 +3883,9 @@ describe('DLOB Spot Tests', () => {
|
|
|
4145
3883
|
slot: new BN(12),
|
|
4146
3884
|
confidence: new BN(1),
|
|
4147
3885
|
hasSufficientNumberOfDataPoints: true,
|
|
4148
|
-
}
|
|
3886
|
+
},
|
|
3887
|
+
mockStateAccount,
|
|
3888
|
+
mockSpotMarkets[marketIndex]
|
|
4149
3889
|
);
|
|
4150
3890
|
for (const n of nodesToFillAfter) {
|
|
4151
3891
|
console.log(
|
|
@@ -4167,28 +3907,12 @@ describe('DLOB Spot Tests', () => {
|
|
|
4167
3907
|
const vAsk = new BN(15);
|
|
4168
3908
|
const vBid = new BN(10);
|
|
4169
3909
|
|
|
4170
|
-
const mockUserMap = new MockUserMap();
|
|
4171
3910
|
const user0 = Keypair.generate();
|
|
4172
|
-
const userAuth0 = Keypair.generate();
|
|
4173
3911
|
const user1 = Keypair.generate();
|
|
4174
|
-
const userAuth1 = Keypair.generate();
|
|
4175
3912
|
const user2 = Keypair.generate();
|
|
4176
|
-
const userAuth2 = Keypair.generate();
|
|
4177
3913
|
const user3 = Keypair.generate();
|
|
4178
|
-
const userAuth3 = Keypair.generate();
|
|
4179
3914
|
|
|
4180
|
-
|
|
4181
|
-
mockUserMap.addUserAccountAuthority(user1.publicKey, userAuth1.publicKey);
|
|
4182
|
-
mockUserMap.addUserAccountAuthority(user2.publicKey, userAuth2.publicKey);
|
|
4183
|
-
mockUserMap.addUserAccountAuthority(user3.publicKey, userAuth3.publicKey);
|
|
4184
|
-
|
|
4185
|
-
const dlob = new DLOB(
|
|
4186
|
-
mockPerpMarkets,
|
|
4187
|
-
mockSpotMarkets,
|
|
4188
|
-
mockStateAccount,
|
|
4189
|
-
mockUserMap,
|
|
4190
|
-
false
|
|
4191
|
-
);
|
|
3915
|
+
const dlob = new DLOB();
|
|
4192
3916
|
const marketIndex = 0;
|
|
4193
3917
|
|
|
4194
3918
|
// insert some limit sells below vAMM ask, above bid
|
|
@@ -4245,7 +3969,9 @@ describe('DLOB Spot Tests', () => {
|
|
|
4245
3969
|
slot: new BN(12),
|
|
4246
3970
|
confidence: new BN(1),
|
|
4247
3971
|
hasSufficientNumberOfDataPoints: true,
|
|
4248
|
-
}
|
|
3972
|
+
},
|
|
3973
|
+
mockStateAccount,
|
|
3974
|
+
mockSpotMarkets[marketIndex]
|
|
4249
3975
|
);
|
|
4250
3976
|
expect(nodesToFillBefore.length).to.equal(0);
|
|
4251
3977
|
|
|
@@ -4276,7 +4002,9 @@ describe('DLOB Spot Tests', () => {
|
|
|
4276
4002
|
slot: new BN(12),
|
|
4277
4003
|
confidence: new BN(1),
|
|
4278
4004
|
hasSufficientNumberOfDataPoints: true,
|
|
4279
|
-
}
|
|
4005
|
+
},
|
|
4006
|
+
mockStateAccount,
|
|
4007
|
+
mockSpotMarkets[marketIndex]
|
|
4280
4008
|
);
|
|
4281
4009
|
for (const n of nodesToFillAfter) {
|
|
4282
4010
|
console.log(
|
|
@@ -4298,31 +4026,13 @@ describe('DLOB Spot Tests', () => {
|
|
|
4298
4026
|
const vAsk = new BN(15);
|
|
4299
4027
|
const vBid = new BN(8);
|
|
4300
4028
|
|
|
4301
|
-
const mockUserMap = new MockUserMap();
|
|
4302
4029
|
const user0 = Keypair.generate();
|
|
4303
|
-
const userAuth0 = Keypair.generate();
|
|
4304
4030
|
const user1 = Keypair.generate();
|
|
4305
|
-
const userAuth1 = Keypair.generate();
|
|
4306
4031
|
const user2 = Keypair.generate();
|
|
4307
|
-
const userAuth2 = Keypair.generate();
|
|
4308
4032
|
const user3 = Keypair.generate();
|
|
4309
|
-
const userAuth3 = Keypair.generate();
|
|
4310
4033
|
const user4 = Keypair.generate();
|
|
4311
|
-
const userAuth4 = Keypair.generate();
|
|
4312
|
-
|
|
4313
|
-
mockUserMap.addUserAccountAuthority(user0.publicKey, userAuth0.publicKey);
|
|
4314
|
-
mockUserMap.addUserAccountAuthority(user1.publicKey, userAuth1.publicKey);
|
|
4315
|
-
mockUserMap.addUserAccountAuthority(user2.publicKey, userAuth2.publicKey);
|
|
4316
|
-
mockUserMap.addUserAccountAuthority(user3.publicKey, userAuth3.publicKey);
|
|
4317
|
-
mockUserMap.addUserAccountAuthority(user4.publicKey, userAuth4.publicKey);
|
|
4318
4034
|
|
|
4319
|
-
const dlob = new DLOB(
|
|
4320
|
-
mockPerpMarkets,
|
|
4321
|
-
mockSpotMarkets,
|
|
4322
|
-
mockStateAccount,
|
|
4323
|
-
mockUserMap,
|
|
4324
|
-
false
|
|
4325
|
-
);
|
|
4035
|
+
const dlob = new DLOB();
|
|
4326
4036
|
const marketIndex = 0;
|
|
4327
4037
|
|
|
4328
4038
|
const slot = 12;
|
|
@@ -4382,7 +4092,9 @@ describe('DLOB Spot Tests', () => {
|
|
|
4382
4092
|
12, // auction over
|
|
4383
4093
|
Date.now(),
|
|
4384
4094
|
MarketType.SPOT,
|
|
4385
|
-
oracle
|
|
4095
|
+
oracle,
|
|
4096
|
+
mockStateAccount,
|
|
4097
|
+
mockSpotMarkets[marketIndex]
|
|
4386
4098
|
);
|
|
4387
4099
|
expect(nodesToFillBefore.length).to.equal(0);
|
|
4388
4100
|
|
|
@@ -4421,7 +4133,9 @@ describe('DLOB Spot Tests', () => {
|
|
|
4421
4133
|
slot, // auction over
|
|
4422
4134
|
Date.now(),
|
|
4423
4135
|
MarketType.SPOT,
|
|
4424
|
-
oracle
|
|
4136
|
+
oracle,
|
|
4137
|
+
mockStateAccount,
|
|
4138
|
+
mockSpotMarkets[marketIndex]
|
|
4425
4139
|
);
|
|
4426
4140
|
const mktNodes = dlob.findExpiredNodesToFill(
|
|
4427
4141
|
marketIndex,
|
|
@@ -4452,22 +4166,10 @@ describe('DLOB Spot Tests', () => {
|
|
|
4452
4166
|
const vAsk = new BN(15);
|
|
4453
4167
|
const vBid = new BN(8);
|
|
4454
4168
|
|
|
4455
|
-
const mockUserMap = new MockUserMap();
|
|
4456
4169
|
const user0 = Keypair.generate();
|
|
4457
|
-
const userAuth0 = Keypair.generate();
|
|
4458
4170
|
const user1 = Keypair.generate();
|
|
4459
|
-
const userAuth1 = Keypair.generate();
|
|
4460
|
-
|
|
4461
|
-
mockUserMap.addUserAccountAuthority(user0.publicKey, userAuth0.publicKey);
|
|
4462
|
-
mockUserMap.addUserAccountAuthority(user1.publicKey, userAuth1.publicKey);
|
|
4463
4171
|
|
|
4464
|
-
const dlob = new DLOB(
|
|
4465
|
-
mockPerpMarkets,
|
|
4466
|
-
mockSpotMarkets,
|
|
4467
|
-
mockStateAccount,
|
|
4468
|
-
mockUserMap,
|
|
4469
|
-
false
|
|
4470
|
-
);
|
|
4172
|
+
const dlob = new DLOB();
|
|
4471
4173
|
const marketIndex = 0;
|
|
4472
4174
|
|
|
4473
4175
|
const slot = 12;
|
|
@@ -4514,7 +4216,9 @@ describe('DLOB Spot Tests', () => {
|
|
|
4514
4216
|
12, // auction over
|
|
4515
4217
|
Date.now(),
|
|
4516
4218
|
MarketType.PERP,
|
|
4517
|
-
oracle
|
|
4219
|
+
oracle,
|
|
4220
|
+
mockStateAccount,
|
|
4221
|
+
mockPerpMarkets[marketIndex]
|
|
4518
4222
|
);
|
|
4519
4223
|
expect(nodesToFillBefore.length).to.equal(0);
|
|
4520
4224
|
|
|
@@ -4553,7 +4257,9 @@ describe('DLOB Spot Tests', () => {
|
|
|
4553
4257
|
slot, // auction over
|
|
4554
4258
|
Date.now(),
|
|
4555
4259
|
MarketType.PERP,
|
|
4556
|
-
oracle
|
|
4260
|
+
oracle,
|
|
4261
|
+
mockStateAccount,
|
|
4262
|
+
mockPerpMarkets[marketIndex]
|
|
4557
4263
|
);
|
|
4558
4264
|
|
|
4559
4265
|
printBookState(dlob, marketIndex, vBid, vAsk, slot, oracle);
|
|
@@ -4578,22 +4284,10 @@ describe('DLOB Spot Tests', () => {
|
|
|
4578
4284
|
const vAsk = new BN(15);
|
|
4579
4285
|
const vBid = new BN(8);
|
|
4580
4286
|
|
|
4581
|
-
const mockUserMap = new MockUserMap();
|
|
4582
4287
|
const user0 = Keypair.generate();
|
|
4583
|
-
const userAuth0 = Keypair.generate();
|
|
4584
4288
|
const user1 = Keypair.generate();
|
|
4585
|
-
const userAuth1 = Keypair.generate();
|
|
4586
|
-
|
|
4587
|
-
mockUserMap.addUserAccountAuthority(user0.publicKey, userAuth0.publicKey);
|
|
4588
|
-
mockUserMap.addUserAccountAuthority(user1.publicKey, userAuth1.publicKey);
|
|
4589
4289
|
|
|
4590
|
-
const dlob = new DLOB(
|
|
4591
|
-
mockPerpMarkets,
|
|
4592
|
-
mockSpotMarkets,
|
|
4593
|
-
mockStateAccount,
|
|
4594
|
-
mockUserMap,
|
|
4595
|
-
false
|
|
4596
|
-
);
|
|
4290
|
+
const dlob = new DLOB();
|
|
4597
4291
|
const marketIndex = 0;
|
|
4598
4292
|
|
|
4599
4293
|
const slot = 12;
|
|
@@ -4640,7 +4334,9 @@ describe('DLOB Spot Tests', () => {
|
|
|
4640
4334
|
12, // auction over
|
|
4641
4335
|
Date.now(),
|
|
4642
4336
|
MarketType.PERP,
|
|
4643
|
-
oracle
|
|
4337
|
+
oracle,
|
|
4338
|
+
mockStateAccount,
|
|
4339
|
+
mockPerpMarkets[marketIndex]
|
|
4644
4340
|
);
|
|
4645
4341
|
expect(nodesToFillBefore.length).to.equal(0);
|
|
4646
4342
|
|
|
@@ -4679,7 +4375,9 @@ describe('DLOB Spot Tests', () => {
|
|
|
4679
4375
|
slot, // auction over
|
|
4680
4376
|
Date.now(),
|
|
4681
4377
|
MarketType.PERP,
|
|
4682
|
-
oracle
|
|
4378
|
+
oracle,
|
|
4379
|
+
mockStateAccount,
|
|
4380
|
+
mockPerpMarkets[marketIndex]
|
|
4683
4381
|
);
|
|
4684
4382
|
|
|
4685
4383
|
printBookState(dlob, marketIndex, vBid, vAsk, slot, oracle);
|
|
@@ -4704,52 +4402,20 @@ describe('DLOB Spot Tests', () => {
|
|
|
4704
4402
|
const vAsk = new BN(15);
|
|
4705
4403
|
const vBid = new BN(8);
|
|
4706
4404
|
|
|
4707
|
-
const mockUserMap = new MockUserMap();
|
|
4708
4405
|
const user0 = Keypair.generate();
|
|
4709
|
-
const userAuth0 = Keypair.generate();
|
|
4710
4406
|
const user1 = Keypair.generate();
|
|
4711
|
-
const userAuth1 = Keypair.generate();
|
|
4712
4407
|
const user2 = Keypair.generate();
|
|
4713
|
-
const userAuth2 = Keypair.generate();
|
|
4714
4408
|
const user3 = Keypair.generate();
|
|
4715
|
-
const userAuth3 = Keypair.generate();
|
|
4716
4409
|
const user4 = Keypair.generate();
|
|
4717
|
-
const userAuth4 = Keypair.generate();
|
|
4718
4410
|
const user5 = Keypair.generate();
|
|
4719
|
-
const userAuth5 = Keypair.generate();
|
|
4720
4411
|
const user6 = Keypair.generate();
|
|
4721
|
-
const userAuth6 = Keypair.generate();
|
|
4722
4412
|
const user7 = Keypair.generate();
|
|
4723
|
-
const userAuth7 = Keypair.generate();
|
|
4724
4413
|
const user8 = Keypair.generate();
|
|
4725
|
-
const userAuth8 = Keypair.generate();
|
|
4726
4414
|
const user9 = Keypair.generate();
|
|
4727
|
-
const userAuth9 = Keypair.generate();
|
|
4728
4415
|
const user10 = Keypair.generate();
|
|
4729
|
-
const userAuth10 = Keypair.generate();
|
|
4730
4416
|
const user11 = Keypair.generate();
|
|
4731
|
-
|
|
4732
|
-
|
|
4733
|
-
mockUserMap.addUserAccountAuthority(user0.publicKey, userAuth0.publicKey);
|
|
4734
|
-
mockUserMap.addUserAccountAuthority(user1.publicKey, userAuth1.publicKey);
|
|
4735
|
-
mockUserMap.addUserAccountAuthority(user2.publicKey, userAuth2.publicKey);
|
|
4736
|
-
mockUserMap.addUserAccountAuthority(user3.publicKey, userAuth3.publicKey);
|
|
4737
|
-
mockUserMap.addUserAccountAuthority(user4.publicKey, userAuth4.publicKey);
|
|
4738
|
-
mockUserMap.addUserAccountAuthority(user5.publicKey, userAuth5.publicKey);
|
|
4739
|
-
mockUserMap.addUserAccountAuthority(user6.publicKey, userAuth6.publicKey);
|
|
4740
|
-
mockUserMap.addUserAccountAuthority(user7.publicKey, userAuth7.publicKey);
|
|
4741
|
-
mockUserMap.addUserAccountAuthority(user8.publicKey, userAuth8.publicKey);
|
|
4742
|
-
mockUserMap.addUserAccountAuthority(user9.publicKey, userAuth9.publicKey);
|
|
4743
|
-
mockUserMap.addUserAccountAuthority(user10.publicKey, userAuth10.publicKey);
|
|
4744
|
-
mockUserMap.addUserAccountAuthority(user11.publicKey, userAuth11.publicKey);
|
|
4745
|
-
|
|
4746
|
-
const dlob = new DLOB(
|
|
4747
|
-
mockPerpMarkets,
|
|
4748
|
-
mockSpotMarkets,
|
|
4749
|
-
mockStateAccount,
|
|
4750
|
-
mockUserMap,
|
|
4751
|
-
false
|
|
4752
|
-
);
|
|
4417
|
+
|
|
4418
|
+
const dlob = new DLOB();
|
|
4753
4419
|
const marketIndex = 0;
|
|
4754
4420
|
|
|
4755
4421
|
const slot = 20;
|
|
@@ -4961,7 +4627,8 @@ describe('DLOB Spot Tests', () => {
|
|
|
4961
4627
|
marketIndex,
|
|
4962
4628
|
slot,
|
|
4963
4629
|
oracle.price,
|
|
4964
|
-
MarketType.SPOT
|
|
4630
|
+
MarketType.SPOT,
|
|
4631
|
+
mockStateAccount
|
|
4965
4632
|
);
|
|
4966
4633
|
for (const [idx, n] of nodesToTrigger.entries()) {
|
|
4967
4634
|
expect(n.node.order?.orderId).to.equal(orderIdsToTrigger[idx]);
|
|
@@ -4972,21 +4639,10 @@ describe('DLOB Spot Tests', () => {
|
|
|
4972
4639
|
const vAsk = new BN(15);
|
|
4973
4640
|
const vBid = new BN(8);
|
|
4974
4641
|
|
|
4975
|
-
const mockUserMap = new MockUserMap();
|
|
4976
4642
|
const user0 = Keypair.generate();
|
|
4977
|
-
const userAuth0 = Keypair.generate();
|
|
4978
4643
|
const user1 = Keypair.generate();
|
|
4979
|
-
const userAuth1 = Keypair.generate();
|
|
4980
|
-
mockUserMap.addUserAccountAuthority(user0.publicKey, userAuth0.publicKey);
|
|
4981
|
-
mockUserMap.addUserAccountAuthority(user1.publicKey, userAuth1.publicKey);
|
|
4982
4644
|
|
|
4983
|
-
const dlob = new DLOB(
|
|
4984
|
-
mockPerpMarkets,
|
|
4985
|
-
mockSpotMarkets,
|
|
4986
|
-
mockStateAccount,
|
|
4987
|
-
mockUserMap,
|
|
4988
|
-
false
|
|
4989
|
-
);
|
|
4645
|
+
const dlob = new DLOB();
|
|
4990
4646
|
const marketIndex = 0;
|
|
4991
4647
|
|
|
4992
4648
|
const slot = 20;
|
|
@@ -5040,7 +4696,9 @@ describe('DLOB Spot Tests', () => {
|
|
|
5040
4696
|
slot: new BN(slot0),
|
|
5041
4697
|
confidence: new BN(1),
|
|
5042
4698
|
hasSufficientNumberOfDataPoints: true,
|
|
5043
|
-
}
|
|
4699
|
+
},
|
|
4700
|
+
mockStateAccount,
|
|
4701
|
+
mockSpotMarkets[marketIndex]
|
|
5044
4702
|
);
|
|
5045
4703
|
expect(nodesToFillBefore.length).to.equal(0);
|
|
5046
4704
|
|
|
@@ -5059,7 +4717,9 @@ describe('DLOB Spot Tests', () => {
|
|
|
5059
4717
|
slot: new BN(slot1),
|
|
5060
4718
|
confidence: new BN(1),
|
|
5061
4719
|
hasSufficientNumberOfDataPoints: true,
|
|
5062
|
-
}
|
|
4720
|
+
},
|
|
4721
|
+
mockStateAccount,
|
|
4722
|
+
mockSpotMarkets[marketIndex]
|
|
5063
4723
|
);
|
|
5064
4724
|
expect(nodesToFillAfter.length).to.equal(2);
|
|
5065
4725
|
|