Skip to content

Commit

Permalink
Merge b2c4612 into 6e493e4
Browse files Browse the repository at this point in the history
  • Loading branch information
schinzelh committed Sep 7, 2016
2 parents 6e493e4 + b2c4612 commit 3e50f3e
Show file tree
Hide file tree
Showing 29 changed files with 518 additions and 853 deletions.
3 changes: 2 additions & 1 deletion lib/block/blockheader.js
Original file line number Diff line number Diff line change
Expand Up @@ -209,10 +209,11 @@ BlockHeader.prototype.getTargetDifficulty = function getTargetDifficulty(bits) {
bits = bits || this.bits;

var target = new BN(bits & 0xffffff);
var mov = 8 * ((bits >>> 20) - 3);
var mov = 8 * ((bits >>> 24) - 3);
while (mov-- > 0) {
target = target.mul(new BN(2));
}
console.log(target);
return target;
};

Expand Down
4 changes: 2 additions & 2 deletions lib/transaction/transaction.js
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,9 @@ var DEFAULT_NLOCKTIME = 0;
var MAX_BLOCK_SIZE = 1000000;

// Minimum amount for an output for it not to be considered a dust output
Transaction.DUST_AMOUNT = 546;
Transaction.DUST_AMOUNT = 5460;

// Margin of error to allow fees in the vecinity of the expected value but doesn't allow a big difference
// Margin of error to allow fees in the vicinity of the expected value but doesn't allow a big difference
Transaction.FEE_SECURITY_MARGIN = 15;

