bitcore/lib/networks.js

95 lines
1.9 KiB
JavaScript

'use strict';
var _ = require('lodash');
/**
* A network is merely a map containing values that correspond to version
* numbers for each bitcoin network. Currently only supporting "livenet"
* (a.k.a. "mainnet") and "testnet".
* @constructor
*/
function Network() {}
var hex = function(hex) { return new Buffer(hex, 'hex'); };
/**
* @instance
* @member Network#livenet
*/
var livenet = new Network();
_.extend(livenet, {
name: 'livenet',
alias: 'mainnet',
pubkeyhash: 0x00,
privatekey: 0x80,
scripthash: 0x05,
xpubkey: 0x0488b21e,
xprivkey: 0x0488ade4,
networkMagic: hex('f9beb4d9'),
port: 8333,
dnsSeeds: [
'seed.bitcoin.sipa.be',
'dnsseed.bluematt.me',
'dnsseed.bitcoin.dashjr.org',
'seed.bitcoinstats.com',
'seed.bitnodes.io',
'bitseed.xf2.org'
]
});
/**
* @instance
* @member Network#testnet
*/
var testnet = new Network();
_.extend(testnet, {
name: 'testnet',
alias: 'testnet',
pubkeyhash: 0x6f,
privatekey: 0xef,
scripthash: 0xc4,
xpubkey: 0x043587cf,
xprivkey: 0x04358394,
networkMagic: hex('0b110907'),
port: 18333,
dnsSeeds: [
'testnet-seed.bitcoin.petertodd.org',
'testnet-seed.bluematt.me'
],
});
var networkMaps = {};
_.each(_.values(livenet), function(value) {
if (_.isArray(value)) return;
networkMaps[value] = livenet;
});
_.each(_.values(testnet), function(value) {
if (_.isArray(value)) return;
networkMaps[value] = testnet;
});
/**
* @function
* @member Network#getNetwork
* Retrieves the network associated with a magic number or string.
* @param {string|number|Network} arg
* @return Network
*/
function getNetwork(arg) {
if (arg === livenet || arg === testnet) {
return arg;
}
return networkMaps[arg];
}
/**
* @namespace Network
*/
module.exports = {
defaultNetwork: livenet,
livenet: livenet,
mainnet: livenet,
testnet: testnet,
get: getNetwork
};