diff --git a/lib/btc/index.js b/lib/btc/index.js index af9a8f98..91444338 100644 --- a/lib/btc/index.js +++ b/lib/btc/index.js @@ -1,6 +1,6 @@ 'use strict'; exports.Amount = require('./amount'); -exports.btcutils = require('./btcutils'); +exports.utils = require('./utils'); exports.errors = require('./errors'); exports.uri = require('./uri'); diff --git a/lib/btc/btcutils.js b/lib/btc/utils.js similarity index 88% rename from lib/btc/btcutils.js rename to lib/btc/utils.js index 80b553fc..952882f8 100644 --- a/lib/btc/btcutils.js +++ b/lib/btc/utils.js @@ -1,5 +1,5 @@ /*! - * btcutils.js - bitcoin-related utils for bcoin + * utils.js - bitcoin-related utils for bcoin * Copyright (c) 2014-2015, Fedor Indutny (MIT License) * Copyright (c) 2014-2016, Christopher Jeffrey (MIT License). * https://github.com/bcoin-org/bcoin @@ -12,7 +12,7 @@ var BN = require('bn.js'); var constants = require('../protocol/constants'); var util = require('../utils/util'); var Amount = require('./amount'); -var btcutils = exports; +var utils = exports; /** * Convert a compact number to a big number. @@ -21,7 +21,7 @@ var btcutils = exports; * @returns {BN} */ -btcutils.fromCompact = function fromCompact(compact) { +utils.fromCompact = function fromCompact(compact) { var exponent = compact >>> 24; var negative = (compact >>> 23) & 1; var mantissa = compact & 0x7fffff; @@ -53,7 +53,7 @@ btcutils.fromCompact = function fromCompact(compact) { * @returns {Number} */ -btcutils.toCompact = function toCompact(num) { +utils.toCompact = function toCompact(num) { var mantissa, exponent, compact; if (num.cmpn(0) === 0) @@ -90,8 +90,8 @@ btcutils.toCompact = function toCompact(num) { * @returns {Boolean} */ -btcutils.verifyPOW = function verifyPOW(hash, bits) { - var target = btcutils.fromCompact(bits); +utils.verifyPOW = function verifyPOW(hash, bits) { + var target = utils.fromCompact(bits); if (target.isNeg() || target.cmpn(0) === 0) return false; @@ -110,8 +110,8 @@ btcutils.verifyPOW = function verifyPOW(hash, bits) { * @returns {Amount} */ -btcutils.getReward = function getReward(height, interval) { - var halvings = height / interval | 0; +utils.getReward = function getReward(height, interval) { + var halvings = Math.floor(height / interval); assert(height >= 0, 'Bad height for reward.'); @@ -138,7 +138,7 @@ btcutils.getReward = function getReward(height, interval) { * @returns {Amount} fee */ -btcutils.getMinFee = function getMinFee(size, rate) { +utils.getMinFee = function getMinFee(size, rate) { var fee; if (rate == null) @@ -161,7 +161,7 @@ btcutils.getMinFee = function getMinFee(size, rate) { * @returns {Amount} fee */ -btcutils.getRoundFee = function getRoundFee(size, rate) { +utils.getRoundFee = function getRoundFee(size, rate) { var fee; if (rate == null) @@ -182,7 +182,7 @@ btcutils.getRoundFee = function getRoundFee(size, rate) { * @returns {Rate} */ -btcutils.getRate = function getRate(size, fee) { +utils.getRate = function getRate(size, fee) { return Math.floor(fee * 1000 / size); }; @@ -194,7 +194,7 @@ btcutils.getRate = function getRate(size, fee) { * @returns {String} BTC string. */ -btcutils.btc = function btc(value) { +utils.btc = function btc(value) { if (util.isFloat(value)) return value; return Amount.fromValue(value).toBTC(); @@ -211,7 +211,7 @@ btcutils.btc = function btc(value) { * @throws on parse error */ -btcutils.satoshi = function satoshi(value) { +utils.satoshi = function satoshi(value) { if (util.isInt(value)) return value; return Amount.fromBTC(value).toValue(); @@ -223,7 +223,7 @@ btcutils.satoshi = function satoshi(value) { * @returns {Boolean} */ -btcutils.isSatoshi = function isSatoshi(value) { +utils.isSatoshi = function isSatoshi(value) { try { Amount.fromValue(value); return true; @@ -238,7 +238,7 @@ btcutils.isSatoshi = function isSatoshi(value) { * @returns {Boolean} */ -btcutils.isBTC = function isBTC(value) { +utils.isBTC = function isBTC(value) { try { Amount.fromBTC(value); return true; @@ -253,7 +253,7 @@ btcutils.isBTC = function isBTC(value) { * @returns {TX[]} */ -btcutils.sortTX = function sortTX(txs) { +utils.sortTX = function sortTX(txs) { var depMap = {}; var count = {}; var result = []; diff --git a/lib/chain/chain.js b/lib/chain/chain.js index ebff9a6b..7dc13e1f 100644 --- a/lib/chain/chain.js +++ b/lib/chain/chain.js @@ -13,7 +13,7 @@ var Logger = require('../node/logger'); var ChainDB = require('./chaindb'); var constants = require('../protocol/constants'); var util = require('../utils/util'); -var btcutils = require('../btc/btcutils'); +var btcutils = require('../btc/utils'); var Locker = require('../utils/locker'); var ChainEntry = require('./chainentry'); var CoinView = require('./coinview'); diff --git a/lib/chain/chainentry.js b/lib/chain/chainentry.js index 0c22a8a4..289d6145 100644 --- a/lib/chain/chainentry.js +++ b/lib/chain/chainentry.js @@ -11,7 +11,7 @@ var BN = require('bn.js'); var Network = require('../protocol/network'); var constants = require('../protocol/constants'); var util = require('../utils/util'); -var btcutils = require('../btc/btcutils'); +var btcutils = require('../btc/utils'); var crypto = require('../crypto/crypto'); var assert = require('assert'); var BufferWriter = require('../utils/writer'); diff --git a/lib/env.js b/lib/env.js index 298a1925..29f11fee 100644 --- a/lib/env.js +++ b/lib/env.js @@ -113,16 +113,15 @@ function Environment() { this.require('bn', 'bn.js'); this.require('elliptic', 'elliptic'); + // Horrible BIP + this.require('bip70', './bip70'); + // BTC this.require('btc', './btc'); this.require('amount', './btc/amount'); - this.require('btcutils', './btc/btcutils'); this.require('errors', './btc/errors'); this.require('uri', './btc/uri'); - // Horrible BIP - this.require('bip70', './bip70'); - // Chain this.require('blockchain', './chain'); // -> blockchain? this.require('chain', './chain/chain'); @@ -215,7 +214,7 @@ function Environment() { this.require('writer', './utils/writer'); // Wallet - this.require('wallet', './wallet'); + this.require('wallet', './wallet'); // -> ? this.require('account', './wallet/account'); this.require('path', './wallet/path'); this.require('masterkey', './wallet/masterkey'); diff --git a/lib/mempool/mempoolentry.js b/lib/mempool/mempoolentry.js index 388a6d24..1ff4b84e 100644 --- a/lib/mempool/mempoolentry.js +++ b/lib/mempool/mempoolentry.js @@ -8,7 +8,7 @@ var constants = require('../protocol/constants'); var util = require('../utils/util'); -var btcutils = require('../btc/btcutils'); +var btcutils = require('../btc/utils'); /** * Represents a mempool entry. diff --git a/lib/mining/minerblock.js b/lib/mining/minerblock.js index 4f66a7a6..9cfd9df6 100644 --- a/lib/mining/minerblock.js +++ b/lib/mining/minerblock.js @@ -9,7 +9,7 @@ var assert = require('assert'); var util = require('../utils/util'); -var btcutils = require('../btc/btcutils'); +var btcutils = require('../btc/utils'); var co = require('../utils/co'); var crypto = require('../crypto/crypto'); var constants = require('../protocol/constants'); diff --git a/lib/net/index.js b/lib/net/index.js index 184793aa..f6ac874d 100644 --- a/lib/net/index.js +++ b/lib/net/index.js @@ -2,7 +2,7 @@ exports.BIP150 = require('./bip150'); exports.BIP151 = require('./bip151'); -exports.BIP152 = require('./bip152'); +exports.bip152 = require('./bip152'); exports.packets = require('./packets'); exports.Framer = require('./framer'); exports.Parser = require('./parser'); diff --git a/lib/primitives/abstractblock.js b/lib/primitives/abstractblock.js index b418ac8b..e7044890 100644 --- a/lib/primitives/abstractblock.js +++ b/lib/primitives/abstractblock.js @@ -11,7 +11,7 @@ var assert = require('assert'); var constants = require('../protocol/constants'); var util = require('../utils/util'); var crypto = require('../crypto/crypto'); -var btcutils = require('../btc/btcutils'); +var btcutils = require('../btc/utils'); var VerifyResult = require('../btc/errors').VerifyResult; var BufferWriter = require('../utils/writer'); var time = require('../net/time'); diff --git a/lib/primitives/block.js b/lib/primitives/block.js index de9c7409..f35e75cb 100644 --- a/lib/primitives/block.js +++ b/lib/primitives/block.js @@ -10,7 +10,7 @@ var assert = require('assert'); var util = require('../utils/util'); var crypto = require('../crypto/crypto'); -var btcutils = require('../btc/btcutils'); +var btcutils = require('../btc/utils'); var constants = require('../protocol/constants'); var AbstractBlock = require('./abstractblock'); var VerifyResult = require('../btc/errors').VerifyResult; diff --git a/lib/primitives/mtx.js b/lib/primitives/mtx.js index 6fe8139f..c6ad383e 100644 --- a/lib/primitives/mtx.js +++ b/lib/primitives/mtx.js @@ -9,7 +9,7 @@ var assert = require('assert'); var util = require('../utils/util'); -var btcutils = require('../btc/btcutils'); +var btcutils = require('../btc/utils'); var constants = require('../protocol/constants'); var Script = require('../script/script'); var opcodes = Script.opcodes; diff --git a/lib/primitives/output.js b/lib/primitives/output.js index 51124c8d..9255286b 100644 --- a/lib/primitives/output.js +++ b/lib/primitives/output.js @@ -9,6 +9,7 @@ var util = require('../utils/util'); var constants = require('../protocol/constants'); +var btcutils = require('../btc/utils'); var Amount = require('../btc/amount'); var Network = require('../protocol/network'); var Script = require('../script/script'); @@ -154,7 +155,7 @@ Output.prototype.toJSON = function toJSON(network) { Output.prototype.getDustThreshold = function getDustThreshold(rate) { var scale = constants.WITNESS_SCALE_FACTOR; - var size, fee; + var size; if (rate == null) rate = constants.tx.MIN_RELAY; @@ -171,12 +172,7 @@ Output.prototype.getDustThreshold = function getDustThreshold(rate) { size += 32 + 4 + 1 + 107 + 4; } - fee = Math.floor(rate * size / 1000); - - if (fee === 0 && rate > 0) - fee = rate; - - return 3 * fee; + return 3 * btcutils.getMinFee(size, rate); }; /** diff --git a/lib/primitives/tx.js b/lib/primitives/tx.js index 16f2abb7..42294e38 100644 --- a/lib/primitives/tx.js +++ b/lib/primitives/tx.js @@ -10,7 +10,7 @@ var assert = require('assert'); var util = require('../utils/util'); var crypto = require('../crypto/crypto'); -var btcutils = require('../btc/btcutils'); +var btcutils = require('../btc/utils'); var Amount = require('../btc/amount'); var constants = require('../protocol/constants'); var Network = require('../protocol/network'); diff --git a/lib/wallet/txdb.js b/lib/wallet/txdb.js index 09fab03f..d9e74030 100644 --- a/lib/wallet/txdb.js +++ b/lib/wallet/txdb.js @@ -14,7 +14,7 @@ var assert = require('assert'); var constants = require('../protocol/constants'); var BufferReader = require('../utils/reader'); var BufferWriter = require('../utils/writer'); -var btcutils = require('../btc/btcutils'); +var btcutils = require('../btc/utils'); var Amount = require('../btc/amount'); var TX = require('../primitives/tx'); var Coin = require('../primitives/coin'); diff --git a/lib/wallet/wallet.js b/lib/wallet/wallet.js index d47e4ec8..984cd2c6 100644 --- a/lib/wallet/wallet.js +++ b/lib/wallet/wallet.js @@ -15,7 +15,7 @@ var util = require('../utils/util'); var Locker = require('../utils/locker'); var co = require('../utils/co'); var crypto = require('../crypto/crypto'); -var btcutils = require('../btc/btcutils'); +var btcutils = require('../btc/utils'); var BufferReader = require('../utils/reader'); var BufferWriter = require('../utils/writer'); var base58 = require('../utils/base58'); diff --git a/lib/wallet/walletdb.js b/lib/wallet/walletdb.js index c61ded3b..c076714d 100644 --- a/lib/wallet/walletdb.js +++ b/lib/wallet/walletdb.js @@ -15,7 +15,7 @@ var Locker = require('../utils/locker'); var LRU = require('../utils/lru'); var encoding = require('../utils/encoding'); var crypto = require('../crypto/crypto'); -var btcutils = require('../btc/btcutils'); +var btcutils = require('../btc/utils'); var constants = require('../protocol/constants'); var Network = require('../protocol/network'); var Path = require('./path'); diff --git a/test/block-test.js b/test/block-test.js index 5bd3b41d..17f32374 100644 --- a/test/block-test.js +++ b/test/block-test.js @@ -3,7 +3,7 @@ var BN = require('bn.js'); var bcoin = require('../').set('main'); var util = bcoin.util; -var btcutils = require('../lib/btc/btcutils'); +var btcutils = require('../lib/btc/utils'); var crypto = require('../lib/crypto/crypto'); var Bloom = require('../lib/utils/bloom'); var constants = bcoin.constants; diff --git a/test/utils-test.js b/test/utils-test.js index 4f748687..3b0c5f4c 100644 --- a/test/utils-test.js +++ b/test/utils-test.js @@ -4,7 +4,7 @@ var assert = require('assert'); var BN = require('bn.js'); var util = require('../lib/utils/util'); var ec = require('../lib/crypto/ec'); -var btcutils = require('../lib/btc/btcutils'); +var btcutils = require('../lib/btc/utils'); var base58 = require('../lib/utils/base58'); var encoding = require('../lib/utils/encoding'); var crypto = require('../lib/crypto/crypto');