network/address: remove segnet4 support. fix bech32 parsing.
This commit is contained in:
parent
9c87804b08
commit
957c4e8c93
@ -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
|
||||
*/
|
||||
|
||||
@ -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)
|
||||
*/
|
||||
|
||||
Loading…
Reference in New Issue
Block a user