ethval v2.1.1
ethval
Easier calculation and formatting of Ethereum values.
- Supports floating point numbers
- Easily convert between Wei, Gwei and Eth
- Output binary, decimal and hexadecimal strings
- Output fixed-precision floating-point values (toFixed())
- Parse and generate BN.js instances
- Uses decimal.js under the hood
Install
- NPM/Yarn: ethval
Example Usage
You can feed it BN.js instances returned from web3:
const EthVal = require('ethval')
const balance = await web3.eth.getBalance(account) // returns BN.js instance
// assume balance is 20000000000000000 wei (=0.02eth)
console.log( new EthVal(balance).toEth().mul(2).toFixed(2) ) // "0.04"Use it calculate the Wei/Gwei/Eth equivalent of a given value:
const v = new EthVal('1.234', 'eth')
console.log( b.toGwei().toString() ) // "1234000000"You can also output hex and binary strings:
const v = new EthVal(255)
console.log( b.toString(16) ) // "0xff"
console.log( b.toString(2) ) // "11111111"Basic arithmetic supported fully:
const v = new EthVal(255)
const b = await web3.eth.getBalance('0x...') // assume balance is 100 wei
console.log( v.div(5).add(b).mul(2).sub(2).toString(16) ) // 0x12c (= 300 in base-10)Comparisons too:
const { toBN } = require('web3-utils')
const v = new EthVal(255)
const v2 = new EthVal('0.2', 'eth')
console.log( v2.lt(v) ) // false
console.log( v.gt(200) ) // true
console.log( v.lte(toBN('0xFFFF')) ) // trueIt also ensures units are aligned when performing operations:
const v = new EthVal(25500)
const v2 = new EthVal('0.2', 'eth')
console.log( v2.gt(v) ) // true
console.log( v.add(v2).toString() ) // "200000000000025500"
console.log( v2.add(v).toString() ) // "0.2000000000000255"API
new EthVal(input, unit = 'wei')
Constructs a new EthVal instance.
- input- can be a- Number, a- string(in base-10 or base-16/hex format), another- EthValinstance, or a- BNinstance.
- unit- must be one of- eth,- gweior- wei(default).
.toWei()
Convert the value to its Wei equivalent and return a new EthVal instance.
.toGwei()
Convert the value to its Gwei equivalent and return a new EthVal instance.
.toEth()
Convert the value to its Eth equivalent and return a new EthVal instance.
.add(input)
Add input to this value and return a new EthVal instance.
- input- same as for the- EthValconstructor
.sub(input)
Subtract input from this value and return a new EthVal instance.
- input- same as for the- EthValconstructor
.mul(input)
Multiply input with this value and return a new EthVal instance.
- input- same as for the- EthValconstructor
.div(input)
Divide this value by input and return a new EthVal instance.
- input- same as for the- EthValconstructor
.round()
Round this value to the nearest integer (i.e 0 decimal places) and return a new EthVal instance.
.eq(input)
Get whether this value equals input. Returns true or false.
- input- same as for the- EthValconstructor
.lt(input)
Get whether this value is less than input. Returns true or false.
- input- same as for the- EthValconstructor
.lte(input)
Get whether this value is less than or equal to input. Returns true or false.
- input- same as for the- EthValconstructor
.gt(input)
Get whether this value is greater than input. Returns true or false.
- input- same as for the- EthValconstructor
.gte(input)
Get whether this value is greater than or equal to input. Returns true or false.
- input- same as for the- EthValconstructor
.toString(base)
Return string representation of this value according to the given number base.
For example, if base is 2 then a binary string representation is returned, if
16 then a hexadecimal string representation is returned.
- base- either 2, 16 or 10.
.toNumber()
Return base-10 Number representation of this value.
.toFixed(precision)
Return base-10 decimal-point representation of this value to the given precision.
- precision- maximum no. of numbers after the decimal point.
.isWei
Whether the current unit is wei.
.isGwei
Whether the current unit is gwei.
.isEth
Whether the current unit is eth.
Dev guide
- Install deps: npm i
- Tests: npm test
- Tests with coverage: npm run test:coverage
- Build final lib: npm run build
- Lint: npm run lint
License
MIT