@neon-exchange/nash-protocol-gunbot
Advanced tools
Comparing version 3.3.22 to 3.3.24
@@ -27,2 +27,7 @@ { | ||
"precision": 18 | ||
}, | ||
"bat": { | ||
"blockchain": "eth", | ||
"hash": "abcd", | ||
"precision": 18 | ||
} | ||
@@ -102,2 +107,8 @@ }, | ||
"minTradeIncrementB": 4 | ||
}, | ||
"eth_bat": { | ||
"minTickSize": 2, | ||
"minTradeSize": 5, | ||
"minTradeIncrement": 8, | ||
"minTradeIncrementB": 5 | ||
} | ||
@@ -104,0 +115,0 @@ }, |
@@ -48,2 +48,8 @@ { | ||
}, | ||
"eth_bat": { | ||
"minTickSize": 2, | ||
"minTradeSize": 5, | ||
"minTradeIncrement": 5, | ||
"minTradeIncrementB": 5 | ||
}, | ||
"gas_eth": { | ||
@@ -50,0 +56,0 @@ "minTickSize": 8, |
@@ -68,6 +68,6 @@ { | ||
"value": "10.000000", | ||
"currency": "gas" | ||
"currency": "neo" | ||
}, | ||
"buyOrSell": "SELL", | ||
"marketName": "gas_neo", | ||
"marketName": "neo_gas", | ||
"cancellationPolicy": "immediate_or_cancel", | ||
@@ -74,0 +74,0 @@ "limitPrice": { |
@@ -1,3 +0,5 @@ | ||
export declare const minOrderRate = 0; | ||
export declare const maxOrderRate = "ffffffffffffffff"; | ||
export declare const maxFeeRate = 250000; | ||
export declare const MIN_ORDER_RATE = 0; | ||
export declare const MAX_ORDER_RATE = "ffffffffffffffff"; | ||
export declare const MAX_ORDER_AMOUNT = "ffffffffffffffff"; | ||
export declare const MAX_FEE_RATE = 0.0025; | ||
export declare const BLOCKCHAIN_PRECISION = 8; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.minOrderRate = 0; | ||
exports.maxOrderRate = 'ffffffffffffffff'; // 18446744073709551615 | ||
exports.maxFeeRate = 250000; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29uc3RhbnRzL3JhdGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQWEsUUFBQSxZQUFZLEdBQUcsQ0FBQyxDQUFBO0FBQ2hCLFFBQUEsWUFBWSxHQUFHLGtCQUFrQixDQUFBLENBQUMsdUJBQXVCO0FBQ3pELFFBQUEsVUFBVSxHQUFHLE1BQU0sQ0FBQSJ9 | ||
exports.MIN_ORDER_RATE = 0; | ||
exports.MAX_ORDER_RATE = 'ffffffffffffffff'; // 18446744073709551615 | ||
exports.MAX_ORDER_AMOUNT = exports.MAX_ORDER_RATE; | ||
exports.MAX_FEE_RATE = 0.0025; | ||
exports.BLOCKCHAIN_PRECISION = 8; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29uc3RhbnRzL3JhdGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQWEsUUFBQSxjQUFjLEdBQUcsQ0FBQyxDQUFBO0FBQ2xCLFFBQUEsY0FBYyxHQUFHLGtCQUFrQixDQUFBLENBQUMsdUJBQXVCO0FBQzNELFFBQUEsZ0JBQWdCLEdBQUcsc0JBQWMsQ0FBQTtBQUNqQyxRQUFBLFlBQVksR0FBRyxNQUFNLENBQUE7QUFDckIsUUFBQSxvQkFBb0IsR0FBRyxDQUFDLENBQUEifQ== |
@@ -29,2 +29,2 @@ "use strict"; | ||
exports.computePresig = computePresig; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZVByZXNpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tcGMvY29tcHV0ZVByZXNpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSwyQ0FBK0M7QUFDL0Msc0NBQWlGO0FBRTFFLEtBQUssVUFBVSxhQUFhLENBQUMsTUFBMkI7SUFDN0QsTUFBTSxTQUFTLEdBQUcsd0RBQWEsWUFBWSxHQUFDLENBQUE7SUFDNUMsTUFBTSw2QkFBaUIsQ0FBQztRQUN0QixVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7UUFDN0IsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO1FBQzdCLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO0tBQ3pELENBQUMsQ0FBQTtJQUVGLE1BQU0sQ0FBQyxjQUFjLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDMUQsU0FBUyxDQUFDLGNBQWMsQ0FDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQzdCLE1BQU0sQ0FBQyxXQUFXLEVBQ2xCLHFCQUFlLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUNuQyxDQUMyQixDQUFBO0lBQzlCLElBQUksY0FBYyxLQUFLLEtBQUssRUFBRTtRQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixHQUFHLG9CQUFvQixDQUFDLENBQUE7S0FDbkU7SUFDRCxPQUFPO1FBQ0wsTUFBTSxFQUFFLG9CQUFvQjtRQUM1QixDQUFDO0tBQ0YsQ0FBQTtBQUNILENBQUM7QUF0QkQsc0NBc0JDIn0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZVByZXNpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tcGMvY29tcHV0ZVByZXNpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSwyQ0FBK0M7QUFDL0Msc0NBQWlGO0FBRTFFLEtBQUssVUFBVSxhQUFhLENBQUMsTUFBMkI7SUFDN0QsTUFBTSxTQUFTLEdBQUcsd0RBQWEsWUFBWSxHQUFDLENBQUE7SUFDNUMsTUFBTSw2QkFBaUIsQ0FBQztRQUN0QixVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7UUFDN0IsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO1FBQzdCLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO0tBQ3pELENBQUMsQ0FBQTtJQUVGLE1BQU0sQ0FBQyxjQUFjLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDMUQsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsV0FBVyxFQUFFLHFCQUFlLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQ25GLENBQUE7SUFDOUIsSUFBSSxjQUFjLEtBQUssS0FBSyxFQUFFO1FBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLEdBQUcsb0JBQW9CLENBQUMsQ0FBQTtLQUNuRTtJQUNELE9BQU87UUFDTCxNQUFNLEVBQUUsb0JBQW9CO1FBQzVCLENBQUM7S0FDRixDQUFBO0FBQ0gsQ0FBQztBQWxCRCxzQ0FrQkMifQ== |
@@ -0,6 +1,7 @@ | ||
import { OrderSignatureData } from '../utils/blockchain'; | ||
import { PayloadAndKind } from '../payload'; | ||
import { Config, BlockchainSignature, APIKey, PresignConfig, ChainNoncePair } from '../types'; | ||
import { BlockchainSignature, APIKey, PresignConfig, ChainNoncePair } from '../types'; | ||
export declare function signETHBlockchainData(privateKey: string, data: string): BlockchainSignature; | ||
export declare function presignETHBlockchainData(apiKey: APIKey, config: PresignConfig, data: string): Promise<BlockchainSignature>; | ||
export declare function buildETHOrderSignatureData(address: string, marketData: Config['marketData'], payloadAndKind: PayloadAndKind, chainNoncePair: ChainNoncePair): string; | ||
export declare function buildETHOrderSignatureData(address: string, payloadAndKind: PayloadAndKind, chainNoncePair: ChainNoncePair, orderData: OrderSignatureData): string; | ||
export declare function buildETHMovementSignatureData(address: string, payloadAndKind: PayloadAndKind): string; |
@@ -64,30 +64,28 @@ "use strict"; | ||
exports.presignETHBlockchainData = presignETHBlockchainData; | ||
function buildETHOrderSignatureData(address, marketData, payloadAndKind, chainNoncePair) { | ||
function buildETHOrderSignatureData(address, payloadAndKind, chainNoncePair, orderData) { | ||
const { kind } = payloadAndKind; | ||
const blockchainData = blockchain_1.inferBlockchainData(payloadAndKind); | ||
const { unitA, unitB } = blockchain_1.getUnitPairs(blockchainData.marketName); | ||
let assetFrom = unitA; | ||
let assetTo = unitB; | ||
const amountPrecision = marketData[blockchainData.marketName].minTradeIncrement; | ||
if (blockchainData.buyOrSell === payload_1.BuyOrSellBuy) { | ||
assetFrom = unitB; | ||
assetTo = unitA; | ||
} | ||
const buffer = new smart_buffer_1.SmartBuffer(); | ||
buffer.writeString(payload_1.kindToOrderPrefix(kind)); | ||
buffer.writeString(address); | ||
buffer.writeString(blockchain_1.getETHAssetID(assetFrom)); | ||
buffer.writeString(blockchain_1.getETHAssetID(assetTo)); | ||
buffer.writeString(blockchain_1.getETHAssetID(orderData.source.symbol)); | ||
buffer.writeString(blockchain_1.getETHAssetID(orderData.destination.symbol)); | ||
buffer.writeString(blockchain_1.convertEthNonce(chainNoncePair.nonceFrom)); | ||
buffer.writeString(blockchain_1.convertEthNonce(chainNoncePair.nonceTo)); | ||
// normalize + to big endian | ||
const amount = currency_1.normalizeAmount(blockchainData.amount, amountPrecision); | ||
buffer.writeString(currency_1.toBigEndianHex(amount)); | ||
let orderRate = constants_1.maxOrderRate; | ||
// market buy orders are not supported, but if they were we would set the amount to max value | ||
if (payloadAndKind.kind === payload_1.SigningPayloadID.placeMarketOrderPayload && blockchainData.buyOrSell === payload_1.BuyOrSellBuy) { | ||
buffer.writeString(constants_1.MAX_ORDER_AMOUNT); | ||
} | ||
else { | ||
const amount = currency_1.normalizeAmount(orderData.source.amount, constants_1.BLOCKCHAIN_PRECISION); | ||
buffer.writeString(currency_1.toBigEndianHex(amount)); | ||
} | ||
let orderRate = constants_1.MIN_ORDER_RATE; | ||
if (payload_1.isLimitOrderPayload(kind)) { | ||
orderRate = currency_1.toBigEndianHex(currency_1.normalizeAmount(blockchainData.limitPrice, 8)); | ||
const rate = blockchain_1.rateWithFees(orderData.rate); | ||
orderRate = currency_1.normalizeAmount(rate.toFormat(8, blockchain_1.bigNumberFormat), constants_1.BLOCKCHAIN_PRECISION); | ||
} | ||
buffer.writeString(currency_1.toBigEndianHex(constants_1.minOrderRate)); | ||
buffer.writeString(orderRate); | ||
buffer.writeString(currency_1.toBigEndianHex(constants_1.maxFeeRate)); | ||
buffer.writeString(currency_1.toBigEndianHex(orderRate)); | ||
buffer.writeString(constants_1.MAX_ORDER_RATE); | ||
buffer.writeString(currency_1.toBigEndianHex(constants_1.MAX_FEE_RATE)); | ||
buffer.writeString(blockchain_1.convertEthNonce(blockchainData.nonceOrder)); | ||
@@ -111,2 +109,2 @@ return buffer.toString('utf8').toUpperCase(); | ||
exports.buildETHMovementSignatureData = buildETHMovementSignatureData; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbkVUSEJsb2NrY2hhaW5EYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NpZ25FVEhCbG9ja2NoYWluRGF0YS9zaWduRVRIQmxvY2tjaGFpbkRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrQ0FBMEM7QUFDMUMsb0RBQXdIO0FBQ3hILGdEQUFtRTtBQUNuRSx3Q0FBaUc7QUFDakcsd0RBQW9EO0FBQ3BELDRDQUFxRTtBQUNyRSxvQ0FBZ0g7QUFDaEgsb0RBQXFDO0FBRXJDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxJQUFZLEVBQVUsRUFBRTtJQUNuRCxNQUFNLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUM7U0FDOUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7U0FDbkIsTUFBTSxFQUFFLENBQUE7SUFFWCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLDBEQUEwRCxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ2hHLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQTtJQUV4RCxPQUFPLGdCQUFnQixDQUFDLFdBQVcsQ0FBQztTQUNqQyxNQUFNLENBQUMsUUFBUSxDQUFDO1NBQ2hCLE1BQU0sRUFBRSxDQUFBO0FBQ2IsQ0FBQyxDQUFBO0FBRUQsNERBQTREO0FBQzVELDJDQUEyQztBQUMzQyx3REFBd0Q7QUFDeEQsb0RBQW9EO0FBQ3BELDBDQUEwQztBQUMxQyxTQUFnQixxQkFBcUIsQ0FBQyxVQUFrQixFQUFFLElBQVk7SUFDcEUsTUFBTSxFQUFFLEdBQUcsNEJBQWUsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDckQsTUFBTSxTQUFTLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDM0MsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxT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 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbkVUSEJsb2NrY2hhaW5EYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NpZ25FVEhCbG9ja2NoYWluRGF0YS9zaWduRVRIQmxvY2tjaGFpbkRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrQ0FBMEM7QUFDMUMsb0RBUzRCO0FBQzVCLGdEQUFtRTtBQUNuRSx3Q0FBbUg7QUFDbkgsd0RBQW9EO0FBQ3BELDRDQUFtSDtBQUNuSCxvQ0FBd0c7QUFDeEcsb0RBQXFDO0FBRXJDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxJQUFZLEVBQVUsRUFBRTtJQUNuRCxNQUFNLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUM7U0FDOUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7U0FDbkIsTUFBTSxFQUFFLENBQUE7SUFFWCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLDBEQUEwRCxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ2hHLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQTtJQUV4RCxPQUFPLGdCQUFnQixDQUFDLFdBQVcsQ0FBQztTQUNqQyxNQUFNLENBQUMsUUFBUSxDQUFDO1NBQ2hCLE1BQU0sRUFBRSxDQUFBO0FBQ2IsQ0FBQyxDQUFBO0FBRUQsNERBQTREO0FBQzVELDJDQUEyQztBQUMzQyx3REFBd0Q7QUFDeEQsb0RBQW9EO0FBQ3BELDBDQUEwQztBQUMxQyxTQUFnQixxQkFBcUIsQ0FBQyxVQUFrQixFQUFFLElBQVk7SUFDcEUsTUFBTSxFQUFFLEdBQUcsNEJBQWUsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDckQsTUFBTSxTQUFTLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDM0MsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxT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 |
@@ -0,1 +1,2 @@ | ||
import { OrderSignatureData } from '../utils/blockchain'; | ||
import { PayloadAndKind } from '../payload'; | ||
@@ -5,3 +6,3 @@ import { BlockchainSignature, APIKey, PresignConfig, Config, ChainNoncePair } from '../types'; | ||
export declare function presignNEOBlockchainData(apiKey: APIKey, config: PresignConfig, data: string): Promise<BlockchainSignature>; | ||
export declare function buildNEOOrderSignatureData(address: string, publicKey: string, assetData: Config['assetData'], marketData: Config['marketData'], payloadAndKind: PayloadAndKind, chainNoncePair: ChainNoncePair): string; | ||
export declare function buildNEOOrderSignatureData(address: string, publicKey: string, payloadAndKind: PayloadAndKind, chainNoncePair: ChainNoncePair, orderData: OrderSignatureData): string; | ||
export declare function buildNEOMovementSignatureData(address: string, publicKey: string, assetData: Config['assetData'], payloadAndKind: PayloadAndKind): string; |
@@ -54,29 +54,29 @@ "use strict"; | ||
exports.presignNEOBlockchainData = presignNEOBlockchainData; | ||
function buildNEOOrderSignatureData(address, publicKey, assetData, marketData, payloadAndKind, chainNoncePair) { | ||
function buildNEOOrderSignatureData(address, publicKey, payloadAndKind, chainNoncePair, orderData) { | ||
const { kind } = payloadAndKind; | ||
const blockchainData = blockchain_1.inferBlockchainData(payloadAndKind); | ||
const { unitA, unitB } = blockchain_1.getUnitPairs(blockchainData.marketName); | ||
let assetFrom = unitA; | ||
let assetTo = unitB; | ||
const amountPrecision = marketData[blockchainData.marketName].minTradeIncrement; | ||
if (blockchainData.buyOrSell === payload_1.BuyOrSellBuy) { | ||
assetFrom = unitB; | ||
assetTo = unitA; | ||
} | ||
// let minOrderRate = orderData.rate | ||
const buffer = new smart_buffer_1.SmartBuffer(); | ||
buffer.writeString(payload_1.kindToOrderPrefix(kind)); // prefix | ||
buffer.writeString(reverseHexString_1.default(getNEOScriptHash_1.default(address))); | ||
buffer.writeString(blockchain_1.getNEOAssetHash(assetData[assetFrom])); | ||
buffer.writeString(blockchain_1.getNEOAssetHash(assetData[assetTo])); | ||
buffer.writeString(blockchain_1.getNEOAssetHash(orderData.source.asset)); | ||
buffer.writeString(blockchain_1.getNEOAssetHash(orderData.destination.asset)); | ||
buffer.writeString(currency_1.toLittleEndianHex(chainNoncePair.nonceFrom)); | ||
buffer.writeString(currency_1.toLittleEndianHex(chainNoncePair.nonceTo)); | ||
const amount = currency_1.normalizeAmount(blockchainData.amount, amountPrecision); | ||
buffer.writeString(currency_1.toLittleEndianHex(amount)); | ||
let orderRate = constants_1.maxOrderRate; | ||
// market buy orders are not supported, but if they were we would set the amount to max value | ||
if (payloadAndKind.kind === payload_1.SigningPayloadID.placeMarketOrderPayload && blockchainData.buyOrSell === payload_1.BuyOrSellBuy) { | ||
buffer.writeString(constants_1.MAX_ORDER_AMOUNT); | ||
} | ||
else { | ||
const amount = currency_1.normalizeAmount(orderData.source.amount, constants_1.BLOCKCHAIN_PRECISION); | ||
buffer.writeString(currency_1.toLittleEndianHex(amount)); | ||
} | ||
let orderRate = constants_1.MIN_ORDER_RATE; | ||
if (payload_1.isLimitOrderPayload(kind)) { | ||
orderRate = currency_1.toLittleEndianHex(currency_1.normalizeAmount(blockchainData.limitPrice, 8)); | ||
const rate = blockchain_1.rateWithFees(orderData.rate); | ||
orderRate = currency_1.normalizeAmount(rate.toFormat(8, blockchain_1.bigNumberFormat), constants_1.BLOCKCHAIN_PRECISION); | ||
} | ||
buffer.writeString(currency_1.toLittleEndianHex(constants_1.minOrderRate)); | ||
buffer.writeString(orderRate); | ||
buffer.writeString(currency_1.toLittleEndianHex(constants_1.maxFeeRate)); | ||
buffer.writeString(currency_1.toLittleEndianHex(orderRate)); | ||
buffer.writeString(constants_1.MAX_ORDER_RATE); | ||
buffer.writeString(currency_1.toLittleEndianHex(constants_1.MAX_FEE_RATE)); | ||
// use the nonceOrder field when we need to sign any order payload. | ||
@@ -107,2 +107,2 @@ buffer.writeString(currency_1.toLittleEndianHex(blockchainData.nonceOrder)); | ||
exports.buildNEOMovementSignatureData = buildNEOMovementSignatureData; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbk5FT0Jsb2NrY2hhaW5EYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NpZ25ORU9CbG9ja2NoYWluRGF0YS9zaWduTkVPQmxvY2tjaGFpbkRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx1Q0FBbUM7QUFDbkMsK0NBQTBDO0FBQzFDLG9EQUEyQjtBQUUzQixnREFBc0U7QUFDdEUsb0RBQXdGO0FBQ3hGLGlGQUF3RDtBQUN4RCw0Q0FBcUU7QUFDckUsd0NBQWlHO0FBQ2pHLG9DQUFnSDtBQUNoSCxpRkFBd0Q7QUFDeEQsd0RBQW9EO0FBRXBELE1BQU0sS0FBSyxHQUFHLElBQUksYUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0FBQzVCLE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBVyxFQUFVLEVBQUU7SUFDckMsTUFBTSxPQUFPLEdBQUcsZ0JBQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDM0MsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQzlELENBQUMsQ0FBQTtBQUVELFNBQWdCLHFCQUFxQixDQUFDLFVBQWtCLEVBQUUsSUFBWTtJQUNwRSxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDcEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDOUMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUN2RCxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFBO0lBRXBELE9BQU87UUFDTCxVQUFV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 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbk5FT0Jsb2NrY2hhaW5EYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NpZ25ORU9CbG9ja2NoYWluRGF0YS9zaWduTkVPQmxvY2tjaGFpbkRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx1Q0FBbUM7QUFDbkMsK0NBQTBDO0FBQzFDLG9EQUEyQjtBQUUzQixnREFBc0U7QUFDdEUsb0RBTzRCO0FBQzVCLGlGQUF3RDtBQUN4RCw0Q0FBbUg7QUFDbkgsd0NBQW1IO0FBQ25ILG9DQUFnSDtBQUNoSCxpRkFBd0Q7QUFDeEQsd0RBQW9EO0FBRXBELE1BQU0sS0FBSyxHQUFHLElBQUksYUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0FBQzVCLE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBVyxFQUFVLEVBQUU7SUFDckMsTUFBTSxPQUFPLEdBQUcsZ0JBQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDM0MsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQzlELENBQUMsQ0FBQTtBQUVELFNBQWdCLHFCQUFxQixDQUFDLFVBQWtCLEVBQUUsSUFBWTtJQUNwRSxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDcEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDOUMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUN2RCxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFBO0lBRXBELE9BQU87UUFDTCxVQUFV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 |
@@ -6,2 +6,3 @@ /// <reference types="node" /> | ||
import { PayloadAndKind, ClientSignedState, SignStatesRequestPayload, AddMovementPayload } from '../payload'; | ||
import { OrderSignatureData } from '../utils/blockchain'; | ||
/** | ||
@@ -64,3 +65,3 @@ * Generates the canonical string for a given payload. | ||
*/ | ||
export declare function determineSignatureNonceTuplesNeeded(assetData: Config['assetData'], blockchainData: BlockchainData): ChainNoncePair[]; | ||
export declare function determineSignatureNonceTuplesNeeded(orderData: OrderSignatureData, blockchainData: BlockchainData): ChainNoncePair[]; | ||
/** | ||
@@ -67,0 +68,0 @@ * @TODO Add documentation. |
@@ -20,3 +20,2 @@ "use strict"; | ||
const types_1 = require("../types"); | ||
const payload_1 = require("../payload"); | ||
const blockchain_1 = require("../utils/blockchain"); | ||
@@ -249,7 +248,8 @@ const signNEOBlockchainData_1 = require("../signNEOBlockchainData"); | ||
const blockchainData = blockchain_1.inferBlockchainData(payloadAndKind); | ||
const signatureNeeded = determineSignatureNonceTuplesNeeded(config.assetData, blockchainData); | ||
const orderData = blockchain_1.buildOrderSignatureData(config.marketData, config.assetData, payloadAndKind); | ||
const signatureNeeded = determineSignatureNonceTuplesNeeded(orderData, blockchainData); | ||
const sigs = await Promise.all(signatureNeeded.map(async (chainNoncePair) => { | ||
switch (chainNoncePair.chain) { | ||
case 'neo': | ||
const neoData = signNEOBlockchainData_1.buildNEOOrderSignatureData(apiKey.child_keys[types_1.BIP44.NEO].address, apiKey.child_keys[types_1.BIP44.NEO].public_key, config.assetData, config.marketData, payloadAndKind, chainNoncePair); | ||
const neoData = signNEOBlockchainData_1.buildNEOOrderSignatureData(apiKey.child_keys[types_1.BIP44.NEO].address, apiKey.child_keys[types_1.BIP44.NEO].public_key, payloadAndKind, chainNoncePair, orderData); | ||
const neoSignature = await signNEOBlockchainData_1.presignNEOBlockchainData(apiKey, config, neoData); | ||
@@ -259,3 +259,3 @@ return Object.assign(Object.assign({}, neoSignature), { nonceFrom: chainNoncePair.nonceFrom, nonceTo: chainNoncePair.nonceTo, publicKey: apiKey.child_keys[types_1.BIP44.NEO].public_key.toLowerCase() }); | ||
case 'eth': | ||
const ethData = signETHBlockchainData_1.buildETHOrderSignatureData(apiKey.child_keys[types_1.BIP44.ETH].address, config.marketData, payloadAndKind, chainNoncePair); | ||
const ethData = signETHBlockchainData_1.buildETHOrderSignatureData(apiKey.child_keys[types_1.BIP44.ETH].address, payloadAndKind, chainNoncePair, orderData); | ||
const ethSignature = await signETHBlockchainData_1.presignETHBlockchainData(apiKey, config, ethData); | ||
@@ -307,11 +307,14 @@ return Object.assign(Object.assign({}, ethSignature), { nonceFrom: chainNoncePair.nonceFrom, nonceTo: chainNoncePair.nonceTo, publicKey: apiKey.child_keys[types_1.BIP44.ETH].public_key }); | ||
const blockchainData = blockchain_1.inferBlockchainData(payloadAndKind); | ||
const signatureNeeded = determineSignatureNonceTuplesNeeded(config.assetData, blockchainData); | ||
const orderData = blockchain_1.buildOrderSignatureData(config.marketData, config.assetData, payloadAndKind); | ||
console.info('blockchain data: ', blockchainData); | ||
console.info('order daat: ', orderData); | ||
const signatureNeeded = determineSignatureNonceTuplesNeeded(orderData, blockchainData); | ||
const sigs = signatureNeeded.map(chainNoncePair => { | ||
switch (chainNoncePair.chain) { | ||
case 'neo': | ||
const neoData = signNEOBlockchainData_1.buildNEOOrderSignatureData(config.wallets.neo.address, config.wallets.neo.publicKey, config.assetData, config.marketData, payloadAndKind, chainNoncePair); | ||
const neoData = signNEOBlockchainData_1.buildNEOOrderSignatureData(config.wallets.neo.address, config.wallets.neo.publicKey, payloadAndKind, chainNoncePair, orderData); | ||
const neoSignature = signNEOBlockchainData_1.signNEOBlockchainData(config.wallets.neo.privateKey, neoData); | ||
return Object.assign(Object.assign({}, neoSignature), { nonceFrom: chainNoncePair.nonceFrom, nonceTo: chainNoncePair.nonceTo, publicKey: config.wallets.neo.publicKey.toLowerCase() }); | ||
case 'eth': | ||
const ethData = signETHBlockchainData_1.buildETHOrderSignatureData(config.wallets.eth.address, config.marketData, payloadAndKind, chainNoncePair); | ||
const ethData = signETHBlockchainData_1.buildETHOrderSignatureData(config.wallets.eth.address, payloadAndKind, chainNoncePair, orderData); | ||
const ethSignature = signETHBlockchainData_1.signETHBlockchainData(config.wallets.eth.privateKey, ethData); | ||
@@ -337,12 +340,5 @@ return Object.assign(Object.assign({}, ethSignature), { nonceFrom: chainNoncePair.nonceFrom, nonceTo: chainNoncePair.nonceTo, publicKey: config.wallets.eth.publicKey.toLowerCase() }); | ||
*/ | ||
function determineSignatureNonceTuplesNeeded(assetData, blockchainData) { | ||
const { unitA, unitB } = blockchain_1.getUnitPairs(blockchainData.marketName); | ||
let assetFrom = unitA; | ||
let assetTo = unitB; | ||
if (blockchainData.buyOrSell === payload_1.BuyOrSellBuy) { | ||
assetFrom = unitB; | ||
assetTo = unitA; | ||
} | ||
const blockchainFrom = assetData[assetFrom].blockchain; | ||
const blockchainTo = assetData[assetTo].blockchain; | ||
function determineSignatureNonceTuplesNeeded(orderData, blockchainData) { | ||
const blockchainFrom = orderData.source.asset.blockchain; | ||
const blockchainTo = orderData.destination.asset.blockchain; | ||
const blockchains = lodash_1.default.uniq([blockchainFrom, blockchainTo]); | ||
@@ -367,3 +363,4 @@ const needed = []; | ||
const blockchainData = blockchain_1.inferBlockchainData(payloadAndKind); | ||
const signatureNeeded = determineSignatureNonceTuplesNeeded(config.assetData, blockchainData); | ||
const orderData = blockchain_1.buildOrderSignatureData(config.marketData, config.assetData, payloadAndKind); | ||
const signatureNeeded = determineSignatureNonceTuplesNeeded(orderData, blockchainData); | ||
const rawData = signatureNeeded.map(chainNoncePair => { | ||
@@ -374,3 +371,3 @@ switch (chainNoncePair.chain) { | ||
payload: payloadAndKind.payload, | ||
raw: signNEOBlockchainData_1.buildNEOOrderSignatureData(config.wallets.neo.address, config.wallets.neo.publicKey, config.assetData, config.marketData, payloadAndKind, chainNoncePair) | ||
raw: signNEOBlockchainData_1.buildNEOOrderSignatureData(config.wallets.neo.address, config.wallets.neo.publicKey, payloadAndKind, chainNoncePair, orderData) | ||
}; | ||
@@ -380,3 +377,3 @@ case 'eth': | ||
payload: payloadAndKind.payload, | ||
raw: signETHBlockchainData_1.buildETHOrderSignatureData(config.wallets.eth.address, config.marketData, payloadAndKind, chainNoncePair) | ||
raw: signETHBlockchainData_1.buildETHOrderSignatureData(config.wallets.eth.address, payloadAndKind, chainNoncePair, orderData) | ||
}; | ||
@@ -397,3 +394,4 @@ case 'btc': | ||
const blockchainData = blockchain_1.inferBlockchainData(payloadAndKind); | ||
const signatureNeeded = determineSignatureNonceTuplesNeeded(config.assetData, blockchainData); | ||
const orderData = blockchain_1.buildOrderSignatureData(config.marketData, config.assetData, payloadAndKind); | ||
const signatureNeeded = determineSignatureNonceTuplesNeeded(orderData, blockchainData); | ||
const rawData = signatureNeeded.map(chainNoncePair => { | ||
@@ -404,3 +402,3 @@ switch (chainNoncePair.chain) { | ||
payload: payloadAndKind.payload, | ||
raw: signNEOBlockchainData_1.buildNEOOrderSignatureData(apiKey.child_keys[types_1.BIP44.NEO].address, apiKey.child_keys[types_1.BIP44.NEO].public_key, config.assetData, config.marketData, payloadAndKind, chainNoncePair) | ||
raw: signNEOBlockchainData_1.buildNEOOrderSignatureData(apiKey.child_keys[types_1.BIP44.NEO].address, apiKey.child_keys[types_1.BIP44.NEO].public_key, payloadAndKind, chainNoncePair, orderData) | ||
}; | ||
@@ -410,3 +408,3 @@ case 'eth': | ||
payload: payloadAndKind.payload, | ||
raw: signETHBlockchainData_1.buildETHOrderSignatureData(apiKey.child_keys[types_1.BIP44.ETH].address, config.marketData, payloadAndKind, chainNoncePair) | ||
raw: signETHBlockchainData_1.buildETHOrderSignatureData(apiKey.child_keys[types_1.BIP44.ETH].address, payloadAndKind, chainNoncePair, orderData) | ||
}; | ||
@@ -600,2 +598,2 @@ case 'btc': | ||
exports.alterOrderPayloadForGraphql = alterOrderPayloadForGraphql; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnblBheWxvYWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2lnblBheWxvYWQvc2lnblBheWxvYWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxnRUFBMkM7QUFDM0MsOERBQXFDO0FBQ3JDLG9EQUFzQjtBQUN0Qix1Q0FBbUM7QUFDbkMsZ0VBQXVDO0FBQ3ZDLGdFQUF1QztBQUN2QyxvRUFBMkM7QUFDM0MsZ0VBQXVDO0FBRXZDLDZEQUFvQztBQUNwQyw2REFBb0M7QUFDcEMseURBQWdDO0FBQ2hDLHNDQUFpRDtBQUNqRCxrRUFPb0M7QUFDcEMsb0NBUWlCO0FBQ2pCLHdDQU9tQjtBQUNuQixvREFBOEY7QUFDOUYsb0VBS2lDO0FBQ2pDLG9FQUtpQztBQUVqQyxvRUFBOEQ7QUFFOUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxhQUFFLENBQUMsV0FBVyxDQUFDLENBQUE7QUFFakMsTUFBTSxrQkFBa0IsR0FBRyxVQUFVLENBQUE7QUFFckM7Ozs7O0dBS0c7QUFDVSxRQUFBLGVBQWUsR0FBRyxpQkFBTyxDQUNwQyxpQkFBTyxFQUNQLElBQUksQ0FBQyxTQUFTLEVBQ2QsQ0FBQyxDQUFDLEVBQUUsQ0FDRixNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztLQUNYLElBQUksRUFBRTtLQUNOLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLGlDQUFNLEdBQUcsS0FBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsQ0FBQyxFQUN2RCxjQUFJLENBQUMsaUJBQU8sQ0FBQyxtQkFBUyxDQUFDLENBQUMsQ0FDekIsQ0FBQTtBQUVEOzs7R0FHRztBQUNVLFFBQUEsbUJBQW1CLEdBQUcsQ0FBQyxJQUFzQixFQUFFLE9BQWUsRUFBVSxFQUFFO0lBQ3JGLFFBQVEsSUFBSSxFQUFFO1FBQ1osS0FBSyxtQ0FBZ0IsQ0FBQyxpQkFB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 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnblBheWxvYWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2lnblBheWxvYWQvc2lnblBheWxvYWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxnRUFBMkM7QUFDM0MsOERBQXFDO0FBQ3JDLG9EQUFzQjtBQUN0Qix1Q0FBbUM7QUFDbkMsZ0VBQXVDO0FBQ3ZDLGdFQUF1QztBQUN2QyxvRUFBMkM7QUFDM0MsZ0VBQXVDO0FBRXZDLDZEQUFvQztBQUNwQyw2REFBb0M7QUFDcEMseURBQWdDO0FBQ2hDLHNDQUFpRDtBQUNqRCxrRUFPb0M7QUFDcEMsb0NBUWlCO0FBUWpCLG9EQUs0QjtBQUM1QixvRUFLaUM7QUFDakMsb0VBS2lDO0FBRWpDLG9FQUE4RDtBQUU5RCxNQUFNLEtBQUssR0FBRyxJQUFJLGFBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQTtBQUVqQyxNQUFNLGtCQUFrQixHQUFHLFVBQVUsQ0FBQTtBQUVyQzs7Ozs7R0FLRztBQUNVLFFBQUEsZUFBZSxHQUFHLGlCQUFPLENBQ3BDLGlCQUFPLEVBQ1AsSUFBSSxDQUFDLFNBQVMsRUFDZCxDQUFDLENBQUMsRUFBRSxDQUNGLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQ1gsSUFBSSxFQUFFO0tBQ04sTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsaUNBQU0sR0FBRyxLQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFHLEVBQUUsRUFBRSxDQUFDLEVBQ3ZELGNBQUksQ0FBQyxpQkFBTyxDQUFDLG1CQUFTLENBQUMsQ0FBQyxDQUN6QixDQUFBO0FBRUQ7OztHQUdHO0FBQ1UsUUFBQSxtQkFBbUIsR0FBRyxDQUFDLElBQXNCLEVBQUUsT0FBZSxFQUFVLEVBQUU7SUFDckYsUUFBUSxJQUFJLEVBQUU7UUFDWixLQUFLLG1DQUFnQixDQUFDLGlCQUFpQixDQUFDO1FBQ3hD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 |
@@ -0,1 +1,2 @@ | ||
import BigNumber from 'bignumber.js'; | ||
/** | ||
@@ -12,3 +13,3 @@ * @TODO Add documentation. | ||
readonly noncesTo: number[]; | ||
readonly limitPrice: string; | ||
readonly limitPrice: BigNumber; | ||
} | ||
@@ -15,0 +16,0 @@ /** |
import { PayloadAndKind } from '../../payload'; | ||
import { Config, BlockchainData, BlockchainMovement, Asset } from '../../types'; | ||
import BigNumber from 'bignumber.js'; | ||
import * as EC from 'elliptic'; | ||
export declare const ellipticContext: EC.ec; | ||
export declare const BN: typeof BigNumber; | ||
export declare const bigNumberFormat: { | ||
decimalSeparator: string; | ||
groupSeparator: string; | ||
groupSize: number; | ||
prefix: string; | ||
}; | ||
export declare function inferBlockchainData(payloadAndKind: PayloadAndKind): BlockchainData; | ||
@@ -20,3 +28,20 @@ export declare function getBlockchainMovement(wallets: { | ||
}, assets: Config['assetData'], payloadAndKind: PayloadAndKind): BlockchainMovement; | ||
export declare function getLimitPrice(marketName: string, buyOrSell: string, limitPrice: any): string; | ||
export interface AssetAmount { | ||
amount: string; | ||
asset: Asset; | ||
symbol: string; | ||
} | ||
export interface OrderSignatureData { | ||
destination: AssetAmount; | ||
meAmount: string; | ||
meRate: string; | ||
precision: number; | ||
rate: BigNumber; | ||
source: AssetAmount; | ||
} | ||
export declare function buildOrderSignatureData(marketData: Config['marketData'], assetData: Config['assetData'], payloadAndKind: PayloadAndKind): OrderSignatureData; | ||
export declare function invertPrice(amount: BigNumber): BigNumber; | ||
export declare function exchangeAmount(price: BigNumber, amount: string): string; | ||
export declare function rateWithFees(rate: BigNumber): BigNumber; | ||
export declare function getLimitPrice(marketName: string, buyOrSell: string, limitPrice: any): BigNumber; | ||
export declare function getUnitPairs(market: string): any; | ||
@@ -23,0 +48,0 @@ export declare function convertEthNonce(nonce: number): string; |
@@ -21,4 +21,4 @@ "use strict"; | ||
exports.ellipticContext = new EC.ec('secp256k1'); | ||
const BN = bignumber_js_1.default.clone({ DECIMAL_PLACES: 16, ROUNDING_MODE: bignumber_js_1.default.ROUND_FLOOR }); | ||
const bigNumberFormat = { | ||
exports.BN = bignumber_js_1.default.clone({ DECIMAL_PLACES: 16 }); | ||
exports.bigNumberFormat = { | ||
decimalSeparator: '.', | ||
@@ -38,3 +38,3 @@ groupSeparator: '', | ||
case payload_1.SigningPayloadID.placeStopLimitOrderPayload: | ||
let limitPrice = ''; | ||
let limitPrice = new bignumber_js_1.default(0); | ||
if (payload_1.isLimitOrderPayload(kind)) { | ||
@@ -102,15 +102,76 @@ limitPrice = getLimitPrice(payload.marketName, payload.buyOrSell, payload.limitPrice); | ||
exports.getBlockchainMovement = getBlockchainMovement; | ||
function buildOrderSignatureData(marketData, assetData, payloadAndKind) { | ||
const blockchainData = inferBlockchainData(payloadAndKind); | ||
const { unitA, unitB } = getUnitPairs(blockchainData.marketName); | ||
const amountPrecision = marketData[blockchainData.marketName].minTradeIncrement; | ||
const assetA = assetData[unitA]; | ||
const assetB = assetData[unitB]; | ||
// Amount of order always in asset A in ME | ||
const amountOfA = blockchainData.amount; | ||
// Price is always in terms of asset B in ME | ||
const bPerA = blockchainData.limitPrice; | ||
const aPerB = invertPrice(blockchainData.limitPrice); | ||
const amountOfB = exchangeAmount(bPerA, amountOfA); | ||
switch (blockchainData.buyOrSell) { | ||
case payload_1.BuyOrSellBuy: | ||
return { | ||
destination: { | ||
amount: amountOfA, | ||
asset: assetA, | ||
symbol: unitA | ||
}, | ||
meAmount: amountOfA, | ||
meRate: bPerA.toFormat(exports.bigNumberFormat), | ||
precision: amountPrecision, | ||
rate: aPerB, | ||
source: { | ||
amount: amountOfB, | ||
asset: assetB, | ||
symbol: unitB | ||
} | ||
}; | ||
case payload_1.BuyOrSellSell: | ||
return { | ||
destination: { | ||
amount: amountOfB, | ||
asset: assetB, | ||
symbol: unitB | ||
}, | ||
meAmount: amountOfA, | ||
meRate: bPerA.toFormat(exports.bigNumberFormat), | ||
precision: amountPrecision, | ||
rate: bPerA, | ||
source: { | ||
amount: amountOfA, | ||
asset: assetA, | ||
symbol: unitA | ||
} | ||
}; | ||
default: | ||
throw new Error('Invalid order side'); | ||
} | ||
} | ||
exports.buildOrderSignatureData = buildOrderSignatureData; | ||
function invertPrice(amount) { | ||
return new exports.BN(1).div(amount); | ||
} | ||
exports.invertPrice = invertPrice; | ||
function exchangeAmount(price, amount) { | ||
const total = new bignumber_js_1.default(amount).times(price); | ||
return total.toFormat(8, exports.bigNumberFormat); | ||
} | ||
exports.exchangeAmount = exchangeAmount; | ||
function rateWithFees(rate) { | ||
return rate.times(399).div(400); | ||
} | ||
exports.rateWithFees = rateWithFees; | ||
function getLimitPrice(marketName, buyOrSell, limitPrice) { | ||
const { unitA, unitB } = getUnitPairs(marketName); | ||
let assetFrom = unitB; | ||
if (buyOrSell === payload_1.BuyOrSellSell) { | ||
assetFrom = unitA; | ||
} | ||
const { unitB } = getUnitPairs(marketName); | ||
const assetFrom = unitB; | ||
if (limitPrice.currency_a === assetFrom) { | ||
return limitPrice.amount; | ||
return new bignumber_js_1.default(limitPrice.amount); | ||
} | ||
else if (limitPrice.currency_b === assetFrom) { | ||
const amount = new BN(limitPrice.amount); | ||
const reciprocal = new BN(1).div(amount); | ||
return reciprocal.toFormat(8, bigNumberFormat); | ||
const amount = new exports.BN(limitPrice.amount); | ||
return new exports.BN(1).div(amount); | ||
} | ||
@@ -187,2 +248,2 @@ throw Error(`Could not determine limit price for market: ${marketName} with direction ${buyOrSell} and limit price ${JSON.stringify(limitPrice)}`); | ||
exports.getETHAssetID = getETHAssetID; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tjaGFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91dGlscy9ibG9ja2NoYWluL2Jsb2NrY2hhaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQXVIO0FBRXZILDJFQUFrRDtBQUNsRCwwQ0FBZ0U7QUFDaEUsMkVBQWtEO0FBQ2xELGdFQUFvQztBQUNwQyw2Q0FBOEI7QUFFOUIsb0JBQW9CO0FBQ1AsUUFBQSxlQUFlLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0FBRXJELE1BQU0sRUFBRSxHQUFHLHNCQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsY0FBYyxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsc0JBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFBO0FBRXhGLE1BQU0sZUFBZSxHQUFHO0lBQ3RCLGdCQUFnQixFQUFFLEdBQUc7SUFDckIsY0FBYyxFQUFFLEVBQUU7SUFDbEIsU0FBUyxFQUFFLEVBQUU7SUFDYixNQUFNLEVBQUUsRUFBRTtDQUNYLENBQUE7QUFFRCxtRkFBbUY7QUFDbkYscUZBQXFGO0FBQ3JGLFNBQWdCLG1CQUFtQixDQUFDLGNBQThCO0lBQ2hFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsY0FBYyxDQUFBO0lBRXhDLFFBQVEsSUFBSSxFQUFFO1FBQ1osS0FBSywwQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FBQztRQUM5QyxLQUFLLDBCQUFnQixDQUFDLDJCQUEyQixDQUFDO1FBQ2xELEtBQUssMEJBQWdCLENBQUMsc0JBQXNCLENBQUM7UUFDN0MsS0FBSywwQkFBZ0IsQ0FBQywwQkFBMEI7WUFDOUMsSUFBSSxVQUFVLEdBQVcsRUFBRSxDQUFBO1lBRTNCLElBQUksNkJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzdCLFVBQVUsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxP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 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tjaGFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91dGlscy9ibG9ja2NoYWluL2Jsb2NrY2hhaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsMkNBT3NCO0FBRXRCLDJFQUFrRDtBQUNsRCwwQ0FBZ0U7QUFDaEUsMkVBQWtEO0FBQ2xELGdFQUFvQztBQUNwQyw2Q0FBOEI7QUFFOUIsb0JBQW9CO0FBQ1AsUUFBQSxlQUFlLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0FBRXhDLFFBQUEsRUFBRSxHQUFHLHNCQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsY0FBYyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7QUFFNUMsUUFBQSxlQUFlLEdBQUc7SUFDN0IsZ0JBQWdCLEVBQUUsR0FBRztJQUNyQixjQUFjLEVBQUUsRUFBRTtJQUNsQixTQUFTLEVBQUUsRUFBRTtJQUNiLE1BQU0sRUFBRSxFQUFFO0NBQ1gsQ0FBQTtBQUVELG1GQUFtRjtBQUNuRixxRkFBcUY7QUFDckYsU0FBZ0IsbUJBQW1CLENBQUMsY0FBOEI7SUFDaEUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxjQUFjLENBQUE7SUFFeEMsUUFBUSxJQUFJLEVBQUU7UUFDWixLQUFLLDBCQUFnQixDQUFDLHVCQUF1QixDQUFDO1FBQzlDLEtBQUssMEJBQWdCLENBQUMsMkJBQTJCLENBQUM7UUFDbEQsS0FBSywwQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQztRQUM3QyxLQUFLLDBCQUFnQixDQUFDLDBCQUEwQjtZQUM5QyxJQUFJLFVBQVUsR0FBYyxJQUFJLHNCQUFTLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDNUMsSUFBSSw2QkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDN0IsVUFBVSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxT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 |
@@ -27,2 +27,7 @@ { | ||
"precision": 18 | ||
}, | ||
"bat": { | ||
"blockchain": "eth", | ||
"hash": "abcd", | ||
"precision": 18 | ||
} | ||
@@ -102,2 +107,8 @@ }, | ||
"minTradeIncrementB": 4 | ||
}, | ||
"eth_bat": { | ||
"minTickSize": 2, | ||
"minTradeSize": 5, | ||
"minTradeIncrement": 8, | ||
"minTradeIncrementB": 5 | ||
} | ||
@@ -104,0 +115,0 @@ }, |
@@ -48,2 +48,8 @@ { | ||
}, | ||
"eth_bat": { | ||
"minTickSize": 2, | ||
"minTradeSize": 5, | ||
"minTradeIncrement": 5, | ||
"minTradeIncrementB": 5 | ||
}, | ||
"gas_eth": { | ||
@@ -50,0 +56,0 @@ "minTickSize": 8, |
@@ -68,6 +68,6 @@ { | ||
"value": "10.000000", | ||
"currency": "gas" | ||
"currency": "neo" | ||
}, | ||
"buyOrSell": "SELL", | ||
"marketName": "gas_neo", | ||
"marketName": "neo_gas", | ||
"cancellationPolicy": "immediate_or_cancel", | ||
@@ -74,0 +74,0 @@ "limitPrice": { |
@@ -1,3 +0,5 @@ | ||
export declare const minOrderRate = 0; | ||
export declare const maxOrderRate = "ffffffffffffffff"; | ||
export declare const maxFeeRate = 250000; | ||
export declare const MIN_ORDER_RATE = 0; | ||
export declare const MAX_ORDER_RATE = "ffffffffffffffff"; | ||
export declare const MAX_ORDER_AMOUNT = "ffffffffffffffff"; | ||
export declare const MAX_FEE_RATE = 0.0025; | ||
export declare const BLOCKCHAIN_PRECISION = 8; |
@@ -1,4 +0,6 @@ | ||
export const minOrderRate = 0; | ||
export const maxOrderRate = 'ffffffffffffffff'; // 18446744073709551615 | ||
export const maxFeeRate = 250000; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29uc3RhbnRzL3JhdGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLENBQUE7QUFDN0IsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLGtCQUFrQixDQUFBLENBQUMsdUJBQXVCO0FBQ3RFLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUEifQ== | ||
export const MIN_ORDER_RATE = 0; | ||
export const MAX_ORDER_RATE = 'ffffffffffffffff'; // 18446744073709551615 | ||
export const MAX_ORDER_AMOUNT = MAX_ORDER_RATE; | ||
export const MAX_FEE_RATE = 0.0025; | ||
export const BLOCKCHAIN_PRECISION = 8; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29uc3RhbnRzL3JhdGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLENBQUE7QUFDL0IsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLGtCQUFrQixDQUFBLENBQUMsdUJBQXVCO0FBQ3hFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLGNBQWMsQ0FBQTtBQUM5QyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFBO0FBQ2xDLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsQ0FBQSJ9 |
@@ -19,2 +19,2 @@ import { fillRPoolIfNeeded } from './fillRPool'; | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZVByZXNpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tcGMvY29tcHV0ZVByZXNpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDL0MsT0FBTyxFQUF1QixlQUFlLEVBQWdCLE1BQU0sY0FBYyxDQUFBO0FBRWpGLE1BQU0sQ0FBQyxLQUFLLFVBQVUsYUFBYSxDQUFDLE1BQTJCO0lBQzdELE1BQU0sU0FBUyxHQUFHLE1BQU0sTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBQzVDLE1BQU0saUJBQWlCLENBQUM7UUFDdEIsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO1FBQzdCLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtRQUM3QixhQUFhLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztLQUN6RCxDQUFDLENBQUE7SUFFRixNQUFNLENBQUMsY0FBYyxFQUFFLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQzFELFNBQVMsQ0FBQyxjQUFjLENBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUM3QixNQUFNLENBQUMsV0FBVyxFQUNsQixlQUFlLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUNuQyxDQUMyQixDQUFBO0lBQzlCLElBQUksY0FBYyxLQUFLLEtBQUssRUFBRTtRQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixHQUFHLG9CQUFvQixDQUFDLENBQUE7S0FDbkU7SUFDRCxPQUFPO1FBQ0wsTUFBTSxFQUFFLG9CQUFvQjtRQUM1QixDQUFDO0tBQ0YsQ0FBQTtBQUNILENBQUMifQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZVByZXNpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tcGMvY29tcHV0ZVByZXNpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDL0MsT0FBTyxFQUF1QixlQUFlLEVBQWdCLE1BQU0sY0FBYyxDQUFBO0FBRWpGLE1BQU0sQ0FBQyxLQUFLLFVBQVUsYUFBYSxDQUFDLE1BQTJCO0lBQzdELE1BQU0sU0FBUyxHQUFHLE1BQU0sTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBQzVDLE1BQU0saUJBQWlCLENBQUM7UUFDdEIsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO1FBQzdCLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtRQUM3QixhQUFhLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztLQUN6RCxDQUFDLENBQUE7SUFFRixNQUFNLENBQUMsY0FBYyxFQUFFLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQzFELFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQ25GLENBQUE7SUFDOUIsSUFBSSxjQUFjLEtBQUssS0FBSyxFQUFFO1FBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLEdBQUcsb0JBQW9CLENBQUMsQ0FBQTtLQUNuRTtJQUNELE9BQU87UUFDTCxNQUFNLEVBQUUsb0JBQW9CO1FBQzVCLENBQUM7S0FDRixDQUFBO0FBQ0gsQ0FBQyJ9 |
@@ -0,6 +1,7 @@ | ||
import { OrderSignatureData } from '../utils/blockchain'; | ||
import { PayloadAndKind } from '../payload'; | ||
import { Config, BlockchainSignature, APIKey, PresignConfig, ChainNoncePair } from '../types'; | ||
import { BlockchainSignature, APIKey, PresignConfig, ChainNoncePair } from '../types'; | ||
export declare function signETHBlockchainData(privateKey: string, data: string): BlockchainSignature; | ||
export declare function presignETHBlockchainData(apiKey: APIKey, config: PresignConfig, data: string): Promise<BlockchainSignature>; | ||
export declare function buildETHOrderSignatureData(address: string, marketData: Config['marketData'], payloadAndKind: PayloadAndKind, chainNoncePair: ChainNoncePair): string; | ||
export declare function buildETHOrderSignatureData(address: string, payloadAndKind: PayloadAndKind, chainNoncePair: ChainNoncePair, orderData: OrderSignatureData): string; | ||
export declare function buildETHMovementSignatureData(address: string, payloadAndKind: PayloadAndKind): string; |
import { SmartBuffer } from 'smart-buffer'; | ||
import { inferBlockchainData, getUnitPairs, convertEthNonce, getETHAssetID, ellipticContext } from '../utils/blockchain'; | ||
import { inferBlockchainData, getUnitPairs, convertEthNonce, getETHAssetID, ellipticContext, bigNumberFormat, rateWithFees } from '../utils/blockchain'; | ||
import { toBigEndianHex, normalizeAmount } from '../utils/currency'; | ||
import { isLimitOrderPayload, kindToOrderPrefix, BuyOrSellBuy } from '../payload'; | ||
import { isLimitOrderPayload, kindToOrderPrefix, SigningPayloadID, BuyOrSellBuy } from '../payload'; | ||
import { computePresig } from '../mpc/computePresig'; | ||
import { minOrderRate, maxOrderRate, maxFeeRate } from '../constants'; | ||
import { BLOCKCHAIN_PRECISION, MIN_ORDER_RATE, MAX_FEE_RATE, MAX_ORDER_RATE, MAX_ORDER_AMOUNT } from '../constants'; | ||
import { Blockchain, BIP44 } from '../types'; | ||
@@ -57,30 +57,28 @@ import createKeccakHash from 'keccak'; | ||
} | ||
export function buildETHOrderSignatureData(address, marketData, payloadAndKind, chainNoncePair) { | ||
export function buildETHOrderSignatureData(address, payloadAndKind, chainNoncePair, orderData) { | ||
const { kind } = payloadAndKind; | ||
const blockchainData = inferBlockchainData(payloadAndKind); | ||
const { unitA, unitB } = getUnitPairs(blockchainData.marketName); | ||
let assetFrom = unitA; | ||
let assetTo = unitB; | ||
const amountPrecision = marketData[blockchainData.marketName].minTradeIncrement; | ||
if (blockchainData.buyOrSell === BuyOrSellBuy) { | ||
assetFrom = unitB; | ||
assetTo = unitA; | ||
} | ||
const buffer = new SmartBuffer(); | ||
buffer.writeString(kindToOrderPrefix(kind)); | ||
buffer.writeString(address); | ||
buffer.writeString(getETHAssetID(assetFrom)); | ||
buffer.writeString(getETHAssetID(assetTo)); | ||
buffer.writeString(getETHAssetID(orderData.source.symbol)); | ||
buffer.writeString(getETHAssetID(orderData.destination.symbol)); | ||
buffer.writeString(convertEthNonce(chainNoncePair.nonceFrom)); | ||
buffer.writeString(convertEthNonce(chainNoncePair.nonceTo)); | ||
// normalize + to big endian | ||
const amount = normalizeAmount(blockchainData.amount, amountPrecision); | ||
buffer.writeString(toBigEndianHex(amount)); | ||
let orderRate = maxOrderRate; | ||
// market buy orders are not supported, but if they were we would set the amount to max value | ||
if (payloadAndKind.kind === SigningPayloadID.placeMarketOrderPayload && blockchainData.buyOrSell === BuyOrSellBuy) { | ||
buffer.writeString(MAX_ORDER_AMOUNT); | ||
} | ||
else { | ||
const amount = normalizeAmount(orderData.source.amount, BLOCKCHAIN_PRECISION); | ||
buffer.writeString(toBigEndianHex(amount)); | ||
} | ||
let orderRate = MIN_ORDER_RATE; | ||
if (isLimitOrderPayload(kind)) { | ||
orderRate = toBigEndianHex(normalizeAmount(blockchainData.limitPrice, 8)); | ||
const rate = rateWithFees(orderData.rate); | ||
orderRate = normalizeAmount(rate.toFormat(8, bigNumberFormat), BLOCKCHAIN_PRECISION); | ||
} | ||
buffer.writeString(toBigEndianHex(minOrderRate)); | ||
buffer.writeString(orderRate); | ||
buffer.writeString(toBigEndianHex(maxFeeRate)); | ||
buffer.writeString(toBigEndianHex(orderRate)); | ||
buffer.writeString(MAX_ORDER_RATE); | ||
buffer.writeString(toBigEndianHex(MAX_FEE_RATE)); | ||
buffer.writeString(convertEthNonce(blockchainData.nonceOrder)); | ||
@@ -102,2 +100,2 @@ return buffer.toString('utf8').toUpperCase(); | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbkVUSEJsb2NrY2hhaW5EYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NpZ25FVEhCbG9ja2NoYWluRGF0YS9zaWduRVRIQmxvY2tjaGFpbkRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDeEgsT0FBTyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQWtCLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNqRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3JFLE9BQU8sRUFBVSxVQUFVLEVBQUUsS0FBSyxFQUE4RCxNQUFNLFVBQVUsQ0FBQTtBQUNoSCxPQUFPLGdCQUFnQixNQUFNLFFBQVEsQ0FBQTtBQUVyQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsSUFBWSxFQUFVLEVBQUU7SUFDbkQsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsV0FBVyxDQUFDO1NBQzlDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO1NBQ25CLE1BQU0sRUFBRSxDQUFBO0lBRVgsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQywwREFBMEQsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUNoRyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUE7SUFFeEQsT0FBTyxnQkFBZ0IsQ0FB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 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbkVUSEJsb2NrY2hhaW5EYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NpZ25FVEhCbG9ja2NoYWluRGF0YS9zaWduRVRIQmxvY2tjaGFpbkRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUMxQyxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixlQUFlLEVBQ2YsYUFBYSxFQUNiLGVBQWUsRUFFZixlQUFlLEVBQ2YsWUFBWSxFQUNiLE1BQU0scUJBQXFCLENBQUE7QUFDNUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQWtCLGdCQUFnQixFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNuSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDcEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ25ILE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUE4RCxNQUFNLFVBQVUsQ0FBQTtBQUN4RyxPQUFPLGdCQUFnQixNQUFNLFFBQVEsQ0FBQTtBQUVyQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsSUFBWSxFQUFVLEVBQUU7SUFDbkQsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsV0FBVyxDQUFDO1NBQzlDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO1NBQ25CLE1BQU0sRUFBRSxDQUFBO0lBRVgsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQywwREFBMEQsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUNoRyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFD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 |
@@ -0,1 +1,2 @@ | ||
import { OrderSignatureData } from '../utils/blockchain'; | ||
import { PayloadAndKind } from '../payload'; | ||
@@ -5,3 +6,3 @@ import { BlockchainSignature, APIKey, PresignConfig, Config, ChainNoncePair } from '../types'; | ||
export declare function presignNEOBlockchainData(apiKey: APIKey, config: PresignConfig, data: string): Promise<BlockchainSignature>; | ||
export declare function buildNEOOrderSignatureData(address: string, publicKey: string, assetData: Config['assetData'], marketData: Config['marketData'], payloadAndKind: PayloadAndKind, chainNoncePair: ChainNoncePair): string; | ||
export declare function buildNEOOrderSignatureData(address: string, publicKey: string, payloadAndKind: PayloadAndKind, chainNoncePair: ChainNoncePair, orderData: OrderSignatureData): string; | ||
export declare function buildNEOMovementSignatureData(address: string, publicKey: string, assetData: Config['assetData'], payloadAndKind: PayloadAndKind): string; |
@@ -5,6 +5,6 @@ import { ec as EC } from 'elliptic'; | ||
import { normalizeAmount, toLittleEndianHex } from '../utils/currency'; | ||
import { getUnitPairs, inferBlockchainData, getNEOAssetHash } from '../utils/blockchain'; | ||
import { getUnitPairs, inferBlockchainData, getNEOAssetHash, bigNumberFormat, rateWithFees } from '../utils/blockchain'; | ||
import reverseHexString from '../utils/reverseHexString'; | ||
import { maxOrderRate, maxFeeRate, minOrderRate } from '../constants'; | ||
import { isLimitOrderPayload, kindToOrderPrefix, BuyOrSellBuy } from '../payload'; | ||
import { BLOCKCHAIN_PRECISION, MIN_ORDER_RATE, MAX_FEE_RATE, MAX_ORDER_RATE, MAX_ORDER_AMOUNT } from '../constants'; | ||
import { isLimitOrderPayload, kindToOrderPrefix, SigningPayloadID, BuyOrSellBuy } from '../payload'; | ||
import { Blockchain, BIP44 } from '../types'; | ||
@@ -48,29 +48,29 @@ import getNEOScriptHash from '../utils/getNEOScriptHash'; | ||
} | ||
export function buildNEOOrderSignatureData(address, publicKey, assetData, marketData, payloadAndKind, chainNoncePair) { | ||
export function buildNEOOrderSignatureData(address, publicKey, payloadAndKind, chainNoncePair, orderData) { | ||
const { kind } = payloadAndKind; | ||
const blockchainData = inferBlockchainData(payloadAndKind); | ||
const { unitA, unitB } = getUnitPairs(blockchainData.marketName); | ||
let assetFrom = unitA; | ||
let assetTo = unitB; | ||
const amountPrecision = marketData[blockchainData.marketName].minTradeIncrement; | ||
if (blockchainData.buyOrSell === BuyOrSellBuy) { | ||
assetFrom = unitB; | ||
assetTo = unitA; | ||
} | ||
// let minOrderRate = orderData.rate | ||
const buffer = new SmartBuffer(); | ||
buffer.writeString(kindToOrderPrefix(kind)); // prefix | ||
buffer.writeString(reverseHexString(getNEOScriptHash(address))); | ||
buffer.writeString(getNEOAssetHash(assetData[assetFrom])); | ||
buffer.writeString(getNEOAssetHash(assetData[assetTo])); | ||
buffer.writeString(getNEOAssetHash(orderData.source.asset)); | ||
buffer.writeString(getNEOAssetHash(orderData.destination.asset)); | ||
buffer.writeString(toLittleEndianHex(chainNoncePair.nonceFrom)); | ||
buffer.writeString(toLittleEndianHex(chainNoncePair.nonceTo)); | ||
const amount = normalizeAmount(blockchainData.amount, amountPrecision); | ||
buffer.writeString(toLittleEndianHex(amount)); | ||
let orderRate = maxOrderRate; | ||
// market buy orders are not supported, but if they were we would set the amount to max value | ||
if (payloadAndKind.kind === SigningPayloadID.placeMarketOrderPayload && blockchainData.buyOrSell === BuyOrSellBuy) { | ||
buffer.writeString(MAX_ORDER_AMOUNT); | ||
} | ||
else { | ||
const amount = normalizeAmount(orderData.source.amount, BLOCKCHAIN_PRECISION); | ||
buffer.writeString(toLittleEndianHex(amount)); | ||
} | ||
let orderRate = MIN_ORDER_RATE; | ||
if (isLimitOrderPayload(kind)) { | ||
orderRate = toLittleEndianHex(normalizeAmount(blockchainData.limitPrice, 8)); | ||
const rate = rateWithFees(orderData.rate); | ||
orderRate = normalizeAmount(rate.toFormat(8, bigNumberFormat), BLOCKCHAIN_PRECISION); | ||
} | ||
buffer.writeString(toLittleEndianHex(minOrderRate)); | ||
buffer.writeString(orderRate); | ||
buffer.writeString(toLittleEndianHex(maxFeeRate)); | ||
buffer.writeString(toLittleEndianHex(orderRate)); | ||
buffer.writeString(MAX_ORDER_RATE); | ||
buffer.writeString(toLittleEndianHex(MAX_FEE_RATE)); | ||
// use the nonceOrder field when we need to sign any order payload. | ||
@@ -99,2 +99,2 @@ buffer.writeString(toLittleEndianHex(blockchainData.nonceOrder)); | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbk5FT0Jsb2NrY2hhaW5EYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NpZ25ORU9CbG9ja2NoYWluRGF0YS9zaWduTkVPQmxvY2tjaGFpbkRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDbkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUMxQyxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUE7QUFFM0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ3RFLE9BQU8sRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDeEYsT0FBTyxnQkFBZ0IsTUFBTSwyQkFBMkIsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDckUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFrQixZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDakcsT0FBTyxFQUF1QixVQUFVLEVBQXlCLEtBQUssRUFBMEIsTUFBTSxVQUFVLENBQUE7QUFDaEgsT0FBTyxnQkFBZ0IsTUFBTSwyQkFBMkIsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFFcEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUE7QUFDNUIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFXLEVBQVUsRUFBRTtJQUNyQyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQzNDLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcs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 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbk5FT0Jsb2NrY2hhaW5EYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NpZ25ORU9CbG9ja2NoYWluRGF0YS9zaWduTkVPQmxvY2tjaGFpbkRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDbkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUMxQyxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUE7QUFFM0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ3RFLE9BQU8sRUFDTCxZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLGVBQWUsRUFFZixlQUFlLEVBQ2YsWUFBWSxFQUNiLE1BQU0scUJBQXFCLENBQUE7QUFDNUIsT0FBTyxnQkFBZ0IsTUFBTSwyQkFBMkIsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDbkgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFrQixnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDbkgsT0FBTyxFQUF1QixVQUFVLEVBQXlCLEtBQUssRUFBMEIsTUFBTSxVQUFVLENBQUE7QUFDaEgsT0FBTyxnQkFBZ0IsTUFBTSwyQkFBMkIsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFFcEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUE7QUFDNUIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFXLEVBQVUsRUFBRTtJQUNyQyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFB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 |
@@ -6,2 +6,3 @@ /// <reference types="node" /> | ||
import { PayloadAndKind, ClientSignedState, SignStatesRequestPayload, AddMovementPayload } from '../payload'; | ||
import { OrderSignatureData } from '../utils/blockchain'; | ||
/** | ||
@@ -64,3 +65,3 @@ * Generates the canonical string for a given payload. | ||
*/ | ||
export declare function determineSignatureNonceTuplesNeeded(assetData: Config['assetData'], blockchainData: BlockchainData): ChainNoncePair[]; | ||
export declare function determineSignatureNonceTuplesNeeded(orderData: OrderSignatureData, blockchainData: BlockchainData): ChainNoncePair[]; | ||
/** | ||
@@ -67,0 +68,0 @@ * @TODO Add documentation. |
@@ -15,4 +15,3 @@ import hexEncoding from 'crypto-js/enc-hex'; | ||
import { BIP44 } from '../types'; | ||
import { BuyOrSellBuy } from '../payload'; | ||
import { inferBlockchainData, getUnitPairs, getBlockchainMovement } from '../utils/blockchain'; | ||
import { inferBlockchainData, getBlockchainMovement, buildOrderSignatureData } from '../utils/blockchain'; | ||
import { buildNEOOrderSignatureData, buildNEOMovementSignatureData, presignNEOBlockchainData, signNEOBlockchainData } from '../signNEOBlockchainData'; | ||
@@ -242,7 +241,8 @@ import { presignETHBlockchainData, buildETHMovementSignatureData, buildETHOrderSignatureData, signETHBlockchainData } from '../signETHBlockchainData'; | ||
const blockchainData = inferBlockchainData(payloadAndKind); | ||
const signatureNeeded = determineSignatureNonceTuplesNeeded(config.assetData, blockchainData); | ||
const orderData = buildOrderSignatureData(config.marketData, config.assetData, payloadAndKind); | ||
const signatureNeeded = determineSignatureNonceTuplesNeeded(orderData, blockchainData); | ||
const sigs = await Promise.all(signatureNeeded.map(async (chainNoncePair) => { | ||
switch (chainNoncePair.chain) { | ||
case 'neo': | ||
const neoData = buildNEOOrderSignatureData(apiKey.child_keys[BIP44.NEO].address, apiKey.child_keys[BIP44.NEO].public_key, config.assetData, config.marketData, payloadAndKind, chainNoncePair); | ||
const neoData = buildNEOOrderSignatureData(apiKey.child_keys[BIP44.NEO].address, apiKey.child_keys[BIP44.NEO].public_key, payloadAndKind, chainNoncePair, orderData); | ||
const neoSignature = await presignNEOBlockchainData(apiKey, config, neoData); | ||
@@ -257,3 +257,3 @@ return { | ||
case 'eth': | ||
const ethData = buildETHOrderSignatureData(apiKey.child_keys[BIP44.ETH].address, config.marketData, payloadAndKind, chainNoncePair); | ||
const ethData = buildETHOrderSignatureData(apiKey.child_keys[BIP44.ETH].address, payloadAndKind, chainNoncePair, orderData); | ||
const ethSignature = await presignETHBlockchainData(apiKey, config, ethData); | ||
@@ -309,7 +309,10 @@ return { | ||
const blockchainData = inferBlockchainData(payloadAndKind); | ||
const signatureNeeded = determineSignatureNonceTuplesNeeded(config.assetData, blockchainData); | ||
const orderData = buildOrderSignatureData(config.marketData, config.assetData, payloadAndKind); | ||
console.info('blockchain data: ', blockchainData); | ||
console.info('order daat: ', orderData); | ||
const signatureNeeded = determineSignatureNonceTuplesNeeded(orderData, blockchainData); | ||
const sigs = signatureNeeded.map(chainNoncePair => { | ||
switch (chainNoncePair.chain) { | ||
case 'neo': | ||
const neoData = buildNEOOrderSignatureData(config.wallets.neo.address, config.wallets.neo.publicKey, config.assetData, config.marketData, payloadAndKind, chainNoncePair); | ||
const neoData = buildNEOOrderSignatureData(config.wallets.neo.address, config.wallets.neo.publicKey, payloadAndKind, chainNoncePair, orderData); | ||
const neoSignature = signNEOBlockchainData(config.wallets.neo.privateKey, neoData); | ||
@@ -323,3 +326,3 @@ return { | ||
case 'eth': | ||
const ethData = buildETHOrderSignatureData(config.wallets.eth.address, config.marketData, payloadAndKind, chainNoncePair); | ||
const ethData = buildETHOrderSignatureData(config.wallets.eth.address, payloadAndKind, chainNoncePair, orderData); | ||
const ethSignature = signETHBlockchainData(config.wallets.eth.privateKey, ethData); | ||
@@ -349,12 +352,5 @@ return { | ||
*/ | ||
export function determineSignatureNonceTuplesNeeded(assetData, blockchainData) { | ||
const { unitA, unitB } = getUnitPairs(blockchainData.marketName); | ||
let assetFrom = unitA; | ||
let assetTo = unitB; | ||
if (blockchainData.buyOrSell === BuyOrSellBuy) { | ||
assetFrom = unitB; | ||
assetTo = unitA; | ||
} | ||
const blockchainFrom = assetData[assetFrom].blockchain; | ||
const blockchainTo = assetData[assetTo].blockchain; | ||
export function determineSignatureNonceTuplesNeeded(orderData, blockchainData) { | ||
const blockchainFrom = orderData.source.asset.blockchain; | ||
const blockchainTo = orderData.destination.asset.blockchain; | ||
const blockchains = _.uniq([blockchainFrom, blockchainTo]); | ||
@@ -378,3 +374,4 @@ const needed = []; | ||
const blockchainData = inferBlockchainData(payloadAndKind); | ||
const signatureNeeded = determineSignatureNonceTuplesNeeded(config.assetData, blockchainData); | ||
const orderData = buildOrderSignatureData(config.marketData, config.assetData, payloadAndKind); | ||
const signatureNeeded = determineSignatureNonceTuplesNeeded(orderData, blockchainData); | ||
const rawData = signatureNeeded.map(chainNoncePair => { | ||
@@ -385,3 +382,3 @@ switch (chainNoncePair.chain) { | ||
payload: payloadAndKind.payload, | ||
raw: buildNEOOrderSignatureData(config.wallets.neo.address, config.wallets.neo.publicKey, config.assetData, config.marketData, payloadAndKind, chainNoncePair) | ||
raw: buildNEOOrderSignatureData(config.wallets.neo.address, config.wallets.neo.publicKey, payloadAndKind, chainNoncePair, orderData) | ||
}; | ||
@@ -391,3 +388,3 @@ case 'eth': | ||
payload: payloadAndKind.payload, | ||
raw: buildETHOrderSignatureData(config.wallets.eth.address, config.marketData, payloadAndKind, chainNoncePair) | ||
raw: buildETHOrderSignatureData(config.wallets.eth.address, payloadAndKind, chainNoncePair, orderData) | ||
}; | ||
@@ -407,3 +404,4 @@ case 'btc': | ||
const blockchainData = inferBlockchainData(payloadAndKind); | ||
const signatureNeeded = determineSignatureNonceTuplesNeeded(config.assetData, blockchainData); | ||
const orderData = buildOrderSignatureData(config.marketData, config.assetData, payloadAndKind); | ||
const signatureNeeded = determineSignatureNonceTuplesNeeded(orderData, blockchainData); | ||
const rawData = signatureNeeded.map(chainNoncePair => { | ||
@@ -414,3 +412,3 @@ switch (chainNoncePair.chain) { | ||
payload: payloadAndKind.payload, | ||
raw: buildNEOOrderSignatureData(apiKey.child_keys[BIP44.NEO].address, apiKey.child_keys[BIP44.NEO].public_key, config.assetData, config.marketData, payloadAndKind, chainNoncePair) | ||
raw: buildNEOOrderSignatureData(apiKey.child_keys[BIP44.NEO].address, apiKey.child_keys[BIP44.NEO].public_key, payloadAndKind, chainNoncePair, orderData) | ||
}; | ||
@@ -420,3 +418,3 @@ case 'eth': | ||
payload: payloadAndKind.payload, | ||
raw: buildETHOrderSignatureData(apiKey.child_keys[BIP44.ETH].address, config.marketData, payloadAndKind, chainNoncePair) | ||
raw: buildETHOrderSignatureData(apiKey.child_keys[BIP44.ETH].address, payloadAndKind, chainNoncePair, orderData) | ||
}; | ||
@@ -600,2 +598,2 @@ case 'btc': | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnblBheWxvYWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2lnblBheWxvYWQvc2lnblBheWxvYWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxXQUFXLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxNQUFNLE1BQU0sa0JBQWtCLENBQUE7QUFDckMsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ25DLE9BQU8sT0FBTyxNQUFNLG1CQUFtQixDQUFBO0FBQ3ZDLE9BQU8sT0FBTyxNQUFNLG1CQUFtQixDQUFBO0FBQ3ZDLE9BQU8sU0FBUyxNQUFNLHFCQUFxQixDQUFBO0FBQzNDLE9BQU8sT0FBTyxNQUFNLG1CQUFtQixDQUFBO0FBRXZDLE9BQU8sU0FBUyxNQUFNLGNBQWMsQ0FBQTtBQUNwQyxPQUFPLFNBQVMsTUFBTSxjQUFjLENBQUE7QUFDcEMsT0FBTyxJQUFJLE1BQU0sZUFBZSxDQUFBO0FBQ2hDLE9BQU8sRUFBVSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDakQsT0FBTyxFQUNMLFVBQVUsRUFDVixzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLGdCQUFnQixFQUNoQixjQUFjLEVBQ2QsY0FBYyxFQUNmLE1BQU0sNkJBQTZCLENBQUE7QUFDcEMsT0FBTyxFQUVMLEtBQUssRUFNTixNQUFNLFVBQVUsQ0FBQTtBQUNqQixPQUFPLEVBS0wsWUFBWSxFQUViLE1BQU0sWUFBWSxDQUFBO0FBQ25CLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUM5RixPQUFPLEVBQ0wsMEJBQTBCLEVBQzFCLDZCQUE2QixFQUM3Qix3QkFBd0IsRUFDeEIscUJBQXFCLEVBQ3RCLE1BQU0sMEJBQTBCLENBQUE7QUFDakMsT0FBTyxFQUNMLHdCQUF3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 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnblBheWxvYWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2lnblBheWxvYWQvc2lnblBheWxvYWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxXQUFXLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxNQUFNLE1BQU0sa0JBQWtCLENBQUE7QUFDckMsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ25DLE9BQU8sT0FBTyxNQUFNLG1CQUFtQixDQUFBO0FBQ3ZDLE9BQU8sT0FBTyxNQUFNLG1CQUFtQixDQUFBO0FBQ3ZDLE9BQU8sU0FBUyxNQUFNLHFCQUFxQixDQUFBO0FBQzNDLE9BQU8sT0FBTyxNQUFNLG1CQUFtQixDQUFBO0FBRXZDLE9BQU8sU0FBUyxNQUFNLGNBQWMsQ0FBQTtBQUNwQyxPQUFPLFNBQVMsTUFBTSxjQUFjLENBQUE7QUFDcEMsT0FBTyxJQUFJLE1BQU0sZUFBZSxDQUFBO0FBQ2hDLE9BQU8sRUFBVSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDakQsT0FBTyxFQUNMLFVBQVUsRUFDVixzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLGdCQUFnQixFQUNoQixjQUFjLEVBQ2QsY0FBYyxFQUNmLE1BQU0sNkJBQTZCLENBQUE7QUFDcEMsT0FBTyxFQUVMLEtBQUssRUFNTixNQUFNLFVBQVUsQ0FBQTtBQVFqQixPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUVyQix1QkFBdUIsRUFDeEIsTUFBTSxxQkFBcUIsQ0FBQTtBQUM1QixPQUFPLEVBQ0wsMEJBQTBCLEVBQzFCLDZCQUE2QixFQUM3Qix3QkFBd0IsRUFDeEIscUJBQXFCLEVBQ3RCLE1BQU0sMEJBQTBCLENBQUE7QUFDakMsT0FBTyxFQUNMLHdCQUF3QixFQUN4Qiw2QkFBNkIsRUFDN0IsMEJBQTBCLEVBQzFCLHFC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 |
@@ -0,1 +1,2 @@ | ||
import BigNumber from 'bignumber.js'; | ||
/** | ||
@@ -12,3 +13,3 @@ * @TODO Add documentation. | ||
readonly noncesTo: number[]; | ||
readonly limitPrice: string; | ||
readonly limitPrice: BigNumber; | ||
} | ||
@@ -15,0 +16,0 @@ /** |
import { PayloadAndKind } from '../../payload'; | ||
import { Config, BlockchainData, BlockchainMovement, Asset } from '../../types'; | ||
import BigNumber from 'bignumber.js'; | ||
import * as EC from 'elliptic'; | ||
export declare const ellipticContext: EC.ec; | ||
export declare const BN: typeof BigNumber; | ||
export declare const bigNumberFormat: { | ||
decimalSeparator: string; | ||
groupSeparator: string; | ||
groupSize: number; | ||
prefix: string; | ||
}; | ||
export declare function inferBlockchainData(payloadAndKind: PayloadAndKind): BlockchainData; | ||
@@ -20,3 +28,20 @@ export declare function getBlockchainMovement(wallets: { | ||
}, assets: Config['assetData'], payloadAndKind: PayloadAndKind): BlockchainMovement; | ||
export declare function getLimitPrice(marketName: string, buyOrSell: string, limitPrice: any): string; | ||
export interface AssetAmount { | ||
amount: string; | ||
asset: Asset; | ||
symbol: string; | ||
} | ||
export interface OrderSignatureData { | ||
destination: AssetAmount; | ||
meAmount: string; | ||
meRate: string; | ||
precision: number; | ||
rate: BigNumber; | ||
source: AssetAmount; | ||
} | ||
export declare function buildOrderSignatureData(marketData: Config['marketData'], assetData: Config['assetData'], payloadAndKind: PayloadAndKind): OrderSignatureData; | ||
export declare function invertPrice(amount: BigNumber): BigNumber; | ||
export declare function exchangeAmount(price: BigNumber, amount: string): string; | ||
export declare function rateWithFees(rate: BigNumber): BigNumber; | ||
export declare function getLimitPrice(marketName: string, buyOrSell: string, limitPrice: any): BigNumber; | ||
export declare function getUnitPairs(market: string): any; | ||
@@ -23,0 +48,0 @@ export declare function convertEthNonce(nonce: number): string; |
@@ -1,2 +0,2 @@ | ||
import { SigningPayloadID, kindToOrderPrefix, isLimitOrderPayload, BuyOrSellSell } from '../../payload'; | ||
import { SigningPayloadID, kindToOrderPrefix, BuyOrSellSell, BuyOrSellBuy, isLimitOrderPayload } from '../../payload'; | ||
import getNEOScriptHash from '../getNEOScriptHash'; | ||
@@ -9,4 +9,4 @@ import { normalizeAmount, toLittleEndianHex } from '../currency'; | ||
export const ellipticContext = new EC.ec('secp256k1'); | ||
const BN = BigNumber.clone({ DECIMAL_PLACES: 16, ROUNDING_MODE: BigNumber.ROUND_FLOOR }); | ||
const bigNumberFormat = { | ||
export const BN = BigNumber.clone({ DECIMAL_PLACES: 16 }); | ||
export const bigNumberFormat = { | ||
decimalSeparator: '.', | ||
@@ -26,3 +26,3 @@ groupSeparator: '', | ||
case SigningPayloadID.placeStopLimitOrderPayload: | ||
let limitPrice = ''; | ||
let limitPrice = new BigNumber(0); | ||
if (isLimitOrderPayload(kind)) { | ||
@@ -88,15 +88,72 @@ limitPrice = getLimitPrice(payload.marketName, payload.buyOrSell, payload.limitPrice); | ||
} | ||
export function buildOrderSignatureData(marketData, assetData, payloadAndKind) { | ||
const blockchainData = inferBlockchainData(payloadAndKind); | ||
const { unitA, unitB } = getUnitPairs(blockchainData.marketName); | ||
const amountPrecision = marketData[blockchainData.marketName].minTradeIncrement; | ||
const assetA = assetData[unitA]; | ||
const assetB = assetData[unitB]; | ||
// Amount of order always in asset A in ME | ||
const amountOfA = blockchainData.amount; | ||
// Price is always in terms of asset B in ME | ||
const bPerA = blockchainData.limitPrice; | ||
const aPerB = invertPrice(blockchainData.limitPrice); | ||
const amountOfB = exchangeAmount(bPerA, amountOfA); | ||
switch (blockchainData.buyOrSell) { | ||
case BuyOrSellBuy: | ||
return { | ||
destination: { | ||
amount: amountOfA, | ||
asset: assetA, | ||
symbol: unitA | ||
}, | ||
meAmount: amountOfA, | ||
meRate: bPerA.toFormat(bigNumberFormat), | ||
precision: amountPrecision, | ||
rate: aPerB, | ||
source: { | ||
amount: amountOfB, | ||
asset: assetB, | ||
symbol: unitB | ||
} | ||
}; | ||
case BuyOrSellSell: | ||
return { | ||
destination: { | ||
amount: amountOfB, | ||
asset: assetB, | ||
symbol: unitB | ||
}, | ||
meAmount: amountOfA, | ||
meRate: bPerA.toFormat(bigNumberFormat), | ||
precision: amountPrecision, | ||
rate: bPerA, | ||
source: { | ||
amount: amountOfA, | ||
asset: assetA, | ||
symbol: unitA | ||
} | ||
}; | ||
default: | ||
throw new Error('Invalid order side'); | ||
} | ||
} | ||
export function invertPrice(amount) { | ||
return new BN(1).div(amount); | ||
} | ||
export function exchangeAmount(price, amount) { | ||
const total = new BigNumber(amount).times(price); | ||
return total.toFormat(8, bigNumberFormat); | ||
} | ||
export function rateWithFees(rate) { | ||
return rate.times(399).div(400); | ||
} | ||
export function getLimitPrice(marketName, buyOrSell, limitPrice) { | ||
const { unitA, unitB } = getUnitPairs(marketName); | ||
let assetFrom = unitB; | ||
if (buyOrSell === BuyOrSellSell) { | ||
assetFrom = unitA; | ||
} | ||
const { unitB } = getUnitPairs(marketName); | ||
const assetFrom = unitB; | ||
if (limitPrice.currency_a === assetFrom) { | ||
return limitPrice.amount; | ||
return new BigNumber(limitPrice.amount); | ||
} | ||
else if (limitPrice.currency_b === assetFrom) { | ||
const amount = new BN(limitPrice.amount); | ||
const reciprocal = new BN(1).div(amount); | ||
return reciprocal.toFormat(8, bigNumberFormat); | ||
return new BN(1).div(amount); | ||
} | ||
@@ -168,2 +225,2 @@ throw Error(`Could not determine limit price for market: ${marketName} with direction ${buyOrSell} and limit price ${JSON.stringify(limitPrice)}`); | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tjaGFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91dGlscy9ibG9ja2NoYWluL2Jsb2NrY2hhaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFdkgsT0FBTyxnQkFBZ0IsTUFBTSxxQkFBcUIsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ2hFLE9BQU8sZ0JBQWdCLE1BQU0scUJBQXFCLENBQUE7QUFDbEQsT0FBTyxTQUFTLE1BQU0sY0FBYyxDQUFBO0FBQ3BDLE9BQU8sS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBRTlCLG9CQUFvQjtBQUNwQixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0FBRXJELE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQTtBQUV4RixNQUFNLGVBQWUsR0FBRztJQUN0QixnQkFBZ0IsRUFBRSxHQUFHO0lBQ3JCLGNBQWMsRUFBRSxFQUFFO0lBQ2xCLFNBQVMsRUFBRSxFQUFFO0lBQ2IsTUFBTSxFQUFFLEVBQUU7Q0FDWCxDQUFBO0FBRUQsbUZBQW1GO0FBQ25GLHFGQUFxRjtBQUNyRixNQUFNLFVBQVUsbUJBQW1CLENBQUMsY0FBOEI7SUFDaEUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxjQUFjLENBQUE7SUFFeEMsUUFBUSxJQUFJLEVBQUU7UUFDWixLQUFLLGdCQUFnQixDQUFDLHVCQUF1QixDQUFDO1FBQzlDLEtBQUssZ0JBQWdCLENBQUMsMkJB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 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tjaGFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91dGlscy9ibG9ja2NoYWluL2Jsb2NrY2hhaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsYUFBYSxFQUNiLFlBQVksRUFDWixtQkFBbUIsRUFDcEIsTUFBTSxlQUFlLENBQUE7QUFFdEIsT0FBTyxnQkFBZ0IsTUFBTSxxQkFBcUIsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ2hFLE9BQU8sZ0JBQWdCLE1BQU0scUJBQXFCLENBQUE7QUFDbEQsT0FBTyxTQUFTLE1BQU0sY0FBYyxDQUFBO0FBQ3BDLE9BQU8sS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBRTlCLG9CQUFvQjtBQUNwQixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0FBRXJELE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsY0FBYyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7QUFFekQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHO0lBQzdCLGdCQUFnQixFQUFFLEdBQUc7SUFDckIsY0FBYyxFQUFFLEVBQUU7SUFDbEIsU0FBUyxFQUFFLEVBQUU7SUFDYixNQUFNLEVBQUUsRUFBRTtDQUNYLENBQUE7QUFFRCxtRkFBbUY7QUFDbkYscUZBQXFGO0FBQ3JGLE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxjQUE4QjtJQUNoRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLGNBQWMsQ0FBQTtJQUV4QyxRQUFRLElBQUksRUFBRTtRQUNaLEtBQUssZ0JBQWdCLENBQUMsdUJBQXVCLENBQUM7UUFDOUMsS0FBSyxnQkFBZ0IsQ0FBQywy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 |
@@ -5,2 +5,4 @@ # Changelog | ||
### [3.3.24](https://github.com/nash-io/nash-protocol/compare/v3.3.14...v3.3.24) (2020-12-15) | ||
### [3.3.14](https://github.com/nash-io/nash-protocol/compare/v3.3.11...v3.3.14) (2020-11-24) | ||
@@ -7,0 +9,0 @@ |
{ | ||
"name": "@neon-exchange/nash-protocol-gunbot", | ||
"version": "3.3.22", | ||
"version": "3.3.24", | ||
"description": "TypeScript implementation of Nash crypto routines", | ||
@@ -69,3 +69,3 @@ "main": "build/main/index.js", | ||
"@types/lodash": "4.14.122", | ||
"@types/node": "13.7.0", | ||
"@types/node": "^14.14.14", | ||
"@types/randombytes": "2.0.0", | ||
@@ -72,0 +72,0 @@ "jest": "23.6.0", |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
13648
15322042
8