itns-sidechain/scripts/gen.js

145 lines
3.1 KiB
JavaScript
Raw Normal View History

2016-06-13 01:06:01 -07:00
'use strict';
2016-11-19 14:33:18 -08:00
var BN = require('bn.js');
2016-12-10 19:42:46 -08:00
var util = require('../lib/utils/util');
2017-01-06 09:57:55 -08:00
var consensus = require('../lib/protocol/consensus');
var encoding = require('../lib/utils/encoding');
2016-12-10 19:42:46 -08:00
var TX = require('../lib/primitives/tx');
var Block = require('../lib/primitives/block');
var Script = require('../lib/script/script');
var Opcode = require('../lib/script/opcode');
2017-01-06 09:57:55 -08:00
var opcodes = Script.opcodes;
2016-12-10 19:42:46 -08:00
var main, testnet, regtest, segnet3, segnet4, btcd;
2016-02-23 20:38:25 -08:00
function createGenesisBlock(options) {
2016-06-27 15:29:45 -07:00
var flags = options.flags;
var script = options.script;
var reward = options.reward;
var tx, block;
2016-02-23 20:38:25 -08:00
2016-06-27 15:29:45 -07:00
if (!flags) {
flags = new Buffer(
2016-02-23 20:38:25 -08:00
'The Times 03/Jan/2009 Chancellor on brink of second bailout for banks',
'ascii');
}
2016-06-27 15:29:45 -07:00
if (!script) {
2016-12-10 19:42:46 -08:00
script = Script.fromArray([
2016-06-27 15:29:45 -07:00
new Buffer('04678afdb0fe5548271967f1a67130b7105cd6a828e039'
+ '09a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c3'
+ '84df7ba0b8d578a4c702b6bf11d5f', 'hex'),
opcodes.OP_CHECKSIG
]);
2016-02-23 20:38:25 -08:00
}
2016-06-27 15:29:45 -07:00
if (!reward)
2017-01-06 09:57:55 -08:00
reward = 50 * consensus.COIN;
2016-02-23 20:38:25 -08:00
2016-12-10 19:42:46 -08:00
tx = new TX({
2016-02-23 20:38:25 -08:00
version: 1,
2016-05-19 00:09:06 -07:00
flag: 1,
2016-02-23 20:38:25 -08:00
inputs: [{
prevout: {
2017-01-06 09:57:55 -08:00
hash: encoding.NULL_HASH,
2016-02-23 20:38:25 -08:00
index: 0xffffffff
},
2016-06-27 15:29:45 -07:00
script: [
2016-12-10 19:42:46 -08:00
Opcode.fromNumber(new BN(486604799)),
Opcode.fromPush(new Buffer([4])),
Opcode.fromData(flags)
2016-06-27 15:29:45 -07:00
],
2016-02-23 20:38:25 -08:00
sequence: 0xffffffff
}],
outputs: [{
2016-06-27 15:29:45 -07:00
value: reward,
script: script
2016-02-23 20:38:25 -08:00
}],
locktime: 0
2016-06-27 15:29:45 -07:00
});
2016-02-23 20:38:25 -08:00
2016-12-10 19:42:46 -08:00
block = new Block({
2016-02-23 20:38:25 -08:00
version: options.version,
2017-01-06 09:57:55 -08:00
prevBlock: encoding.NULL_HASH,
2016-06-27 15:29:45 -07:00
merkleRoot: tx.hash('hex'),
2016-02-23 20:38:25 -08:00
ts: options.ts,
bits: options.bits,
nonce: options.nonce,
2016-06-27 15:29:45 -07:00
height: 0
});
2016-02-23 20:38:25 -08:00
2016-06-27 15:29:45 -07:00
block.addTX(tx);
2016-02-23 20:38:25 -08:00
return block;
}
2016-12-10 19:42:46 -08:00
main = createGenesisBlock({
2016-02-23 20:38:25 -08:00
version: 1,
ts: 1231006505,
bits: 486604799,
nonce: 2083236893
});
2016-12-10 19:42:46 -08:00
testnet = createGenesisBlock({
2016-02-23 20:38:25 -08:00
version: 1,
ts: 1296688602,
bits: 486604799,
nonce: 414098458
});
2016-12-10 19:42:46 -08:00
regtest = createGenesisBlock({
2016-02-23 20:38:25 -08:00
version: 1,
ts: 1296688602,
bits: 545259519,
nonce: 2
});
2016-12-10 19:42:46 -08:00
segnet3 = createGenesisBlock({
version: 1,
2016-02-26 17:08:06 -08:00
ts: 1452831101,
2016-06-27 15:29:45 -07:00
bits: 486604799,
nonce: 0
});
2016-12-10 19:42:46 -08:00
segnet4 = createGenesisBlock({
2016-03-30 19:10:59 -07:00
version: 1,
ts: 1452831101,
2016-06-27 15:29:45 -07:00
bits: 503447551,
2016-03-30 19:10:59 -07:00
nonce: 0
});
2016-12-10 19:42:46 -08:00
btcd = createGenesisBlock({
2016-09-08 17:43:58 -07:00
version: 1,
ts: 1401292357,
bits: 545259519,
nonce: 2
});
2016-11-19 14:33:18 -08:00
util.log(main);
util.log('');
util.log(testnet);
util.log('');
util.log(regtest);
util.log('');
util.log(segnet3);
util.log('');
util.log(segnet4);
util.log('');
util.log('');
2016-12-10 19:42:46 -08:00
util.log('main hash: %s', main.rhash());
2016-11-19 14:33:18 -08:00
util.log('main raw: %s', main.toRaw().toString('hex'));
util.log('');
2016-12-10 19:42:46 -08:00
util.log('testnet hash: %s', testnet.rhash());
2016-11-19 14:33:18 -08:00
util.log('testnet raw: %s', testnet.toRaw().toString('hex'));
util.log('');
2016-12-10 19:42:46 -08:00
util.log('regtest hash: %s', regtest.rhash());
2016-11-19 14:33:18 -08:00
util.log('regtest raw: %s', regtest.toRaw().toString('hex'));
util.log('');
2016-12-10 19:42:46 -08:00
util.log('segnet3 hash: %s', segnet3.rhash());
2016-11-19 14:33:18 -08:00
util.log('segnet3 raw: %s', segnet3.toRaw().toString('hex'));
util.log('');
2016-12-10 19:42:46 -08:00
util.log('segnet4 hash: %s', segnet4.rhash());
2016-11-19 14:33:18 -08:00
util.log('segnet4 raw: %s', segnet4.toRaw().toString('hex'));
util.log('');
2016-12-10 19:42:46 -08:00
util.log('btcd simnet hash: %s', btcd.rhash());
2016-11-19 14:33:18 -08:00
util.log('btcd simnet raw: %s', btcd.toRaw().toString('hex'));