// max amount of satoshis in circulation
Expand Down
94 changes: 47 additions & 47 deletions test/address.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ var invalidbase58 = require('./data/bitcoind/base58_keys_invalid.json');
describe('Address', function() {

var pubkeyhash = new Buffer('3c3fa3d4adcaf8f52d5b1843975e122548269937', 'hex');
var buf = Buffer.concat([new Buffer([0]), pubkeyhash]);
var str = '16VZnHwRhwrExfeHFHGjwrgEMq8VcYPs9r';
var buf = Buffer.concat([new Buffer([0x4c]), pubkeyhash]);
var str = 'XgBQcYbKff4q7cEs7AaxoPN2CAiBbFc2JT';

it('can\'t build without data', function() {
(function() {
Expand Down Expand Up @@ -68,68 +68,68 @@ describe('Address', function() {

// livenet valid
var PKHLivenet = [
'15vkcKf7gB23wLAnZLmbVuMiiVDc1Nm4a2',
'1A6ut1tWnUq1SEQLMr4ttDh24wcbJ5o9TT',
'1BpbpfLdY7oBS9gK7aDXgvMgr1DPvNhEB2',
'1Jz2yCRd5ST1p2gUqFB5wsSQfdm3jaFfg7',
' 1Jz2yCRd5ST1p2gUqFB5wsSQfdm3jaFfg7 \t\n'
'XfcbSaK1dtEe6GmNRE5pMS3WYpoJ2D1BDm',
'XjnkiGYQkC3bbAzvDjP7jkNouHCHNRr3ug',
'XmWSeuzXVq1mb6GtyTXkYT3UgLo5uVR7XG',
'XtfsoT5X39fbxyH4h8VJoQ8CVyLjojjUST',
' XtfsoT5X39fbxyH4h8VJoQ8CVyLjojjUST \t\n'
];

// livenet p2sh
var P2SHLivenet = [
'342ftSRCvFHfCeFFBuz4xwbeqnDw6BGUey',
'33vt8ViH5jsr115AGkW6cEmEz9MpvJSwDk',
'37Sp6Rv3y4kVd1nQ1JV5pfqXccHNyZm1x3',
'3QjYXhTkvuj8qPaXHTTWb5wjXhdsLAAWVy',
'\t \n3QjYXhTkvuj8qPaXHTTWb5wjXhdsLAAWVy \r'
'7UkJidhNjEPJCQnCTXeaJKbJmL4JuyV66w',
'7UeWxgzStiyUzmc7YNAbwcktuhCCoEYw9q',
'7YASvdCDn3r8cnKMGv9bA3qBYA7krjPKSK',
'7qTBMtjvjtpmqA7UZ581vTwPTFUF7LUqyw',
'\t \n7qTBMtjvjtpmqA7UZ581vTwPTFUF7LUqyw \r'
];

// testnet p2sh
var P2SHTestnet = [
'2N7FuwuUuoTBrDFdrAZ9KxBmtqMLxce9i1C',
'2NEWDzHWwY5ZZp8CQWbB7ouNMLqCia6YRda',
'2MxgPqX1iThW3oZVk9KoFcE5M4JpiETssVN',
'2NB72XtkjpnATMggui83aEtPawyyKvnbX2o'
'8tS9fgiv8XAmTXxWqJBv7zbeS4jzrGGwxT',
'91gTi4kws9YV4QX5BLDhyiC6wYbknkk4JE',
'8jrdZJFinmUy3qpQp4qqn2u6f2DkQyv4C4',
'8xHGFfzk9r9Nby1aNs6AQhDLYhNNAPe3sq'
];

//livenet bad checksums
var badChecksums = [
'15vkcKf7gB23wLAnZLmbVuMiiVDc3nq4a2',
'1A6ut1tWnUq1SEQLMr4ttDh24wcbj4w2TT',
'1BpbpfLdY7oBS9gK7aDXgvMgr1DpvNH3B2',
'1Jz2yCRd5ST1p2gUqFB5wsSQfdmEJaffg7'
'XfcbSaK1dtEe6GmNRE5pMS3WYpoJ2D1BCn',
'XjnkiGYQkC3bbAzvDjP7jkNouHCHNRr3vG',
'XmWSeuzXVq1mb6GtyTXkYT3UgLo5uVR7yg',
'XtfsoT5X39fbxyH4h8VJoQ8CVyLjojjUst',
];

//livenet non-base58
var nonBase58 = [
'15vkcKf7g#23wLAnZLmb$uMiiVDc3nq4a2',
'1A601ttWnUq1SEQLMr4ttDh24wcbj4w2TT',
'1BpbpfLdY7oBS9gK7aIXgvMgr1DpvNH3B2',
'1Jz2yCRdOST1p2gUqFB5wsSQfdmEJaffg7'
'XfcbSaK1dtE#6GmNRE5pMS3WYpoJ2D1BCn',
'XjnkiGYOkC3bbAzvDjP7jkNouHCHNRr3vG',
'XmWSeuzXVq0mb6GtyTXkYT3UgLo5uVR7yg',
'XtfsoT5X39fbxyH4h8VJOQ8CVyLjojjUst',
];

//testnet valid
var PKHTestnet = [
'n28S35tqEMbt6vNad7A5K3mZ7vdn8dZ86X',
'n45x3R2w2jaSC62BMa9MeJCd3TXxgvDEmm',
'mursDVxqNQmmwWHACpM9VHwVVSfTddGsEM',
'mtX8nPZZdJ8d3QNLRJ1oJTiEi26Sj6LQXS'
'ygvvbEYBpb3HpVR6LGpKNgfNNZ78jy8YhJ',
'yitSbZgHcy1quf4h4jobhw6SJ61KFgXiVC',
'yafMmecBxeDBf5Kfuz1PYvqJk58pEhUncx',
'yZKdLYCvDXa2kyQr8Tg3N6c3xeZoK7XDcj'
];

describe('validation', function() {

it('getValidationError detects network mismatchs', function() {
var error = Address.getValidationError('37BahqRsFrAd3qLiNNwLNV3AWMRD7itxTo', 'testnet');
var error = Address.getValidationError('7XuDY2i34qGG3bsfdzbqhs2pRuFay7AsHz', 'testnet');
should.exist(error);
});

it('isValid returns true on a valid address', function() {
var valid = Address.isValid('37BahqRsFrAd3qLiNNwLNV3AWMRD7itxTo', 'livenet');
var valid = Address.isValid('7XuDY2i34qGG3bsfdzbqhs2pRuFay7AsHz', 'livenet');
valid.should.equal(true);
});

it('isValid returns false on network mismatch', function() {
var valid = Address.isValid('37BahqRsFrAd3qLiNNwLNV3AWMRD7itxTo', 'testnet');
var valid = Address.isValid('7XuDY2i34qGG3bsfdzbqhs2pRuFay7AsHz', 'testnet');
valid.should.equal(false);
});

Expand Down Expand Up @@ -214,10 +214,10 @@ describe('Address', function() {
});

it('addresses with whitespace are validated correctly', function() {
var ws = ' \r \t \n 1A6ut1tWnUq1SEQLMr4ttDh24wcbJ5o9TT \t \n \r';
var ws = ' \r \t \n XjnkiGYQkC3bbAzvDjP7jkNouHCHNRr3ug \t \n \r';
var error = Address.getValidationError(ws);
should.not.exist(error);
Address.fromString(ws).toString().should.equal('1A6ut1tWnUq1SEQLMr4ttDh24wcbJ5o9TT');
Address.fromString(ws).toString().should.equal('XjnkiGYQkC3bbAzvDjP7jkNouHCHNRr3ug');
});
});

Expand Down Expand Up @@ -332,7 +332,7 @@ describe('Address', function() {
it('should make this address from a compressed pubkey', function() {
var pubkey = new PublicKey('0285e9737a74c30a873f74df05124f2aa6f53042c2fc0a130d6cbd7d16b944b004');
var address = Address.fromPublicKey(pubkey, 'livenet');
address.toString().should.equal('19gH5uhqY6DKrtkU66PsZPUZdzTd11Y7ke');
address.toString().should.equal('XjN7vAMjVoRv1qM3wyi6QvAMUL3JySADS7');
});

it('should use the default network for pubkey', function() {
Expand All @@ -345,9 +345,9 @@ describe('Address', function() {
var pubkey = new PublicKey('0485e9737a74c30a873f74df05124f2aa6f53042c2fc0a130d6cbd7d16b944b00' +
'4833fef26c8be4c4823754869ff4e46755b85d851077771c220e2610496a29d98');
var a = Address.fromPublicKey(pubkey, 'livenet');
a.toString().should.equal('16JXnhxjJUhxfyx4y6H4sFcxrgt8kQ8ewX');
a.toString().should.equal('XfzNcxcdGBvYpvYepybHinJkh2Tpo8wAaV');
var b = new Address(pubkey, 'livenet', 'pubkeyhash');
b.toString().should.equal('16JXnhxjJUhxfyx4y6H4sFcxrgt8kQ8ewX');
b.toString().should.equal('XfzNcxcdGBvYpvYepybHinJkh2Tpo8wAaV');
});

it('should classify from a custom network', function() {
Expand Down Expand Up @@ -382,26 +382,26 @@ describe('Address', function() {
'0xc8e11b0eb0d2ad5362d894f048908341fa61b6e1 OP_EQUALVERIFY OP_CHECKSIG');
var buf = s.toBuffer();
var a = Address.fromScript(s, 'livenet');
a.toString().should.equal('1KK9oz4bFH8c1t6LmighHaoSEGx3P3FEmc');
a.toString().should.equal('XtzzeEiVCzMCApgvdbzv97VE4cXjQWEWZH');
var b = new Address(s, 'livenet');
b.toString().should.equal('1KK9oz4bFH8c1t6LmighHaoSEGx3P3FEmc');
b.toString().should.equal('XtzzeEiVCzMCApgvdbzv97VE4cXjQWEWZH');
});

it('should make this address from a p2sh input script', function() {
var s = Script.fromString('OP_HASH160 20 0xa6ed4af315271e657ee307828f54a4365fa5d20f OP_EQUAL');
var a = Address.fromScript(s, 'livenet');
a.toString().should.equal('3GueMn6ruWVfQTN4XKBGEbCbGLwRSUhfnS');
a.toString().should.equal('7hdHByP2iVbJQDu1nvqmZyCFBtmoEoFix3');
var b = new Address(s, 'livenet');
b.toString().should.equal('3GueMn6ruWVfQTN4XKBGEbCbGLwRSUhfnS');
b.toString().should.equal('7hdHByP2iVbJQDu1nvqmZyCFBtmoEoFix3');
});

it('returns the same address if the script is a pay to public key hash out', function() {
var address = '16JXnhxjJUhxfyx4y6H4sFcxrgt8kQ8ewX';
var address = 'XfzNcxcdGBvYpvYepybHinJkh2Tpo8wAaV';
var script = Script.buildPublicKeyHashOut(new Address(address));
Address(script, Networks.livenet).toString().should.equal(address);
});
it('returns the same address if the script is a pay to script hash out', function() {
var address = '3BYmEwgV2vANrmfRymr1mFnHXgLjD6gAWm';
var address = '7cGQ58xequG1rYCPFPWX6dmwTEB6yL5dvK';
var script = Script.buildScriptHashOut(new Address(address));
Address(script, Networks.livenet).toString().should.equal(address);
});
Expand Down Expand Up @@ -438,7 +438,7 @@ describe('Address', function() {

describe('#toBuffer', function() {

it('3c3fa3d4adcaf8f52d5b1843975e122548269937 corresponds to hash 16VZnHwRhwrExfeHFHGjwrgEMq8VcYPs9r', function() {
it('3c3fa3d4adcaf8f52d5b1843975e122548269937 corresponds to hash XgBQcYbKff4q7cEs7AaxoPN2CAiBbFc2JT', function() {
var address = new Address(str);
address.toBuffer().slice(1).toString('hex').should.equal(pubkeyhash.toString('hex'));
});
Expand Down Expand Up @@ -487,7 +487,7 @@ describe('Address', function() {
describe('#inspect', function() {
it('should output formatted output correctly', function() {
var address = new Address(str);
var output = '<Address: 16VZnHwRhwrExfeHFHGjwrgEMq8VcYPs9r, type: pubkeyhash, network: livenet>';
var output = '<Address: XgBQcYbKff4q7cEs7AaxoPN2CAiBbFc2JT, type: pubkeyhash, network: livenet>';
address.inspect().should.equal(output);
});
});
Expand Down Expand Up @@ -535,14 +535,14 @@ describe('Address', function() {

it('can create an address from a set of public keys', function() {
var address = Address.createMultisig(publics, 2, Networks.livenet);
address.toString().should.equal('3FtqPRirhPvrf7mVUSkygyZ5UuoAYrTW3y');
address.toString().should.equal('7gcUDd12WP2VetJSk4RV2MYjQTdYKJVpCZ');
address = new Address(publics, 2, Networks.livenet);
address.toString().should.equal('3FtqPRirhPvrf7mVUSkygyZ5UuoAYrTW3y');
address.toString().should.equal('7gcUDd12WP2VetJSk4RV2MYjQTdYKJVpCZ');
});

it('works on testnet also', function() {
var address = Address.createMultisig(publics, 2, Networks.testnet);
address.toString().should.equal('2N7T3TAetJrSCruQ39aNrJvYLhG1LJosujf');
address.toString().should.equal('8tdHAwttdvR87BihpKRSUjN6HyQNVZsqBv');
});

it('can also be created by Address.createMultisig', function() {
Expand Down
47 changes: 23 additions & 24 deletions test/block/block.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 3e50f3e

Please sign in to comment.