diff --git a/lib/blockchain/chainentry.js b/lib/blockchain/chainentry.js index 6d7d6bd32..156af675c 100644 --- a/lib/blockchain/chainentry.js +++ b/lib/blockchain/chainentry.js @@ -8,7 +8,7 @@ 'use strict'; var assert = require('assert'); -var BN = require('bn.js'); +var BN = require('../crypto/bn'); var consensus = require('../protocol/consensus'); var util = require('../utils/util'); var crypto = require('../crypto/crypto'); diff --git a/lib/crypto/bn.js b/lib/crypto/bn.js new file mode 100644 index 000000000..b978d68a8 --- /dev/null +++ b/lib/crypto/bn.js @@ -0,0 +1,9 @@ +/*! + * bn.js - big numbers for bcoin + * Copyright (c) 2017, Christopher Jeffrey (MIT License). + * https://github.com/bcoin-org/bcoin + */ + +'use strict'; + +module.exports = require('bn.js'); diff --git a/lib/crypto/ec-elliptic.js b/lib/crypto/ec-elliptic.js index cd90002fe..f320b276a 100644 --- a/lib/crypto/ec-elliptic.js +++ b/lib/crypto/ec-elliptic.js @@ -11,8 +11,8 @@ var assert = require('assert'); var elliptic = require('elliptic'); var secp256k1 = elliptic.ec('secp256k1'); var Signature = require('elliptic/lib/elliptic/ec/signature'); +var BN = require('./bn'); var curve = secp256k1.curve; -var BN = require('bn.js'); /** * @exports crypto/ec-elliptic diff --git a/lib/crypto/index.js b/lib/crypto/index.js index 306ceb9a7..7cef358cd 100644 --- a/lib/crypto/index.js +++ b/lib/crypto/index.js @@ -299,6 +299,13 @@ exports.Poly1305 = exports.chachapoly.Poly1305; exports.AEAD = exports.chachapoly.AEAD; +/** + * BN + * @see https://github.com/indutny/bn.js + */ + +exports.BN = require('./bn'); + /** * pk module * @see module:crypto/pk diff --git a/lib/crypto/pk-browser.js b/lib/crypto/pk-browser.js index a7dccf449..32ea206d8 100644 --- a/lib/crypto/pk-browser.js +++ b/lib/crypto/pk-browser.js @@ -12,8 +12,8 @@ */ var assert = require('assert'); -var BN = require('bn.js'); var elliptic = require('elliptic'); +var BN = require('./bn'); var ASN1 = require('../utils/asn1'); var backend = require('./backend'); var rsa, ecdsa; diff --git a/lib/crypto/schnorr.js b/lib/crypto/schnorr.js index c22c6baf5..499db16e8 100644 --- a/lib/crypto/schnorr.js +++ b/lib/crypto/schnorr.js @@ -6,10 +6,10 @@ 'use strict'; -var BN = require('bn.js'); var elliptic = require('elliptic'); var Signature = require('elliptic/lib/elliptic/ec/signature'); var hmacDRBG = require('hmac-drbg'); +var BN = require('./bn'); var sha256 = require('./backend').sha256; var secp256k1 = elliptic.ec('secp256k1'); var curve = secp256k1.curve; diff --git a/lib/env.js b/lib/env.js index 11d42f7bc..dc9d5a110 100644 --- a/lib/env.js +++ b/lib/env.js @@ -130,10 +130,6 @@ function Environment() { this.env = Environment; this.require = lazy(require, this); - // BN - this.require('bn', 'bn.js'); - this.require('elliptic', 'elliptic'); - // Horrible BIP this.require('bip70', './bip70'); @@ -154,6 +150,7 @@ function Environment() { // Crypto this.require('crypto', './crypto'); + this.require('bn', './crypto/bn'); this.require('ec', './crypto/ec'); this.require('pk', './crypto/pk'); this.require('schnorr', './crypto/schnorr'); @@ -239,6 +236,7 @@ function Environment() { this.require('bloom', './utils/bloom'); this.require('co', './utils/co'); this.require('encoding', './utils/encoding'); + this.require('int64', './utils/int64'); this.require('lock', './utils/lock'); this.require('reader', './utils/reader'); this.require('staticwriter', './utils/staticwriter'); diff --git a/lib/mining/common.js b/lib/mining/common.js index 1e8184677..fa3027bbf 100644 --- a/lib/mining/common.js +++ b/lib/mining/common.js @@ -8,7 +8,7 @@ var assert = require('assert'); var consensus = require('../protocol/consensus'); -var BN = require('bn.js'); +var BN = require('../crypto/bn'); /** * @exports mining/common diff --git a/lib/mining/template.js b/lib/mining/template.js index 6bd9033d4..f5507df57 100644 --- a/lib/mining/template.js +++ b/lib/mining/template.js @@ -8,9 +8,9 @@ 'use strict'; var assert = require('assert'); -var BN = require('bn.js'); var util = require('../utils/util'); var crypto = require('../crypto/crypto'); +var BN = require('../crypto/bn'); var StaticWriter = require('../utils/staticwriter'); var Address = require('../primitives/address'); var TX = require('../primitives/tx'); diff --git a/lib/protocol/consensus.js b/lib/protocol/consensus.js index 8851ea1cb..a3c538c80 100644 --- a/lib/protocol/consensus.js +++ b/lib/protocol/consensus.js @@ -12,7 +12,7 @@ */ var assert = require('assert'); -var BN = require('bn.js'); +var BN = require('../crypto/bn'); /** * One bitcoin in satoshis. diff --git a/lib/protocol/networks.js b/lib/protocol/networks.js index cd5032424..2c74b592d 100644 --- a/lib/protocol/networks.js +++ b/lib/protocol/networks.js @@ -11,7 +11,7 @@ * @module protocol/networks */ -var BN = require('bn.js'); +var BN = require('../crypto/bn'); var network = exports; var main, testnet, regtest, segnet4, simnet; diff --git a/lib/script/common.js b/lib/script/common.js index f48da1c5b..9d15bcb66 100644 --- a/lib/script/common.js +++ b/lib/script/common.js @@ -12,7 +12,7 @@ */ var assert = require('assert'); -var BN = require('bn.js'); +var BN = require('../crypto/bn'); var util = require('../utils/util'); var ec = require('../crypto/ec'); diff --git a/lib/script/opcode.js b/lib/script/opcode.js index 0add94aef..910a1b0bc 100644 --- a/lib/script/opcode.js +++ b/lib/script/opcode.js @@ -8,7 +8,7 @@ 'use strict'; var assert = require('assert'); -var BN = require('bn.js'); +var BN = require('../crypto/bn'); var util = require('../utils/util'); var common = require('./common'); var BufferReader = require('../utils/reader'); diff --git a/lib/script/script.js b/lib/script/script.js index 9dd85a900..9c05299d1 100644 --- a/lib/script/script.js +++ b/lib/script/script.js @@ -8,7 +8,7 @@ 'use strict'; var assert = require('assert'); -var BN = require('bn.js'); +var BN = require('../crypto/bn'); var consensus = require('../protocol/consensus'); var policy = require('../protocol/policy'); var util = require('../utils/util'); diff --git a/lib/script/witness.js b/lib/script/witness.js index c42897c9d..8f3051db6 100644 --- a/lib/script/witness.js +++ b/lib/script/witness.js @@ -8,7 +8,7 @@ 'use strict'; var assert = require('assert'); -var BN = require('bn.js'); +var BN = require('../crypto/bn'); var util = require('../utils/util'); var Script = require('./script'); var common = require('./common'); diff --git a/lib/utils/gcs.js b/lib/utils/gcs.js index 69faf19d5..59c782794 100644 --- a/lib/utils/gcs.js +++ b/lib/utils/gcs.js @@ -7,7 +7,7 @@ 'use strict'; var assert = require('assert'); -var Int64 = require('n64'); +var Int64 = require('./int64'); var crypto = require('../crypto/crypto'); var siphash24 = require('../crypto/siphash'); var SCRATCH = Buffer.allocUnsafe(64); diff --git a/lib/utils/index.js b/lib/utils/index.js index c890169b3..ba3bac2a7 100644 --- a/lib/utils/index.js +++ b/lib/utils/index.js @@ -15,6 +15,7 @@ exports.co = require('./co'); exports.encoding = require('./encoding'); exports.fs = require('./fs'); exports.Heap = require('./heap'); +exports.Int64 = require('./int64'); exports.IP = require('./ip'); exports.lazy = require('./lazy'); exports.Lock = require('./lock'); diff --git a/lib/utils/int64.js b/lib/utils/int64.js new file mode 100644 index 000000000..2cf24b0d2 --- /dev/null +++ b/lib/utils/int64.js @@ -0,0 +1,9 @@ +/*! + * int64.js - int64s for bcoin + * Copyright (c) 2017, Christopher Jeffrey (MIT License). + * https://github.com/bcoin-org/bcoin + */ + +'use strict'; + +module.exports = require('n64'); diff --git a/migrate/ensure-tip-index.js b/migrate/ensure-tip-index.js index 7d3da36d3..f98692a2b 100644 --- a/migrate/ensure-tip-index.js +++ b/migrate/ensure-tip-index.js @@ -6,7 +6,7 @@ var BufferReader = require('../lib/utils/reader'); var crypto = require('../lib/crypto/crypto'); var util = require('../lib/utils/util'); var LDB = require('../lib/db/ldb'); -var BN = require('bn.js'); +var BN = require('../lib/crypto/bn'); var DUMMY = Buffer.from([0]); var file = process.argv[2]; var db, batch; diff --git a/scripts/gen.js b/scripts/gen.js index aa7fbea39..18675ed92 100644 --- a/scripts/gen.js +++ b/scripts/gen.js @@ -1,6 +1,6 @@ 'use strict'; -var BN = require('bn.js'); +var BN = require('../lib/crypto/bn'); var util = require('../lib/utils/util'); var consensus = require('../lib/protocol/consensus'); var encoding = require('../lib/utils/encoding'); diff --git a/test/chain-test.js b/test/chain-test.js index d42dcdec5..8bcc55468 100644 --- a/test/chain-test.js +++ b/test/chain-test.js @@ -1,7 +1,7 @@ 'use strict'; var assert = require('assert'); -var BN = require('bn.js'); +var BN = require('../lib/crypto/bn'); var consensus = require('../lib/protocol/consensus'); var encoding = require('../lib/utils/encoding'); var co = require('../lib/utils/co'); diff --git a/test/node-test.js b/test/node-test.js index 19efc37b6..c5a56a9cd 100644 --- a/test/node-test.js +++ b/test/node-test.js @@ -1,7 +1,7 @@ 'use strict'; var assert = require('assert'); -var BN = require('bn.js'); +var BN = require('../lib/crypto/bn'); var consensus = require('../lib/protocol/consensus'); var co = require('../lib/utils/co'); var Coin = require('../lib/primitives/coin'); diff --git a/test/utils-test.js b/test/utils-test.js index 133f82ab3..fd64f0370 100644 --- a/test/utils-test.js +++ b/test/utils-test.js @@ -1,7 +1,7 @@ 'use strict'; var assert = require('assert'); -var BN = require('bn.js'); +var BN = require('../lib/crypto/bn'); var ec = require('../lib/crypto/ec'); var base58 = require('../lib/utils/base58'); var encoding = require('../lib/utils/encoding');