refactor: lint tests, benchmarks, etc.
This commit is contained in:
parent
d3b24da2e1
commit
f70d6b8b45
@ -3,7 +3,8 @@
|
|||||||
"env": {
|
"env": {
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"es6": true,
|
"es6": true,
|
||||||
"node": true
|
"node": true,
|
||||||
|
"mocha": true
|
||||||
},
|
},
|
||||||
"parserOptions": {
|
"parserOptions": {
|
||||||
"ecmaVersion": 8
|
"ecmaVersion": 8
|
||||||
|
|||||||
@ -2,41 +2,22 @@
|
|||||||
|
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var TX = require('../lib/primitives/tx');
|
var TX = require('../lib/primitives/tx');
|
||||||
var CoinView = require('../lib/coins/coinview');
|
|
||||||
var BufferWriter = require('../lib/utils/writer');
|
var BufferWriter = require('../lib/utils/writer');
|
||||||
var StaticWriter = require('../lib/utils/staticwriter');
|
var StaticWriter = require('../lib/utils/staticwriter');
|
||||||
var bench = require('./bench');
|
var bench = require('./bench');
|
||||||
|
|
||||||
var tx3 = parseTX('../test/data/tx3.hex');
|
|
||||||
var wtx = fs.readFileSync(__dirname + '/../test/data/wtx.hex', 'utf8');
|
var wtx = fs.readFileSync(__dirname + '/../test/data/wtx.hex', 'utf8');
|
||||||
var i, tx, end, raw;
|
var i, tx, end;
|
||||||
|
|
||||||
wtx = Buffer.from(wtx.trim(), 'hex');
|
wtx = Buffer.from(wtx.trim(), 'hex');
|
||||||
tx = TX.fromRaw(wtx);
|
tx = TX.fromRaw(wtx);
|
||||||
|
|
||||||
function parseTX(file) {
|
|
||||||
var data = fs.readFileSync(__dirname + '/' + file, 'utf8');
|
|
||||||
var parts = data.trim().split(/\n+/);
|
|
||||||
var raw = parts[0];
|
|
||||||
var tx = TX.fromRaw(raw.trim(), 'hex');
|
|
||||||
var view = new CoinView();
|
|
||||||
var i, prev;
|
|
||||||
|
|
||||||
for (i = 1; i < parts.length; i++) {
|
|
||||||
raw = parts[i];
|
|
||||||
prev = TX.fromRaw(raw.trim(), 'hex');
|
|
||||||
view.addTX(prev, -1);
|
|
||||||
}
|
|
||||||
|
|
||||||
return { tx: tx, view: view };
|
|
||||||
}
|
|
||||||
|
|
||||||
end = bench('serialize (static-writer)');
|
end = bench('serialize (static-writer)');
|
||||||
for (i = 0; i < 10000; i++) {
|
for (i = 0; i < 10000; i++) {
|
||||||
tx._raw = null;
|
tx._raw = null;
|
||||||
tx._size = -1;
|
tx._size = -1;
|
||||||
tx._witness = -1;
|
tx._witness = -1;
|
||||||
raw = tx.writeWitness(new StaticWriter(tx.getWitnessSizes().total)).render();
|
tx.writeWitness(new StaticWriter(tx.getWitnessSizes().total)).render();
|
||||||
}
|
}
|
||||||
end(i);
|
end(i);
|
||||||
|
|
||||||
@ -45,6 +26,6 @@ for (i = 0; i < 10000; i++) {
|
|||||||
tx._raw = null;
|
tx._raw = null;
|
||||||
tx._size = -1;
|
tx._size = -1;
|
||||||
tx._witness = -1;
|
tx._witness = -1;
|
||||||
raw = tx.writeWitness(new BufferWriter()).render();
|
tx.writeWitness(new BufferWriter()).render();
|
||||||
}
|
}
|
||||||
end(i);
|
end(i);
|
||||||
|
|||||||
@ -9,31 +9,31 @@ var wtx = fs.readFileSync(__dirname + '/../test/data/wtx.hex', 'utf8');
|
|||||||
wtx = TX.fromRaw(wtx.trim(), 'hex');
|
wtx = TX.fromRaw(wtx.trim(), 'hex');
|
||||||
|
|
||||||
var coins = Coins.fromTX(wtx);
|
var coins = Coins.fromTX(wtx);
|
||||||
var raw;
|
var i, j, end, raw, hash;
|
||||||
|
|
||||||
//raw = coins.toRaw();
|
//raw = coins.toRaw();
|
||||||
//console.log(Coins.fromRaw(raw));
|
//console.log(Coins.fromRaw(raw));
|
||||||
|
|
||||||
var end = bench('serialize');
|
end = bench('serialize');
|
||||||
for (var i = 0; i < 10000; i++)
|
for (i = 0; i < 10000; i++)
|
||||||
raw = coins.toRaw();
|
raw = coins.toRaw();
|
||||||
end(i);
|
end(i);
|
||||||
|
|
||||||
var end = bench('parse');
|
end = bench('parse');
|
||||||
for (var i = 0; i < 10000; i++)
|
for (i = 0; i < 10000; i++)
|
||||||
Coins.fromRaw(raw);
|
Coins.fromRaw(raw);
|
||||||
end(i);
|
end(i);
|
||||||
|
|
||||||
var end = bench('parse-single');
|
end = bench('parse-single');
|
||||||
var hash = wtx.hash('hex');
|
hash = wtx.hash('hex');
|
||||||
for (var i = 0; i < 10000; i++)
|
for (i = 0; i < 10000; i++)
|
||||||
Coins.parseCoin(raw, hash, 5);
|
Coins.parseCoin(raw, hash, 5);
|
||||||
end(i);
|
end(i);
|
||||||
|
|
||||||
var coins = Coins.fromRaw(raw);
|
coins = Coins.fromRaw(raw);
|
||||||
var end = bench('get');
|
end = bench('get');
|
||||||
var j;
|
|
||||||
|
|
||||||
for (var i = 0; i < 10000; i++)
|
for (i = 0; i < 10000; i++)
|
||||||
for (var j = 0; j < coins.outputs.length; j++)
|
for (j = 0; j < coins.outputs.length; j++)
|
||||||
coins.get(j);
|
coins.get(j);
|
||||||
end(i * coins.outputs.length);
|
end(i * coins.outputs.length);
|
||||||
|
|||||||
@ -6,7 +6,8 @@ var HD = require('../lib/hd');
|
|||||||
var Mnemonic = require('../lib/hd/mnemonic');
|
var Mnemonic = require('../lib/hd/mnemonic');
|
||||||
|
|
||||||
var mnemonic = new Mnemonic();
|
var mnemonic = new Mnemonic();
|
||||||
var key = HD.fromMnemonic(mnemonic);
|
HD.fromMnemonic(mnemonic);
|
||||||
|
|
||||||
var phrase = mnemonic.getPhrase();
|
var phrase = mnemonic.getPhrase();
|
||||||
var i, end;
|
var i, end;
|
||||||
|
|
||||||
|
|||||||
@ -18,7 +18,7 @@ var btx = { tx: block.txs[397], view: new CoinView() };
|
|||||||
|
|
||||||
var tx3 = parseTX('../test/data/tx3.hex');
|
var tx3 = parseTX('../test/data/tx3.hex');
|
||||||
var wtx = fs.readFileSync(__dirname + '/../test/data/wtx.hex', 'utf8');
|
var wtx = fs.readFileSync(__dirname + '/../test/data/wtx.hex', 'utf8');
|
||||||
var i, tx, raw, end, flags, input;
|
var i, tx, end, flags, input;
|
||||||
|
|
||||||
wtx = Buffer.from(wtx.trim(), 'hex');
|
wtx = Buffer.from(wtx.trim(), 'hex');
|
||||||
|
|
||||||
@ -53,7 +53,7 @@ end(i);
|
|||||||
end = bench('serialize');
|
end = bench('serialize');
|
||||||
for (i = 0; i < 1000; i++) {
|
for (i = 0; i < 1000; i++) {
|
||||||
tx._raw = null;
|
tx._raw = null;
|
||||||
raw = tx.toRaw();
|
tx.toRaw();
|
||||||
}
|
}
|
||||||
end(i);
|
end(i);
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var bench = require('./bench');
|
var bench = require('./bench');
|
||||||
var co = require('../lib/utils/co');
|
|
||||||
var crypto = require('../lib/crypto/crypto');
|
var crypto = require('../lib/crypto/crypto');
|
||||||
var WalletDB = require('../lib/wallet/walletdb');
|
var WalletDB = require('../lib/wallet/walletdb');
|
||||||
var MTX = require('../lib/primitives/mtx');
|
var MTX = require('../lib/primitives/mtx');
|
||||||
@ -25,8 +24,8 @@ async function runBench() {
|
|||||||
var result, tx, mtx, options;
|
var result, tx, mtx, options;
|
||||||
|
|
||||||
// Open and Create
|
// Open and Create
|
||||||
yield walletdb.open();
|
await walletdb.open();
|
||||||
wallet = yield walletdb.create();
|
wallet = await walletdb.create();
|
||||||
addrs = [];
|
addrs = [];
|
||||||
|
|
||||||
// Accounts
|
// Accounts
|
||||||
@ -35,7 +34,7 @@ async function runBench() {
|
|||||||
jobs.push(wallet.createAccount({}));
|
jobs.push(wallet.createAccount({}));
|
||||||
|
|
||||||
end = bench('accounts');
|
end = bench('accounts');
|
||||||
result = yield Promise.all(jobs);
|
result = await Promise.all(jobs);
|
||||||
end(1000);
|
end(1000);
|
||||||
|
|
||||||
for (i = 0; i < result.length; i++)
|
for (i = 0; i < result.length; i++)
|
||||||
@ -49,7 +48,7 @@ async function runBench() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
end = bench('keys');
|
end = bench('keys');
|
||||||
result = yield Promise.all(jobs);
|
result = await Promise.all(jobs);
|
||||||
end(1000 * 10);
|
end(1000 * 10);
|
||||||
|
|
||||||
for (i = 0; i < result.length; i++)
|
for (i = 0; i < result.length; i++)
|
||||||
@ -70,7 +69,7 @@ async function runBench() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
end = bench('deposit');
|
end = bench('deposit');
|
||||||
result = yield Promise.all(jobs);
|
result = await Promise.all(jobs);
|
||||||
end(10000);
|
end(10000);
|
||||||
|
|
||||||
// TX redemption
|
// TX redemption
|
||||||
@ -91,17 +90,17 @@ async function runBench() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
end = bench('redemption');
|
end = bench('redemption');
|
||||||
result = yield Promise.all(jobs);
|
result = await Promise.all(jobs);
|
||||||
end(10000);
|
end(10000);
|
||||||
|
|
||||||
// Balance
|
// Balance
|
||||||
end = bench('balance');
|
end = bench('balance');
|
||||||
result = yield wallet.getBalance();
|
result = await wallet.getBalance();
|
||||||
end(1);
|
end(1);
|
||||||
|
|
||||||
// Coins
|
// Coins
|
||||||
end = bench('coins');
|
end = bench('coins');
|
||||||
result = yield wallet.getCoins();
|
result = await wallet.getCoins();
|
||||||
end(1);
|
end(1);
|
||||||
|
|
||||||
// Create
|
// Create
|
||||||
@ -113,7 +112,7 @@ async function runBench() {
|
|||||||
address: addrs[0]
|
address: addrs[0]
|
||||||
}]
|
}]
|
||||||
};
|
};
|
||||||
yield wallet.createTX(options);
|
await wallet.createTX(options);
|
||||||
end(1);
|
end(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
4
bin/cli
4
bin/cli
@ -4,11 +4,8 @@
|
|||||||
|
|
||||||
var Config = require('../lib/node/config');
|
var Config = require('../lib/node/config');
|
||||||
var util = require('../lib/utils/util');
|
var util = require('../lib/utils/util');
|
||||||
var co = require('../lib/utils/co');
|
|
||||||
var Client = require('../lib/http/client');
|
var Client = require('../lib/http/client');
|
||||||
var Wallet = require('../lib/http/wallet');
|
var Wallet = require('../lib/http/wallet');
|
||||||
var Amount = require('../lib/btc/amount');
|
|
||||||
var main;
|
|
||||||
|
|
||||||
function CLI() {
|
function CLI() {
|
||||||
this.config = new Config('bcoin');
|
this.config = new Config('bcoin');
|
||||||
@ -323,6 +320,7 @@ CLI.prototype.createTX = async function createTX() {
|
|||||||
CLI.prototype.signTX = async function signTX() {
|
CLI.prototype.signTX = async function signTX() {
|
||||||
var options = {};
|
var options = {};
|
||||||
var raw = this.config.str(['tx', 0]);
|
var raw = this.config.str(['tx', 0]);
|
||||||
|
var tx;
|
||||||
|
|
||||||
options.passphrase = this.config.str('passphrase');
|
options.passphrase = this.config.str('passphrase');
|
||||||
|
|
||||||
|
|||||||
1
bin/node
1
bin/node
@ -21,7 +21,6 @@ if (process.argv.indexOf('--version') !== -1
|
|||||||
|
|
||||||
var bcoin = require('../');
|
var bcoin = require('../');
|
||||||
var plugin = require('../lib/wallet/plugin');
|
var plugin = require('../lib/wallet/plugin');
|
||||||
var co = bcoin.co;
|
|
||||||
var node;
|
var node;
|
||||||
|
|
||||||
node = new bcoin.fullnode({
|
node = new bcoin.fullnode({
|
||||||
|
|||||||
@ -8,7 +8,6 @@ var assert = require('assert');
|
|||||||
var bcoin = require('../');
|
var bcoin = require('../');
|
||||||
var plugin = require('../lib/wallet/plugin');
|
var plugin = require('../lib/wallet/plugin');
|
||||||
var util = bcoin.util;
|
var util = bcoin.util;
|
||||||
var co = bcoin.co;
|
|
||||||
var node;
|
var node;
|
||||||
|
|
||||||
node = bcoin.spvnode({
|
node = bcoin.spvnode({
|
||||||
|
|||||||
@ -2,13 +2,12 @@
|
|||||||
|
|
||||||
var encoding = require('bcoin/lib/utils/encoding');
|
var encoding = require('bcoin/lib/utils/encoding');
|
||||||
var co = require('bcoin/lib/utils/co');
|
var co = require('bcoin/lib/utils/co');
|
||||||
var Address = require('bcoin/lib/primitives/address');
|
|
||||||
var Outpoint = require('bcoin/lib/primitives/outpoint');
|
var Outpoint = require('bcoin/lib/primitives/outpoint');
|
||||||
var MTX = require('bcoin/lib/primitives/mtx');
|
var MTX = require('bcoin/lib/primitives/mtx');
|
||||||
var HTTP = require('bcoin/lib/http');
|
var HTTP = require('bcoin/lib/http');
|
||||||
var FullNode = require('bcoin/lib/node/fullnode');
|
var FullNode = require('bcoin/lib/node/fullnode');
|
||||||
var plugin = require('bcoin/lib/wallet/plugin');
|
var plugin = require('bcoin/lib/wallet/plugin');
|
||||||
var node, wallet, walletdb, addr, hash;
|
var node, wallet;
|
||||||
|
|
||||||
node = new FullNode({
|
node = new FullNode({
|
||||||
network: 'regtest',
|
network: 'regtest',
|
||||||
@ -26,7 +25,7 @@ wallet = new HTTP.Wallet({
|
|||||||
|
|
||||||
async function main() {
|
async function main() {
|
||||||
var wdb = node.require('walletdb');
|
var wdb = node.require('walletdb');
|
||||||
var w, acct, info, hash, balance, tx;
|
var w, acct, hash, balance, tx;
|
||||||
|
|
||||||
await node.open();
|
await node.open();
|
||||||
|
|
||||||
@ -63,7 +62,7 @@ async function main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function fundWallet(wdb, addr) {
|
async function fundWallet(wdb, addr) {
|
||||||
var tx, balance, receive, details;
|
var tx;
|
||||||
|
|
||||||
// Coinbase
|
// Coinbase
|
||||||
tx = new MTX();
|
tx = new MTX();
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var bcoin = require('../');
|
var bcoin = require('../');
|
||||||
var co = bcoin.co;
|
|
||||||
var assert = require('assert');
|
var assert = require('assert');
|
||||||
var file = process.argv[2];
|
var file = process.argv[2];
|
||||||
var BufferWriter = require('../lib/utils/writer');
|
var BufferWriter = require('../lib/utils/writer');
|
||||||
|
|||||||
@ -11,7 +11,6 @@ var Coins = require('../lib/coins/coins');
|
|||||||
var UndoCoins = require('../lib/coins/undocoins');
|
var UndoCoins = require('../lib/coins/undocoins');
|
||||||
var Coin = require('../lib/primitives/coin');
|
var Coin = require('../lib/primitives/coin');
|
||||||
var Output = require('../lib/primitives/output');
|
var Output = require('../lib/primitives/output');
|
||||||
var util = require('../lib/utils/util');
|
|
||||||
var LDB = require('../lib/db/ldb');
|
var LDB = require('../lib/db/ldb');
|
||||||
var file = process.argv[2];
|
var file = process.argv[2];
|
||||||
var options = {};
|
var options = {};
|
||||||
@ -215,15 +214,6 @@ function pair(prefix, hash) {
|
|||||||
return key;
|
return key;
|
||||||
}
|
}
|
||||||
|
|
||||||
function ipair(prefix, num) {
|
|
||||||
var key = Buffer.allocUnsafe(5);
|
|
||||||
if (typeof prefix === 'string')
|
|
||||||
prefix = prefix.charCodeAt(0);
|
|
||||||
key[0] = prefix;
|
|
||||||
key.writeUInt32BE(num, 1, true);
|
|
||||||
return key;
|
|
||||||
}
|
|
||||||
|
|
||||||
function injectCoin(undo, coin) {
|
function injectCoin(undo, coin) {
|
||||||
var output = new Output();
|
var output = new Output();
|
||||||
|
|
||||||
|
|||||||
@ -2,8 +2,6 @@
|
|||||||
|
|
||||||
var assert = require('assert');
|
var assert = require('assert');
|
||||||
var encoding = require('../lib/utils/encoding');
|
var encoding = require('../lib/utils/encoding');
|
||||||
var co = require('../lib/utils/co');
|
|
||||||
var BufferWriter = require('../lib/utils/writer');
|
|
||||||
var BufferReader = require('../lib/utils/reader');
|
var BufferReader = require('../lib/utils/reader');
|
||||||
var crypto = require('../lib/crypto/crypto');
|
var crypto = require('../lib/crypto/crypto');
|
||||||
var util = require('../lib/utils/util');
|
var util = require('../lib/utils/util');
|
||||||
@ -138,15 +136,6 @@ function pair(prefix, hash) {
|
|||||||
return key;
|
return key;
|
||||||
}
|
}
|
||||||
|
|
||||||
function ipair(prefix, num) {
|
|
||||||
var key = Buffer.allocUnsafe(5);
|
|
||||||
if (typeof prefix === 'string')
|
|
||||||
prefix = prefix.charCodeAt(0);
|
|
||||||
key[0] = prefix;
|
|
||||||
key.writeUInt32BE(num, 1, true);
|
|
||||||
return key;
|
|
||||||
}
|
|
||||||
|
|
||||||
(async function() {
|
(async function() {
|
||||||
await db.open();
|
await db.open();
|
||||||
console.log('Opened %s.', file);
|
console.log('Opened %s.', file);
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
var assert = require('assert');
|
||||||
var bcoin = require('../');
|
var bcoin = require('../');
|
||||||
var walletdb = require('../lib/wallet/walletdb');
|
var walletdb = require('../lib/wallet/walletdb');
|
||||||
var encoding = require('../lib/utils/encoding');
|
var encoding = require('../lib/utils/encoding');
|
||||||
@ -7,12 +8,10 @@ var Path = require('../lib/wallet/path');
|
|||||||
var MasterKey = require('../lib/wallet/masterkey');
|
var MasterKey = require('../lib/wallet/masterkey');
|
||||||
var Account = require('../lib/wallet/account');
|
var Account = require('../lib/wallet/account');
|
||||||
var Wallet = require('../lib/wallet/wallet');
|
var Wallet = require('../lib/wallet/wallet');
|
||||||
var layout = walletdb.layout;
|
|
||||||
var co = bcoin.co;
|
|
||||||
var assert = require('assert');
|
|
||||||
var file = process.argv[2];
|
|
||||||
var BufferReader = require('../lib/utils/reader');
|
var BufferReader = require('../lib/utils/reader');
|
||||||
var BufferWriter = require('../lib/utils/writer');
|
var BufferWriter = require('../lib/utils/writer');
|
||||||
|
var layout = walletdb.layout;
|
||||||
|
var file = process.argv[2];
|
||||||
var db, batch;
|
var db, batch;
|
||||||
|
|
||||||
assert(typeof file === 'string', 'Please pass in a database path.');
|
assert(typeof file === 'string', 'Please pass in a database path.');
|
||||||
|
|||||||
@ -4,15 +4,10 @@ var assert = require('assert');
|
|||||||
var bcoin = require('../');
|
var bcoin = require('../');
|
||||||
var encoding = require('../lib/utils/encoding');
|
var encoding = require('../lib/utils/encoding');
|
||||||
var WalletDB = require('../lib/wallet/walletdb');
|
var WalletDB = require('../lib/wallet/walletdb');
|
||||||
var TXDB = require('../lib/wallet/txdb');
|
|
||||||
var BufferWriter = require('../lib/utils/writer');
|
|
||||||
var BufferReader = require('../lib/utils/reader');
|
var BufferReader = require('../lib/utils/reader');
|
||||||
var TX = require('../lib/primitives/tx');
|
var TX = require('../lib/primitives/tx');
|
||||||
var Coin = require('../lib/primitives/coin');
|
var Coin = require('../lib/primitives/coin');
|
||||||
var util = require('../lib/utils/util');
|
var util = require('../lib/utils/util');
|
||||||
var co = bcoin.co;
|
|
||||||
var layout = WalletDB.layout;
|
|
||||||
var tlayout = TXDB.layout;
|
|
||||||
var file = process.argv[2];
|
var file = process.argv[2];
|
||||||
var db, batch;
|
var db, batch;
|
||||||
|
|
||||||
|
|||||||
@ -2,10 +2,6 @@
|
|||||||
|
|
||||||
var assert = require('assert');
|
var assert = require('assert');
|
||||||
var bcoin = require('../');
|
var bcoin = require('../');
|
||||||
var BufferWriter = require('../lib/utils/writer');
|
|
||||||
var BufferReader = require('../lib/utils/reader');
|
|
||||||
var util = require('../lib/utils/util');
|
|
||||||
var co = bcoin.co;
|
|
||||||
var file = process.argv[2];
|
var file = process.argv[2];
|
||||||
var db, batch;
|
var db, batch;
|
||||||
|
|
||||||
|
|||||||
@ -5,8 +5,6 @@ var bcoin = require('../');
|
|||||||
var encoding = require('../lib/utils/encoding');
|
var encoding = require('../lib/utils/encoding');
|
||||||
var BufferWriter = require('../lib/utils/writer');
|
var BufferWriter = require('../lib/utils/writer');
|
||||||
var BufferReader = require('../lib/utils/reader');
|
var BufferReader = require('../lib/utils/reader');
|
||||||
var util = require('../lib/utils/util');
|
|
||||||
var co = bcoin.co;
|
|
||||||
var file = process.argv[2];
|
var file = process.argv[2];
|
||||||
var db, batch;
|
var db, batch;
|
||||||
|
|
||||||
@ -273,8 +271,10 @@ async function unstate() {
|
|||||||
await patchPathMaps();
|
await patchPathMaps();
|
||||||
await batch.write();
|
await batch.write();
|
||||||
await db.close();
|
await db.close();
|
||||||
// await updateLookahead();
|
|
||||||
// await unstate();
|
// Do not use:
|
||||||
|
await updateLookahead();
|
||||||
|
await unstate();
|
||||||
})().then(function() {
|
})().then(function() {
|
||||||
console.log('Migration complete.');
|
console.log('Migration complete.');
|
||||||
console.log('Rescan is required...');
|
console.log('Rescan is required...');
|
||||||
|
|||||||
@ -62,7 +62,7 @@
|
|||||||
"browserify": "browserify --im -o browser/bcoin.js lib/bcoin.js && browserify --im -o browser/bcoin-master.js lib/workers/master.js",
|
"browserify": "browserify --im -o browser/bcoin.js lib/bcoin.js && browserify --im -o browser/bcoin-master.js lib/workers/master.js",
|
||||||
"uglify": "uglifyjs -m -o browser/bcoin.min.js browser/bcoin.js && uglifyjs -m -o browser/bcoin-master.min.js browser/bcoin-master.js",
|
"uglify": "uglifyjs -m -o browser/bcoin.min.js browser/bcoin.js && uglifyjs -m -o browser/bcoin-master.min.js browser/bcoin-master.js",
|
||||||
"clean": "rm browser/bcoin.js browser/bcoin.min.js browser/bcoin-master.js browser/bcoin-master.min.js",
|
"clean": "rm browser/bcoin.js browser/bcoin.min.js browser/bcoin-master.js browser/bcoin-master.min.js",
|
||||||
"lint": "eslint lib/ || exit 0",
|
"lint": "eslint lib/ test/ migrate/ examples/ bench/ bin/cli bin/node bin/spvnode || exit 0",
|
||||||
"docs": "jsdoc -c jsdoc.json"
|
"docs": "jsdoc -c jsdoc.json"
|
||||||
},
|
},
|
||||||
"browser": {
|
"browser": {
|
||||||
|
|||||||
@ -243,7 +243,7 @@ describe('Bech32', function() {
|
|||||||
|
|
||||||
INVALID_ADDRESS.forEach(function(test) {
|
INVALID_ADDRESS.forEach(function(test) {
|
||||||
it('should have invalid address for ' + test, function() {
|
it('should have invalid address for ' + test, function() {
|
||||||
var ok1, ok2, ok;
|
var ok1, ok2;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
ok1 = Address.fromBech32(test, 'main');
|
ok1 = Address.fromBech32(test, 'main');
|
||||||
@ -257,7 +257,7 @@ describe('Bech32', function() {
|
|||||||
ok2 = null;
|
ok2 = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
assert(!ok2);
|
assert(!ok1 && !ok2);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@ -4,7 +4,6 @@ var assert = require('assert');
|
|||||||
var BN = require('../lib/crypto/bn');
|
var BN = require('../lib/crypto/bn');
|
||||||
var consensus = require('../lib/protocol/consensus');
|
var consensus = require('../lib/protocol/consensus');
|
||||||
var encoding = require('../lib/utils/encoding');
|
var encoding = require('../lib/utils/encoding');
|
||||||
var co = require('../lib/utils/co');
|
|
||||||
var Coin = require('../lib/primitives/coin');
|
var Coin = require('../lib/primitives/coin');
|
||||||
var Script = require('../lib/script/script');
|
var Script = require('../lib/script/script');
|
||||||
var Chain = require('../lib/blockchain/chain');
|
var Chain = require('../lib/blockchain/chain');
|
||||||
@ -770,7 +769,7 @@ describe('Chain', function() {
|
|||||||
|
|
||||||
it('should mine 111 multisig blocks', async function() {
|
it('should mine 111 multisig blocks', async function() {
|
||||||
var flags = common.flags.DEFAULT_FLAGS & ~common.flags.VERIFY_POW;
|
var flags = common.flags.DEFAULT_FLAGS & ~common.flags.VERIFY_POW;
|
||||||
var i, j, script, job, cb, output, val, block;
|
var i, j, script, cb, output, val, block;
|
||||||
|
|
||||||
script = new Script();
|
script = new Script();
|
||||||
script.push(new BN(20));
|
script.push(new BN(20));
|
||||||
|
|||||||
@ -1,27 +1,14 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var assert = require('assert');
|
var assert = require('assert');
|
||||||
var util = require('../lib/utils/util');
|
|
||||||
var encoding = require('../lib/utils/encoding');
|
|
||||||
var crypto = require('../lib/crypto/crypto');
|
|
||||||
var consensus = require('../lib/protocol/consensus');
|
|
||||||
var Network = require('../lib/protocol/network');
|
|
||||||
var TX = require('../lib/primitives/tx');
|
|
||||||
var Block = require('../lib/primitives/block');
|
|
||||||
var Coin = require('../lib/primitives/coin');
|
|
||||||
var Output = require('../lib/primitives/output');
|
var Output = require('../lib/primitives/output');
|
||||||
var Script = require('../lib/script/script');
|
|
||||||
var Witness = require('../lib/script/witness');
|
|
||||||
var Input = require('../lib/primitives/input');
|
var Input = require('../lib/primitives/input');
|
||||||
var Outpoint = require('../lib/primitives/outpoint');
|
var Outpoint = require('../lib/primitives/outpoint');
|
||||||
var CoinView = require('../lib/coins/coinview');
|
var CoinView = require('../lib/coins/coinview');
|
||||||
var Coins = require('../lib/coins/coins');
|
var Coins = require('../lib/coins/coins');
|
||||||
var UndoCoins = require('../lib/coins/undocoins');
|
|
||||||
var StaticWriter = require('../lib/utils/staticwriter');
|
var StaticWriter = require('../lib/utils/staticwriter');
|
||||||
var BufferReader = require('../lib/utils/reader');
|
var BufferReader = require('../lib/utils/reader');
|
||||||
var KeyRing = require('../lib/primitives/keyring');
|
|
||||||
var parseTX = require('./util/common').parseTX;
|
var parseTX = require('./util/common').parseTX;
|
||||||
var opcodes = Script.opcodes;
|
|
||||||
|
|
||||||
var data = parseTX('data/tx1.hex');
|
var data = parseTX('data/tx1.hex');
|
||||||
var tx1 = data.tx;
|
var tx1 = data.tx;
|
||||||
@ -115,7 +102,6 @@ describe('Coins', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should handle coin view', function() {
|
it('should handle coin view', function() {
|
||||||
var hash = tx1.hash('hex');
|
|
||||||
var view = new CoinView();
|
var view = new CoinView();
|
||||||
var i, tx, size, bw, br;
|
var i, tx, size, bw, br;
|
||||||
var raw, res, prev, coins;
|
var raw, res, prev, coins;
|
||||||
|
|||||||
@ -1,9 +1,8 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var assert = require('assert');
|
var assert = require('assert');
|
||||||
var fs = require('fs');
|
var fs = require('../lib/utils/fs');
|
||||||
var GCSFilter = require('../lib/utils/gcs');
|
var GCSFilter = require('../lib/utils/gcs');
|
||||||
var util = require('../lib/utils/util');
|
|
||||||
var crypto = require('../lib/crypto/crypto');
|
var crypto = require('../lib/crypto/crypto');
|
||||||
var Block = require('../lib/primitives/block');
|
var Block = require('../lib/primitives/block');
|
||||||
var Outpoint = require('../lib/primitives/outpoint');
|
var Outpoint = require('../lib/primitives/outpoint');
|
||||||
|
|||||||
@ -225,12 +225,12 @@ describe('HTTP', function() {
|
|||||||
it('should validate an address', async function() {
|
it('should validate an address', async function() {
|
||||||
var json = await wallet.client.rpc.execute('validateaddress', [addr.toString()]);
|
var json = await wallet.client.rpc.execute('validateaddress', [addr.toString()]);
|
||||||
assert.deepStrictEqual(json, {
|
assert.deepStrictEqual(json, {
|
||||||
isvalid: true,
|
isvalid: true,
|
||||||
address: addr.toString(),
|
address: addr.toString(),
|
||||||
scriptPubKey: Script.fromAddress(addr).toRaw().toString('hex'),
|
scriptPubKey: Script.fromAddress(addr).toRaw().toString('hex'),
|
||||||
ismine: false,
|
ismine: false,
|
||||||
iswatchonly: false
|
iswatchonly: false
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should cleanup', async function() {
|
it('should cleanup', async function() {
|
||||||
|
|||||||
@ -3,11 +3,9 @@
|
|||||||
var assert = require('assert');
|
var assert = require('assert');
|
||||||
var encoding = require('../lib/utils/encoding');
|
var encoding = require('../lib/utils/encoding');
|
||||||
var crypto = require('../lib/crypto/crypto');
|
var crypto = require('../lib/crypto/crypto');
|
||||||
var co = require('../lib/utils/co');
|
|
||||||
var MempoolEntry = require('../lib/mempool/mempoolentry');
|
var MempoolEntry = require('../lib/mempool/mempoolentry');
|
||||||
var Mempool = require('../lib/mempool/mempool');
|
var Mempool = require('../lib/mempool/mempool');
|
||||||
var Chain = require('../lib/blockchain/chain');
|
var Chain = require('../lib/blockchain/chain');
|
||||||
var WalletDB = require('../lib/wallet/walletdb');
|
|
||||||
var MTX = require('../lib/primitives/mtx');
|
var MTX = require('../lib/primitives/mtx');
|
||||||
var Coin = require('../lib/primitives/coin');
|
var Coin = require('../lib/primitives/coin');
|
||||||
var KeyRing = require('../lib/primitives/keyring');
|
var KeyRing = require('../lib/primitives/keyring');
|
||||||
@ -15,9 +13,7 @@ var Address = require('../lib/primitives/address');
|
|||||||
var Outpoint = require('../lib/primitives/outpoint');
|
var Outpoint = require('../lib/primitives/outpoint');
|
||||||
var Script = require('../lib/script/script');
|
var Script = require('../lib/script/script');
|
||||||
var Witness = require('../lib/script/witness');
|
var Witness = require('../lib/script/witness');
|
||||||
var Block = require('../lib/primitives/block');
|
|
||||||
var MemWallet = require('./util/memwallet');
|
var MemWallet = require('./util/memwallet');
|
||||||
var opcodes = Script.opcodes;
|
|
||||||
|
|
||||||
describe('Mempool', function() {
|
describe('Mempool', function() {
|
||||||
var chain = new Chain({ db: 'memory' });
|
var chain = new Chain({ db: 'memory' });
|
||||||
@ -334,7 +330,7 @@ describe('Mempool', function() {
|
|||||||
|
|
||||||
it('should clear reject cache', async function() {
|
it('should clear reject cache', async function() {
|
||||||
var w = wallet;
|
var w = wallet;
|
||||||
var tx, input;
|
var tx;
|
||||||
|
|
||||||
tx = new MTX();
|
tx = new MTX();
|
||||||
tx.addOutpoint(new Outpoint());
|
tx.addOutpoint(new Outpoint());
|
||||||
|
|||||||
@ -563,12 +563,12 @@ describe('Node', function() {
|
|||||||
}, {});
|
}, {});
|
||||||
|
|
||||||
assert.deepStrictEqual(json.result, {
|
assert.deepStrictEqual(json.result, {
|
||||||
isvalid: true,
|
isvalid: true,
|
||||||
address: addr.toString(),
|
address: addr.toString(),
|
||||||
scriptPubKey: Script.fromAddress(addr).toJSON(),
|
scriptPubKey: Script.fromAddress(addr).toJSON(),
|
||||||
ismine: false,
|
ismine: false,
|
||||||
iswatchonly: false
|
iswatchonly: false
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should add transaction to mempool', async function() {
|
it('should add transaction to mempool', async function() {
|
||||||
|
|||||||
@ -1,10 +1,8 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var fs = require('fs');
|
|
||||||
var assert = require('assert');
|
var assert = require('assert');
|
||||||
var Network = require('../lib/protocol/network');
|
var Network = require('../lib/protocol/network');
|
||||||
var util = require('../lib/utils/util');
|
var util = require('../lib/utils/util');
|
||||||
var BufferReader = require('../lib/utils/reader');
|
|
||||||
var NetAddress = require('../lib/primitives/netaddress');
|
var NetAddress = require('../lib/primitives/netaddress');
|
||||||
var TX = require('../lib/primitives/tx');
|
var TX = require('../lib/primitives/tx');
|
||||||
var Framer = require('../lib/net/framer');
|
var Framer = require('../lib/net/framer');
|
||||||
@ -75,6 +73,7 @@ describe('Protocol', function() {
|
|||||||
packetTest('verack', new packets.VerackPacket(), function(payload) {
|
packetTest('verack', new packets.VerackPacket(), function(payload) {
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/* eslint indent: 0 */
|
||||||
hosts = [
|
hosts = [
|
||||||
new NetAddress({
|
new NetAddress({
|
||||||
services: 1,
|
services: 1,
|
||||||
|
|||||||
@ -1,14 +1,11 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var fs = require('fs');
|
|
||||||
var assert = require('assert');
|
var assert = require('assert');
|
||||||
var util = require('../lib/utils/util');
|
var util = require('../lib/utils/util');
|
||||||
var encoding = require('../lib/utils/encoding');
|
var encoding = require('../lib/utils/encoding');
|
||||||
var crypto = require('../lib/crypto/crypto');
|
var crypto = require('../lib/crypto/crypto');
|
||||||
var consensus = require('../lib/protocol/consensus');
|
var consensus = require('../lib/protocol/consensus');
|
||||||
var Network = require('../lib/protocol/network');
|
|
||||||
var TX = require('../lib/primitives/tx');
|
var TX = require('../lib/primitives/tx');
|
||||||
var Block = require('../lib/primitives/block');
|
|
||||||
var Coin = require('../lib/primitives/coin');
|
var Coin = require('../lib/primitives/coin');
|
||||||
var Output = require('../lib/primitives/output');
|
var Output = require('../lib/primitives/output');
|
||||||
var Script = require('../lib/script/script');
|
var Script = require('../lib/script/script');
|
||||||
|
|||||||
@ -15,7 +15,6 @@ var Bloom = require('../../lib/utils/bloom');
|
|||||||
var KeyRing = require('../../lib/primitives/keyring');
|
var KeyRing = require('../../lib/primitives/keyring');
|
||||||
var Outpoint = require('../../lib/primitives/outpoint');
|
var Outpoint = require('../../lib/primitives/outpoint');
|
||||||
var Coin = require('../../lib/primitives/coin');
|
var Coin = require('../../lib/primitives/coin');
|
||||||
var co = require('../../lib/utils/co');
|
|
||||||
|
|
||||||
function MemWallet(options) {
|
function MemWallet(options) {
|
||||||
if (!(this instanceof MemWallet))
|
if (!(this instanceof MemWallet))
|
||||||
@ -292,13 +291,12 @@ MemWallet.prototype.addTX = function addTX(tx, height) {
|
|||||||
MemWallet.prototype.removeTX = function removeTX(tx, height) {
|
MemWallet.prototype.removeTX = function removeTX(tx, height) {
|
||||||
var hash = tx.hash('hex');
|
var hash = tx.hash('hex');
|
||||||
var result = false;
|
var result = false;
|
||||||
var i, op, coin, input, output;
|
var i, op, coin, input;
|
||||||
|
|
||||||
if (!this.map[hash])
|
if (!this.map[hash])
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
for (i = 0; i < tx.outputs.length; i++) {
|
for (i = 0; i < tx.outputs.length; i++) {
|
||||||
output = tx.outputs[i];
|
|
||||||
op = Outpoint(hash, i).toKey();
|
op = Outpoint(hash, i).toKey();
|
||||||
coin = this.getCoin(op);
|
coin = this.getCoin(op);
|
||||||
|
|
||||||
@ -392,7 +390,6 @@ MemWallet.prototype.sign = function sign(mtx) {
|
|||||||
|
|
||||||
MemWallet.prototype.create = async function create(options) {
|
MemWallet.prototype.create = async function create(options) {
|
||||||
var mtx = new MTX(options);
|
var mtx = new MTX(options);
|
||||||
var tx;
|
|
||||||
|
|
||||||
await this.fund(mtx, options);
|
await this.fund(mtx, options);
|
||||||
|
|
||||||
|
|||||||
@ -32,7 +32,6 @@ NodeContext.prototype.init = function() {
|
|||||||
node = new FullNode({
|
node = new FullNode({
|
||||||
network: this.network,
|
network: this.network,
|
||||||
db: 'memory',
|
db: 'memory',
|
||||||
network: 'regtest',
|
|
||||||
logger: new Logger({
|
logger: new Logger({
|
||||||
level: 'debug',
|
level: 'debug',
|
||||||
file: false,
|
file: false,
|
||||||
@ -99,10 +98,9 @@ NodeContext.prototype.disconnect = async function disconnect() {
|
|||||||
await node.disconnect();
|
await node.disconnect();
|
||||||
await co.timeout(1000);
|
await co.timeout(1000);
|
||||||
}
|
}
|
||||||
});
|
};
|
||||||
|
|
||||||
NodeContext.prototype.startSync = function startSync() {
|
NodeContext.prototype.startSync = function startSync() {
|
||||||
var jobs = [];
|
|
||||||
var i, node;
|
var i, node;
|
||||||
|
|
||||||
for (i = 0; i < this.nodes.length; i++) {
|
for (i = 0; i < this.nodes.length; i++) {
|
||||||
@ -114,7 +112,6 @@ NodeContext.prototype.startSync = function startSync() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
NodeContext.prototype.stopSync = function stopSync() {
|
NodeContext.prototype.stopSync = function stopSync() {
|
||||||
var jobs = [];
|
|
||||||
var i, node;
|
var i, node;
|
||||||
|
|
||||||
for (i = 0; i < this.nodes.length; i++) {
|
for (i = 0; i < this.nodes.length; i++) {
|
||||||
|
|||||||
@ -98,7 +98,7 @@ describe('Utils', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should write/read new varints', function() {
|
it('should write/read new varints', function() {
|
||||||
var n, b;
|
var b;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 0: [0x00] 256: [0x81 0x00]
|
* 0: [0x00] 256: [0x81 0x00]
|
||||||
@ -109,7 +109,6 @@ describe('Utils', function() {
|
|||||||
* 2^32: [0x8E 0xFE 0xFE 0xFF 0x00]
|
* 2^32: [0x8E 0xFE 0xFE 0xFF 0x00]
|
||||||
*/
|
*/
|
||||||
|
|
||||||
n = 0;
|
|
||||||
b = Buffer.allocUnsafe(1);
|
b = Buffer.allocUnsafe(1);
|
||||||
b.fill(0x00);
|
b.fill(0x00);
|
||||||
encoding.writeVarint2(b, 0, 0);
|
encoding.writeVarint2(b, 0, 0);
|
||||||
|
|||||||
@ -5,13 +5,11 @@ var consensus = require('../lib/protocol/consensus');
|
|||||||
var util = require('../lib/utils/util');
|
var util = require('../lib/utils/util');
|
||||||
var encoding = require('../lib/utils/encoding');
|
var encoding = require('../lib/utils/encoding');
|
||||||
var crypto = require('../lib/crypto/crypto');
|
var crypto = require('../lib/crypto/crypto');
|
||||||
var co = require('../lib/utils/co');
|
|
||||||
var WalletDB = require('../lib/wallet/walletdb');
|
var WalletDB = require('../lib/wallet/walletdb');
|
||||||
var Address = require('../lib/primitives/address');
|
var Address = require('../lib/primitives/address');
|
||||||
var MTX = require('../lib/primitives/mtx');
|
var MTX = require('../lib/primitives/mtx');
|
||||||
var Coin = require('../lib/primitives/coin');
|
var Coin = require('../lib/primitives/coin');
|
||||||
var KeyRing = require('../lib/primitives/keyring');
|
var KeyRing = require('../lib/primitives/keyring');
|
||||||
var Address = require('../lib/primitives/address');
|
|
||||||
var Input = require('../lib/primitives/input');
|
var Input = require('../lib/primitives/input');
|
||||||
var Outpoint = require('../lib/primitives/outpoint');
|
var Outpoint = require('../lib/primitives/outpoint');
|
||||||
var Script = require('../lib/script/script');
|
var Script = require('../lib/script/script');
|
||||||
@ -169,7 +167,7 @@ describe('Wallet', function() {
|
|||||||
src = src.toTX();
|
src = src.toTX();
|
||||||
|
|
||||||
tx = new MTX();
|
tx = new MTX();
|
||||||
tx.addTX(src, 0)
|
tx.addTX(src, 0);
|
||||||
tx.addOutput(w.getAddress(), 5460);
|
tx.addOutput(w.getAddress(), 5460);
|
||||||
|
|
||||||
maxSize = await tx.estimateSize();
|
maxSize = await tx.estimateSize();
|
||||||
@ -451,7 +449,7 @@ describe('Wallet', function() {
|
|||||||
var view, t1, t2, t3, err;
|
var view, t1, t2, t3, err;
|
||||||
|
|
||||||
// Coinbase
|
// Coinbase
|
||||||
t1 = new MTX()
|
t1 = new MTX();
|
||||||
t1.addInput(dummy());
|
t1.addInput(dummy());
|
||||||
t1.addOutput(w1.getAddress(), 5460);
|
t1.addOutput(w1.getAddress(), 5460);
|
||||||
t1.addOutput(w1.getAddress(), 5460);
|
t1.addOutput(w1.getAddress(), 5460);
|
||||||
@ -1107,6 +1105,7 @@ describe('Wallet', function() {
|
|||||||
err = e;
|
err = e;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
assert(!txs);
|
||||||
assert(err);
|
assert(err);
|
||||||
assert.equal(err.message, 'Account not found.');
|
assert.equal(err.message, 'Account not found.');
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user