From b6a7eb3d91d0b169698b9144e6b3d4aeb5b012f8 Mon Sep 17 00:00:00 2001 From: Marek Kotewicz Date: Fri, 6 Mar 2015 23:38:20 +0100 Subject: [PATCH] BigNumber.js -> bn.js --- lib/const.js | 4 ++-- lib/formatters.js | 30 +++++++++++++++++------------- lib/web3.js | 2 +- package.json | 2 +- test/abi.inputParser.js | 3 ++- test/abi.outputParser.js | 2 +- 6 files changed, 24 insertions(+), 19 deletions(-) diff --git a/lib/const.js b/lib/const.js index f7ccc9e28ce..a4b3150b6c9 100644 --- a/lib/const.js +++ b/lib/const.js @@ -22,7 +22,7 @@ /// required to define ETH_BIGNUMBER_ROUNDING_MODE if (process.env.NODE_ENV !== 'build') { - var BigNumber = require('bignumber.js'); // jshint ignore:line + var BigNumber = require('bn.js'); // jshint ignore:line } var ETH_UNITS = [ @@ -51,7 +51,7 @@ module.exports = { ETH_PADDING: 32, ETH_SIGNATURE_LENGTH: 4, ETH_UNITS: ETH_UNITS, - ETH_BIGNUMBER_ROUNDING_MODE: { ROUNDING_MODE: BigNumber.ROUND_DOWN }, + //ETH_BIGNUMBER_ROUNDING_MODE: { ROUNDING_MODE: BigNumber.ROUND_DOWN }, ETH_POLLING_TIMEOUT: 1000 }; diff --git a/lib/formatters.js b/lib/formatters.js index 223a444a90a..287ebe4993e 100644 --- a/lib/formatters.js +++ b/lib/formatters.js @@ -21,7 +21,7 @@ */ if (process.env.NODE_ENV !== 'build') { - var BigNumber = require('bignumber.js'); // jshint ignore:line + var BigNumber = require('bn.js'); // jshint ignore:line } var utils = require('./utils'); @@ -45,17 +45,21 @@ var formatInputInt = function (value) { if (value instanceof BigNumber || typeof value === 'number') { if (typeof value === 'number') value = new BigNumber(value); - BigNumber.config(c.ETH_BIGNUMBER_ROUNDING_MODE); - value = value.round(); + //BigNumber.config(c.ETH_BIGNUMBER_ROUNDING_MODE); + //value = value.round(); - if (value.lessThan(0)) - value = new BigNumber("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 16).plus(value).plus(1); + if (value.cmpn(0) === -1) + value = new BigNumber("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 16).add(value).add(new BigNumber(1)); value = value.toString(16); } - else if (value.indexOf('0x') === 0) - value = value.substr(2); - else if (typeof value === 'string') - value = formatInputInt(new BigNumber(value)); + else if (typeof value === 'string') { + if (value.indexOf('0x') === 0) { + value = value.substr(2); + } else { + value = value.indexOf('.') === -1 ? value : value.substr(0, value.indexOf('.')); + value = formatInputInt(new BigNumber(value)); + } + } else value = (+value).toString(16); return padLeft(value, padding); @@ -77,7 +81,7 @@ var formatInputBool = function (value) { /// Values are multiplied by 2^m and encoded as integers /// @returns byte representation of real var formatInputReal = function (value) { - return formatInputInt(new BigNumber(value).times(new BigNumber(2).pow(128))); + return formatInputInt(new BigNumber(value).mul(new BigNumber(2).toRed(BigNumber.red('k256')).redPow(new BigNumber(128)).fromRed())); }; @@ -95,7 +99,7 @@ var formatOutputInt = function (value) { // check if it's negative number // it it is, return two's complement if (signedIsNegative(value)) { - return new BigNumber(value, 16).minus(new BigNumber('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16)).minus(1); + return new BigNumber(value, 16).sub(new BigNumber('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16)).sub(new BigNumber(1)); } return new BigNumber(value, 16); }; @@ -109,12 +113,12 @@ var formatOutputUInt = function (value) { /// @returns input bytes formatted to real var formatOutputReal = function (value) { - return formatOutputInt(value).dividedBy(new BigNumber(2).pow(128)); + return formatOutputInt(value).div(new BigNumber(2).toRed(BigNumber.red('k256')).redPow(new BigNumber(128)).fromRed()); }; /// @returns input bytes formatted to ureal var formatOutputUReal = function (value) { - return formatOutputUInt(value).dividedBy(new BigNumber(2).pow(128)); + return formatOutputUInt(value).div(new BigNumber(2).toRed(BigNumber.red('k256')).redPow(new BigNumber(128)).fromRed()); }; /// @returns right-aligned input bytes formatted to hex diff --git a/lib/web3.js b/lib/web3.js index c58e1bcc98f..95ae4941c16 100644 --- a/lib/web3.js +++ b/lib/web3.js @@ -24,7 +24,7 @@ */ if (process.env.NODE_ENV !== 'build') { - var BigNumber = require('bignumber.js'); + var BigNumber = require('bn.js'); } var eth = require('./eth'); diff --git a/package.json b/package.json index 7596280ae7a..f2eee833fc2 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "lib": "./lib" }, "dependencies": { - "bignumber.js": ">=2.0.0", + "bn.js": "^2.0.1", "xmlhttprequest": "*" }, "devDependencies": { diff --git a/test/abi.inputParser.js b/test/abi.inputParser.js index edfc2b58f31..31e02723352 100644 --- a/test/abi.inputParser.js +++ b/test/abi.inputParser.js @@ -1,5 +1,5 @@ var assert = require('assert'); -var BigNumber = require('bignumber.js'); +var BigNumber = require('bn.js'); var abi = require('../lib/abi.js'); var clone = function (object) { return JSON.parse(JSON.stringify(object)); }; @@ -546,3 +546,4 @@ describe('abi', function() { }); }); + diff --git a/test/abi.outputParser.js b/test/abi.outputParser.js index 723c408f0aa..5e1e0eda461 100644 --- a/test/abi.outputParser.js +++ b/test/abi.outputParser.js @@ -1,5 +1,5 @@ var assert = require('assert'); -var BigNumber = require('bignumber.js'); +var BigNumber = require('bn.js'); var abi = require('../lib/abi.js'); var clone = function (object) { return JSON.parse(JSON.stringify(object)); };