diff --git a/lib/networks.js b/lib/networks.js index 3a9381c..30376c7 100644 --- a/lib/networks.js +++ b/lib/networks.js @@ -129,20 +129,19 @@ function removeNetwork(network) { addNetwork({ name: 'livenet', alias: 'mainnet', - pubkeyhash: 0x00, + pubkeyhash: 28, privatekey: 0x80, - scripthash: 0x05, + scripthash: 40, xpubkey: 0x0488b21e, xprivkey: 0x0488ade4, networkMagic: 0xf9beb4d9, port: 8333, dnsSeeds: [ - 'seed.bitcoin.sipa.be', - 'dnsseed.bluematt.me', - 'dnsseed.bitcoin.dashjr.org', - 'seed.bitcoinstats.com', - 'seed.bitnodes.io', - 'bitseed.xf2.org' + 'seed.bitcoinabc.org', + 'seed-abc.bitcoinforks.org', + 'seed.bitcoinunlimited.info', + 'seed.bitprim.org ', + 'seed.deadalnix.me' ] }); diff --git a/test/address.js b/test/address.js index 4982ad7..6cec39c 100644 --- a/test/address.js +++ b/test/address.js @@ -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([28]), pubkeyhash]); + var str = 'CMxTMLHVazpmroYhw2bfXNJFyxLuX4srpv'; it('can\'t build without data', function() { (function() { @@ -68,20 +68,20 @@ describe('Address', function() { // livenet valid var PKHLivenet = [ - '15vkcKf7gB23wLAnZLmbVuMiiVDc1Nm4a2', - '1A6ut1tWnUq1SEQLMr4ttDh24wcbJ5o9TT', - '1BpbpfLdY7oBS9gK7aDXgvMgr1DPvNhEB2', - '1Jz2yCRd5ST1p2gUqFB5wsSQfdm3jaFfg7', - ' 1Jz2yCRd5ST1p2gUqFB5wsSQfdm3jaFfg7 \t\n' + 'CMPeBN1BZDzaqU5DF66X5QykLcS1voucT9', + 'CRZoT4EafXoYLNJm3bPpTjK3h4q1FSxet4', + 'CTHVPhghRAmiLHajoKYTGRyiU8RomQmAfZ', + 'CaSvYEmgxVRYiAauWzW1XP4SHkyTiS78yy', + ' CaSvYEmgxVRYiAauWzW1XP4SHkyTiS78yy \t\n' ]; // livenet p2sh var P2SHLivenet = [ - '342ftSRCvFHfCeFFBuz4xwbeqnDw6BGUey', - '33vt8ViH5jsr115AGkW6cEmEz9MpvJSwDk', - '37Sp6Rv3y4kVd1nQ1JV5pfqXccHNyZm1x3', - '3QjYXhTkvuj8qPaXHTTWb5wjXhdsLAAWVy', - '\t \n3QjYXhTkvuj8qPaXHTTWb5wjXhdsLAAWVy \r' + 'H8rnMErHmZWKpp8H3beDwL8BsSEwzDFSjJ', + 'H8kzbJ9Mw46WdAxC8SAFadHn1oNqp6jEsu', + 'HCGvZEM8pNyAFBfRrz9Eo4N4eGJPuFahd9', + 'HVZezVtqnDwoTZTZ997fZUUGZMetDFUDLf', + '\tHVZezVtqnDwoTZTZ997fZUUGZMetDFUDLf \n \r' ]; // testnet p2sh @@ -94,18 +94,18 @@ describe('Address', function() { //livenet bad checksums var badChecksums = [ - '15vkcKf7gB23wLAnZLmbVuMiiVDc3nq4a2', - '1A6ut1tWnUq1SEQLMr4ttDh24wcbj4w2TT', - '1BpbpfLdY7oBS9gK7aDXgvMgr1DpvNH3B2', - '1Jz2yCRd5ST1p2gUqFB5wsSQfdmEJaffg7' + 'C5vkcKf7gB23wLAnZLmbVuMiiVDc3nq4a2', + 'CA6ut1tWnUq1SEQLMr4ttDh24wcbj4w2TT', + 'CBpbpfLdY7oBS9gK7aDXgvMgr1DpvNH3B2', + 'CJz2yCRd5ST1p2gUqFB5wsSQfdmEJaffg7' ]; //livenet non-base58 var nonBase58 = [ - '15vkcKf7g#23wLAnZLmb$uMiiVDc3nq4a2', - '1A601ttWnUq1SEQLMr4ttDh24wcbj4w2TT', - '1BpbpfLdY7oBS9gK7aIXgvMgr1DpvNH3B2', - '1Jz2yCRdOST1p2gUqFB5wsSQfdmEJaffg7' + 'C5vkcKf7g#23wLAnZLmb$uMiiVDc3nq4a2', + 'CA601ttWnUq1SEQLMr4ttDh24wcbj4w2TT', + 'CBpbpfLdY7oBS9gK7aIXgvMgr1DpvNH3B2', + 'CJz2yCRdOST1p2gUqFB5wsSQfdmEJaffg7' ]; //testnet valid @@ -119,17 +119,17 @@ describe('Address', function() { describe('validation', function() { it('getValidationError detects network mismatchs', function() { - var error = Address.getValidationError('37BahqRsFrAd3qLiNNwLNV3AWMRD7itxTo', 'testnet'); + var error = Address.getValidationError('HC1hAdrx7APHg1DkE4bVLsZhY1SE5Dik1r', 'testnet'); should.exist(error); }); it('isValid returns true on a valid address', function() { - var valid = Address.isValid('37BahqRsFrAd3qLiNNwLNV3AWMRD7itxTo', 'livenet'); + var valid = Address.isValid('HC1hAdrx7APHg1DkE4bVLsZhY1SE5Dik1r', 'livenet'); valid.should.equal(true); }); it('isValid returns false on network mismatch', function() { - var valid = Address.isValid('37BahqRsFrAd3qLiNNwLNV3AWMRD7itxTo', 'testnet'); + var valid = Address.isValid('HC1hAdrx7APHg1DkE4bVLsZhY1SE5Dik1r', 'testnet'); valid.should.equal(false); }); @@ -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 CRZoT4EafXoYLNJm3bPpTjK3h4q1FSxet4 \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('CRZoT4EafXoYLNJm3bPpTjK3h4q1FSxet4'); }); }); @@ -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('CR9Aex3uR9Brm2etmqio8u6bG7g2uF5ewo'); }); it('should use the default network for pubkey', function() { @@ -345,24 +345,24 @@ describe('Address', function() { var pubkey = new PublicKey('0485e9737a74c30a873f74df05124f2aa6f53042c2fc0a130d6cbd7d16b944b00' + '4833fef26c8be4c4823754869ff4e46755b85d851077771c220e2610496a29d98'); var a = Address.fromPublicKey(pubkey, 'livenet'); - a.toString().should.equal('16JXnhxjJUhxfyx4y6H4sFcxrgt8kQ8ewX'); + a.toString().should.equal('CMmRMkJoBXgVa7rVeqbzSmEzUp6YgVBuaV'); var b = new Address(pubkey, 'livenet', 'pubkeyhash'); - b.toString().should.equal('16JXnhxjJUhxfyx4y6H4sFcxrgt8kQ8ewX'); + b.toString().should.equal('CMmRMkJoBXgVa7rVeqbzSmEzUp6YgVBuaV'); }); it('should classify from a custom network', function() { var custom = { name: 'customnetwork', - pubkeyhash: 0x1c, + pubkeyhash: 10, privatekey: 0x1e, - scripthash: 0x28, + scripthash: 15, xpubkey: 0x02e8de8f, xprivkey: 0x02e8da54, networkMagic: 0x0c110907, port: 7333 }; - var addressString = 'CX4WePxBwq1Y6u7VyMJfmmitE7GiTgC9aE'; Networks.add(custom); + var addressString = '57gZdnwcQHLirKLwDHcFiWLq9jTZwRaxaE'; var network = Networks.get('customnetwork'); var address = Address.fromString(addressString); address.type.should.equal(Address.PayToPublicKeyHash); @@ -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('Can3P2Qf8L78v1zmTU1cs6RTrQATGLYZY4'); var b = new Address(s, 'livenet'); - b.toString().should.equal('1KK9oz4bFH8c1t6LmighHaoSEGx3P3FEmc'); + b.toString().should.equal('Can3P2Qf8L78v1zmTU1cs6RTrQATGLYZY4'); }); 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('HMjkpaXwkpiL2dF6NzqRCyj8HzxSEGPGr3'); var b = new Address(s, 'livenet'); - b.toString().should.equal('3GueMn6ruWVfQTN4XKBGEbCbGLwRSUhfnS'); + b.toString().should.equal('HMjkpaXwkpiL2dF6NzqRCyj8HzxSEGPGr3'); }); it('returns the same address if the script is a pay to public key hash out', function() { - var address = '16JXnhxjJUhxfyx4y6H4sFcxrgt8kQ8ewX'; + var address = 'CMmRMkJoBXgVa7rVeqbzSmEzUp6YgVBuaV'; 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 = 'HGNshk7ZtEP3UwYTqTWAjeJpZLMk3BWkJt'; var script = Script.buildScriptHashOut(new Address(address)); Address(script, Networks.livenet).toString().should.equal(address); }); @@ -487,7 +487,7 @@ describe('Address', function() { describe('#inspect', function() { it('should output formatted output correctly', function() { var address = new Address(str); - var output = ''; + var output = ''; address.inspect().should.equal(output); }); }); @@ -535,9 +535,9 @@ 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('HLiwrE9wYi9XHHeXL8R8fN5cWZpBUN8Kme'); address = new Address(publics, 2, Networks.livenet); - address.toString().should.equal('3FtqPRirhPvrf7mVUSkygyZ5UuoAYrTW3y'); + address.toString().should.equal('HLiwrE9wYi9XHHeXL8R8fN5cWZpBUN8Kme'); }); it('works on testnet also', function() { diff --git a/test/data/bitcoind/base58_keys_invalid.json b/test/data/bitcoind/base58_keys_invalid.json index 615fe55..4d25fd8 100644 --- a/test/data/bitcoind/base58_keys_invalid.json +++ b/test/data/bitcoind/base58_keys_invalid.json @@ -5,6 +5,12 @@ [ "x" ], + [ + "19dcawoKcZdQz365WpXWMhX6QCUpR9SY4r" + ], + [ + "37Sp6Rv3y4kVd1nQ1JV5pfqXccHNyZm1x3" + ], [ "37qgekLpCCHrQuSjvX3fs496FWTGsHFHizjJAs6NPcR47aefnnCWECAhHV6E3g4YN7u7Yuwod5Y" ], @@ -102,7 +108,7 @@ "dB7cwYdcPSgiyAwKWL3JwCVwSk6epU2txw" ], [ - "HPhFUhUAh8ZQQisH8QQWafAxtQYju3SFTX" + "1PhFUhUAh8ZQQisH8QQWafAxtQYju3SFTX" ], [ "4ctAH6AkHzq5ioiM1m9T3E2hiYEev5mTsB" diff --git a/test/data/bitcoind/base58_keys_valid.json b/test/data/bitcoind/base58_keys_valid.json index 4a8d352..0aed0d9 100644 --- a/test/data/bitcoind/base58_keys_valid.json +++ b/test/data/bitcoind/base58_keys_valid.json @@ -1,6 +1,6 @@ [ [ - "1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62i", + "CRjG93RdHa96NpA9X3Mdh4eF1bEhzApax4", "65a16059864a2fdbc7c99a4723a8395bc6f188eb", { "addrType": "pubkey", @@ -9,7 +9,7 @@ } ], [ - "3CMNFxN1oHBc4R1EpboAL5yzHGgE611Xou", + "HHBUiko6ebQGgatGgHTKJUWXJvhF19L2GP", "74f209f6ea907e2ea48f74fae05782ae8a665257", { "addrType": "script", @@ -72,7 +72,7 @@ } ], [ - "1Ax4gZtb7gAit2TivwejZHYtNNLT18PUXJ", + "CSQxFcEezj9FnAN9cgyf8oAuzVYrv6bJ9P", "6d23156cbbdcc82a5a47eee4c2c7c583c18b6bf4", { "addrType": "pubkey", @@ -81,7 +81,7 @@ } ], [ - "3QjYXhTkvuj8qPaXHTTWb5wjXhdsLAAWVy", + "HVZezVtqnDwoTZTZ997fZUUGZMetDFUDLf", "fcc5460dd6e2487c7d75b1963625da0e8f4c5975", { "addrType": "script", @@ -144,7 +144,7 @@ } ], [ - "1C5bSj1iEGUgSTbziymG7Cn18ENQuT36vv", + "CTYV1mMn7KTDLbWRQj6BgiQ2kMaptRX8TP", "7987ccaa53d02c8873487ef919677cd3db7a6912", { "addrType": "pubkey", @@ -153,7 +153,7 @@ } ], [ - "3AnNxabYGoTxYiTEZwFEnerUoeFXK2Zoks", + "HFcVRP2d87gdAtLGRcuPm3P1qJGYEYwN5r", "63bcc565f9e68ee0189dd5cc67f1b0e5f02f45cb", { "addrType": "script", @@ -216,7 +216,7 @@ } ], [ - "1Gqk4Tv79P91Cc1STQtU3s1W6277M2CVWu", + "CYJddWGB2S7Y6jus9ADPdNdXi9KXHavv7U", "adc1cc2081a27206fae25792f28bbc55b831549d", { "addrType": "pubkey", @@ -225,7 +225,7 @@ } ], [ - "33vt8ViH5jsr115AGkW6cEmEz9MpvJSwDk", + "H8kzbJ9Mw46WdAxC8SAFadHn1oNqp6jEsu", "188f91a931947eddd7432d6e614387e32b244709", { "addrType": "script", @@ -288,7 +288,7 @@ } ], [ - "1JwMWBVLtiqtscbaRHai4pqHokhFCbtoB4", + "CaQF5DqQmmpRmkW172udeLTKRsufArS4wS", "c4c1b72491ede1eedaca00618407ee0b772cad0d", { "addrType": "pubkey", @@ -297,7 +297,7 @@ } ], [ - "3QCzvfL4ZRvmJFiWWBVwxfdaNBT8EtxB5y", + "HV37PTm9Qk9RvRbYMsA6w4A7PqU98b2bxJ", "f6fe69bcb548a829cce4c57bf6fff8af3a5981f9", { "addrType": "script", @@ -360,7 +360,7 @@ } ], [ - "19dcawoKcZdQz365WpXWMhX6QCUpR9SY4r", + "CR6W9z9PVcbwtAzWCZrRwD982KhEEGCjcq", "5eadaf9bb7121f0f192561a5a62f5e5f54210292", { "addrType": "pubkey", @@ -369,7 +369,7 @@ } ], [ - "37Sp6Rv3y4kVd1nQ1JV5pfqXccHNyZm1x3", + "HCGvZEM8pNyAFBfRrz9Eo4N4eGJPuFahd9", "3f210e7277c899c3a155cc1c90f4106cbddeec6e", { "addrType": "script", @@ -432,7 +432,7 @@ } ], [ - "13p1ijLwsnrcuyqcTvJXkq2ASdXqcnEBLE", + "CKGuHmh1kqq9p7k39fdTLLeC4kkFb672zQ", "1ed467017f043e91ed4c44b4e8dd674db211c4e6", { "addrType": "pubkey", @@ -441,7 +441,7 @@ } ], [ - "3ALJH9Y951VCGcVZYAdpA3KchoP9McEj1G", + "HFAQjwyDvKhrtnNbPrHy8Rr9jTQAFnYkeY", "5ece0cadddc415b1980f001785947120acdb36fc", { "addrType": "script",