UNPKG

divvy-lib-transactionparser

Version:

Parses transaction objects to a higher-level view

27 lines (22 loc) 1.02 kB
'use strict' var assert = require('assert') var BigNumber = require('bignumber.js') /* The quality, as stored in the last 64 bits of a directory index, is stored as the quotient of TakerPays/TakerGets. It uses drops (1e-6 XDV) for XDV values. */ function adjustQualityForXDV(quality, takerGetsCurrency, takerPaysCurrency) { var numeratorShift = (takerPaysCurrency === 'XDV' ? -6 : 0) var denominatorShift = (takerGetsCurrency === 'XDV' ? -6 : 0) var shift = numeratorShift - denominatorShift return shift === 0 ? (new BigNumber(quality)).toString() : (new BigNumber(quality)).shift(shift).toString() } function parseQuality(qualityHex, takerGetsCurrency, takerPaysCurrency) { assert(qualityHex.length === 16) var mantissa = new BigNumber(qualityHex.substring(2), 16) var offset = parseInt(qualityHex.substring(0, 2), 16) - 100 var quality = mantissa.toString() + 'e' + offset.toString() return adjustQualityForXDV(quality, takerGetsCurrency, takerPaysCurrency) } module.exports = parseQuality