diff --git a/browser/wsproxy.js b/browser/wsproxy.js index 926a2f97..ec99ce91 100644 --- a/browser/wsproxy.js +++ b/browser/wsproxy.js @@ -6,7 +6,7 @@ const EventEmitter = require('events'); const bsock = require('bsock'); const digest = require('bcrypto/lib/digest'); const IP = require('../lib/utils/ip'); -const BufferWriter = require('../lib/utils/writer'); +const BufferWriter = require('bbuf/lib/writer'); const TARGET = Buffer.from( '0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', diff --git a/lib/bcoin-browser.js b/lib/bcoin-browser.js index 8fad08f8..041cd8df 100644 --- a/lib/bcoin-browser.js +++ b/lib/bcoin-browser.js @@ -125,14 +125,9 @@ bcoin.witness = require('./script/witness'); bcoin.utils = require('./utils'); bcoin.base32 = require('./utils/base32'); bcoin.base58 = require('./utils/base58'); -bcoin.bloom = require('bfilter/lib/bloom'); bcoin.co = require('./utils/co'); -bcoin.encoding = require('./utils/encoding'); bcoin.lock = require('./utils/lock'); -bcoin.reader = require('./utils/reader'); -bcoin.staticwriter = require('./utils/staticwriter'); bcoin.util = require('./utils/util'); -bcoin.writer = require('./utils/writer'); // Wallet bcoin.wallet = require('./wallet'); diff --git a/lib/bcoin.js b/lib/bcoin.js index ce859b78..b34943d4 100644 --- a/lib/bcoin.js +++ b/lib/bcoin.js @@ -160,14 +160,9 @@ bcoin.define('witness', './script/witness'); bcoin.define('utils', './utils'); bcoin.define('base32', './utils/base32'); bcoin.define('base58', './utils/base58'); -bcoin.define('bloom', './utils/bloom'); bcoin.define('co', './utils/co'); -bcoin.define('encoding', './utils/encoding'); bcoin.define('lock', './utils/lock'); -bcoin.define('reader', './utils/reader'); -bcoin.define('staticwriter', './utils/staticwriter'); bcoin.define('util', './utils/util'); -bcoin.define('writer', './utils/writer'); // Wallet bcoin.define('wallet', './wallet'); diff --git a/lib/blockchain/chain.js b/lib/blockchain/chain.js index 9621d571..8b05b122 100644 --- a/lib/blockchain/chain.js +++ b/lib/blockchain/chain.js @@ -23,7 +23,7 @@ const CoinView = require('../coins/coinview'); const Script = require('../script/script'); const {VerifyError} = require('../protocol/errors'); const co = require('../utils/co'); -const encoding = require('../utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const thresholdStates = common.thresholdStates; /** diff --git a/lib/blockchain/chaindb.js b/lib/blockchain/chaindb.js index a6113cd5..f590e03d 100644 --- a/lib/blockchain/chaindb.js +++ b/lib/blockchain/chaindb.js @@ -9,10 +9,10 @@ const assert = require('assert'); const BDB = require('bdb'); -const BufferReader = require('../utils/reader'); -const StaticWriter = require('../utils/staticwriter'); +const BufferReader = require('bbuf/lib/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); const Amount = require('../btc/amount'); -const encoding = require('../utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const Network = require('../protocol/network'); const CoinView = require('../coins/coinview'); const UndoCoins = require('../coins/undocoins'); diff --git a/lib/blockchain/chainentry.js b/lib/blockchain/chainentry.js index 02b4667e..68661b3a 100644 --- a/lib/blockchain/chainentry.js +++ b/lib/blockchain/chainentry.js @@ -11,9 +11,9 @@ const assert = require('assert'); const BN = require('bcrypto/lib/bn'); const consensus = require('../protocol/consensus'); const digest = require('bcrypto/lib/digest'); -const encoding = require('../utils/encoding'); -const BufferReader = require('../utils/reader'); -const StaticWriter = require('../utils/staticwriter'); +const encoding = require('bbuf/lib/encoding'); +const BufferReader = require('bbuf/lib/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); const Headers = require('../primitives/headers'); const InvItem = require('../primitives/invitem'); const ZERO = new BN(0); diff --git a/lib/coins/coinentry.js b/lib/coins/coinentry.js index 757ca6a7..0f122050 100644 --- a/lib/coins/coinentry.js +++ b/lib/coins/coinentry.js @@ -9,9 +9,9 @@ const assert = require('assert'); const Coin = require('../primitives/coin'); const Output = require('../primitives/output'); -const BufferReader = require('../utils/reader'); -const StaticWriter = require('../utils/staticwriter'); -const encoding = require('../utils/encoding'); +const BufferReader = require('bbuf/lib/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); +const encoding = require('bbuf/lib/encoding'); const compress = require('./compress'); /* diff --git a/lib/coins/compress.js b/lib/coins/compress.js index b45ff2a2..eba9b409 100644 --- a/lib/coins/compress.js +++ b/lib/coins/compress.js @@ -13,7 +13,7 @@ const assert = require('assert'); const secp256k1 = require('bcrypto/lib/secp256k1'); -const encoding = require('../utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const consensus = require('../protocol/consensus'); /* diff --git a/lib/coins/undocoins.js b/lib/coins/undocoins.js index 1396609b..2d8d7657 100644 --- a/lib/coins/undocoins.js +++ b/lib/coins/undocoins.js @@ -7,8 +7,8 @@ 'use strict'; const assert = require('assert'); -const BufferReader = require('../utils/reader'); -const StaticWriter = require('../utils/staticwriter'); +const BufferReader = require('bbuf/lib/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); const CoinEntry = require('../coins/coinentry'); /** diff --git a/lib/hd/mnemonic.js b/lib/hd/mnemonic.js index ccc869fd..209ede5a 100644 --- a/lib/hd/mnemonic.js +++ b/lib/hd/mnemonic.js @@ -12,9 +12,9 @@ const cleanse = require('bcrypto/lib/cleanse'); const random = require('bcrypto/lib/random'); const pbkdf2 = require('bcrypto/lib/pbkdf2'); const sha512 = require('bcrypto/lib/sha512'); -const StaticWriter = require('../utils/staticwriter'); -const BufferReader = require('../utils/reader'); -const encoding = require('../utils/encoding'); +const StaticWriter = require('bbuf/lib/staticwriter'); +const BufferReader = require('bbuf/lib/reader'); +const encoding = require('bbuf/lib/encoding'); const wordlist = require('./wordlist'); const common = require('./common'); const nfkd = require('./nfkd'); diff --git a/lib/hd/private.js b/lib/hd/private.js index 406b7019..63a9c601 100644 --- a/lib/hd/private.js +++ b/lib/hd/private.js @@ -12,10 +12,10 @@ const cleanse = require('bcrypto/lib/cleanse'); const random = require('bcrypto/lib/random'); const secp256k1 = require('bcrypto/lib/secp256k1'); const Network = require('../protocol/network'); -const StaticWriter = require('../utils/staticwriter'); -const BufferReader = require('../utils/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); +const BufferReader = require('bbuf/lib/reader'); const base58 = require('../utils/base58'); -const encoding = require('../utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const common = require('./common'); const Mnemonic = require('./mnemonic'); const HDPublicKey = require('./public'); diff --git a/lib/hd/public.js b/lib/hd/public.js index 13cf43ee..fdc26be7 100644 --- a/lib/hd/public.js +++ b/lib/hd/public.js @@ -11,10 +11,10 @@ const digest = require('bcrypto/lib/digest'); const cleanse = require('bcrypto/lib/cleanse'); const secp256k1 = require('bcrypto/lib/secp256k1'); const Network = require('../protocol/network'); -const StaticWriter = require('../utils/staticwriter'); -const BufferReader = require('../utils/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); +const BufferReader = require('bbuf/lib/reader'); const base58 = require('../utils/base58'); -const encoding = require('../utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const common = require('./common'); /** diff --git a/lib/mempool/fees.js b/lib/mempool/fees.js index 678f8f5e..a85e981f 100644 --- a/lib/mempool/fees.js +++ b/lib/mempool/fees.js @@ -12,9 +12,9 @@ const assert = require('assert'); const binary = require('../utils/binary'); const consensus = require('../protocol/consensus'); const policy = require('../protocol/policy'); -const BufferReader = require('../utils/reader'); -const StaticWriter = require('../utils/staticwriter'); -const encoding = require('../utils/encoding'); +const BufferReader = require('bbuf/lib/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); +const encoding = require('bbuf/lib/encoding'); const Logger = require('../node/logger'); /* diff --git a/lib/mempool/mempool.js b/lib/mempool/mempool.js index ba45e532..d7cc66a1 100644 --- a/lib/mempool/mempool.js +++ b/lib/mempool/mempool.js @@ -25,7 +25,7 @@ const Coin = require('../primitives/coin'); const TXMeta = require('../primitives/txmeta'); const MempoolEntry = require('./mempoolentry'); const Network = require('../protocol/network'); -const encoding = require('../utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const layout = require('./layout'); const Fees = require('./fees'); const CoinView = require('../coins/coinview'); diff --git a/lib/mempool/mempoolentry.js b/lib/mempool/mempoolentry.js index 2091e07f..213c20a7 100644 --- a/lib/mempool/mempoolentry.js +++ b/lib/mempool/mempoolentry.js @@ -9,8 +9,8 @@ const policy = require('../protocol/policy'); const util = require('../utils/util'); const Script = require('../script/script'); -const BufferReader = require('../utils/reader'); -const StaticWriter = require('../utils/staticwriter'); +const BufferReader = require('bbuf/lib/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); const TX = require('../primitives/tx'); /** diff --git a/lib/mining/cpuminer.js b/lib/mining/cpuminer.js index 9a476160..46fdef24 100644 --- a/lib/mining/cpuminer.js +++ b/lib/mining/cpuminer.js @@ -13,7 +13,7 @@ const co = require('../utils/co'); const AsyncObject = require('../utils/asyncobject'); const mine = require('./mine'); const Lock = require('../utils/lock'); -const encoding = require('../utils/encoding'); +const encoding = require('bbuf/lib/encoding'); /** * CPU miner. diff --git a/lib/mining/template.js b/lib/mining/template.js index a11e8c34..5dd585a3 100644 --- a/lib/mining/template.js +++ b/lib/mining/template.js @@ -10,7 +10,7 @@ const assert = require('assert'); const hash256 = require('bcrypto/lib/hash256'); const merkle = require('bcrypto/lib/merkle'); -const StaticWriter = require('../utils/staticwriter'); +const StaticWriter = require('bbuf/lib/staticwriter'); const Address = require('../primitives/address'); const TX = require('../primitives/tx'); const Block = require('../primitives/block'); @@ -18,7 +18,7 @@ const Input = require('../primitives/input'); const Output = require('../primitives/output'); const consensus = require('../protocol/consensus'); const policy = require('../protocol/policy'); -const encoding = require('../utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const CoinView = require('../coins/coinview'); const Script = require('../script/script'); const common = require('./common'); diff --git a/lib/net/bip150.js b/lib/net/bip150.js index dcbf7278..f3662af5 100644 --- a/lib/net/bip150.js +++ b/lib/net/bip150.js @@ -18,9 +18,9 @@ const random = require('bcrypto/lib/random'); const ccmp = require('bcrypto/lib/ccmp'); const packets = require('./packets'); const secp256k1 = require('bcrypto/lib/secp256k1'); -const StaticWriter = require('../utils/staticwriter'); +const StaticWriter = require('bbuf/lib/staticwriter'); const base58 = require('../utils/base58'); -const encoding = require('../utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const IP = require('../utils/ip'); const dns = require('./dns'); const Logger = require('../node/logger'); diff --git a/lib/net/bip151.js b/lib/net/bip151.js index 57225e34..62331104 100644 --- a/lib/net/bip151.js +++ b/lib/net/bip151.js @@ -25,9 +25,9 @@ const AEAD = require('bcrypto/lib/aead'); const hkdf = require('bcrypto/lib/hkdf'); const secp256k1 = require('bcrypto/lib/secp256k1'); const packets = require('./packets'); -const StaticWriter = require('../utils/staticwriter'); -const BufferReader = require('../utils/reader'); -const encoding = require('../utils/encoding'); +const StaticWriter = require('bbuf/lib/staticwriter'); +const BufferReader = require('bbuf/lib/reader'); +const encoding = require('bbuf/lib/encoding'); const EncinitPacket = packets.EncinitPacket; const EncackPacket = packets.EncackPacket; diff --git a/lib/net/bip152.js b/lib/net/bip152.js index ecdfb528..b94c9a27 100644 --- a/lib/net/bip152.js +++ b/lib/net/bip152.js @@ -11,9 +11,9 @@ */ const assert = require('assert'); -const BufferReader = require('../utils/reader'); -const StaticWriter = require('../utils/staticwriter'); -const encoding = require('../utils/encoding'); +const BufferReader = require('bbuf/lib/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); +const encoding = require('bbuf/lib/encoding'); const consensus = require('../protocol/consensus'); const digest = require('bcrypto/lib/digest'); const siphash256 = require('bcrypto/lib/siphash').siphash256; diff --git a/lib/net/packets.js b/lib/net/packets.js index c6c661ff..0f2d5b88 100644 --- a/lib/net/packets.js +++ b/lib/net/packets.js @@ -22,9 +22,9 @@ const InvItem = require('../primitives/invitem'); const MemBlock = require('../primitives/memblock'); const MerkleBlock = require('../primitives/merkleblock'); const TX = require('../primitives/tx'); -const BufferReader = require('../utils/reader'); -const StaticWriter = require('../utils/staticwriter'); -const encoding = require('../utils/encoding'); +const BufferReader = require('bbuf/lib/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); +const encoding = require('bbuf/lib/encoding'); const DUMMY = Buffer.alloc(0); /** diff --git a/lib/net/peer.js b/lib/net/peer.js index 838331a4..292e8f56 100644 --- a/lib/net/peer.js +++ b/lib/net/peer.js @@ -24,7 +24,7 @@ const BIP150 = require('./bip150'); const BIP152 = require('./bip152'); const Block = require('../primitives/block'); const TX = require('../primitives/tx'); -const encoding = require('../utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const NetAddress = require('../primitives/netaddress'); const Network = require('../protocol/network'); const Logger = require('../node/logger'); diff --git a/lib/net/pool.js b/lib/net/pool.js index 545d1c22..6c27acef 100644 --- a/lib/net/pool.js +++ b/lib/net/pool.js @@ -33,7 +33,7 @@ const HostList = require('./hostlist'); const UPNP = require('./upnp'); const InvItem = require('../primitives/invitem'); const packets = require('./packets'); -const encoding = require('../utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const services = common.services; const invTypes = InvItem.types; const packetTypes = packets.types; diff --git a/lib/net/proxysocket.js b/lib/net/proxysocket.js index d6d603c7..61ccfb9d 100644 --- a/lib/net/proxysocket.js +++ b/lib/net/proxysocket.js @@ -10,7 +10,7 @@ const assert = require('assert'); const EventEmitter = require('events'); const bsock = require('bsock'); const digest = require('bcrypto/lib/digest'); -const BufferWriter = require('../utils/writer'); +const BufferWriter = require('bbuf/lib/writer'); function ProxySocket(uri) { if (!(this instanceof ProxySocket)) diff --git a/lib/net/socks.js b/lib/net/socks.js index dc167fff..3812d853 100644 --- a/lib/net/socks.js +++ b/lib/net/socks.js @@ -15,8 +15,8 @@ const EventEmitter = require('events'); const net = require('net'); const {format} = require('util'); const IP = require('../utils/ip'); -const StaticWriter = require('../utils/staticwriter'); -const BufferReader = require('../utils/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); +const BufferReader = require('bbuf/lib/reader'); /** * SOCKS state machine diff --git a/lib/node/http.js b/lib/node/http.js index cb5035a6..71c206ec 100644 --- a/lib/node/http.js +++ b/lib/node/http.js @@ -20,7 +20,7 @@ const random = require('bcrypto/lib/random'); const ccmp = require('bcrypto/lib/ccmp'); const Network = require('../protocol/network'); const Validator = require('../utils/validator'); -const encoding = require('../utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const pkg = require('../pkg'); class HTTP extends Server { diff --git a/lib/node/rpc.js b/lib/node/rpc.js index 390baab2..138cc32a 100644 --- a/lib/node/rpc.js +++ b/lib/node/rpc.js @@ -29,7 +29,7 @@ const Outpoint = require('../primitives/outpoint'); const Output = require('../primitives/output'); const TX = require('../primitives/tx'); const IP = require('../utils/ip'); -const encoding = require('../utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const consensus = require('../protocol/consensus'); const Validator = require('../utils/validator'); const pkg = require('../pkg'); diff --git a/lib/primitives/abstractblock.js b/lib/primitives/abstractblock.js index 5bd37e24..ca2e17bc 100644 --- a/lib/primitives/abstractblock.js +++ b/lib/primitives/abstractblock.js @@ -9,10 +9,10 @@ const assert = require('assert'); const digest = require('bcrypto/lib/digest'); -const BufferReader = require('../utils/reader'); -const StaticWriter = require('../utils/staticwriter'); +const BufferReader = require('bbuf/lib/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); const InvItem = require('./invitem'); -const encoding = require('../utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const consensus = require('../protocol/consensus'); /** diff --git a/lib/primitives/address.js b/lib/primitives/address.js index dc373af3..d4fc70fb 100644 --- a/lib/primitives/address.js +++ b/lib/primitives/address.js @@ -9,10 +9,10 @@ const assert = require('assert'); const Network = require('../protocol/network'); -const encoding = require('../utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const digest = require('bcrypto/lib/digest'); -const BufferReader = require('../utils/reader'); -const StaticWriter = require('../utils/staticwriter'); +const BufferReader = require('bbuf/lib/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); const base58 = require('../utils/base58'); const bech32 = require('../utils/bech32'); diff --git a/lib/primitives/block.js b/lib/primitives/block.js index c3de9178..2a6cf2e5 100644 --- a/lib/primitives/block.js +++ b/lib/primitives/block.js @@ -9,13 +9,13 @@ const assert = require('assert'); const util = require('../utils/util'); -const encoding = require('../utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const hash256 = require('bcrypto/lib/hash256'); const merkle = require('bcrypto/lib/merkle'); const consensus = require('../protocol/consensus'); const AbstractBlock = require('./abstractblock'); -const BufferReader = require('../utils/reader'); -const StaticWriter = require('../utils/staticwriter'); +const BufferReader = require('bbuf/lib/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); const TX = require('./tx'); const MerkleBlock = require('./merkleblock'); const Headers = require('./headers'); diff --git a/lib/primitives/coin.js b/lib/primitives/coin.js index 4e7833c7..d100eca9 100644 --- a/lib/primitives/coin.js +++ b/lib/primitives/coin.js @@ -12,9 +12,9 @@ const Amount = require('../btc/amount'); const Output = require('./output'); const Script = require('../script/script'); const Network = require('../protocol/network'); -const BufferReader = require('../utils/reader'); -const StaticWriter = require('../utils/staticwriter'); -const encoding = require('../utils/encoding'); +const BufferReader = require('bbuf/lib/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); +const encoding = require('bbuf/lib/encoding'); /** * Represents an unspent output. diff --git a/lib/primitives/headers.js b/lib/primitives/headers.js index 5902f4d2..25d1e39f 100644 --- a/lib/primitives/headers.js +++ b/lib/primitives/headers.js @@ -9,9 +9,9 @@ const util = require('../utils/util'); const AbstractBlock = require('./abstractblock'); -const StaticWriter = require('../utils/staticwriter'); -const BufferReader = require('../utils/reader'); -const encoding = require('../utils/encoding'); +const StaticWriter = require('bbuf/lib/staticwriter'); +const BufferReader = require('bbuf/lib/reader'); +const encoding = require('bbuf/lib/encoding'); /** * Represents block headers obtained from the network via `headers`. diff --git a/lib/primitives/input.js b/lib/primitives/input.js index 73942c6c..2984e88b 100644 --- a/lib/primitives/input.js +++ b/lib/primitives/input.js @@ -12,8 +12,8 @@ const Network = require('../protocol/network'); const Script = require('../script/script'); const Witness = require('../script/witness'); const Outpoint = require('./outpoint'); -const StaticWriter = require('../utils/staticwriter'); -const BufferReader = require('../utils/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); +const BufferReader = require('bbuf/lib/reader'); /** * Represents a transaction input. diff --git a/lib/primitives/invitem.js b/lib/primitives/invitem.js index cca6b531..793f39b6 100644 --- a/lib/primitives/invitem.js +++ b/lib/primitives/invitem.js @@ -7,9 +7,9 @@ 'use strict'; -const BufferReader = require('../utils/reader'); -const StaticWriter = require('../utils/staticwriter'); -const encoding = require('../utils/encoding'); +const BufferReader = require('bbuf/lib/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); +const encoding = require('bbuf/lib/encoding'); /** * Inv Item diff --git a/lib/primitives/keyring.js b/lib/primitives/keyring.js index a8039653..87ec0d3b 100644 --- a/lib/primitives/keyring.js +++ b/lib/primitives/keyring.js @@ -8,11 +8,11 @@ 'use strict'; const assert = require('assert'); -const encoding = require('../utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const digest = require('bcrypto/lib/digest'); const Network = require('../protocol/network'); -const BufferReader = require('../utils/reader'); -const StaticWriter = require('../utils/staticwriter'); +const BufferReader = require('bbuf/lib/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); const base58 = require('../utils/base58'); const Script = require('../script/script'); const Address = require('./address'); diff --git a/lib/primitives/memblock.js b/lib/primitives/memblock.js index 075b7610..539b718f 100644 --- a/lib/primitives/memblock.js +++ b/lib/primitives/memblock.js @@ -11,7 +11,7 @@ const AbstractBlock = require('./abstractblock'); const Block = require('./block'); const Headers = require('./headers'); const Script = require('../script/script'); -const BufferReader = require('../utils/reader'); +const BufferReader = require('bbuf/lib/reader'); const DUMMY = Buffer.alloc(0); /** diff --git a/lib/primitives/merkleblock.js b/lib/primitives/merkleblock.js index 2e13637b..67abcdb2 100644 --- a/lib/primitives/merkleblock.js +++ b/lib/primitives/merkleblock.js @@ -9,9 +9,9 @@ const assert = require('assert'); const util = require('../utils/util'); -const BufferReader = require('../utils/reader'); -const StaticWriter = require('../utils/staticwriter'); -const encoding = require('../utils/encoding'); +const BufferReader = require('bbuf/lib/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); +const encoding = require('bbuf/lib/encoding'); const hash256 = require('bcrypto/lib/hash256'); const consensus = require('../protocol/consensus'); const AbstractBlock = require('./abstractblock'); diff --git a/lib/primitives/mtx.js b/lib/primitives/mtx.js index a3330125..699e3e31 100644 --- a/lib/primitives/mtx.js +++ b/lib/primitives/mtx.js @@ -16,7 +16,7 @@ const Coin = require('./coin'); const Outpoint = require('./outpoint'); const CoinView = require('../coins/coinview'); const Address = require('./address'); -const encoding = require('../utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const consensus = require('../protocol/consensus'); const policy = require('../protocol/policy'); const Amount = require('../btc/amount'); diff --git a/lib/primitives/netaddress.js b/lib/primitives/netaddress.js index 182d26e0..072e8b60 100644 --- a/lib/primitives/netaddress.js +++ b/lib/primitives/netaddress.js @@ -11,8 +11,8 @@ const common = require('../net/common'); const Network = require('../protocol/network'); const util = require('../utils/util'); const IP = require('../utils/ip'); -const StaticWriter = require('../utils/staticwriter'); -const BufferReader = require('../utils/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); +const BufferReader = require('bbuf/lib/reader'); /** * Represents a network address. diff --git a/lib/primitives/outpoint.js b/lib/primitives/outpoint.js index d409e0cb..f9068fdc 100644 --- a/lib/primitives/outpoint.js +++ b/lib/primitives/outpoint.js @@ -7,9 +7,9 @@ 'use strict'; const assert = require('assert'); -const StaticWriter = require('../utils/staticwriter'); -const BufferReader = require('../utils/reader'); -const encoding = require('../utils/encoding'); +const StaticWriter = require('bbuf/lib/staticwriter'); +const BufferReader = require('bbuf/lib/reader'); +const encoding = require('bbuf/lib/encoding'); /** * Represents a COutPoint. diff --git a/lib/primitives/output.js b/lib/primitives/output.js index 96581555..cf0ff053 100644 --- a/lib/primitives/output.js +++ b/lib/primitives/output.js @@ -12,8 +12,8 @@ const Amount = require('../btc/amount'); const Network = require('../protocol/network'); const Address = require('../primitives/address'); const Script = require('../script/script'); -const StaticWriter = require('../utils/staticwriter'); -const BufferReader = require('../utils/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); +const BufferReader = require('bbuf/lib/reader'); const consensus = require('../protocol/consensus'); const policy = require('../protocol/policy'); diff --git a/lib/primitives/tx.js b/lib/primitives/tx.js index 330bce23..e7c909ae 100644 --- a/lib/primitives/tx.js +++ b/lib/primitives/tx.js @@ -11,12 +11,12 @@ const assert = require('assert'); const digest = require('bcrypto/lib/digest'); const secp256k1 = require('bcrypto/lib/secp256k1'); const util = require('../utils/util'); -const encoding = require('../utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const Amount = require('../btc/amount'); const Network = require('../protocol/network'); const Script = require('../script/script'); -const BufferReader = require('../utils/reader'); -const StaticWriter = require('../utils/staticwriter'); +const BufferReader = require('bbuf/lib/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); const Input = require('./input'); const Output = require('./output'); const Outpoint = require('./outpoint'); diff --git a/lib/primitives/txmeta.js b/lib/primitives/txmeta.js index 5773a322..1daa43bd 100644 --- a/lib/primitives/txmeta.js +++ b/lib/primitives/txmeta.js @@ -9,9 +9,9 @@ const assert = require('assert'); const util = require('../utils/util'); const TX = require('./tx'); -const StaticWriter = require('../utils/staticwriter'); -const BufferReader = require('../utils/reader'); -const encoding = require('../utils/encoding'); +const StaticWriter = require('bbuf/lib/staticwriter'); +const BufferReader = require('bbuf/lib/reader'); +const encoding = require('bbuf/lib/encoding'); /** * An extended transaction object. diff --git a/lib/script/opcode.js b/lib/script/opcode.js index fbe693fc..813b8974 100644 --- a/lib/script/opcode.js +++ b/lib/script/opcode.js @@ -10,8 +10,8 @@ const assert = require('assert'); const ScriptNum = require('./scriptnum'); const common = require('./common'); -const BufferReader = require('../utils/reader'); -const StaticWriter = require('../utils/staticwriter'); +const BufferReader = require('bbuf/lib/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); const opcodes = common.opcodes; const opCache = []; diff --git a/lib/script/script.js b/lib/script/script.js index 118b35f3..db141ada 100644 --- a/lib/script/script.js +++ b/lib/script/script.js @@ -13,16 +13,16 @@ const merkle = require('bcrypto/lib/merkle'); const secp256k1 = require('bcrypto/lib/secp256k1'); const consensus = require('../protocol/consensus'); const policy = require('../protocol/policy'); -const BufferWriter = require('../utils/writer'); -const BufferReader = require('../utils/reader'); -const StaticWriter = require('../utils/staticwriter'); +const BufferWriter = require('bbuf/lib/writer'); +const BufferReader = require('bbuf/lib/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); const Program = require('./program'); const Opcode = require('./opcode'); const Stack = require('./stack'); const ScriptError = require('./scripterror'); const ScriptNum = require('./scriptnum'); const common = require('./common'); -const encoding = require('../utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const Address = require('../primitives/address'); const opcodes = common.opcodes; const scriptTypes = common.types; diff --git a/lib/script/witness.js b/lib/script/witness.js index 9909718d..5ff3e982 100644 --- a/lib/script/witness.js +++ b/lib/script/witness.js @@ -10,9 +10,9 @@ const assert = require('assert'); const Script = require('./script'); const common = require('./common'); -const encoding = require('../utils/encoding'); -const BufferReader = require('../utils/reader'); -const StaticWriter = require('../utils/staticwriter'); +const encoding = require('bbuf/lib/encoding'); +const BufferReader = require('bbuf/lib/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); const Address = require('../primitives/address'); const Stack = require('./stack'); const scriptTypes = common.types; diff --git a/lib/utils/encoding.js b/lib/utils/encoding.js deleted file mode 100644 index 0cf7ced7..00000000 --- a/lib/utils/encoding.js +++ /dev/null @@ -1,866 +0,0 @@ -/*! - * encoding.js - encoding utils for bcoin - * Copyright (c) 2014-2015, Fedor Indutny (MIT License) - * Copyright (c) 2014-2017, Christopher Jeffrey (MIT License). - * https://github.com/bcoin-org/bcoin - */ - -'use strict'; - -/** - * @module utils/encoding - */ - -const assert = require('assert'); -const {U64, I64} = require('n64'); -const UINT128_MAX = U64.UINT64_MAX.shrn(7); -const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER; -const encoding = exports; - -/** - * An empty buffer. - * @const {Buffer} - * @default - */ - -encoding.DUMMY = Buffer.from([0]); - -/** - * A hash of all zeroes with a `1` at the - * end (used for the SIGHASH_SINGLE bug). - * @const {Buffer} - * @default - */ - -encoding.ONE_HASH = Buffer.from( - '0100000000000000000000000000000000000000000000000000000000000000', - 'hex' -); - -/** - * A hash of all zeroes. - * @const {Buffer} - * @default - */ - -encoding.ZERO_HASH = Buffer.from( - '0000000000000000000000000000000000000000000000000000000000000000', - 'hex' -); - -/** - * A hash of all 0xff. - * @const {Buffer} - * @default - */ - -encoding.MAX_HASH = Buffer.from( - 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', - 'hex' -); - -/** - * A hash of all zeroes. - * @const {String} - * @default - */ - -encoding.NULL_HASH = - '0000000000000000000000000000000000000000000000000000000000000000'; - -/** - * A hash of all 0xff. - * @const {String} - * @default - */ - -encoding.HIGH_HASH = - 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'; - -/** - * A hash of all zeroes. - * @const {Buffer} - * @default - */ - -encoding.ZERO_HASH160 = Buffer.from( - '0000000000000000000000000000000000000000', - 'hex' -); - -/** - * A hash of all 0xff. - * @const {String} - * @default - */ - -encoding.MAX_HASH160 = Buffer.from( - 'ffffffffffffffffffffffffffffffffffffffff', - 'hex' -); - -/** - * A hash of all zeroes. - * @const {String} - * @default - */ - -encoding.NULL_HASH160 = '0000000000000000000000000000000000000000'; - -/** - * A hash of all 0xff. - * @const {String} - * @default - */ - -encoding.HIGH_HASH160 = 'ffffffffffffffffffffffffffffffffffffffff'; - -/** - * A compressed pubkey of all zeroes. - * @const {Buffer} - * @default - */ - -encoding.ZERO_KEY = Buffer.from( - '000000000000000000000000000000000000000000000000000000000000000000', - 'hex' -); - -/** - * A 73 byte signature of all zeroes. - * @const {Buffer} - * @default - */ - -encoding.ZERO_SIG = Buffer.from('' - + '0000000000000000000000000000000000000000000000000000000000000000' - + '0000000000000000000000000000000000000000000000000000000000000000' - + '000000000000000000', - 'hex' -); - -/** - * A 64 byte signature of all zeroes. - * @const {Buffer} - * @default - */ - -encoding.ZERO_SIG64 = Buffer.from('' - + '0000000000000000000000000000000000000000000000000000000000000000' - + '0000000000000000000000000000000000000000000000000000000000000000', - 'hex' -); - -/** - * 4 zero bytes. - * @const {Buffer} - * @default - */ - -encoding.ZERO_U32 = Buffer.from('00000000', 'hex'); - -/** - * 8 zero bytes. - * @const {Buffer} - * @default - */ - -encoding.ZERO_U64 = Buffer.from('0000000000000000', 'hex'); - -/** - * Read uint64le as a js number. - * @param {Buffer} data - * @param {Number} off - * @returns {Number} - * @throws on num > MAX_SAFE_INTEGER - */ - -encoding.readU64 = function readU64(data, off) { - const hi = data.readUInt32LE(off + 4, true); - const lo = data.readUInt32LE(off, true); - enforce((hi & 0xffe00000) === 0, off, 'Number exceeds 2^53-1'); - return hi * 0x100000000 + lo; -}; - -/** - * Read uint64be as a js number. - * @param {Buffer} data - * @param {Number} off - * @returns {Number} - * @throws on num > MAX_SAFE_INTEGER - */ - -encoding.readU64BE = function readU64BE(data, off) { - const hi = data.readUInt32BE(off, true); - const lo = data.readUInt32BE(off + 4, true); - enforce((hi & 0xffe00000) === 0, off, 'Number exceeds 2^53-1'); - return hi * 0x100000000 + lo; -}; - -/** - * Read int64be as a js number. - * @param {Buffer} data - * @param {Number} off - * @returns {Number} - * @throws on num > MAX_SAFE_INTEGER - */ - -encoding.readI64 = function readI64(data, off) { - const hi = data.readInt32LE(off + 4, true); - const lo = data.readUInt32LE(off, true); - enforce(isSafe(hi, lo), 'Number exceeds 2^53-1'); - return hi * 0x100000000 + lo; -}; - -/** - * Read int64be as a js number. - * @param {Buffer} data - * @param {Number} off - * @returns {Number} - * @throws on num > MAX_SAFE_INTEGER - */ - -encoding.readI64BE = function readI64BE(data, off) { - const hi = data.readInt32BE(off, true); - const lo = data.readUInt32BE(off + 4, true); - enforce(isSafe(hi, lo), 'Number exceeds 2^53-1'); - return hi * 0x100000000 + lo; -}; - -/** - * Write a javascript number as a uint64le. - * @param {Buffer} dst - * @param {Number} num - * @param {Number} off - * @returns {Number} Buffer offset. - * @throws on num > MAX_SAFE_INTEGER - */ - -encoding.writeU64 = function writeU64(dst, num, off) { - return write64(dst, num, off, false); -}; - -/** - * Write a javascript number as a uint64be. - * @param {Buffer} dst - * @param {Number} num - * @param {Number} off - * @returns {Number} Buffer offset. - * @throws on num > MAX_SAFE_INTEGER - */ - -encoding.writeU64BE = function writeU64BE(dst, num, off) { - return write64(dst, num, off, true); -}; - -/** - * Write a javascript number as an int64le. - * @param {Buffer} dst - * @param {Number} num - * @param {Number} off - * @returns {Number} Buffer offset. - * @throws on num > MAX_SAFE_INTEGER - */ - -encoding.writeI64 = function writeI64(dst, num, off) { - return write64(dst, num, off, false); -}; - -/** - * Write a javascript number as an int64be. - * @param {Buffer} dst - * @param {Number} num - * @param {Number} off - * @returns {Number} Buffer offset. - * @throws on num > MAX_SAFE_INTEGER - */ - -encoding.writeI64BE = function writeI64BE(dst, num, off) { - return write64(dst, num, off, true); -}; - -/** - * Read uint64le. - * @param {Buffer} data - * @param {Number} off - * @returns {U64} - */ - -encoding.readU64N = function readU64N(data, off) { - return U64.readLE(data, off); -}; - -/** - * Read uint64be. - * @param {Buffer} data - * @param {Number} off - * @returns {U64} - */ - -encoding.readU64BEN = function readU64BEN(data, off) { - return U64.readBE(data, off); -}; - -/** - * Read int64le. - * @param {Buffer} data - * @param {Number} off - * @returns {I64} - */ - -encoding.readI64N = function readI64N(data, off) { - return I64.readLE(data, off); -}; -/** - * Read int64be. - * @param {Buffer} data - * @param {Number} off - * @returns {I64} - */ - -encoding.readI64BEN = function readI64BEN(data, off) { - return I64.readBE(data, off); -}; - -/** - * Write uint64le. - * @param {Buffer} dst - * @param {U64} num - * @param {Number} off - * @returns {Number} Buffer offset. - */ - -encoding.writeU64N = function writeU64N(dst, num, off) { - enforce(!num.sign, off, 'Signed'); - return num.writeLE(dst, off); -}; - -/** - * Write uint64be. - * @param {Buffer} dst - * @param {U64} num - * @param {Number} off - * @returns {Number} Buffer offset. - */ - -encoding.writeU64BEN = function writeU64BEN(dst, num, off) { - enforce(!num.sign, off, 'Signed'); - return num.writeBE(dst, off); -}; - -/** - * Write int64le. - * @param {Buffer} dst - * @param {U64} num - * @param {Number} off - * @returns {Number} Buffer offset. - */ - -encoding.writeI64N = function writeI64N(dst, num, off) { - enforce(num.sign, off, 'Not signed'); - return num.writeLE(dst, off); -}; - -/** - * Write int64be. - * @param {Buffer} dst - * @param {I64} num - * @param {Number} off - * @returns {Number} Buffer offset. - */ - -encoding.writeI64BEN = function writeI64BEN(dst, num, off) { - enforce(num.sign, off, 'Not signed'); - return num.writeBE(dst, off); -}; - -/** - * Read a varint. - * @param {Buffer} data - * @param {Number} off - * @returns {Object} - */ - -encoding.readVarint = function readVarint(data, off) { - let value, size; - - check(off < data.length, off); - - switch (data[off]) { - case 0xff: - size = 9; - check(off + size <= data.length, off); - value = encoding.readU64(data, off + 1); - enforce(value > 0xffffffff, off, 'Non-canonical varint'); - break; - case 0xfe: - size = 5; - check(off + size <= data.length, off); - value = data.readUInt32LE(off + 1, true); - enforce(value > 0xffff, off, 'Non-canonical varint'); - break; - case 0xfd: - size = 3; - check(off + size <= data.length, off); - value = data[off + 1] | (data[off + 2] << 8); - enforce(value >= 0xfd, off, 'Non-canonical varint'); - break; - default: - size = 1; - value = data[off]; - break; - } - - return new Varint(size, value); -}; - -/** - * Write a varint. - * @param {Buffer} dst - * @param {Number} num - * @param {Number} off - * @returns {Number} Buffer offset. - */ - -encoding.writeVarint = function writeVarint(dst, num, off) { - if (num < 0xfd) { - dst[off++] = num & 0xff; - return off; - } - - if (num <= 0xffff) { - dst[off++] = 0xfd; - dst[off++] = num & 0xff; - dst[off++] = (num >> 8) & 0xff; - return off; - } - - if (num <= 0xffffffff) { - dst[off++] = 0xfe; - dst[off++] = num & 0xff; - dst[off++] = (num >> 8) & 0xff; - dst[off++] = (num >> 16) & 0xff; - dst[off++] = num >>> 24; - return off; - } - - dst[off++] = 0xff; - off = encoding.writeU64(dst, num, off); - return off; -}; - -/** - * Calculate size of varint. - * @param {Number} num - * @returns {Number} size - */ - -encoding.sizeVarint = function sizeVarint(num) { - if (num < 0xfd) - return 1; - - if (num <= 0xffff) - return 3; - - if (num <= 0xffffffff) - return 5; - - return 9; -}; - -/** - * Read a varint. - * @param {Buffer} data - * @param {Number} off - * @returns {Object} - */ - -encoding.readVarintN = function readVarintN(data, off) { - check(off < data.length, off); - - if (data[off] === 0xff) { - const size = 9; - check(off + size <= data.length, off); - const value = encoding.readU64N(data, off + 1); - enforce(value.hi !== 0, off, 'Non-canonical varint'); - return new Varint(size, value); - } - - const {size, value} = encoding.readVarint(data, off); - - return new Varint(size, U64.fromInt(value)); -}; - -/** - * Write a varint. - * @param {Buffer} dst - * @param {U64} num - * @param {Number} off - * @returns {Number} Buffer offset. - */ - -encoding.writeVarintN = function writeVarintN(dst, num, off) { - enforce(!num.sign, off, 'Signed'); - - if (num.hi !== 0) { - dst[off++] = 0xff; - return encoding.writeU64N(dst, num, off); - } - - return encoding.writeVarint(dst, num.toInt(), off); -}; - -/** - * Calculate size of varint. - * @param {U64} num - * @returns {Number} size - */ - -encoding.sizeVarintN = function sizeVarintN(num) { - enforce(!num.sign, 0, 'Signed'); - - if (num.hi !== 0) - return 9; - - return encoding.sizeVarint(num.toInt()); -}; - -/** - * Read a varint (type 2). - * @param {Buffer} data - * @param {Number} off - * @returns {Object} - */ - -encoding.readVarint2 = function readVarint2(data, off) { - let num = 0; - let size = 0; - - for (;;) { - check(off < data.length, off); - - const ch = data[off++]; - size++; - - // Number.MAX_SAFE_INTEGER >>> 7 - enforce(num <= 0x3fffffffffff - (ch & 0x7f), off, 'Number exceeds 2^53-1'); - - // num = (num << 7) | (ch & 0x7f); - num = (num * 0x80) + (ch & 0x7f); - - if ((ch & 0x80) === 0) - break; - - enforce(num !== MAX_SAFE_INTEGER, off, 'Number exceeds 2^53-1'); - num++; - } - - return new Varint(size, num); -}; - -/** - * Write a varint (type 2). - * @param {Buffer} dst - * @param {Number} num - * @param {Number} off - * @returns {Number} Buffer offset. - */ - -encoding.writeVarint2 = function writeVarint2(dst, num, off) { - const tmp = []; - - let len = 0; - - for (;;) { - tmp[len] = (num & 0x7f) | (len ? 0x80 : 0x00); - if (num <= 0x7f) - break; - // num = (num >>> 7) - 1; - num = ((num - (num % 0x80)) / 0x80) - 1; - len++; - } - - check(off + len + 1 <= dst.length, off); - - do { - dst[off++] = tmp[len]; - } while (len--); - - return off; -}; - -/** - * Calculate size of varint (type 2). - * @param {Number} num - * @returns {Number} size - */ - -encoding.sizeVarint2 = function sizeVarint2(num) { - let size = 0; - - for (;;) { - size++; - if (num <= 0x7f) - break; - // num = (num >>> 7) - 1; - num = ((num - (num % 0x80)) / 0x80) - 1; - } - - return size; -}; - -/** - * Read a varint (type 2). - * @param {Buffer} data - * @param {Number} off - * @returns {Object} - */ - -encoding.readVarint2N = function readVarint2N(data, off) { - const num = new U64(); - - let size = 0; - - for (;;) { - check(off < data.length, off); - - const ch = data[off++]; - size++; - - enforce(num.lte(UINT128_MAX), off, 'Number exceeds 2^64-1'); - - num.ishln(7).iorn(ch & 0x7f); - - if ((ch & 0x80) === 0) - break; - - enforce(!num.eq(U64.UINT64_MAX), off, 'Number exceeds 2^64-1'); - num.iaddn(1); - } - - return new Varint(size, num); -}; - -/** - * Write a varint (type 2). - * @param {Buffer} dst - * @param {U64} num - * @param {Number} off - * @returns {Number} Buffer offset. - */ - -encoding.writeVarint2N = function writeVarint2N(dst, num, off) { - enforce(!num.sign, off, 'Signed'); - - if (num.hi === 0) - return encoding.writeVarint2(dst, num.toInt(), off); - - num = num.clone(); - - const tmp = []; - - let len = 0; - - for (;;) { - tmp[len] = num.andln(0x7f) | (len ? 0x80 : 0x00); - if (num.lten(0x7f)) - break; - num.ishrn(7).isubn(1); - len++; - } - - enforce(off + len + 1 <= dst.length, off, 'Out of bounds write'); - - do { - dst[off++] = tmp[len]; - } while (len--); - - return off; -}; - -/** - * Calculate size of varint (type 2). - * @param {U64} num - * @returns {Number} size - */ - -encoding.sizeVarint2N = function sizeVarint2N(num) { - enforce(!num.sign, 0, 'Signed'); - - if (num.hi === 0) - return encoding.sizeVarint2(num.toInt()); - - num = num.clone(); - - let size = 0; - - for (;;) { - size++; - if (num.lten(0x7f)) - break; - num.ishrn(7).isubn(1); - } - - return size; -}; - -/** - * Serialize number as a u8. - * @param {Number} num - * @returns {Buffer} - */ - -encoding.u8 = function u8(num) { - const data = Buffer.allocUnsafe(1); - data[0] = num >>> 0; - return data; -}; - -/** - * Serialize number as a u32le. - * @param {Number} num - * @returns {Buffer} - */ - -encoding.u32 = function u32(num) { - const data = Buffer.allocUnsafe(4); - data.writeUInt32LE(num, 0, true); - return data; -}; - -/** - * Get size of varint-prefixed bytes. - * @param {Buffer} data - * @returns {Number} - */ - -encoding.sizeVarBytes = function sizeVarBytes(data) { - return encoding.sizeVarint(data.length) + data.length; -}; - -/** - * Get size of varint-prefixed length. - * @param {Number} len - * @returns {Number} - */ - -encoding.sizeVarlen = function sizeVarlen(len) { - return encoding.sizeVarint(len) + len; -}; - -/** - * Get size of varint-prefixed string. - * @param {String} str - * @returns {Number} - */ - -encoding.sizeVarString = function sizeVarString(str, enc) { - if (typeof str !== 'string') - return encoding.sizeVarBytes(str); - - const len = Buffer.byteLength(str, enc); - - return encoding.sizeVarint(len) + len; -}; - -/** - * Reverse a hex-string (used because of - * bitcoind's affinity for uint256le). - * @param {String} str - Hex string. - * @returns {String} Reversed hex string. - */ - -encoding.revHex = function revHex(str) { - assert(typeof str === 'string'); - assert(str.length > 0); - assert(str.length % 2 === 0); - - let out = ''; - - for (let i = str.length - 2; i >= 0; i -= 2) - out += str[i] + str[i + 1]; - - return out; -}; - -/** - * EncodingError - * @constructor - * @param {Number} offset - * @param {String} reason - */ - -encoding.EncodingError = function EncodingError(offset, reason, start) { - if (!(this instanceof EncodingError)) - return new EncodingError(offset, reason, start); - - Error.call(this); - - this.type = 'EncodingError'; - this.message = `${reason} (offset=${offset}).`; - - if (Error.captureStackTrace) - Error.captureStackTrace(this, start || EncodingError); -}; - -Object.setPrototypeOf(encoding.EncodingError.prototype, Error.prototype); - -/* - * Helpers - */ - -function isSafe(hi, lo) { - if (hi < 0) { - hi = ~hi; - if (lo === 0) - hi += 1; - } - - return (hi & 0xffe00000) === 0; -} - -function write64(dst, num, off, be) { - let neg = false; - - if (num < 0) { - num = -num; - neg = true; - } - - let hi = (num * (1 / 0x100000000)) | 0; - let lo = num | 0; - - if (neg) { - if (lo === 0) { - hi = (~hi + 1) | 0; - } else { - hi = ~hi; - lo = ~lo + 1; - } - } - - if (be) { - off = dst.writeInt32BE(hi, off, true); - off = dst.writeInt32BE(lo, off, true); - } else { - off = dst.writeInt32LE(lo, off, true); - off = dst.writeInt32LE(hi, off, true); - } - - return off; -} - -function Varint(size, value) { - this.size = size; - this.value = value; -} - -function check(value, offset) { - if (!value) - throw new encoding.EncodingError(offset, 'Out of bounds read', check); -} - -function enforce(value, offset, reason) { - if (!value) - throw new encoding.EncodingError(offset, reason, enforce); -} diff --git a/lib/utils/hashwriter.js b/lib/utils/hashwriter.js index bf1dbec0..6229bfae 100644 --- a/lib/utils/hashwriter.js +++ b/lib/utils/hashwriter.js @@ -7,7 +7,7 @@ 'use strict'; const assert = require('assert'); -const encoding = require('./encoding'); +const encoding = require('bbuf/lib/encoding'); const POOL0 = Buffer.allocUnsafe(0); const POOL8 = Buffer.allocUnsafe(1); diff --git a/lib/utils/index.js b/lib/utils/index.js index 8c03c2f4..d777f6a9 100644 --- a/lib/utils/index.js +++ b/lib/utils/index.js @@ -17,7 +17,6 @@ exports.base58 = require('./base58'); exports.bech32 = require('./bech32'); exports.binary = require('./binary'); exports.co = require('./co'); -exports.encoding = require('./encoding'); exports.enforce = require('./enforce'); exports.fixed = require('./fixed'); exports.Heap = require('./heap'); @@ -26,8 +25,5 @@ exports.List = require('./list'); exports.Lock = require('./lock'); exports.LRU = require('./lru'); exports.MappedLock = require('./mappedlock'); -exports.BufferReader = require('./reader'); -exports.StaticWriter = require('./staticwriter'); exports.util = require('./util'); exports.Validator = require('./validator'); -exports.BufferWriter = require('./writer'); diff --git a/lib/utils/reader.js b/lib/utils/reader.js deleted file mode 100644 index f8d13b3c..00000000 --- a/lib/utils/reader.js +++ /dev/null @@ -1,602 +0,0 @@ -/*! - * reader.js - buffer reader for bcoin - * Copyright (c) 2014-2015, Fedor Indutny (MIT License) - * Copyright (c) 2014-2017, Christopher Jeffrey (MIT License). - * https://github.com/bcoin-org/bcoin - */ - -'use strict'; - -const assert = require('assert'); -const encoding = require('./encoding'); - -const EMPTY = Buffer.alloc(0); - -/** - * An object that allows reading of buffers in a sane manner. - * @alias module:utils.BufferReader - * @constructor - * @param {Buffer} data - * @param {Boolean?} zeroCopy - Do not reallocate buffers when - * slicing. Note that this can lead to memory leaks if not used - * carefully. - */ - -function BufferReader(data, zeroCopy) { - if (!(this instanceof BufferReader)) - return new BufferReader(data, zeroCopy); - - assert(Buffer.isBuffer(data), 'Must pass a Buffer.'); - - this.data = data; - this.offset = 0; - this.zeroCopy = zeroCopy || false; - this.stack = []; -} - -/** - * Assertion. - * @param {Boolean} value - */ - -BufferReader.prototype.assert = function assert(value) { - if (!value) - throw new encoding.EncodingError(this.offset, 'Out of bounds read', assert); -}; - -/** - * Assertion. - * @param {Boolean} value - * @param {String} reason - */ - -BufferReader.prototype.enforce = function enforce(value, reason) { - if (!value) - throw new encoding.EncodingError(this.offset, reason, enforce); -}; - -/** - * Get total size of passed-in Buffer. - * @returns {Buffer} - */ - -BufferReader.prototype.getSize = function getSize() { - return this.data.length; -}; - -/** - * Calculate number of bytes left to read. - * @returns {Number} - */ - -BufferReader.prototype.left = function left() { - this.assert(this.offset <= this.data.length); - return this.data.length - this.offset; -}; - -/** - * Seek to a position to read from by offset. - * @param {Number} off - Offset (positive or negative). - */ - -BufferReader.prototype.seek = function seek(off) { - this.assert(this.offset + off >= 0); - this.assert(this.offset + off <= this.data.length); - this.offset += off; - return off; -}; - -/** - * Mark the current starting position. - */ - -BufferReader.prototype.start = function start() { - this.stack.push(this.offset); - return this.offset; -}; - -/** - * Stop reading. Pop the start position off the stack - * and calculate the size of the data read. - * @returns {Number} Size. - * @throws on empty stack. - */ - -BufferReader.prototype.end = function end() { - assert(this.stack.length > 0); - - const start = this.stack.pop(); - - return this.offset - start; -}; - -/** - * Stop reading. Pop the start position off the stack - * and return the data read. - * @param {Bolean?} zeroCopy - Do a fast buffer - * slice instead of allocating a new buffer (warning: - * may cause memory leaks if not used with care). - * @returns {Buffer} Data read. - * @throws on empty stack. - */ - -BufferReader.prototype.endData = function endData(zeroCopy) { - assert(this.stack.length > 0); - - const start = this.stack.pop(); - const end = this.offset; - const size = end - start; - const data = this.data; - - if (size === data.length) - return data; - - if (this.zeroCopy || zeroCopy) - return data.slice(start, end); - - const ret = Buffer.allocUnsafe(size); - data.copy(ret, 0, start, end); - - return ret; -}; - -/** - * Destroy the reader. Remove references to the data. - */ - -BufferReader.prototype.destroy = function destroy() { - this.data = EMPTY; - this.offset = 0; - this.stack.length = 0; -}; - -/** - * Read uint8. - * @returns {Number} - */ - -BufferReader.prototype.readU8 = function readU8() { - this.assert(this.offset + 1 <= this.data.length); - const ret = this.data[this.offset]; - this.offset += 1; - return ret; -}; - -/** - * Read uint16le. - * @returns {Number} - */ - -BufferReader.prototype.readU16 = function readU16() { - this.assert(this.offset + 2 <= this.data.length); - const ret = this.data.readUInt16LE(this.offset, true); - this.offset += 2; - return ret; -}; - -/** - * Read uint16be. - * @returns {Number} - */ - -BufferReader.prototype.readU16BE = function readU16BE() { - this.assert(this.offset + 2 <= this.data.length); - const ret = this.data.readUInt16BE(this.offset, true); - this.offset += 2; - return ret; -}; - -/** - * Read uint32le. - * @returns {Number} - */ - -BufferReader.prototype.readU32 = function readU32() { - this.assert(this.offset + 4 <= this.data.length); - const ret = this.data.readUInt32LE(this.offset, true); - this.offset += 4; - return ret; -}; - -/** - * Read uint32be. - * @returns {Number} - */ - -BufferReader.prototype.readU32BE = function readU32BE() { - this.assert(this.offset + 4 <= this.data.length); - const ret = this.data.readUInt32BE(this.offset, true); - this.offset += 4; - return ret; -}; - -/** - * Read uint64le as a js number. - * @returns {Number} - * @throws on num > MAX_SAFE_INTEGER - */ - -BufferReader.prototype.readU64 = function readU64() { - this.assert(this.offset + 8 <= this.data.length); - const ret = encoding.readU64(this.data, this.offset); - this.offset += 8; - return ret; -}; - -/** - * Read uint64be as a js number. - * @returns {Number} - * @throws on num > MAX_SAFE_INTEGER - */ - -BufferReader.prototype.readU64BE = function readU64BE() { - this.assert(this.offset + 8 <= this.data.length); - const ret = encoding.readU64BE(this.data, this.offset); - this.offset += 8; - return ret; -}; - -/** - * Read int8. - * @returns {Number} - */ - -BufferReader.prototype.readI8 = function readI8() { - this.assert(this.offset + 1 <= this.data.length); - const ret = this.data.readInt8(this.offset, true); - this.offset += 1; - return ret; -}; - -/** - * Read int16le. - * @returns {Number} - */ - -BufferReader.prototype.readI16 = function readI16() { - this.assert(this.offset + 2 <= this.data.length); - const ret = this.data.readInt16LE(this.offset, true); - this.offset += 2; - return ret; -}; - -/** - * Read int16be. - * @returns {Number} - */ - -BufferReader.prototype.readI16BE = function readI16BE() { - this.assert(this.offset + 2 <= this.data.length); - const ret = this.data.readInt16BE(this.offset, true); - this.offset += 2; - return ret; -}; - -/** - * Read int32le. - * @returns {Number} - */ - -BufferReader.prototype.readI32 = function readI32() { - this.assert(this.offset + 4 <= this.data.length); - const ret = this.data.readInt32LE(this.offset, true); - this.offset += 4; - return ret; -}; - -/** - * Read int32be. - * @returns {Number} - */ - -BufferReader.prototype.readI32BE = function readI32BE() { - this.assert(this.offset + 4 <= this.data.length); - const ret = this.data.readInt32BE(this.offset, true); - this.offset += 4; - return ret; -}; - -/** - * Read int64le as a js number. - * @returns {Number} - * @throws on num > MAX_SAFE_INTEGER - */ - -BufferReader.prototype.readI64 = function readI64() { - this.assert(this.offset + 8 <= this.data.length); - const ret = encoding.readI64(this.data, this.offset); - this.offset += 8; - return ret; -}; - -/** - * Read int64be as a js number. - * @returns {Number} - * @throws on num > MAX_SAFE_INTEGER - */ - -BufferReader.prototype.readI64BE = function readI64BE() { - this.assert(this.offset + 8 <= this.data.length); - const ret = encoding.readI64BE(this.data, this.offset); - this.offset += 8; - return ret; -}; - -/** - * Read uint64le. - * @returns {U64} - */ - -BufferReader.prototype.readU64N = function readU64N() { - this.assert(this.offset + 8 <= this.data.length); - const ret = encoding.readU64N(this.data, this.offset); - this.offset += 8; - return ret; -}; - -/** - * Read uint64be. - * @returns {U64} - */ - -BufferReader.prototype.readU64BEN = function readU64BEN() { - this.assert(this.offset + 8 <= this.data.length); - const ret = encoding.readU64BEN(this.data, this.offset); - this.offset += 8; - return ret; -}; - -/** - * Read int64le. - * @returns {I64} - */ - -BufferReader.prototype.readI64N = function readI64N() { - this.assert(this.offset + 8 <= this.data.length); - const ret = encoding.readI64N(this.data, this.offset); - this.offset += 8; - return ret; -}; - -/** - * Read int64be. - * @returns {I64} - */ - -BufferReader.prototype.readI64BEN = function readI64BEN() { - this.assert(this.offset + 8 <= this.data.length); - const ret = encoding.readI64BEN(this.data, this.offset); - this.offset += 8; - return ret; -}; - -/** - * Read float le. - * @returns {Number} - */ - -BufferReader.prototype.readFloat = function readFloat() { - this.assert(this.offset + 4 <= this.data.length); - const ret = this.data.readFloatLE(this.offset, true); - this.offset += 4; - return ret; -}; - -/** - * Read float be. - * @returns {Number} - */ - -BufferReader.prototype.readFloatBE = function readFloatBE() { - this.assert(this.offset + 4 <= this.data.length); - const ret = this.data.readFloatBE(this.offset, true); - this.offset += 4; - return ret; -}; - -/** - * Read double float le. - * @returns {Number} - */ - -BufferReader.prototype.readDouble = function readDouble() { - this.assert(this.offset + 8 <= this.data.length); - const ret = this.data.readDoubleLE(this.offset, true); - this.offset += 8; - return ret; -}; - -/** - * Read double float be. - * @returns {Number} - */ - -BufferReader.prototype.readDoubleBE = function readDoubleBE() { - this.assert(this.offset + 8 <= this.data.length); - const ret = this.data.readDoubleBE(this.offset, true); - this.offset += 8; - return ret; -}; - -/** - * Read a varint. - * @returns {Number} - */ - -BufferReader.prototype.readVarint = function readVarint() { - const {size, value} = encoding.readVarint(this.data, this.offset); - this.offset += size; - return value; -}; - -/** - * Read a varint. - * @returns {U64} - */ - -BufferReader.prototype.readVarintN = function readVarintN() { - const {size, value} = encoding.readVarintN(this.data, this.offset); - this.offset += size; - return value; -}; - -/** - * Read a varint (type 2). - * @returns {Number} - */ - -BufferReader.prototype.readVarint2 = function readVarint2() { - const {size, value} = encoding.readVarint2(this.data, this.offset); - this.offset += size; - return value; -}; - -/** - * Read a varint (type 2). - * @returns {U64} - */ - -BufferReader.prototype.readVarint2N = function readVarint2N() { - const {size, value} = encoding.readVarint2N(this.data, this.offset); - this.offset += size; - return value; -}; - -/** - * Read N bytes (will do a fast slice if zero copy). - * @param {Number} size - * @param {Bolean?} zeroCopy - Do a fast buffer - * slice instead of allocating a new buffer (warning: - * may cause memory leaks if not used with care). - * @returns {Buffer} - */ - -BufferReader.prototype.readBytes = function readBytes(size, zeroCopy) { - assert(size >= 0); - this.assert(this.offset + size <= this.data.length); - - let ret; - if (this.zeroCopy || zeroCopy) { - ret = this.data.slice(this.offset, this.offset + size); - } else { - ret = Buffer.allocUnsafe(size); - this.data.copy(ret, 0, this.offset, this.offset + size); - } - - this.offset += size; - - return ret; -}; - -/** - * Read a varint number of bytes (will do a fast slice if zero copy). - * @param {Bolean?} zeroCopy - Do a fast buffer - * slice instead of allocating a new buffer (warning: - * may cause memory leaks if not used with care). - * @returns {Buffer} - */ - -BufferReader.prototype.readVarBytes = function readVarBytes(zeroCopy) { - return this.readBytes(this.readVarint(), zeroCopy); -}; - -/** - * Read a string. - * @param {String} enc - Any buffer-supported encoding. - * @param {Number} size - * @returns {String} - */ - -BufferReader.prototype.readString = function readString(enc, size) { - assert(size >= 0); - this.assert(this.offset + size <= this.data.length); - const ret = this.data.toString(enc, this.offset, this.offset + size); - this.offset += size; - return ret; -}; - -/** - * Read a 32-byte hash. - * @param {String} enc - `"hex"` or `null`. - * @returns {Hash|Buffer} - */ - -BufferReader.prototype.readHash = function readHash(enc) { - if (enc) - return this.readString(enc, 32); - return this.readBytes(32); -}; - -/** - * Read string of a varint length. - * @param {String} enc - Any buffer-supported encoding. - * @param {Number?} limit - Size limit. - * @returns {String} - */ - -BufferReader.prototype.readVarString = function readVarString(enc, limit) { - const size = this.readVarint(); - this.enforce(!limit || size <= limit, 'String exceeds limit.'); - return this.readString(enc, size); -}; - -/** - * Read a null-terminated string. - * @param {String} enc - Any buffer-supported encoding. - * @returns {String} - */ - -BufferReader.prototype.readNullString = function readNullString(enc) { - this.assert(this.offset + 1 <= this.data.length); - - let i = this.offset; - for (; i < this.data.length; i++) { - if (this.data[i] === 0) - break; - } - - this.assert(i !== this.data.length); - - const ret = this.readString(enc, i - this.offset); - - this.offset = i + 1; - - return ret; -}; - -/** - * Create a checksum from the last start position. - * @param {Function} hash - * @returns {Number} Checksum. - */ - -BufferReader.prototype.createChecksum = function createChecksum(hash) { - let start = 0; - - if (this.stack.length > 0) - start = this.stack[this.stack.length - 1]; - - const data = this.data.slice(start, this.offset); - - return hash(data).readUInt32LE(0, true); -}; - -/** - * Verify a 4-byte checksum against a calculated checksum. - * @param {Function} hash - * @returns {Number} checksum - * @throws on bad checksum - */ - -BufferReader.prototype.verifyChecksum = function verifyChecksum(hash) { - const chk = this.createChecksum(hash); - const checksum = this.readU32(); - this.enforce(chk === checksum, 'Checksum mismatch.'); - return checksum; -}; - -/* - * Expose - */ - -module.exports = BufferReader; diff --git a/lib/utils/staticwriter.js b/lib/utils/staticwriter.js deleted file mode 100644 index 7e54ab4e..00000000 --- a/lib/utils/staticwriter.js +++ /dev/null @@ -1,460 +0,0 @@ -/*! - * staticwriter.js - buffer writer for bcoin - * Copyright (c) 2014-2017, Christopher Jeffrey (MIT License). - * https://github.com/bcoin-org/bcoin - */ - -'use strict'; - -const assert = require('assert'); -const encoding = require('./encoding'); - -const EMPTY = Buffer.alloc(0); -const POOLSIZE = 100 << 10; - -let POOL = null; - -/** - * Statically allocated buffer writer. - * @alias module:utils.StaticWriter - * @constructor - * @param {Number} size - */ - -function StaticWriter(size) { - if (!(this instanceof StaticWriter)) - return new StaticWriter(size); - - this.data = size ? Buffer.allocUnsafe(size) : EMPTY; - this.offset = 0; -} - -/** - * Allocate writer from preallocated 100kb pool. - * @param {Number} size - * @returns {StaticWriter} - */ - -StaticWriter.pool = function pool(size) { - if (size <= POOLSIZE) { - if (!POOL) - POOL = Buffer.allocUnsafeSlow(POOLSIZE); - - const bw = new StaticWriter(0); - bw.data = POOL.slice(0, size); - return bw; - } - - return new StaticWriter(size); -}; - -/** - * Allocate and render the final buffer. - * @returns {Buffer} Rendered buffer. - */ - -StaticWriter.prototype.render = function render() { - const data = this.data; - assert(this.offset === data.length); - this.destroy(); - return data; -}; - -/** - * Get size of data written so far. - * @returns {Number} - */ - -StaticWriter.prototype.getSize = function getSize() { - return this.offset; -}; - -/** - * Seek to relative offset. - * @param {Number} offset - */ - -StaticWriter.prototype.seek = function seek(offset) { - this.offset += offset; -}; - -/** - * Destroy the buffer writer. - */ - -StaticWriter.prototype.destroy = function destroy() { - this.data = EMPTY; - this.offset = 0; -}; - -/** - * Write uint8. - * @param {Number} value - */ - -StaticWriter.prototype.writeU8 = function writeU8(value) { - this.offset = this.data.writeUInt8(value, this.offset, true); -}; - -/** - * Write uint16le. - * @param {Number} value - */ - -StaticWriter.prototype.writeU16 = function writeU16(value) { - this.offset = this.data.writeUInt16LE(value, this.offset, true); -}; - -/** - * Write uint16be. - * @param {Number} value - */ - -StaticWriter.prototype.writeU16BE = function writeU16BE(value) { - this.offset = this.data.writeUInt16BE(value, this.offset, true); -}; - -/** - * Write uint32le. - * @param {Number} value - */ - -StaticWriter.prototype.writeU32 = function writeU32(value) { - this.offset = this.data.writeUInt32LE(value, this.offset, true); -}; - -/** - * Write uint32be. - * @param {Number} value - */ - -StaticWriter.prototype.writeU32BE = function writeU32BE(value) { - this.offset = this.data.writeUInt32BE(value, this.offset, true); -}; - -/** - * Write uint64le. - * @param {Number} value - */ - -StaticWriter.prototype.writeU64 = function writeU64(value) { - this.offset = encoding.writeU64(this.data, value, this.offset); -}; - -/** - * Write uint64be. - * @param {Number} value - */ - -StaticWriter.prototype.writeU64BE = function writeU64BE(value) { - this.offset = encoding.writeU64BE(this.data, value, this.offset); -}; - -/** - * Write uint64le. - * @param {U64} value - */ - -StaticWriter.prototype.writeU64N = function writeU64N(value) { - this.offset = encoding.writeU64N(this.data, value, this.offset); -}; - -/** - * Write uint64be. - * @param {U64} value - */ - -StaticWriter.prototype.writeU64BEN = function writeU64BEN(value) { - this.offset = encoding.writeU64BEN(this.data, value, this.offset); -}; - -/** - * Write int8. - * @param {Number} value - */ - -StaticWriter.prototype.writeI8 = function writeI8(value) { - this.offset = this.data.writeInt8(value, this.offset, true); -}; - -/** - * Write int16le. - * @param {Number} value - */ - -StaticWriter.prototype.writeI16 = function writeI16(value) { - this.offset = this.data.writeInt16LE(value, this.offset, true); -}; - -/** - * Write int16be. - * @param {Number} value - */ - -StaticWriter.prototype.writeI16BE = function writeI16BE(value) { - this.offset = this.data.writeInt16BE(value, this.offset, true); -}; - -/** - * Write int32le. - * @param {Number} value - */ - -StaticWriter.prototype.writeI32 = function writeI32(value) { - this.offset = this.data.writeInt32LE(value, this.offset, true); -}; - -/** - * Write int32be. - * @param {Number} value - */ - -StaticWriter.prototype.writeI32BE = function writeI32BE(value) { - this.offset = this.data.writeInt32BE(value, this.offset, true); -}; - -/** - * Write int64le. - * @param {Number} value - */ - -StaticWriter.prototype.writeI64 = function writeI64(value) { - this.offset = encoding.writeI64(this.data, value, this.offset); -}; - -/** - * Write int64be. - * @param {Number} value - */ - -StaticWriter.prototype.writeI64BE = function writeI64BE(value) { - this.offset = encoding.writeI64BE(this.data, value, this.offset); -}; - -/** - * Write int64le. - * @param {I64} value - */ - -StaticWriter.prototype.writeI64N = function writeI64N(value) { - this.offset = encoding.writeI64N(this.data, value, this.offset); -}; - -/** - * Write int64be. - * @param {I64} value - */ - -StaticWriter.prototype.writeI64BEN = function writeI64BEN(value) { - this.offset = encoding.writeI64BEN(this.data, value, this.offset); -}; - -/** - * Write float le. - * @param {Number} value - */ - -StaticWriter.prototype.writeFloat = function writeFloat(value) { - this.offset = this.data.writeFloatLE(value, this.offset, true); -}; - -/** - * Write float be. - * @param {Number} value - */ - -StaticWriter.prototype.writeFloatBE = function writeFloatBE(value) { - this.offset = this.data.writeFloatBE(value, this.offset, true); -}; - -/** - * Write double le. - * @param {Number} value - */ - -StaticWriter.prototype.writeDouble = function writeDouble(value) { - this.offset = this.data.writeDoubleLE(value, this.offset, true); -}; - -/** - * Write double be. - * @param {Number} value - */ - -StaticWriter.prototype.writeDoubleBE = function writeDoubleBE(value) { - this.offset = this.data.writeDoubleBE(value, this.offset, true); -}; - -/** - * Write a varint. - * @param {Number} value - */ - -StaticWriter.prototype.writeVarint = function writeVarint(value) { - this.offset = encoding.writeVarint(this.data, value, this.offset); -}; - -/** - * Write a varint. - * @param {U64} value - */ - -StaticWriter.prototype.writeVarintN = function writeVarintN(value) { - this.offset = encoding.writeVarintN(this.data, value, this.offset); -}; - -/** - * Write a varint (type 2). - * @param {Number} value - */ - -StaticWriter.prototype.writeVarint2 = function writeVarint2(value) { - this.offset = encoding.writeVarint2(this.data, value, this.offset); -}; - -/** - * Write a varint (type 2). - * @param {U64} value - */ - -StaticWriter.prototype.writeVarint2N = function writeVarint2N(value) { - this.offset = encoding.writeVarint2N(this.data, value, this.offset); -}; - -/** - * Write bytes. - * @param {Buffer} value - */ - -StaticWriter.prototype.writeBytes = function writeBytes(value) { - if (value.length === 0) - return; - - value.copy(this.data, this.offset); - - this.offset += value.length; -}; - -/** - * Write bytes with a varint length before them. - * @param {Buffer} value - */ - -StaticWriter.prototype.writeVarBytes = function writeVarBytes(value) { - this.writeVarint(value.length); - this.writeBytes(value); -}; - -/** - * Copy bytes. - * @param {Buffer} value - * @param {Number} start - * @param {Number} end - */ - -StaticWriter.prototype.copy = function copy(value, start, end) { - const len = end - start; - - if (len === 0) - return; - - value.copy(this.data, this.offset, start, end); - this.offset += len; -}; - -/** - * Write string to buffer. - * @param {String} value - * @param {String?} enc - Any buffer-supported encoding. - */ - -StaticWriter.prototype.writeString = function writeString(value, enc) { - if (value.length === 0) - return; - - const size = Buffer.byteLength(value, enc); - - this.data.write(value, this.offset, enc); - - this.offset += size; -}; - -/** - * Write a 32 byte hash. - * @param {Hash} value - */ - -StaticWriter.prototype.writeHash = function writeHash(value) { - if (typeof value !== 'string') { - assert(value.length === 32); - this.writeBytes(value); - return; - } - assert(value.length === 64); - this.data.write(value, this.offset, 'hex'); - this.offset += 32; -}; - -/** - * Write a string with a varint length before it. - * @param {String} - * @param {String?} enc - Any buffer-supported encoding. - */ - -StaticWriter.prototype.writeVarString = function writeVarString(value, enc) { - if (value.length === 0) { - this.writeVarint(0); - return; - } - - const size = Buffer.byteLength(value, enc); - - this.writeVarint(size); - this.data.write(value, this.offset, enc); - - this.offset += size; -}; - -/** - * Write a null-terminated string. - * @param {String|Buffer} - * @param {String?} enc - Any buffer-supported encoding. - */ - -StaticWriter.prototype.writeNullString = function writeNullString(value, enc) { - this.writeString(value, enc); - this.writeU8(0); -}; - -/** - * Calculate and write a checksum for the data written so far. - * @param {Function} hash - */ - -StaticWriter.prototype.writeChecksum = function writeChecksum(hash) { - const data = this.data.slice(0, this.offset); - hash(data).copy(this.data, this.offset, 0, 4); - this.offset += 4; -}; - -/** - * Fill N bytes with value. - * @param {Number} value - * @param {Number} size - */ - -StaticWriter.prototype.fill = function fill(value, size) { - assert(size >= 0); - - if (size === 0) - return; - - this.data.fill(value, this.offset, this.offset + size); - this.offset += size; -}; - -/* - * Expose - */ - -module.exports = StaticWriter; diff --git a/lib/utils/writer.js b/lib/utils/writer.js deleted file mode 100644 index e641c31a..00000000 --- a/lib/utils/writer.js +++ /dev/null @@ -1,622 +0,0 @@ -/*! - * writer.js - buffer writer for bcoin - * Copyright (c) 2014-2015, Fedor Indutny (MIT License) - * Copyright (c) 2014-2017, Christopher Jeffrey (MIT License). - * https://github.com/bcoin-org/bcoin - */ - -'use strict'; - -const assert = require('assert'); -const encoding = require('./encoding'); - -/* - * Constants - */ - -const SEEK = 0; -const UI8 = 1; -const UI16 = 2; -const UI16BE = 3; -const UI32 = 4; -const UI32BE = 5; -const UI64 = 6; -const UI64BE = 7; -const UI64N = 8; -const UI64BEN = 9; -const I8 = 10; -const I16 = 11; -const I16BE = 12; -const I32 = 13; -const I32BE = 14; -const I64 = 15; -const I64BE = 16; -const I64N = 17; -const I64BEN = 18; -const FL = 19; -const FLBE = 20; -const DBL = 21; -const DBLBE = 22; -const VARINT = 23; -const VARINTN = 24; -const VARINT2 = 25; -const VARINT2N = 26; -const BYTES = 27; -const STR = 28; -const CHECKSUM = 29; -const FILL = 30; - -/** - * An object that allows writing of buffers in a - * sane manner. This buffer writer is extremely - * optimized since it does not actually write - * anything until `render` is called. It makes - * one allocation: at the end, once it knows the - * size of the buffer to be allocated. Because - * of this, it can also act as a size calculator - * which is useful for guaging block size - * without actually serializing any data. - * @alias module:utils.BufferWriter - * @constructor - */ - -function BufferWriter() { - if (!(this instanceof BufferWriter)) - return new BufferWriter(); - - this.ops = []; - this.offset = 0; -} - -/** - * Allocate and render the final buffer. - * @returns {Buffer} Rendered buffer. - */ - -BufferWriter.prototype.render = function render() { - const data = Buffer.allocUnsafe(this.offset); - let off = 0; - - for (const op of this.ops) { - switch (op.type) { - case SEEK: - off += op.value; - break; - case UI8: - off = data.writeUInt8(op.value, off, true); - break; - case UI16: - off = data.writeUInt16LE(op.value, off, true); - break; - case UI16BE: - off = data.writeUInt16BE(op.value, off, true); - break; - case UI32: - off = data.writeUInt32LE(op.value, off, true); - break; - case UI32BE: - off = data.writeUInt32BE(op.value, off, true); - break; - case UI64: - off = encoding.writeU64(data, op.value, off); - break; - case UI64BE: - off = encoding.writeU64BE(data, op.value, off); - break; - case UI64N: - off = encoding.writeU64N(data, op.value, off); - break; - case UI64BEN: - off = encoding.writeU64BEN(data, op.value, off); - break; - case I8: - off = data.writeInt8(op.value, off, true); - break; - case I16: - off = data.writeInt16LE(op.value, off, true); - break; - case I16BE: - off = data.writeInt16BE(op.value, off, true); - break; - case I32: - off = data.writeInt32LE(op.value, off, true); - break; - case I32BE: - off = data.writeInt32BE(op.value, off, true); - break; - case I64: - off = encoding.writeI64(data, op.value, off); - break; - case I64BE: - off = encoding.writeI64BE(data, op.value, off); - break; - case I64N: - off = encoding.writeI64N(data, op.value, off); - break; - case I64BEN: - off = encoding.writeI64BEN(data, op.value, off); - break; - case FL: - off = data.writeFloatLE(op.value, off, true); - break; - case FLBE: - off = data.writeFloatBE(op.value, off, true); - break; - case DBL: - off = data.writeDoubleLE(op.value, off, true); - break; - case DBLBE: - off = data.writeDoubleBE(op.value, off, true); - break; - case VARINT: - off = encoding.writeVarint(data, op.value, off); - break; - case VARINTN: - off = encoding.writeVarintN(data, op.value, off); - break; - case VARINT2: - off = encoding.writeVarint2(data, op.value, off); - break; - case VARINT2N: - off = encoding.writeVarint2N(data, op.value, off); - break; - case BYTES: - off += op.value.copy(data, off); - break; - case STR: - off += data.write(op.value, off, op.enc); - break; - case CHECKSUM: - off += op.value(data.slice(0, off)).copy(data, off, 0, 4); - break; - case FILL: - data.fill(op.value, off, off + op.size); - off += op.size; - break; - default: - assert(false, 'Bad type.'); - break; - } - } - - assert(off === data.length); - - this.destroy(); - - return data; -}; - -/** - * Get size of data written so far. - * @returns {Number} - */ - -BufferWriter.prototype.getSize = function getSize() { - return this.offset; -}; - -/** - * Seek to relative offset. - * @param {Number} offset - */ - -BufferWriter.prototype.seek = function seek(offset) { - this.offset += offset; - this.ops.push(new WriteOp(SEEK, offset)); -}; - -/** - * Destroy the buffer writer. Remove references to `ops`. - */ - -BufferWriter.prototype.destroy = function destroy() { - this.ops.length = 0; - this.offset = 0; -}; - -/** - * Write uint8. - * @param {Number} value - */ - -BufferWriter.prototype.writeU8 = function writeU8(value) { - this.offset += 1; - this.ops.push(new WriteOp(UI8, value)); -}; - -/** - * Write uint16le. - * @param {Number} value - */ - -BufferWriter.prototype.writeU16 = function writeU16(value) { - this.offset += 2; - this.ops.push(new WriteOp(UI16, value)); -}; - -/** - * Write uint16be. - * @param {Number} value - */ - -BufferWriter.prototype.writeU16BE = function writeU16BE(value) { - this.offset += 2; - this.ops.push(new WriteOp(UI16BE, value)); -}; - -/** - * Write uint32le. - * @param {Number} value - */ - -BufferWriter.prototype.writeU32 = function writeU32(value) { - this.offset += 4; - this.ops.push(new WriteOp(UI32, value)); -}; - -/** - * Write uint32be. - * @param {Number} value - */ - -BufferWriter.prototype.writeU32BE = function writeU32BE(value) { - this.offset += 4; - this.ops.push(new WriteOp(UI32BE, value)); -}; - -/** - * Write uint64le. - * @param {Number} value - */ - -BufferWriter.prototype.writeU64 = function writeU64(value) { - this.offset += 8; - this.ops.push(new WriteOp(UI64, value)); -}; - -/** - * Write uint64be. - * @param {Number} value - */ - -BufferWriter.prototype.writeU64BE = function writeU64BE(value) { - this.offset += 8; - this.ops.push(new WriteOp(UI64BE, value)); -}; - -/** - * Write uint64le. - * @param {U64} value - */ - -BufferWriter.prototype.writeU64N = function writeU64N(value) { - this.offset += 8; - this.ops.push(new WriteOp(UI64N, value)); -}; - -/** - * Write uint64be. - * @param {U64} value - */ - -BufferWriter.prototype.writeU64BEN = function writeU64BEN(value) { - this.offset += 8; - this.ops.push(new WriteOp(UI64BEN, value)); -}; - -/** - * Write int8. - * @param {Number} value - */ - -BufferWriter.prototype.writeI8 = function writeI8(value) { - this.offset += 1; - this.ops.push(new WriteOp(I8, value)); -}; - -/** - * Write int16le. - * @param {Number} value - */ - -BufferWriter.prototype.writeI16 = function writeI16(value) { - this.offset += 2; - this.ops.push(new WriteOp(I16, value)); -}; - -/** - * Write int16be. - * @param {Number} value - */ - -BufferWriter.prototype.writeI16BE = function writeI16BE(value) { - this.offset += 2; - this.ops.push(new WriteOp(I16BE, value)); -}; - -/** - * Write int32le. - * @param {Number} value - */ - -BufferWriter.prototype.writeI32 = function writeI32(value) { - this.offset += 4; - this.ops.push(new WriteOp(I32, value)); -}; - -/** - * Write int32be. - * @param {Number} value - */ - -BufferWriter.prototype.writeI32BE = function writeI32BE(value) { - this.offset += 4; - this.ops.push(new WriteOp(I32BE, value)); -}; - -/** - * Write int64le. - * @param {Number} value - */ - -BufferWriter.prototype.writeI64 = function writeI64(value) { - this.offset += 8; - this.ops.push(new WriteOp(I64, value)); -}; - -/** - * Write int64be. - * @param {Number} value - */ - -BufferWriter.prototype.writeI64BE = function writeI64BE(value) { - this.offset += 8; - this.ops.push(new WriteOp(I64BE, value)); -}; - -/** - * Write int64le. - * @param {I64} value - */ - -BufferWriter.prototype.writeI64N = function writeI64N(value) { - this.offset += 8; - this.ops.push(new WriteOp(I64N, value)); -}; - -/** - * Write int64be. - * @param {I64} value - */ - -BufferWriter.prototype.writeI64BEN = function writeI64BEN(value) { - this.offset += 8; - this.ops.push(new WriteOp(I64BEN, value)); -}; - -/** - * Write float le. - * @param {Number} value - */ - -BufferWriter.prototype.writeFloat = function writeFloat(value) { - this.offset += 4; - this.ops.push(new WriteOp(FL, value)); -}; - -/** - * Write float be. - * @param {Number} value - */ - -BufferWriter.prototype.writeFloatBE = function writeFloatBE(value) { - this.offset += 4; - this.ops.push(new WriteOp(FLBE, value)); -}; - -/** - * Write double le. - * @param {Number} value - */ - -BufferWriter.prototype.writeDouble = function writeDouble(value) { - this.offset += 8; - this.ops.push(new WriteOp(DBL, value)); -}; - -/** - * Write double be. - * @param {Number} value - */ - -BufferWriter.prototype.writeDoubleBE = function writeDoubleBE(value) { - this.offset += 8; - this.ops.push(new WriteOp(DBLBE, value)); -}; - -/** - * Write a varint. - * @param {Number} value - */ - -BufferWriter.prototype.writeVarint = function writeVarint(value) { - this.offset += encoding.sizeVarint(value); - this.ops.push(new WriteOp(VARINT, value)); -}; - -/** - * Write a varint. - * @param {U64} value - */ - -BufferWriter.prototype.writeVarintN = function writeVarintN(value) { - this.offset += encoding.sizeVarintN(value); - this.ops.push(new WriteOp(VARINTN, value)); -}; - -/** - * Write a varint (type 2). - * @param {Number} value - */ - -BufferWriter.prototype.writeVarint2 = function writeVarint2(value) { - this.offset += encoding.sizeVarint2(value); - this.ops.push(new WriteOp(VARINT2, value)); -}; - -/** - * Write a varint (type 2). - * @param {U64} value - */ - -BufferWriter.prototype.writeVarint2N = function writeVarint2N(value) { - this.offset += encoding.sizeVarint2N(value); - this.ops.push(new WriteOp(VARINT2N, value)); -}; - -/** - * Write bytes. - * @param {Buffer} value - */ - -BufferWriter.prototype.writeBytes = function writeBytes(value) { - if (value.length === 0) - return; - - this.offset += value.length; - this.ops.push(new WriteOp(BYTES, value)); -}; - -/** - * Write bytes with a varint length before them. - * @param {Buffer} value - */ - -BufferWriter.prototype.writeVarBytes = function writeVarBytes(value) { - this.offset += encoding.sizeVarint(value.length); - this.ops.push(new WriteOp(VARINT, value.length)); - - if (value.length === 0) - return; - - this.offset += value.length; - this.ops.push(new WriteOp(BYTES, value)); -}; - -/** - * Copy bytes. - * @param {Buffer} value - * @param {Number} start - * @param {Number} end - */ - -BufferWriter.prototype.copy = function copy(value, start, end) { - assert(end >= start); - value = value.slice(start, end); - this.writeBytes(value); -}; - -/** - * Write string to buffer. - * @param {String} value - * @param {String?} enc - Any buffer-supported encoding. - */ - -BufferWriter.prototype.writeString = function writeString(value, enc) { - if (value.length === 0) - return; - - this.offset += Buffer.byteLength(value, enc); - this.ops.push(new WriteOp(STR, value, enc)); -}; - -/** - * Write a 32 byte hash. - * @param {Hash} value - */ - -BufferWriter.prototype.writeHash = function writeHash(value) { - if (typeof value !== 'string') { - assert(value.length === 32); - this.writeBytes(value); - return; - } - assert(value.length === 64); - this.writeString(value, 'hex'); -}; - -/** - * Write a string with a varint length before it. - * @param {String} - * @param {String?} enc - Any buffer-supported encoding. - */ - -BufferWriter.prototype.writeVarString = function writeVarString(value, enc) { - if (value.length === 0) { - this.ops.push(new WriteOp(VARINT, 0)); - return; - } - - const size = Buffer.byteLength(value, enc); - - this.offset += encoding.sizeVarint(size); - this.offset += size; - - this.ops.push(new WriteOp(VARINT, size)); - - this.ops.push(new WriteOp(STR, value, enc)); -}; - -/** - * Write a null-terminated string. - * @param {String|Buffer} - * @param {String?} enc - Any buffer-supported encoding. - */ - -BufferWriter.prototype.writeNullString = function writeNullString(value, enc) { - this.writeString(value, enc); - this.writeU8(0); -}; - -/** - * Calculate and write a checksum for the data written so far. - * @param {Function} hash - */ - -BufferWriter.prototype.writeChecksum = function writeChecksum(hash) { - this.offset += 4; - this.ops.push(new WriteOp(CHECKSUM, hash)); -}; - -/** - * Fill N bytes with value. - * @param {Number} value - * @param {Number} size - */ - -BufferWriter.prototype.fill = function fill(value, size) { - assert(size >= 0); - - if (size === 0) - return; - - this.offset += size; - this.ops.push(new WriteOp(FILL, value, null, size)); -}; - -/* - * Helpers - */ - -function WriteOp(type, value, enc, size) { - this.type = type; - this.value = value; - this.enc = enc; - this.size = size; -} - -/* - * Expose - */ - -module.exports = BufferWriter; diff --git a/lib/wallet/account.js b/lib/wallet/account.js index 163b4480..7da9cd97 100644 --- a/lib/wallet/account.js +++ b/lib/wallet/account.js @@ -8,9 +8,9 @@ const assert = require('assert'); const binary = require('../utils/binary'); -const BufferReader = require('../utils/reader'); -const StaticWriter = require('../utils/staticwriter'); -const encoding = require('../utils/encoding'); +const BufferReader = require('bbuf/lib/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); +const encoding = require('bbuf/lib/encoding'); const Path = require('./path'); const common = require('./common'); const Script = require('../script/script'); diff --git a/lib/wallet/client.js b/lib/wallet/client.js index 3e6fbe5d..1a555de0 100644 --- a/lib/wallet/client.js +++ b/lib/wallet/client.js @@ -11,7 +11,7 @@ const assert = require('assert'); const {NodeClient} = require('bclient'); const TX = require('../primitives/tx'); const hash256 = require('bcrypto/lib/hash256'); -const encoding = require('../utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const parsers = { 'block connect': (entry, txs) => parseBlock(entry, txs), diff --git a/lib/wallet/masterkey.js b/lib/wallet/masterkey.js index 654c99b8..2a72bf5f 100644 --- a/lib/wallet/masterkey.js +++ b/lib/wallet/masterkey.js @@ -16,9 +16,9 @@ const aes = require('bcrypto/lib/aes'); const sha256 = require('bcrypto/lib/sha256'); const pbkdf2 = require('bcrypto/lib/pbkdf2'); const scrypt = require('bcrypto/lib/scrypt'); -const BufferReader = require('../utils/reader'); -const StaticWriter = require('../utils/staticwriter'); -const encoding = require('../utils/encoding'); +const BufferReader = require('bbuf/lib/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); +const encoding = require('bbuf/lib/encoding'); const HD = require('../hd/hd'); const Mnemonic = HD.Mnemonic; diff --git a/lib/wallet/path.js b/lib/wallet/path.js index 47d317a4..717f83c0 100644 --- a/lib/wallet/path.js +++ b/lib/wallet/path.js @@ -7,9 +7,9 @@ 'use strict'; const assert = require('assert'); -const BufferReader = require('../utils/reader'); -const StaticWriter = require('../utils/staticwriter'); -const encoding = require('../utils/encoding'); +const BufferReader = require('bbuf/lib/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); +const encoding = require('bbuf/lib/encoding'); const Address = require('../primitives/address'); /** diff --git a/lib/wallet/records.js b/lib/wallet/records.js index e682c5e1..c7f048c1 100644 --- a/lib/wallet/records.js +++ b/lib/wallet/records.js @@ -12,9 +12,9 @@ const assert = require('assert'); const util = require('../utils/util'); -const encoding = require('../utils/encoding'); -const BufferReader = require('../utils/reader'); -const StaticWriter = require('../utils/staticwriter'); +const encoding = require('bbuf/lib/encoding'); +const BufferReader = require('bbuf/lib/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); const TX = require('../primitives/tx'); /** diff --git a/lib/wallet/rpc.js b/lib/wallet/rpc.js index 9ecc995b..510e1690 100644 --- a/lib/wallet/rpc.js +++ b/lib/wallet/rpc.js @@ -21,7 +21,7 @@ const MTX = require('../primitives/mtx'); const Outpoint = require('../primitives/outpoint'); const Output = require('../primitives/output'); const TX = require('../primitives/tx'); -const encoding = require('../utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const pkg = require('../pkg'); const Validator = require('../utils/validator'); const Lock = require('../utils/lock'); diff --git a/lib/wallet/txdb.js b/lib/wallet/txdb.js index 487fc8b9..5732f2b1 100644 --- a/lib/wallet/txdb.js +++ b/lib/wallet/txdb.js @@ -9,15 +9,15 @@ const assert = require('assert'); const util = require('../utils/util'); -const BufferReader = require('../utils/reader'); -const StaticWriter = require('../utils/staticwriter'); +const BufferReader = require('bbuf/lib/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); const Amount = require('../btc/amount'); const CoinView = require('../coins/coinview'); const Coin = require('../primitives/coin'); const Outpoint = require('../primitives/outpoint'); const records = require('./records'); const layout = require('./layout').txdb; -const encoding = require('../utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const policy = require('../protocol/policy'); const TXRecord = records.TXRecord; diff --git a/lib/wallet/wallet.js b/lib/wallet/wallet.js index 4f9cf50f..eaa8e589 100644 --- a/lib/wallet/wallet.js +++ b/lib/wallet/wallet.js @@ -10,12 +10,12 @@ const assert = require('assert'); const EventEmitter = require('events'); const Network = require('../protocol/network'); -const encoding = require('../utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const Lock = require('../utils/lock'); const digest = require('bcrypto/lib/digest'); const cleanse = require('bcrypto/lib/cleanse'); -const BufferReader = require('../utils/reader'); -const StaticWriter = require('../utils/staticwriter'); +const BufferReader = require('bbuf/lib/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); const base58 = require('../utils/base58'); const TXDB = require('./txdb'); const Path = require('./path'); diff --git a/lib/wallet/walletdb.js b/lib/wallet/walletdb.js index 24d8c5c4..83b46a61 100644 --- a/lib/wallet/walletdb.js +++ b/lib/wallet/walletdb.js @@ -13,7 +13,7 @@ const BDB = require('bdb'); const AsyncObject = require('../utils/asyncobject'); const Lock = require('../utils/lock'); const MappedLock = require('../utils/mappedlock'); -const encoding = require('../utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const ccmp = require('bcrypto/lib/ccmp'); const aes = require('bcrypto/lib/aes'); const Network = require('../protocol/network'); @@ -26,7 +26,7 @@ const Logger = require('../node/logger'); const Outpoint = require('../primitives/outpoint'); const layouts = require('./layout'); const records = require('./records'); -const StaticWriter = require('../utils/staticwriter'); +const StaticWriter = require('bbuf/lib/staticwriter'); const NullClient = require('./nullclient'); const layout = layouts.walletdb; const ChainState = records.ChainState; diff --git a/lib/workers/framer.js b/lib/workers/framer.js index 720375b2..287af44d 100644 --- a/lib/workers/framer.js +++ b/lib/workers/framer.js @@ -7,7 +7,7 @@ 'use strict'; -const StaticWriter = require('../utils/staticwriter'); +const StaticWriter = require('bbuf/lib/staticwriter'); /** * Framer diff --git a/lib/workers/packets.js b/lib/workers/packets.js index 16bff2e3..1095b872 100644 --- a/lib/workers/packets.js +++ b/lib/workers/packets.js @@ -11,8 +11,8 @@ */ const assert = require('assert'); -const BufferReader = require('../utils/reader'); -const encoding = require('../utils/encoding'); +const BufferReader = require('bbuf/lib/reader'); +const encoding = require('bbuf/lib/encoding'); const Script = require('../script/script'); const Witness = require('../script/witness'); const Output = require('../primitives/output'); diff --git a/migrate/chaindb0to1.js b/migrate/chaindb0to1.js index c8bd9561..c38be863 100644 --- a/migrate/chaindb0to1.js +++ b/migrate/chaindb0to1.js @@ -2,7 +2,7 @@ const bcoin = require('../'); const assert = require('assert'); -const BufferWriter = require('../lib/utils/writer'); +const BufferWriter = require('bbuf/lib/writer'); let file = process.argv[2]; assert(typeof file === 'string', 'Please pass in a database path.'); diff --git a/migrate/chaindb1to2.js b/migrate/chaindb1to2.js index 8547d1ad..86f0b01d 100644 --- a/migrate/chaindb1to2.js +++ b/migrate/chaindb1to2.js @@ -2,11 +2,11 @@ const assert = require('assert'); const BDB = require('bdb'); -const encoding = require('../lib/utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const networks = require('../lib/protocol/networks'); const co = require('../lib/utils/co'); -const BufferWriter = require('../lib/utils/writer'); -const BufferReader = require('../lib/utils/reader'); +const BufferWriter = require('bbuf/lib/writer'); +const BufferReader = require('bbuf/lib/reader'); const OldCoins = require('./coins-old'); const Coins = require('../lib/coins/coins'); const UndoCoins = require('../lib/coins/undocoins'); diff --git a/migrate/chaindb2to3.js b/migrate/chaindb2to3.js index d35d0ff6..3b9b16b1 100644 --- a/migrate/chaindb2to3.js +++ b/migrate/chaindb2to3.js @@ -17,12 +17,12 @@ if (process.argv.indexOf('-h') !== -1 const assert = require('assert'); const BDB = require('bdb'); -const encoding = require('../lib/utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const co = require('../lib/utils/co'); const digest = require('bcrypto/lib/digest'); const BN = require('bcrypto/lib/bn'); -const StaticWriter = require('../lib/utils/staticwriter'); -const BufferReader = require('../lib/utils/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); +const BufferReader = require('bbuf/lib/reader'); const OldCoins = require('./coins/coins'); const OldUndoCoins = require('./coins/undocoins'); const CoinEntry = require('../lib/coins/coinentry'); diff --git a/migrate/coins-old.js b/migrate/coins-old.js index 49ea879e..5111d3cb 100644 --- a/migrate/coins-old.js +++ b/migrate/coins-old.js @@ -10,11 +10,11 @@ const assert = require('assert'); const util = require('../lib/utils/util'); -const encoding = require('../lib/utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const Coin = require('../lib/primitives/coin'); const Output = require('../lib/primitives/output'); -const BufferReader = require('../lib/utils/reader'); -const BufferWriter = require('../lib/utils/writer'); +const BufferReader = require('bbuf/lib/reader'); +const BufferWriter = require('bbuf/lib/writer'); const {compress, decompress} = require('./compress-old'); /** diff --git a/migrate/ensure-tip-index.js b/migrate/ensure-tip-index.js index 093c605b..7537a338 100644 --- a/migrate/ensure-tip-index.js +++ b/migrate/ensure-tip-index.js @@ -2,8 +2,8 @@ const assert = require('assert'); const BDB = require('bdb'); -const encoding = require('../lib/utils/encoding'); -const BufferReader = require('../lib/utils/reader'); +const encoding = require('bbuf/lib/encoding'); +const BufferReader = require('bbuf/lib/reader'); const digest = require('bcrypto/lib/digest'); const BN = require('bcrypto/lib/bn'); const DUMMY = Buffer.from([0]); diff --git a/migrate/walletdb2to3.js b/migrate/walletdb2to3.js index de81b0d4..f1e13c57 100644 --- a/migrate/walletdb2to3.js +++ b/migrate/walletdb2to3.js @@ -3,14 +3,14 @@ const assert = require('assert'); const bcoin = require('../'); const walletdb = require('../lib/wallet/walletdb'); -const encoding = require('../lib/utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const Path = require('../lib/wallet/path'); const MasterKey = require('../lib/wallet/masterkey'); const Account = require('../lib/wallet/account'); const Wallet = require('../lib/wallet/wallet'); const KeyRing = require('../lib/primitives/keyring'); -const BufferReader = require('../lib/utils/reader'); -const BufferWriter = require('../lib/utils/writer'); +const BufferReader = require('bbuf/lib/reader'); +const BufferWriter = require('bbuf/lib/writer'); const layout = walletdb.layout; let file = process.argv[2]; let batch; diff --git a/migrate/walletdb3to4.js b/migrate/walletdb3to4.js index b00d84ad..c47d59fc 100644 --- a/migrate/walletdb3to4.js +++ b/migrate/walletdb3to4.js @@ -2,9 +2,9 @@ const assert = require('assert'); const bcoin = require('../'); -const encoding = require('../lib/utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const WalletDB = require('../lib/wallet/walletdb'); -const BufferReader = require('../lib/utils/reader'); +const BufferReader = require('bbuf/lib/reader'); const TX = require('../lib/primitives/tx'); const Coin = require('../lib/primitives/coin'); let file = process.argv[2]; diff --git a/migrate/walletdb5to6.js b/migrate/walletdb5to6.js index 353cf4a1..bd37de2b 100644 --- a/migrate/walletdb5to6.js +++ b/migrate/walletdb5to6.js @@ -2,9 +2,9 @@ const assert = require('assert'); const bcoin = require('../'); -const encoding = require('../lib/utils/encoding'); -const BufferWriter = require('../lib/utils/writer'); -const BufferReader = require('../lib/utils/reader'); +const encoding = require('bbuf/lib/encoding'); +const BufferWriter = require('bbuf/lib/writer'); +const BufferReader = require('bbuf/lib/reader'); let file = process.argv[2]; let batch; diff --git a/scripts/gen.js b/scripts/gen.js index a247b57f..2d987e3b 100644 --- a/scripts/gen.js +++ b/scripts/gen.js @@ -1,7 +1,7 @@ 'use strict'; const consensus = require('../lib/protocol/consensus'); -const encoding = require('../lib/utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const TX = require('../lib/primitives/tx'); const Block = require('../lib/primitives/block'); const Script = require('../lib/script/script'); diff --git a/test/block-test.js b/test/block-test.js index 2ea570fc..e2638cca 100644 --- a/test/block-test.js +++ b/test/block-test.js @@ -10,7 +10,7 @@ const Block = require('../lib/primitives/block'); const MerkleBlock = require('../lib/primitives/merkleblock'); const consensus = require('../lib/protocol/consensus'); const Script = require('../lib/script/script'); -const encoding = require('../lib/utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const bip152 = require('../lib/net/bip152'); const CompactBlock = bip152.CompactBlock; const TXRequest = bip152.TXRequest; diff --git a/test/chain-test.js b/test/chain-test.js index 2b58ae60..38d68035 100644 --- a/test/chain-test.js +++ b/test/chain-test.js @@ -5,7 +5,7 @@ const assert = require('./util/assert'); const consensus = require('../lib/protocol/consensus'); -const encoding = require('../lib/utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const Coin = require('../lib/primitives/coin'); const Script = require('../lib/script/script'); const Chain = require('../lib/blockchain/chain'); diff --git a/test/coins-test.js b/test/coins-test.js index 5c545923..c6b942de 100644 --- a/test/coins-test.js +++ b/test/coins-test.js @@ -9,8 +9,8 @@ const Input = require('../lib/primitives/input'); const Outpoint = require('../lib/primitives/outpoint'); const CoinView = require('../lib/coins/coinview'); const CoinEntry = require('../lib/coins/coinentry'); -const StaticWriter = require('../lib/utils/staticwriter'); -const BufferReader = require('../lib/utils/reader'); +const StaticWriter = require('bbuf/lib/staticwriter'); +const BufferReader = require('bbuf/lib/reader'); const common = require('./util/common'); const tx1 = common.readTX('tx1'); diff --git a/test/http-test.js b/test/http-test.js index 6c6532b1..3ca44137 100644 --- a/test/http-test.js +++ b/test/http-test.js @@ -5,7 +5,7 @@ const assert = require('./util/assert'); const consensus = require('../lib/protocol/consensus'); -const encoding = require('../lib/utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const co = require('../lib/utils/co'); const Address = require('../lib/primitives/address'); const Script = require('../lib/script/script'); diff --git a/test/input-test.js b/test/input-test.js index e9d9930a..788b019d 100644 --- a/test/input-test.js +++ b/test/input-test.js @@ -4,10 +4,10 @@ 'use strict'; const Input = require('../lib/primitives/input'); -const BufferReader = require('../lib/utils/reader'); +const BufferReader = require('bbuf/lib/reader'); const assert = require('./util/assert'); const common = require('./util/common'); -const encoding = require('../lib/utils/encoding'); +const encoding = require('bbuf/lib/encoding'); // Take input rawbytes from the raw data format // p2pkh diff --git a/test/mempool-test.js b/test/mempool-test.js index 0d8e8598..27467033 100644 --- a/test/mempool-test.js +++ b/test/mempool-test.js @@ -4,7 +4,7 @@ 'use strict'; const assert = require('./util/assert'); -const encoding = require('../lib/utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const random = require('bcrypto/lib/random'); const MempoolEntry = require('../lib/mempool/mempoolentry'); const Mempool = require('../lib/mempool/mempool'); diff --git a/test/script-test.js b/test/script-test.js index 43c89b67..2547f376 100644 --- a/test/script-test.js +++ b/test/script-test.js @@ -9,7 +9,7 @@ const Witness = require('../lib/script/witness'); const Stack = require('../lib/script/stack'); const Opcode = require('../lib/script/opcode'); const TX = require('../lib/primitives/tx'); -const encoding = require('../lib/utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const {fromFloat} = require('../lib/utils/fixed'); const scripts = require('./data/script-tests.json'); diff --git a/test/tx-test.js b/test/tx-test.js index 4902ea5c..81fd799b 100644 --- a/test/tx-test.js +++ b/test/tx-test.js @@ -5,7 +5,7 @@ const {inspect} = require('util'); const assert = require('./util/assert'); -const encoding = require('../lib/utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const random = require('bcrypto/lib/random'); const consensus = require('../lib/protocol/consensus'); const TX = require('../lib/primitives/tx'); diff --git a/test/util/common.js b/test/util/common.js index 5105acf9..9ee50b3f 100644 --- a/test/util/common.js +++ b/test/util/common.js @@ -10,8 +10,8 @@ const {CompactBlock} = require('../../lib/net/bip152'); const TX = require('../../lib/primitives/tx'); const Output = require('../../lib/primitives/output'); const CoinView = require('../../lib/coins/coinview'); -const BufferReader = require('../../lib/utils/reader'); -const BufferWriter = require('../../lib/utils/writer'); +const BufferReader = require('bbuf/lib/reader'); +const BufferWriter = require('bbuf/lib/writer'); const common = exports; diff --git a/test/utils-test.js b/test/utils-test.js index 94962484..6f1f1b5f 100644 --- a/test/utils-test.js +++ b/test/utils-test.js @@ -6,7 +6,7 @@ const assert = require('./util/assert'); const {U64, I64} = require('n64'); const base58 = require('../lib/utils/base58'); -const encoding = require('../lib/utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const Amount = require('../lib/btc/amount'); const Validator = require('../lib/utils/validator'); const fixed = require('../lib/utils/fixed'); diff --git a/test/wallet-test.js b/test/wallet-test.js index 6b831252..2294785c 100644 --- a/test/wallet-test.js +++ b/test/wallet-test.js @@ -6,7 +6,7 @@ const assert = require('./util/assert'); const consensus = require('../lib/protocol/consensus'); const util = require('../lib/utils/util'); -const encoding = require('../lib/utils/encoding'); +const encoding = require('bbuf/lib/encoding'); const digest = require('bcrypto/lib/digest'); const random = require('bcrypto/lib/random'); const WalletDB = require('../lib/wallet/walletdb');