diff --git a/packages/bitcore-wallet-client/lib/api.js b/packages/bitcore-wallet-client/lib/api.js index c528d809bd..5c155d207a 100644 --- a/packages/bitcore-wallet-client/lib/api.js +++ b/packages/bitcore-wallet-client/lib/api.js @@ -2386,29 +2386,6 @@ API.prototype.getWalletIdsFromOldCopay = function(username, password, blob) { return _.uniq(ids); }; - -/** - * createWalletFromOldCopay - * - * @param username - * @param password - * @param blob - * @param cb - * @return {undefined} - */ -API.prototype.createWalletFromOldCopay = function(username, password, blob, cb) { - var self = this; - var w = this._oldCopayDecrypt(username, password, blob); - if (!w) return cb(new Error('Could not decrypt')); - - if (w.publicKeyRing.copayersExtPubKeys.length != w.opts.totalCopayers) - return cb(new Error('Wallet is incomplete, cannot be imported')); - - this.credentials = Credentials.fromOldCopayWallet(w); - this.request.setCredentials(this.credentials); - this.recreateWallet(cb); -}; - API.PayPro = PayPro; module.exports = API; diff --git a/packages/bitcore-wallet-client/lib/credentials.js b/packages/bitcore-wallet-client/lib/credentials.js index 77ce29a59a..85d01bd2ae 100644 --- a/packages/bitcore-wallet-client/lib/credentials.js +++ b/packages/bitcore-wallet-client/lib/credentials.js @@ -484,58 +484,4 @@ Credentials.prototype.clearMnemonic = function() { delete this.mnemonicEncrypted; }; - -Credentials.fromOldCopayWallet = function(w) { - function walletPrivKeyFromOldCopayWallet(w) { - // IN BWS, the master Pub Keys are not sent to the server, - // so it is safe to use them as seed for wallet's shared secret. - var seed = w.publicKeyRing.copayersExtPubKeys.sort().join(''); - var seedBuf = new Buffer(seed); - var privKey = new Bitcore.PrivateKey.fromBuffer(Bitcore.crypto.Hash.sha256(seedBuf)); - return privKey.toString(); - }; - - var credentials = new Credentials(); - credentials.coin = 'btc'; - credentials.derivationStrategy = Constants.DERIVATION_STRATEGIES.BIP45; - credentials.xPrivKey = w.privateKey.extendedPrivateKeyString; - credentials._expand(); - - credentials.addWalletPrivateKey(walletPrivKeyFromOldCopayWallet(w)); - credentials.addWalletInfo(w.opts.id, w.opts.name, w.opts.requiredCopayers, w.opts.totalCopayers) - - var pkr = _.map(w.publicKeyRing.copayersExtPubKeys, function(xPubStr) { - - var isMe = xPubStr === credentials.xPubKey; - var requestDerivation; - - if (isMe) { - var path = Constants.PATHS.REQUEST_KEY; - requestDerivation = (new Bitcore.HDPrivateKey(credentials.xPrivKey)) - .deriveChild(path).hdPublicKey; - } else { - // this - var path = Constants.PATHS.REQUEST_KEY_AUTH; - requestDerivation = (new Bitcore.HDPublicKey(xPubStr)).deriveChild(path); - } - - // Grab Copayer Name - var hd = new Bitcore.HDPublicKey(xPubStr).deriveChild('m/2147483646/0/0'); - var pubKey = hd.publicKey.toString('hex'); - var copayerName = w.publicKeyRing.nicknameFor[pubKey]; - if (isMe) { - credentials.copayerName = copayerName; - } - - return { - xPubKey: xPubStr, - requestPubKey: requestDerivation.publicKey.toString(), - copayerName: copayerName, - }; - }); - credentials.addPublicKeyRing(pkr); - return credentials; -}; - - module.exports = Credentials; diff --git a/packages/bitcore-wallet-client/test/client.js b/packages/bitcore-wallet-client/test/client.js index 65ab2fbaf9..61f5da8d01 100644 --- a/packages/bitcore-wallet-client/test/client.js +++ b/packages/bitcore-wallet-client/test/client.js @@ -4866,237 +4866,6 @@ describe('client API', function() { }); }); - describe('Legacy Copay Import', function() { - var db2; - before( (done) => { - helpers.newDb(2,(err,in_db) => { - db2 = in_db; - return done(err); - }); - }); - - it('Should get wallets from profile', function(done) { - var t = ImportData.copayers[0]; - var c = helpers.newClient(app); - var ids = c.getWalletIdsFromOldCopay(t.username, t.password, t.ls['profile::4872dd8b2ceaa54f922e8e6ba6a8eaa77b488721']); - ids.should.deep.equal([ - '8f197244e661f4d0', - '4d32f0737a05f072', - 'e2c2d72024979ded', - '7065a73486c8cb5d' - ]); - done(); - }); - it('Should import a 1-1 wallet', function(done) { - var t = ImportData.copayers[0]; - var c = helpers.newClient(app); - c.createWalletFromOldCopay(t.username, t.password, t.ls['wallet::e2c2d72024979ded'], function(err) { - should.not.exist(err); - c.credentials.m.should.equal(1); - c.credentials.n.should.equal(1); - - c.createAddress(function(err, x0) { - should.not.exist(err); - // This is the first 'shared' address, created automatically - // by old copay - x0.address.should.equal('2N3w8sJUyAXCQirqNsTayWr7pWADFNdncmf'); - c.getStatus({}, function(err, status) { - should.not.exist(err); - status.wallet.name.should.equal('1-1'); - status.wallet.status.should.equal('complete'); - c.credentials.walletId.should.equal('e2c2d72024979ded'); - c.credentials.walletPrivKey.should.equal('c3463113c6e1d0fc2f2bd520f7d9d62f8e1fdcdd96005254571c64902aeb1648'); - c.credentials.sharedEncryptingKey.should.equal('x3D/7QHa4PkKMbSXEvXwaw=='); - status.wallet.copayers.length.should.equal(1); - status.wallet.copayers[0].name.should.equal('123'); - done(); - }); - }); - }); - }); - - it('Should to import the same wallet twice with different clients', function(done) { - var t = ImportData.copayers[0]; - var c = helpers.newClient(app); - c.createWalletFromOldCopay(t.username, t.password, t.ls['wallet::4d32f0737a05f072'], function(err) { - should.not.exist(err); - c.getStatus({}, function(err, status) { - should.not.exist(err); - status.wallet.status.should.equal('complete'); - c.credentials.walletId.should.equal('4d32f0737a05f072'); - var c2 = helpers.newClient(app); - c2.createWalletFromOldCopay(t.username, t.password, t.ls['wallet::4d32f0737a05f072'], function(err) { - should.not.exist(err); - c2.getStatus({}, function(err, status) { - should.not.exist(err); - status.wallet.status.should.equal('complete'); - c2.credentials.walletId.should.equal('4d32f0737a05f072'); - done(); - }); - }); - }); - }); - }); - - it('Should not fail when importing the same wallet twice, same copayer', function(done) { - var t = ImportData.copayers[0]; - var c = helpers.newClient(app); - c.createWalletFromOldCopay(t.username, t.password, t.ls['wallet::4d32f0737a05f072'], function(err) { - should.not.exist(err); - c.getStatus({}, function(err, status) { - should.not.exist(err); - status.wallet.status.should.equal('complete'); - c.credentials.walletId.should.equal('4d32f0737a05f072'); - c.createWalletFromOldCopay(t.username, t.password, t.ls['wallet::4d32f0737a05f072'], function(err) { - should.not.exist(err); - done(); - }); - }); - }); - }); - - it('Should import and complete 2-2 wallet from 2 copayers, and create addresses', function(done) { - var t = ImportData.copayers[0]; - var c = helpers.newClient(app); - c.createWalletFromOldCopay(t.username, t.password, t.ls['wallet::4d32f0737a05f072'], function(err) { - should.not.exist(err); - c.getStatus({}, function(err, status) { - should.not.exist(err); - status.wallet.status.should.equal('complete'); - c.credentials.sharedEncryptingKey.should.equal('Ou2j4kq3z1w4yTr9YybVxg=='); - - var t2 = ImportData.copayers[1]; - var c2 = helpers.newClient(app); - c2.createWalletFromOldCopay(t2.username, t2.password, t2.ls['wallet::4d32f0737a05f072'], function(err) { - should.not.exist(err); - c2.credentials.sharedEncryptingKey.should.equal('Ou2j4kq3z1w4yTr9YybVxg=='); - - // This should pull the non-temporary keys - c2.getStatus({}, function(err, status) { - should.not.exist(err); - status.wallet.status.should.equal('complete'); - c2.createAddress(function(err, x0) { - x0.address.should.be.equal('2Mv1DHpozzZ9fup2nZ1kmdRXoNnDJ8b1JF2'); - c.createAddress(function(err, x0) { - x0.address.should.be.equal('2N2dZ1HogpxHVKv3CD2R4WrhWRwqZtpDc2M'); - done(); - }); - }); - }); - }); - }); - }); - }); - - it('Should import and complete 2-3 wallet from 2 copayers, and create addresses', function(done) { - var w = 'wallet::7065a73486c8cb5d'; - var key = 'fS4HhoRd25KJY4VpNpO1jg=='; - var t = ImportData.copayers[0]; - var c = helpers.newClient(app); - c.createWalletFromOldCopay(t.username, t.password, t.ls[w], function(err) { - should.not.exist(err); - c.getStatus({}, function(err, status) { - should.not.exist(err); - status.wallet.status.should.equal('complete'); - c.credentials.sharedEncryptingKey.should.equal(key); - - var t2 = ImportData.copayers[1]; - var c2 = helpers.newClient(app); - c2.createWalletFromOldCopay(t2.username, t2.password, t2.ls[w], function(err) { - should.not.exist(err); - c2.credentials.sharedEncryptingKey.should.equal(key); - - c2.getStatus({}, function(err, status) { - should.not.exist(err); - status.wallet.status.should.equal('complete'); - - var t3 = ImportData.copayers[2]; - var c3 = helpers.newClient(app); - c3.createWalletFromOldCopay(t3.username, t3.password, t3.ls[w], function(err) { - should.not.exist(err); - c3.credentials.sharedEncryptingKey.should.equal(key); - - // This should pull the non-temporary keys - c3.getStatus({}, function(err, status) { - should.not.exist(err); - status.wallet.status.should.equal('complete'); - done(); - }); - }); - }); - }); - }); - }); - }); - - it('Should import a 2-3 wallet from 2 copayers, and recreate it, and then on the recreated other copayers should be able to access', function(done) { - var w = 'wallet::7065a73486c8cb5d'; - var key = 'fS4HhoRd25KJY4VpNpO1jg=='; - var t = ImportData.copayers[0]; - var c = helpers.newClient(app); - c.createWalletFromOldCopay(t.username, t.password, t.ls[w], function(err) { - should.not.exist(err); - var t2 = ImportData.copayers[1]; - var c2 = helpers.newClient(app); - c2.createWalletFromOldCopay(t2.username, t2.password, t2.ls[w], function(err) { - should.not.exist(err); - - // New BWS server... - var storage = new Storage({ - db: db2, - }); - var newApp; - var expressApp = new ExpressApp(); - expressApp.start({ - storage: storage, - blockchainExplorer: blockchainExplorerMock, - disableLogs: true, - }, - function() { - newApp = expressApp.app; - }); - var recoveryClient = helpers.newClient(newApp); - recoveryClient.import(c.export()); - - /* - * This is to export 2 old BIP45 wallets - var b= c.export(); - - var e = sjcl.encrypt('hola', b, { - iter: 10000 - }); - console.log("[client.js.4813] C EXPORT\n", e); //TODO - - b= c2.export(); - e= sjcl.encrypt('hola', b, { - iter: 10000 - }); - - console.log("[client.js.4813] C2 EXPORT\n", e); //TODO - */ - - recoveryClient.recreateWallet(function(err) { - should.not.exist(err); - recoveryClient.getStatus({}, function(err, status) { - should.not.exist(err); - _.map(status.wallet.copayers, 'name').sort().should.deep.equal(['123', '234', '345']); - var t2 = ImportData.copayers[1]; - var c2p = helpers.newClient(newApp); - c2p.createWalletFromOldCopay(t2.username, t2.password, t2.ls[w], function(err) { - should.not.exist(err); - c2p.getStatus({}, function(err, status) { - should.not.exist(err); - _.map(status.wallet.copayers, 'name').sort().should.deep.equal(['123', '234', '345']); - done(); - }); - }); - }); - }); - }); - }); - }); - }); - describe('Private key encryption', function() { var password = 'jesuissatoshi'; var c1, c2; diff --git a/packages/bitcore-wallet-service/src/lib/expressapp.ts b/packages/bitcore-wallet-service/src/lib/expressapp.ts index 6fa2c7a22d..9d4e31e4fb 100644 --- a/packages/bitcore-wallet-service/src/lib/expressapp.ts +++ b/packages/bitcore-wallet-service/src/lib/expressapp.ts @@ -244,19 +244,7 @@ export class ExpressApp { // DEPRECATED router.post('/v1/wallets/', createWalletLimiter, (req, res) => { logDeprecated(req); - let server; - try { - server = getServer(req, res); - } catch (ex) { - return returnError(ex, res, req); - } - req.body.supportBIP44AndP2PKH = false; - server.createWallet(req.body, (err, walletId) => { - if (err) return returnError(err, res, req); - res.json({ - walletId - }); - }); + return returnError(new ClientError('BIP45 wallet creation no longer supported'), res, req); }); router.post('/v2/wallets/', createWalletLimiter, (req, res) => { @@ -291,19 +279,7 @@ export class ExpressApp { // DEPRECATED router.post('/v1/wallets/:id/copayers/', (req, res) => { logDeprecated(req); - req.body.walletId = req.params['id']; - req.body.supportBIP44AndP2PKH = false; - let server; - try { - server = getServer(req, res); - } catch (ex) { - return returnError(ex, res, req); - } - server.joinWallet(req.body, (err, result) => { - if (err) return returnError(err, res, req); - - res.json(result); - }); + return returnError(new ClientError('BIP45 wallet creation no longer supported'), res, req); }); router.post('/v2/wallets/:id/copayers/', (req, res) => { @@ -944,4 +920,4 @@ export class ExpressApp { WalletService.initialize(opts, cb); } -} \ No newline at end of file +} diff --git a/packages/bitcore-wallet-service/src/lib/server.ts b/packages/bitcore-wallet-service/src/lib/server.ts index d46c2341c4..f183f66292 100644 --- a/packages/bitcore-wallet-service/src/lib/server.ts +++ b/packages/bitcore-wallet-service/src/lib/server.ts @@ -456,7 +456,7 @@ export class WalletService { * @param {string} opts.singleAddress[=false] - The wallet will only ever have one address. * @param {string} opts.coin[='btc'] - The coin for this wallet (btc, bch). * @param {string} opts.network[='livenet'] - The Bitcoin network for this wallet. - * @param {string} opts.supportBIP44AndP2PKH[=true] - Client supports BIP44 & P2PKH for new wallets. + * @param {string} opts.account[=0] - BIP44 account number */ createWallet(opts, cb) { let pubKey; @@ -487,15 +487,8 @@ export class WalletService { return cb(new ClientError('Invalid network')); } - opts.supportBIP44AndP2PKH = _.isBoolean(opts.supportBIP44AndP2PKH) - ? opts.supportBIP44AndP2PKH - : true; - - const derivationStrategy = opts.supportBIP44AndP2PKH - ? Constants.DERIVATION_STRATEGIES.BIP44 - : Constants.DERIVATION_STRATEGIES.BIP45; - const addressType = - opts.n === 1 && opts.supportBIP44AndP2PKH + const derivationStrategy = Constants.DERIVATION_STRATEGIES.BIP44 + const addressType = opts.n === 1 ? Constants.SCRIPT_TYPES.P2PKH : Constants.SCRIPT_TYPES.P2SH; @@ -1023,7 +1016,6 @@ export class WalletService { * @param {string} opts.copayerSignature - S(name|xPubKey|requestPubKey). Used by other copayers to verify that the copayer joining knows the wallet secret. * @param {string} opts.customData - (optional) Custom data for this copayer. * @param {string} opts.dryRun[=false] - (optional) Simulate the action but do not change server state. - * @param {string} [opts.supportBIP44AndP2PKH = true] - Client supports BIP44 & P2PKH for joining wallets. */ joinWallet(opts, cb) { if ( @@ -1052,10 +1044,6 @@ export class WalletService { return cb(new ClientError('Invalid extended public key')); } - opts.supportBIP44AndP2PKH = _.isBoolean(opts.supportBIP44AndP2PKH) - ? opts.supportBIP44AndP2PKH - : true; - this.walletId = opts.walletId; this._runLocked(cb, (cb) => { this.storage.fetchWallet(opts.walletId, (err, wallet) => { @@ -1078,31 +1066,18 @@ export class WalletService { ); } - if (opts.supportBIP44AndP2PKH) { - // New client trying to join legacy wallet - if ( - wallet.derivationStrategy == Constants.DERIVATION_STRATEGIES.BIP45 - ) { - return cb( - new ClientError( - 'The wallet you are trying to join was created with an older version of the client app.' - ) - ); - } - } else { - // Legacy client trying to join new wallet - if ( - wallet.derivationStrategy == Constants.DERIVATION_STRATEGIES.BIP44 - ) { - return cb( - new ClientError( - Errors.codes.UPGRADE_NEEDED, - 'To join this wallet you need to upgrade your client app.' - ) - ); - } + // New client trying to join legacy wallet + if ( + wallet.derivationStrategy == Constants.DERIVATION_STRATEGIES.BIP45 + ) { + return cb( + new ClientError( + 'The wallet you are trying to join was created with an older version of the client app.' + ) + ); } + const hash = WalletService._getCopayerHash( opts.name, opts.xPubKey, @@ -4409,7 +4384,7 @@ export class WalletService { addresses.push(addr); i++; } - this.logi(i + ' addresses were added.'); + //this.logi(i + ' addresses were added.'); } this._store(wallet, addresses, next); diff --git a/packages/bitcore-wallet-service/test/integration/server.js b/packages/bitcore-wallet-service/test/integration/server.js index 612993c995..a4bb0de617 100644 --- a/packages/bitcore-wallet-service/test/integration/server.js +++ b/packages/bitcore-wallet-service/test/integration/server.js @@ -492,24 +492,6 @@ describe('Wallet service', function() { }); }); }); - it('should use BIP45 & P2SH for 1-of-1 wallet if not supported', function(done) { - var walletOpts = { - name: 'my wallet', - m: 1, - n: 1, - pubKey: TestData.keyPair.pub, - supportBIP44AndP2PKH: false, - }; - server.createWallet(walletOpts, function(err, wid) { - should.not.exist(err); - server.storage.fetchWallet(wid, function(err, wallet) { - should.not.exist(err); - wallet.derivationStrategy.should.equal('BIP45'); - wallet.addressType.should.equal('P2SH'); - done(); - }); - }); - }); it('should use BIP44 & P2SH for shared wallet if supported', function(done) { var walletOpts = { name: 'my wallet', @@ -527,24 +509,6 @@ describe('Wallet service', function() { }); }); }); - it('should use BIP45 & P2SH for shared wallet if supported', function(done) { - var walletOpts = { - name: 'my wallet', - m: 2, - n: 3, - pubKey: TestData.keyPair.pub, - supportBIP44AndP2PKH: false, - }; - server.createWallet(walletOpts, function(err, wid) { - should.not.exist(err); - server.storage.fetchWallet(wid, function(err, wallet) { - should.not.exist(err); - wallet.derivationStrategy.should.equal('BIP45'); - wallet.addressType.should.equal('P2SH'); - done(); - }); - }); - }); }); }); @@ -907,62 +871,6 @@ describe('Wallet service', function() { }); }); - describe('Interaction new/legacy clients', function() { - var server; - beforeEach(function() { - server = new WalletService(); - }); - - it('should fail to join legacy wallet from new client', function(done) { - var walletOpts = { - name: 'my wallet', - m: 1, - n: 2, - pubKey: TestData.keyPair.pub, - supportBIP44AndP2PKH: false, - }; - server.createWallet(walletOpts, function(err, walletId) { - should.not.exist(err); - should.exist(walletId); - var copayerOpts = helpers.getSignedCopayerOpts({ - walletId: walletId, - name: 'me', - xPubKey: TestData.copayers[0].xPubKey_44H_0H_0H, - requestPubKey: TestData.copayers[0].pubKey_1H_0, - }); - server.joinWallet(copayerOpts, function(err, result) { - should.exist(err); - err.message.should.contain('The wallet you are trying to join was created with an older version of the client app'); - done(); - }); - }); - }); - - it('should fail to join new wallet from legacy client', function(done) { - var walletOpts = { - name: 'my wallet', - m: 1, - n: 2, - pubKey: TestData.keyPair.pub, - }; - server.createWallet(walletOpts, function(err, walletId) { - should.not.exist(err); - should.exist(walletId); - var copayerOpts = helpers.getSignedCopayerOpts({ - walletId: walletId, - name: 'me', - xPubKey: TestData.copayers[0].xPubKey_45H, - requestPubKey: TestData.copayers[0].pubKey_1H_0, - supportBIP44AndP2PKH: false, - }); - server.joinWallet(copayerOpts, function(err, result) { - should.exist(err); - err.code.should.equal('UPGRADE_NEEDED'); - done(); - }); - }); - }); - }); }); describe('#removeWallet', function() { @@ -1272,56 +1180,6 @@ describe('Wallet service', function() { describe('#createAddress', function() { var server, wallet; - describe('shared wallets (BIP45)', function() { - beforeEach(function(done) { - helpers.createAndJoinWallet(2, 2, { - supportBIP44AndP2PKH: false - }, function(s, w) { - server = s; - wallet = w; - done(); - }); - }); - - it('should create address', function(done) { - server.createAddress({}, function(err, address) { - should.not.exist(err); - should.exist(address); - address.walletId.should.equal(wallet.id); - address.network.should.equal('livenet'); - address.address.should.equal('3BVJZ4CYzeTtawDtgwHvWV5jbvnXtYe97i'); - address.isChange.should.be.false; - address.path.should.equal('m/2147483647/0/0'); - address.type.should.equal('P2SH'); - server.getNotifications({}, function(err, notifications) { - should.not.exist(err); - var notif = _.find(notifications, { - type: 'NewAddress' - }); - should.exist(notif); - notif.data.address.should.equal(address.address); - done(); - }); - }); - }); - - it('should create many addresses on simultaneous requests', function(done) { - var N = 5; - async.mapSeries(_.range(N), function(i, cb) { - server.createAddress({}, cb); - }, function(err, addresses) { - var x = _.map(addresses, 'path'); - addresses.length.should.equal(N); - _.each(_.range(N), function(i) { - addresses[i].path.should.equal('m/2147483647/0/' + i); - }); - // No two identical addresses - _.uniq(_.map(addresses, 'address')).length.should.equal(N); - done(); - }); - }); - }); - describe('shared wallets (BIP44)', function() { beforeEach(function(done) { helpers.createAndJoinWallet(2, 2, function(s, w) { @@ -7173,83 +7031,6 @@ describe('Wallet service', function() { }); }); - describe('shared wallet (BIP45)', function() { - - beforeEach(function(done) { - this.timeout(5000); - Defaults.SCAN_ADDRESS_GAP = 2; - - helpers.createAndJoinWallet(1, 2, { - supportBIP44AndP2PKH: false - }, function(s, w) { - server = s; - wallet = w; - done(); - }); - }); - afterEach(function() { }); - - it('should scan main addresses', function(done) { - helpers.stubAddressActivity( - ['39AA1Y2VvPJhV3RFbc7cKbUax1WgkPwweR', // m/2147483647/0/0 - '3QX2MNSijnhCALBmUVnDo5UGPj3SEGASWx', // m/2147483647/0/2 - '3MzGaz4KKX66w8ShKaR536ZqzVvREBqqYu', // m/2147483647/1/0 - ]); - var expectedPaths = [ - 'm/2147483647/0/0', - 'm/2147483647/0/1', - 'm/2147483647/0/2', - 'm/2147483647/1/0', - ]; - server.scan({}, function(err) { - should.not.exist(err); - server.getWallet({}, function(err, wallet) { - should.not.exist(err); - wallet.scanStatus.should.equal('success'); - server.storage.fetchAddresses(wallet.id, function(err, addresses) { - should.exist(addresses); - addresses.length.should.equal(expectedPaths.length); - var paths = _.map(addresses, 'path'); - _.difference(paths, expectedPaths).length.should.equal(0); - server.createAddress({}, function(err, address) { - should.not.exist(err); - address.path.should.equal('m/2147483647/0/3'); - done(); - }); - }); - }); - }); - }); - it('should scan main addresses & copayer addresses', function(done) { - helpers.stubAddressActivity( - ['39AA1Y2VvPJhV3RFbc7cKbUax1WgkPwweR', // m/2147483647/0/0 - '3MzGaz4KKX66w8ShKaR536ZqzVvREBqqYu', // m/2147483647/1/0 - '3BYoynejwBH9q4Jhr9m9P5YTnLTu57US6g', // m/0/0/1 - '37Pb8c32hzm16tCZaVHj4Dtjva45L2a3A3', // m/1/1/0 - '32TB2n283YsXdseMqUm9zHSRcfS5JxTWxx', // m/1/0/0 - ]); - var expectedPaths = [ - 'm/2147483647/0/0', - 'm/2147483647/1/0', - 'm/0/0/0', - 'm/0/0/1', - 'm/1/0/0', - 'm/1/1/0', - ]; - server.scan({ - includeCopayerBranches: true - }, function(err) { - should.not.exist(err); - server.storage.fetchAddresses(wallet.id, function(err, addresses) { - should.exist(addresses); - addresses.length.should.equal(expectedPaths.length); - var paths = _.map(addresses, 'path'); - _.difference(paths, expectedPaths).length.should.equal(0); - done(); - }) - }); - }); - }); }); describe('#startScan', function() { @@ -7259,7 +7040,6 @@ describe('Wallet service', function() { Defaults.SCAN_ADDRESS_GAP = 2; helpers.createAndJoinWallet(1, 1, { - supportBIP44AndP2PKH: false }, function(s, w) { server = s; wallet = w; @@ -7272,15 +7052,15 @@ describe('Wallet service', function() { it('should start an asynchronous scan', function(done) { helpers.stubAddressActivity( - ['3GvvHimEMk2GBZnPxTF89GHZL6QhZjUZVs', // m/2147483647/0/0 - '37pd1jjTUiGBh8JL2hKLDgsyrhBoiz5vsi', // m/2147483647/0/2 - '3C3tBn8Sr1wHTp2brMgYsj9ncB7R7paYuB', // m/2147483647/1/0 + ['1L3z9LPd861FWQhf3vDn89Fnc9dkdBo2CG', // m/0/0/0 + '1GdXraZ1gtoVAvBh49D4hK9xLm6SKgesoE', // m/0/0/2 + '1FUzgKcyPJsYwDLUEVJYeE2N3KVaoxTjGS', // m/0/1/0 ]); var expectedPaths = [ - 'm/2147483647/0/0', - 'm/2147483647/0/1', - 'm/2147483647/0/2', - 'm/2147483647/1/0', + 'm/0/0', + 'm/0/1', + 'm/0/2', + 'm/1/0', ]; server.messageBroker.onMessage(function(n) { if (n.type == 'ScanFinished') { @@ -7295,7 +7075,7 @@ describe('Wallet service', function() { _.difference(paths, expectedPaths).length.should.equal(0); server.createAddress({}, function(err, address) { should.not.exist(err); - address.path.should.equal('m/2147483647/0/3'); + address.path.should.equal('m/0/3'); done(); }); }) diff --git a/packages/bitcore-wallet-service/test/v8.js b/packages/bitcore-wallet-service/test/v8.js index 41c7a93895..0af31ad7b4 100644 --- a/packages/bitcore-wallet-service/test/v8.js +++ b/packages/bitcore-wallet-service/test/v8.js @@ -247,7 +247,7 @@ describe('V8', () => { }); - describe.only('#broadcast', () => { + describe('#broadcast', () => { it('should broadcast a TX', (done) => { class BroadcastOk { broadcast(payload) {