Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | 18x 18x 18x 18x 18x 18x 12x 1x 11x 1x 10x 10x 1x 9x 9x 9x 9x 9x 18x 8x 1x 7x 1x 6x 6x 6x 6x 6x 1x 5x 18x 124x 18x 30x | /* * Copyright © 2019 Lisk Foundation * * See the LICENSE file at the top-level directory of this distribution * for licensing information. * * Unless otherwise agreed in a custom licensing agreement with the Lisk Foundation, * no part of this software, including this file, may be copied, modified, * propagated, or distributed except according to the terms contained in the * LICENSE file. * * Removal or modification of this copyright notice is prohibited. * */ import { isGreaterThanMaxTransactionAmount } from '@liskhq/lisk-validator'; import { FIXED_POINT } from '../constants'; const LISK_MAX_DECIMAL_POINTS = 8; const getDecimalPlaces = (amount: string): number => (amount.split('.')[1] || '').length; export const convertBeddowsToLSK = (beddowsAmount?: string): string => { if (typeof beddowsAmount !== 'string') { throw new Error('Cannot convert non-string amount'); } if (getDecimalPlaces(beddowsAmount)) { throw new Error('Beddows amount should not have decimal points'); } const beddowsAmountBigInt = BigInt(beddowsAmount); if (isGreaterThanMaxTransactionAmount(beddowsAmountBigInt)) { throw new Error('Beddows amount out of range'); } const int = (beddowsAmountBigInt / BigInt(FIXED_POINT)).toString(); const floating = Number(beddowsAmountBigInt % BigInt(FIXED_POINT)) / FIXED_POINT; const floatingPointsSplit = floating .toLocaleString(undefined, { maximumFractionDigits: LISK_MAX_DECIMAL_POINTS, }) .split('.')[1]; const res = floating !== 0 ? `${int}.${floatingPointsSplit}` : int; return res; }; export const convertLSKToBeddows = (lskAmount?: string): string => { if (typeof lskAmount !== 'string') { throw new Error('Cannot convert non-string amount'); } if (getDecimalPlaces(lskAmount) > LISK_MAX_DECIMAL_POINTS) { throw new Error('LSK amount has too many decimal points'); } const splitAmount = lskAmount.split('.'); const liskAmountInt = BigInt(splitAmount[0]); const liskAmountFloatBigInt = BigInt( (splitAmount[1] ?? '0').padEnd(LISK_MAX_DECIMAL_POINTS, '0'), ); const beddowsAmountBigInt = liskAmountInt * BigInt(FIXED_POINT) + liskAmountFloatBigInt; if (isGreaterThanMaxTransactionAmount(beddowsAmountBigInt)) { throw new Error('LSK amount out of range'); } return beddowsAmountBigInt.toString(); }; export const prependPlusToPublicKeys = ( publicKeys: ReadonlyArray<string>, ): ReadonlyArray<string> => publicKeys.map(publicKey => `+${publicKey}`); export const prependMinusToPublicKeys = ( publicKeys: ReadonlyArray<string>, ): ReadonlyArray<string> => publicKeys.map(publicKey => `-${publicKey}`); |