From 33ffb780b311ee9b42be65ea8a2b751f55066d06 Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Thu, 22 Jun 2017 03:59:49 -0700 Subject: [PATCH] refactor: expose int64 and big numbers as modules. --- lib/blockchain/chainentry.js | 2 +- lib/crypto/bn.js | 9 +++++++++ lib/crypto/ec-elliptic.js | 2 +- lib/crypto/index.js | 7 +++++++ lib/crypto/pk-browser.js | 2 +- lib/crypto/schnorr.js | 2 +- lib/env.js | 6 ++---- lib/mining/common.js | 2 +- lib/mining/template.js | 2 +- lib/protocol/consensus.js | 2 +- lib/protocol/networks.js | 2 +- lib/script/common.js | 2 +- lib/script/opcode.js | 2 +- lib/script/script.js | 2 +- lib/script/witness.js | 2 +- lib/utils/gcs.js | 2 +- lib/utils/index.js | 1 + lib/utils/int64.js | 9 +++++++++ migrate/ensure-tip-index.js | 2 +- scripts/gen.js | 2 +- test/chain-test.js | 2 +- test/node-test.js | 2 +- test/utils-test.js | 2 +- 23 files changed, 46 insertions(+), 22 deletions(-) create mode 100644 lib/crypto/bn.js create mode 100644 lib/utils/int64.js diff --git a/lib/blockchain/chainentry.js b/lib/blockchain/chainentry.js index 6d7d6bd3..156af675 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 00000000..b978d68a --- /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 cd90002f..f320b276 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 306ceb9a..7cef358c 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 a7dccf44..32ea206d 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 c22c6baf..499db16e 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 11d42f7b..dc9d5a11 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 1e818467..fa3027bb 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 6bd9033d..f5507df5 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 8851ea1c..a3c538c8 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 cd503242..2c74b592 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 f48da1c5..9d15bcb6 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 0add94ae..910a1b0b 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 9dd85a90..9c05299d 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 c42897c9..8f3051db 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 69faf19d..59c78279 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 c890169b..ba3bac2a 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 00000000..2cf24b0d --- /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 7d3da36d..f98692a2 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 aa7fbea3..18675ed9 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 d42dcdec..8bcc5546 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 19efc37b..c5a56a9c 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 133f82ab..fd64f037 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');