diff --git a/CHANGELOG.md b/CHANGELOG.md index 3fcb874b..c00f755a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +### [4.13.1](https://github.com/nash-io/nash-protocol/compare/v4.12.1...v4.13.1) (2024-07-31) + ### [4.12.1](https://github.com/nash-io/nash-protocol/compare/v4.11.21...v4.12.1) (2024-07-08) ### [4.11.21](https://github.com/nash-io/nash-protocol/compare/v4.11.19...v4.11.21) (2024-05-22) diff --git a/package.json b/package.json index 4be1ca38..30f229c3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@neon-exchange/nash-protocol", - "version": "4.12.1", + "version": "4.13.1", "description": "TypeScript implementation of Nash crypto routines", "main": "build/main/index.js", "typings": "build/main/index.d.ts", diff --git a/src/__tests__/signatureVectors.json b/src/__tests__/signatureVectors.json index 6c70d0a5..4c463582 100644 --- a/src/__tests__/signatureVectors.json +++ b/src/__tests__/signatureVectors.json @@ -205,10 +205,10 @@ "timestamp": 1565362799120, "signature": "30440220083a73aaaa2b69476c74b64e0f1a1bdc1f6e5d311472729712eba8b5f3343a0a02204dcd5a5aac2693865b140c041cf85d6bd079c9a4803fe83caa218bb09d13d2c2", "raw": { - "polygon": "03FA39FDDDE46CEA3060B91F80ABED8672F77C5BEA000300000000121278900052E62CFA39FDDDE46CEA3060B91F80ABED8672F77C5BEA" + "polygon": "03FA39FDDDE46CEA3060B91F80ABED8672F77C5BEAFFFF00000000121278900052E62CFA39FDDDE46CEA3060B91F80ABED8672F77C5BEA" }, "blockchainSignatures": { - "polygon": "e0b4e31781887a3639f24a0dee44356118f9ccc65158e7e06ef90581c7833be620ac6c6ff8906d3d0f87563c442944140b0da5ffb60d2cbfc8017a58d969bfc401" + "polygon": "1353f7e60784ef9a2b0826cd5c42bc8e09e6eaf74a22265f21464067642a2044f26c3de33d237f0be1e89a2b83a4fa0503f795826784de79d25521bdde9cd0cf00" } } }, diff --git a/src/generateWallet/generateWallet.ts b/src/generateWallet/generateWallet.ts index 55e5c19b..4de333cd 100644 --- a/src/generateWallet/generateWallet.ts +++ b/src/generateWallet/generateWallet.ts @@ -28,6 +28,7 @@ export enum CoinType { ERD = 508, NEO = 888, NEO3 = 888, + NEO_X = 888, POLYGON = 966, AVAXC = 9000, ABRITRUM = 9001 @@ -108,6 +109,8 @@ export const coinTypeFromString = (s: string): CoinType => { ltc: CoinType.LTC, neo: CoinType.NEO, neo3: CoinType.NEO3, + neo_x: CoinType.NEO_X, + neox: CoinType.NEO_X, polygon: CoinType.POLYGON } @@ -132,6 +135,9 @@ export const blockchainFromString = (name: string): Blockchain => { return Blockchain.POLYGON case 'neo3': return Blockchain.NEO3 + case 'neox': + case 'neo_x': + return Blockchain.NEO_X case 'arbitrum': return Blockchain.ARBITRUM default: @@ -220,6 +226,7 @@ function generateWalletForCoinType( case CoinType.AVAXC: case CoinType.POLYGON: case CoinType.ABRITRUM: + case CoinType.NEO_X: // TODO: can we replace this with the elliptic package which we already // use to trim bundle size? const pubkey = tiny.pointFromScalar(key.privateKey, false) diff --git a/src/mpc/generateAPIKeys.ts b/src/mpc/generateAPIKeys.ts index 49b793f6..029f508e 100644 --- a/src/mpc/generateAPIKeys.ts +++ b/src/mpc/generateAPIKeys.ts @@ -61,6 +61,14 @@ export async function generateAPIKeys(params: GenerateApiKeysParams): Promise { expect(payloadRes.blockchainMovement).toEqual({ address: 'fa39fddde46cea3060b91f80abed8672f77c5bea', amount: '303200400', - asset: '0003', + asset: 'ffff', nonce: '0052e62c', prefix: '03', userPubKey: 'fa39fddde46cea3060b91f80abed8672f77c5bea', @@ -118,7 +118,7 @@ test('sign MATIC/DERC20 market buy order', async () => { orderData ) expect(rawData).toBe( - '019BAE2051097DC5DDF68D3C01D5FA5CCC7833109D000300000000001700000005FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF00000000000000000000002A' + '019BAE2051097DC5DDF68D3C01D5FA5CCC7833109DFFFF00000000001700000005FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF00000000000000000000002A' ) }) @@ -145,7 +145,7 @@ test('sign USDC/WBTC market buy order', async () => { ) expect(rawData).toBe( - '019BAE2051097DC5DDF68D3C01D5FA5CCC7833109D000300000000001700000005FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF00000000000000000000002A' + '019BAE2051097DC5DDF68D3C01D5FA5CCC7833109DFFFF000100000001FFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF00000000000000000000002A' ) // console.log("Raw data: ", rawData) diff --git a/src/types/MPC.ts b/src/types/MPC.ts index e69b889e..7c92795a 100644 --- a/src/types/MPC.ts +++ b/src/types/MPC.ts @@ -3,6 +3,7 @@ export enum Blockchain { ETH = 'ETH', NEO = 'NEO', NEO3 = 'NEO3', + NEO_X = 'NEO_X', AVAXC = 'AVAXC', POLYGON = 'POLYGON', ARBITRUM = 'ARBITRUM' @@ -18,6 +19,7 @@ export const BlockchainCurve: Record = { [Blockchain.BTC]: 'Secp256k1', [Blockchain.ETH]: 'Secp256k1', [Blockchain.NEO]: 'Secp256r1', + [Blockchain.NEO_X]: 'Secp256k1', [Blockchain.AVAXC]: 'Secp256k1', [Blockchain.POLYGON]: 'Secp256k1', [Blockchain.NEO3]: 'Secp256r1', @@ -90,6 +92,7 @@ export enum BIP44 { ETH = "m/44'/60'/0'/0/0", NEO = "m/44'/888'/0'/0/0", NEO3 = "m/44'/888'/1'/0/0", + NEO_X = "m/44'/888'/2'/0/0", POLYGON = "m/44'/966'/0'/0/0", AVAXC = "m/44'/9000'/0'/0/0", ARBITRUM = "m/44'/9001'/0'/0/0" @@ -116,6 +119,7 @@ export interface APIKey { [BIP44.AVAXC]?: ChildKey [BIP44.POLYGON]?: ChildKey [BIP44.NEO3]?: ChildKey + [BIP44.NEO_X]?: ChildKey [BIP44.ARBITRUM]?: ChildKey } payload_signing_key: string