mirror of
https://github.com/jackyzha0/quartz.git
synced 2025-12-24 13:24:05 -06:00
44 lines
1.0 KiB
JavaScript
44 lines
1.0 KiB
JavaScript
const BN = require("bn.js");
|
|
const Bytes = require("./bytes");
|
|
|
|
const fromBN = bn => "0x" + bn.toString("hex");
|
|
|
|
const toBN = str => new BN(str.slice(2), 16);
|
|
|
|
const fromString = str => {
|
|
const bn = "0x" + (str.slice(0, 2) === "0x" ? new BN(str.slice(2), 16) : new BN(str, 10)).toString("hex");
|
|
return bn === "0x0" ? "0x" : bn;
|
|
};
|
|
|
|
const toEther = wei => toNumber(div(wei, fromString("10000000000"))) / 100000000;
|
|
|
|
const fromEther = eth => mul(fromNumber(Math.floor(eth * 100000000)), fromString("10000000000"));
|
|
|
|
const toString = a => toBN(a).toString(10);
|
|
|
|
const fromNumber = a => typeof a === "string" ? /^0x/.test(a) ? a : "0x" + a : "0x" + new BN(a).toString("hex");
|
|
|
|
const toNumber = a => toBN(a).toNumber();
|
|
|
|
const toUint256 = a => Bytes.pad(32, a);
|
|
|
|
const bin = method => (a, b) => fromBN(toBN(a)[method](toBN(b)));
|
|
|
|
const add = bin("add");
|
|
const mul = bin("mul");
|
|
const div = bin("div");
|
|
const sub = bin("sub");
|
|
|
|
module.exports = {
|
|
toString,
|
|
fromString,
|
|
toNumber,
|
|
fromNumber,
|
|
toEther,
|
|
fromEther,
|
|
toUint256,
|
|
add,
|
|
mul,
|
|
div,
|
|
sub
|
|
}; |