From 37a2db3eddf80be8570f9c2d25b5cc1a838d11a5 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Wed, 1 Mar 2023 16:22:37 +0000 Subject: [PATCH 1/9] Add new stop limit schemas --- package.json | 2 +- src/crypt/signCFDOrder.ts | 8 ++++++++ .../OrionAggregator/ws/schemas/addressUpdateSchema.ts | 4 ++++ src/types.ts | 1 + 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 5856d08..d7bed70 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.17.24", + "version": "0.17.25-rc.1", "description": "Orion Protocol SDK", "main": "./lib/esm/index.js", "module": "./lib/esm/index.js", diff --git a/src/crypt/signCFDOrder.ts b/src/crypt/signCFDOrder.ts index 358d4be..7994943 100644 --- a/src/crypt/signCFDOrder.ts +++ b/src/crypt/signCFDOrder.ts @@ -25,6 +25,7 @@ export const signCFDOrder = async ( usePersonalSign: boolean, signer: ethers.Signer, chainId: SupportedChainId, + stopPrice: BigNumber.Value | undefined, ) => { const nonce = Date.now(); const expiration = nonce + DEFAULT_EXPIRATION; @@ -51,6 +52,13 @@ export const signCFDOrder = async ( nonce, expiration, buySide: side === 'BUY' ? 1 : 0, + stopPrice: stopPrice !== undefined + ? normalizeNumber( + stopPrice, + INTERNAL_ORION_PRECISION, + BigNumber.ROUND_FLOOR, + ).toNumber() + : undefined, isPersonalSign: usePersonalSign, }; diff --git a/src/services/OrionAggregator/ws/schemas/addressUpdateSchema.ts b/src/services/OrionAggregator/ws/schemas/addressUpdateSchema.ts index 1850585..0f8b655 100644 --- a/src/services/OrionAggregator/ws/schemas/addressUpdateSchema.ts +++ b/src/services/OrionAggregator/ws/schemas/addressUpdateSchema.ts @@ -33,6 +33,7 @@ export const orderUpdateSchema = z.object({ A: z.number(), // settled amount S: z.enum(orderStatuses), // status l: z.boolean().optional(), // is liquidation order + L: z.number().optional(), // stop limit price, t: z.number(), // update time c: subOrderSchema.array(), }) @@ -45,6 +46,7 @@ export const orderUpdateSchema = z.object({ settledAmount: o.A, status: o.S, liquidated: o.l, + stopPrice: o.L, subOrders: o.c.map((so) => ({ pair: so.P, exchange: so.e, @@ -69,6 +71,7 @@ export const fullOrderSchema = z.object({ F: z.string(), // fee asset f: z.number(), // fee l: z.boolean().optional(), // is liquidation order + L: z.number().optional(), // stop limit price, o: z.boolean(), // internal only S: z.enum(orderStatuses), // status T: z.number(), // creation time / unix timestamp @@ -84,6 +87,7 @@ export const fullOrderSchema = z.object({ feeAsset: o.F, fee: o.f, liquidated: o.l, + stopPrice: o.L, status: o.S, date: o.T, clientOrdId: o.O, diff --git a/src/types.ts b/src/types.ts index 9eb900f..f49fa51 100644 --- a/src/types.ts +++ b/src/types.ts @@ -82,6 +82,7 @@ export type CFDOrder = { nonce: number // uint64 expiration: number // uint64 buySide: 0 | 1 // uint8, 1=buy, 0=sell + stopPrice?: number | undefined // uint64 isPersonalSign: boolean // bool } From e896e27451ae08da074d24369d83596e4bc12f13 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Thu, 2 Mar 2023 13:18:52 +0000 Subject: [PATCH 2/9] Small update --- package.json | 2 +- src/crypt/signCFDOrder.ts | 6 +----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index d7bed70..5592e75 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.17.25-rc.1", + "version": "0.17.25-rc.2", "description": "Orion Protocol SDK", "main": "./lib/esm/index.js", "module": "./lib/esm/index.js", diff --git a/src/crypt/signCFDOrder.ts b/src/crypt/signCFDOrder.ts index 7994943..20c69ee 100644 --- a/src/crypt/signCFDOrder.ts +++ b/src/crypt/signCFDOrder.ts @@ -53,11 +53,7 @@ export const signCFDOrder = async ( expiration, buySide: side === 'BUY' ? 1 : 0, stopPrice: stopPrice !== undefined - ? normalizeNumber( - stopPrice, - INTERNAL_ORION_PRECISION, - BigNumber.ROUND_FLOOR, - ).toNumber() + ? new BigNumber(stopPrice).toNumber() : undefined, isPersonalSign: usePersonalSign, }; From d64ec95509ff7fff2021cf0e29bd8c96881b5452 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Thu, 2 Mar 2023 13:29:22 +0000 Subject: [PATCH 3/9] Small check --- package.json | 2 +- src/crypt/signCFDOrder.ts | 22 ++++++++++++++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 5592e75..1187369 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.17.25-rc.2", + "version": "0.17.25-rc.3", "description": "Orion Protocol SDK", "main": "./lib/esm/index.js", "module": "./lib/esm/index.js", diff --git a/src/crypt/signCFDOrder.ts b/src/crypt/signCFDOrder.ts index 20c69ee..fc24fb0 100644 --- a/src/crypt/signCFDOrder.ts +++ b/src/crypt/signCFDOrder.ts @@ -1,6 +1,6 @@ import type { TypedDataSigner } from '@ethersproject/abstract-signer'; import BigNumber from 'bignumber.js'; -import type { ethers } from 'ethers'; +import { ethers } from 'ethers'; import { joinSignature, splitSignature } from 'ethers/lib/utils'; import { INTERNAL_ORION_PRECISION } from '../constants'; import type { CFDOrder, SignedCFDOrder, SupportedChainId } from '../types'; @@ -30,6 +30,24 @@ export const signCFDOrder = async ( const nonce = Date.now(); const expiration = nonce + DEFAULT_EXPIRATION; + console.log('price', price); + console.log('price to string', price.toString()); + console.log('normalizeNumber', normalizeNumber( + price, + INTERNAL_ORION_PRECISION, + BigNumber.ROUND_FLOOR, + ).toNumber()); + console.log('stopPrice', stopPrice); + console.log('stopPrice to string', stopPrice?.toString()); + console.log('new BigNumber(stopPrice).toNumber()', new BigNumber(stopPrice ?? 0).toNumber()); + console.log('normalizeNumber', normalizeNumber( + stopPrice ?? 0, + INTERNAL_ORION_PRECISION, + BigNumber.ROUND_FLOOR, + ).toNumber()); + console.log('ethers.BigNumber.from(stopPrice)', ethers.BigNumber.from(stopPrice)); + console.log('ethers.BigNumber.from(stopPrice).toNumber()', ethers.BigNumber.from(stopPrice).toNumber()); + const order: CFDOrder = { senderAddress, matcherAddress, @@ -53,7 +71,7 @@ export const signCFDOrder = async ( expiration, buySide: side === 'BUY' ? 1 : 0, stopPrice: stopPrice !== undefined - ? new BigNumber(stopPrice).toNumber() + ? ethers.BigNumber.from(stopPrice).toNumber() : undefined, isPersonalSign: usePersonalSign, }; From d53f8130beb58b0699fa426b196469e70ad02e13 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Thu, 2 Mar 2023 13:41:32 +0000 Subject: [PATCH 4/9] Small updates --- package.json | 2 +- src/crypt/signCFDOrder.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 1187369..e91de9e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.17.25-rc.3", + "version": "0.17.25-rc.4", "description": "Orion Protocol SDK", "main": "./lib/esm/index.js", "module": "./lib/esm/index.js", diff --git a/src/crypt/signCFDOrder.ts b/src/crypt/signCFDOrder.ts index fc24fb0..c415e01 100644 --- a/src/crypt/signCFDOrder.ts +++ b/src/crypt/signCFDOrder.ts @@ -45,8 +45,8 @@ export const signCFDOrder = async ( INTERNAL_ORION_PRECISION, BigNumber.ROUND_FLOOR, ).toNumber()); - console.log('ethers.BigNumber.from(stopPrice)', ethers.BigNumber.from(stopPrice)); - console.log('ethers.BigNumber.from(stopPrice).toNumber()', ethers.BigNumber.from(stopPrice).toNumber()); + console.log('ethers.BigNumber.from(stopPrice)', ethers.BigNumber.from(new BigNumber(stopPrice ?? 0))); + console.log('ethers.BigNumber.from(stopPrice).toNumber()', ethers.BigNumber.from(new BigNumber(stopPrice ?? 0)).toNumber()); const order: CFDOrder = { senderAddress, @@ -71,7 +71,7 @@ export const signCFDOrder = async ( expiration, buySide: side === 'BUY' ? 1 : 0, stopPrice: stopPrice !== undefined - ? ethers.BigNumber.from(stopPrice).toNumber() + ? ethers.BigNumber.from(new BigNumber(stopPrice)).toNumber() : undefined, isPersonalSign: usePersonalSign, }; From 9b3c2406f0718b926cb96200a25f2302feffd311 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Thu, 2 Mar 2023 13:57:14 +0000 Subject: [PATCH 5/9] Small updates --- package.json | 2 +- src/crypt/signCFDOrder.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index e91de9e..b05408b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.17.25-rc.4", + "version": "0.17.25-rc.5", "description": "Orion Protocol SDK", "main": "./lib/esm/index.js", "module": "./lib/esm/index.js", diff --git a/src/crypt/signCFDOrder.ts b/src/crypt/signCFDOrder.ts index c415e01..36ab846 100644 --- a/src/crypt/signCFDOrder.ts +++ b/src/crypt/signCFDOrder.ts @@ -45,8 +45,8 @@ export const signCFDOrder = async ( INTERNAL_ORION_PRECISION, BigNumber.ROUND_FLOOR, ).toNumber()); - console.log('ethers.BigNumber.from(stopPrice)', ethers.BigNumber.from(new BigNumber(stopPrice ?? 0))); - console.log('ethers.BigNumber.from(stopPrice).toNumber()', ethers.BigNumber.from(new BigNumber(stopPrice ?? 0)).toNumber()); + console.log('ethers.BigNumber.from(stopPrice)', ethers.BigNumber.from(stopPrice?.toString())); + console.log('ethers.BigNumber.from(stopPrice).toNumber()', ethers.BigNumber.from(stopPrice?.toString()).toNumber()); const order: CFDOrder = { senderAddress, @@ -71,7 +71,7 @@ export const signCFDOrder = async ( expiration, buySide: side === 'BUY' ? 1 : 0, stopPrice: stopPrice !== undefined - ? ethers.BigNumber.from(new BigNumber(stopPrice)).toNumber() + ? ethers.BigNumber.from(stopPrice?.toString()).toNumber() : undefined, isPersonalSign: usePersonalSign, }; From 853f6b5a1311eaf3d2dd63885eeb0db0f5e33941 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Thu, 2 Mar 2023 14:04:36 +0000 Subject: [PATCH 6/9] Small updates --- package.json | 2 +- src/crypt/signCFDOrder.ts | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index b05408b..ed31a63 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.17.25-rc.5", + "version": "0.17.25-rc.6", "description": "Orion Protocol SDK", "main": "./lib/esm/index.js", "module": "./lib/esm/index.js", diff --git a/src/crypt/signCFDOrder.ts b/src/crypt/signCFDOrder.ts index 36ab846..64a0a04 100644 --- a/src/crypt/signCFDOrder.ts +++ b/src/crypt/signCFDOrder.ts @@ -1,6 +1,6 @@ import type { TypedDataSigner } from '@ethersproject/abstract-signer'; import BigNumber from 'bignumber.js'; -import { ethers } from 'ethers'; +import type { ethers } from 'ethers'; import { joinSignature, splitSignature } from 'ethers/lib/utils'; import { INTERNAL_ORION_PRECISION } from '../constants'; import type { CFDOrder, SignedCFDOrder, SupportedChainId } from '../types'; @@ -45,8 +45,8 @@ export const signCFDOrder = async ( INTERNAL_ORION_PRECISION, BigNumber.ROUND_FLOOR, ).toNumber()); - console.log('ethers.BigNumber.from(stopPrice)', ethers.BigNumber.from(stopPrice?.toString())); - console.log('ethers.BigNumber.from(stopPrice).toNumber()', ethers.BigNumber.from(stopPrice?.toString()).toNumber()); + // console.log('ethers.BigNumber.from(stopPrice)', ethers.BigNumber.from(stopPrice?.toString())); + // console.log('ethers.BigNumber.from(stopPrice).toNumber()', ethers.BigNumber.from(stopPrice?.toString()).toNumber()); const order: CFDOrder = { senderAddress, @@ -71,7 +71,7 @@ export const signCFDOrder = async ( expiration, buySide: side === 'BUY' ? 1 : 0, stopPrice: stopPrice !== undefined - ? ethers.BigNumber.from(stopPrice?.toString()).toNumber() + ? new BigNumber(stopPrice).toNumber() : undefined, isPersonalSign: usePersonalSign, }; From dbeb271e5dbd74f542867440d68d9e41813ca307 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Thu, 2 Mar 2023 14:13:20 +0000 Subject: [PATCH 7/9] Small updates --- package.json | 2 +- src/crypt/signCFDOrder.ts | 30 +++++++++++++++--------------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index ed31a63..65b32fb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.17.25-rc.6", + "version": "0.17.25-rc.7", "description": "Orion Protocol SDK", "main": "./lib/esm/index.js", "module": "./lib/esm/index.js", diff --git a/src/crypt/signCFDOrder.ts b/src/crypt/signCFDOrder.ts index 64a0a04..be8ceb0 100644 --- a/src/crypt/signCFDOrder.ts +++ b/src/crypt/signCFDOrder.ts @@ -30,21 +30,21 @@ export const signCFDOrder = async ( const nonce = Date.now(); const expiration = nonce + DEFAULT_EXPIRATION; - console.log('price', price); - console.log('price to string', price.toString()); - console.log('normalizeNumber', normalizeNumber( - price, - INTERNAL_ORION_PRECISION, - BigNumber.ROUND_FLOOR, - ).toNumber()); - console.log('stopPrice', stopPrice); - console.log('stopPrice to string', stopPrice?.toString()); - console.log('new BigNumber(stopPrice).toNumber()', new BigNumber(stopPrice ?? 0).toNumber()); - console.log('normalizeNumber', normalizeNumber( - stopPrice ?? 0, - INTERNAL_ORION_PRECISION, - BigNumber.ROUND_FLOOR, - ).toNumber()); + // console.log('price', price); + // console.log('price to string', price.toString()); + // console.log('normalizeNumber', normalizeNumber( + // price, + // INTERNAL_ORION_PRECISION, + // BigNumber.ROUND_FLOOR, + // ).toNumber()); + // console.log('stopPrice', stopPrice); + // console.log('stopPrice to string', stopPrice?.toString()); + // console.log('new BigNumber(stopPrice).toNumber()', new BigNumber(stopPrice ?? 0).toNumber()); + // console.log('normalizeNumber', normalizeNumber( + // stopPrice ?? 0, + // INTERNAL_ORION_PRECISION, + // BigNumber.ROUND_FLOOR, + // ).toNumber()); // console.log('ethers.BigNumber.from(stopPrice)', ethers.BigNumber.from(stopPrice?.toString())); // console.log('ethers.BigNumber.from(stopPrice).toNumber()', ethers.BigNumber.from(stopPrice?.toString()).toNumber()); From af7acd1cdd9af53501f89f8ab85d576d3044fb50 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Thu, 2 Mar 2023 15:01:46 +0000 Subject: [PATCH 8/9] Final version --- package.json | 2 +- src/crypt/signCFDOrder.ts | 18 ------------------ 2 files changed, 1 insertion(+), 19 deletions(-) diff --git a/package.json b/package.json index 65b32fb..c646970 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.17.25-rc.7", + "version": "0.17.25-rc.8", "description": "Orion Protocol SDK", "main": "./lib/esm/index.js", "module": "./lib/esm/index.js", diff --git a/src/crypt/signCFDOrder.ts b/src/crypt/signCFDOrder.ts index be8ceb0..20c69ee 100644 --- a/src/crypt/signCFDOrder.ts +++ b/src/crypt/signCFDOrder.ts @@ -30,24 +30,6 @@ export const signCFDOrder = async ( const nonce = Date.now(); const expiration = nonce + DEFAULT_EXPIRATION; - // console.log('price', price); - // console.log('price to string', price.toString()); - // console.log('normalizeNumber', normalizeNumber( - // price, - // INTERNAL_ORION_PRECISION, - // BigNumber.ROUND_FLOOR, - // ).toNumber()); - // console.log('stopPrice', stopPrice); - // console.log('stopPrice to string', stopPrice?.toString()); - // console.log('new BigNumber(stopPrice).toNumber()', new BigNumber(stopPrice ?? 0).toNumber()); - // console.log('normalizeNumber', normalizeNumber( - // stopPrice ?? 0, - // INTERNAL_ORION_PRECISION, - // BigNumber.ROUND_FLOOR, - // ).toNumber()); - // console.log('ethers.BigNumber.from(stopPrice)', ethers.BigNumber.from(stopPrice?.toString())); - // console.log('ethers.BigNumber.from(stopPrice).toNumber()', ethers.BigNumber.from(stopPrice?.toString()).toNumber()); - const order: CFDOrder = { senderAddress, matcherAddress, From a903ac699768e204af903da730f901a837d2a53e Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Thu, 2 Mar 2023 15:36:00 +0000 Subject: [PATCH 9/9] orderUpdateSchema was updated --- package.json | 2 +- src/services/OrionAggregator/ws/schemas/addressUpdateSchema.ts | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/package.json b/package.json index c646970..8377f5a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.17.25-rc.8", + "version": "0.17.25-rc.9", "description": "Orion Protocol SDK", "main": "./lib/esm/index.js", "module": "./lib/esm/index.js", diff --git a/src/services/OrionAggregator/ws/schemas/addressUpdateSchema.ts b/src/services/OrionAggregator/ws/schemas/addressUpdateSchema.ts index 0f8b655..583c684 100644 --- a/src/services/OrionAggregator/ws/schemas/addressUpdateSchema.ts +++ b/src/services/OrionAggregator/ws/schemas/addressUpdateSchema.ts @@ -33,7 +33,6 @@ export const orderUpdateSchema = z.object({ A: z.number(), // settled amount S: z.enum(orderStatuses), // status l: z.boolean().optional(), // is liquidation order - L: z.number().optional(), // stop limit price, t: z.number(), // update time c: subOrderSchema.array(), }) @@ -46,7 +45,6 @@ export const orderUpdateSchema = z.object({ settledAmount: o.A, status: o.S, liquidated: o.l, - stopPrice: o.L, subOrders: o.c.map((so) => ({ pair: so.P, exchange: so.e,