deth
Version:
Ethereum node focused on Developer Experience
29 lines (28 loc) • 892 B
JavaScript
import { BN } from 'ethereumjs-util';
// eslint-disable-next-line
import { BigNumber } from 'ethers/utils';
const HEX_NO_LEADING_ZERO_REGEX = /^0x[1-9a-fA-F][\da-fA-F]*$/;
export function makeQuantity(value) {
if (value === '0x' || value === '0x0') {
return '0x0';
}
if (!HEX_NO_LEADING_ZERO_REGEX.test(value)) {
throw new TypeError(`Value "${value}" is not a valid hex number (leading zeroes)`);
}
return value.toLowerCase();
}
export function bufferToQuantity(buffer) {
return bnToQuantity(new BN(buffer));
}
export function bnToQuantity(bn) {
return makeQuantity('0x' + bn.toString(16));
}
export function numberToQuantity(number) {
return makeQuantity('0x' + number.toString(16));
}
/**
* NOTE: this might throw when dealing with big number
*/
export function quantityToNumber(quantity) {
return new BigNumber(quantity).toNumber();
}