You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.3 KiB
77 lines
2.3 KiB
'use strict';
|
|
|
|
var chai = chai || require('chai');
|
|
var bitcore = bitcore || require('../bitcore');
|
|
|
|
var should = chai.should();
|
|
|
|
var Electrum = bitcore.Electrum;
|
|
var Address = bitcore.Address;
|
|
var mpk = '92eea4d2f5263651db9e3222caded1fd4c89772f79a7c03fb6afc00e9d2c9d2ed9b86c2c95fc1171e49163079dacb7f048b3c509a27a490e1df9e7128362d468';
|
|
|
|
/**
|
|
* The hard coded values (expected public key / address hash) were retrieved
|
|
* by creating an Electrum wallet and looking which addresses were generated for
|
|
* master public key mpk. Not very rigorous but it will help catch regressions.
|
|
*/
|
|
describe('Electrum', function() {
|
|
it('should initialze the main object', function() {
|
|
should.exist(Electrum);
|
|
});
|
|
it('should be able to create instance', function() {
|
|
var elec = new Electrum(mpk);
|
|
should.exist(elec);
|
|
});
|
|
it('should be able to call generatePubKey', function() {
|
|
var elec = new Electrum(mpk);
|
|
(function () {
|
|
elec.generatePubKey(0);
|
|
}).should.not.throw(Error);
|
|
});
|
|
it('should be able to call generateChangePubKey', function() {
|
|
var elec = new Electrum(mpk);
|
|
(function () {
|
|
elec.generateChangePubKey(0);
|
|
}).should.not.throw(Error);
|
|
});
|
|
it('should generate correct public key at sequence 0', function() {
|
|
var elec = new Electrum(mpk);
|
|
var pubkey = elec.generatePubKey(0);
|
|
var addr = Address.fromPubKey(pubkey);
|
|
addr.as('base58').should.equal('15Ur7LV4hZFvFYQHkB12g1mdnKuHyHBDiW');
|
|
});
|
|
it('should generate correct (change) public keys at sequence 0,1,2', function() {
|
|
var expected_values = {
|
|
receiving: [
|
|
'15Ur7LV4hZFvFYQHkB12g1mdnKuHyHBDiW',
|
|
'19K48MhyXK4qChGCUJzAHxLFjbQRg9tb9F',
|
|
'1EfoxVmRVzYf1a1WELv2qMvEEpu2u5pXsy'
|
|
],
|
|
change: [
|
|
'138EGyTTyXFuqWBr8Jd7qmPbnfJUFmmuQg',
|
|
'12H7HZhtn7aNpTySXysKXiyxULybMktukh',
|
|
'1KMEUhmmiSdjX9fsv8aCAiYnVZnTTjqx7W'
|
|
]
|
|
};
|
|
var elec = new Electrum(mpk);
|
|
|
|
var pubkey, addr, addr_change;
|
|
|
|
for (var i = 0; i < expected_values.receiving.length; i++) {
|
|
//receiving
|
|
pubkey = elec.generatePubKey(i);
|
|
addr = Address.fromPubKey(pubkey);
|
|
addr.as('base58').should.equal(expected_values.receiving[i]);
|
|
|
|
//change
|
|
pubkey = elec.generateChangePubKey(i);
|
|
addr = Address.fromPubKey(pubkey);
|
|
addr.as('base58').should.equal(expected_values.change[i]);
|
|
}
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|