network/address: remove segnet4 support. fix bech32 parsing.

This commit is contained in:
Christopher Jeffrey 2017-07-25 16:31:27 -07:00
parent 9c87804b08
commit 957c4e8c93
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD
2 changed files with 34 additions and 170 deletions

View File

@ -246,18 +246,21 @@ Address.prototype.toBech32 = function toBech32(network) {
*/
Address.prototype.fromString = function fromString(addr, network) {
let hrp;
assert(typeof addr === 'string');
assert(addr.length > 0);
assert(addr.length <= 100);
// If the address is mixed case,
// it can only ever be base58.
if (isMixedCase(addr))
return this.fromBase58(addr, network);
// Otherwise, it's most likely bech32.
try {
hrp = addr.substring(0, 2).toLowerCase();
network = Network.fromBech32(hrp, network);
return this.fromBech32(addr, network);
} catch (e) {
return this.fromBase58(addr, network);
}
return this.fromBech32(addr, network);
};
/**
@ -873,6 +876,29 @@ Address.getType = function getType(prefix, network) {
}
};
/*
* Helpers
*/
function isMixedCase(str) {
let upper = false;
let lower = false;
for (let i = 0; i < str.length; i++) {
let ch = str.charCodeAt(i);
if (ch & 32)
upper = true;
else
lower = true;
if (upper && lower)
return true;
}
return false;
}
/*
* Expose
*/

View File

@ -14,7 +14,7 @@
const BN = require('../crypto/bn');
const network = exports;
let main, testnet, regtest, segnet4, simnet;
let main, testnet, regtest, simnet;
/**
* Network type list.
@ -23,7 +23,7 @@ let main, testnet, regtest, segnet4, simnet;
* @default
*/
network.types = ['main', 'testnet', 'regtest', 'segnet4', 'simnet'];
network.types = ['main', 'testnet', 'regtest', 'simnet'];
/**
* Mainnet
@ -815,168 +815,6 @@ regtest.selfConnect = true;
regtest.requestMempool = true;
/*
* segnet4
*/
segnet4 = network.segnet4 = {};
segnet4.type = 'segnet4';
segnet4.seeds = [
'104.243.38.34',
'37.34.48.17'
];
segnet4.magic = 0xc4a1abdc;
segnet4.port = 28901;
segnet4.checkpointMap = {};
segnet4.lastCheckpoint = 0;
segnet4.halvingInterval = 210000;
segnet4.genesis = {
version: 1,
hash: 'b291211d4bb2b7e1b7a4758225e69e50104091a637213d033295c010f55ffb18',
prevBlock: '0000000000000000000000000000000000000000000000000000000000000000',
merkleRoot: '3ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a',
time: 1452831101,
bits: 503447551,
nonce: 0,
height: 0
};
segnet4.genesisBlock =
'0100000000000000000000000000000000000000000000000000000000000000000000'
+ '003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a7d71'
+ '9856ffff011e0000000001010000000100000000000000000000000000000000000000'
+ '00000000000000000000000000ffffffff4d04ffff001d0104455468652054696d6573'
+ '2030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66'
+ '207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01'
+ '000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f'
+ '61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f'
+ 'ac00000000';
segnet4.pow = {
// 512x lower min difficulty than mainnet
limit: new BN(
'000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff',
'hex'
),
bits: 503447551,
chainwork: new BN(
'0000000000000000000000000000000000000000000000000000000000800040',
'hex'
),
targetTimespan: 14 * 24 * 60 * 60,
targetSpacing: 10 * 60,
retargetInterval: 2016,
targetReset: true,
noRetargeting: false
};
segnet4.block = {
bip34height: 8,
bip34hash: '6c48386dc7c460defabb5640e28b6510a5f238cdbe6756c2976a7e0913000000',
bip65height: 8,
bip65hash: '6c48386dc7c460defabb5640e28b6510a5f238cdbe6756c2976a7e0913000000',
bip66height: 8,
bip66hash: '6c48386dc7c460defabb5640e28b6510a5f238cdbe6756c2976a7e0913000000',
pruneAfterHeight: 1000,
keepBlocks: 10000,
maxTipAge: 7 * 24 * 60 * 60,
slowHeight: 50000
};
segnet4.bip30 = {};
segnet4.activationThreshold = 108;
segnet4.minerWindow = 144;
segnet4.deployments = {
csv: {
name: 'csv',
bit: 0,
startTime: 1456790400, // March 1st, 2016
timeout: 1493596800, // May 1st, 2017
threshold: -1,
window: -1,
required: false,
force: true
},
segwit: {
name: 'segwit',
bit: 1,
startTime: 0,
timeout: 0xffffffff,
threshold: -1,
window: -1,
required: true,
force: false
},
segsignal: {
name: 'segsignal',
bit: 4,
startTime: 0xffffffff,
timeout: 0xffffffff,
threshold: 269,
window: 336,
required: false,
force: false
},
testdummy: {
name: 'testdummy',
bit: 28,
startTime: 1199145601, // January 1, 2008
timeout: 1230767999, // December 31, 2008
threshold: -1,
window: -1,
required: false,
force: true
}
};
segnet4.deploys = [
segnet4.deployments.csv,
segnet4.deployments.segwit,
segnet4.deployments.segsignal,
segnet4.deployments.testdummy
];
segnet4.keyPrefix = {
privkey: 0x9e,
xpubkey: 0x053587cf,
xprivkey: 0x05358394,
xpubkey58: '2793',
xprivkey58: '2791',
coinType: 1
};
segnet4.addressPrefix = {
pubkeyhash: 0x1e,
scripthash: 0x32,
witnesspubkeyhash: 0x04,
witnessscripthash: 0x29,
bech32: 'sg'
};
segnet4.requireStandard = false;
segnet4.rpcPort = 28902;
segnet4.minRelay = 1000;
segnet4.feeRate = 20000;
segnet4.maxFeeRate = 60000;
segnet4.selfConnect = false;
segnet4.requestMempool = true;
/*
* Simnet (btcd)
*/