fcoin/scripts/gen.js
2017-12-08 16:03:46 +08:00

115 lines
3.0 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

'use strict';
const util = require('../lib/utils/util');
const consensus = require('../lib/protocol/consensus');
const encoding = require('../lib/utils/encoding');
const TX = require('../lib/primitives/tx');
const Block = require('../lib/primitives/block');
const Script = require('../lib/script/script');
function createGenesisBlock(options) {
let flags = options.flags;
let key = options.key;
let reward = options.reward;
if (!flags) {
flags = Buffer.from(
'The Times 03/Jan/2009 Chancellor on brink of second bailout for banks',
'ascii');
}
if (!key) {
key = Buffer.from(''
+ '04678afdb0fe5548271967f1a67130b7105cd6a828e039'
+ '09a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c3'
+ '84df7ba0b8d578a4c702b6bf11d5f', 'hex');
}
if (!reward)
reward = 50 * consensus.COIN;
const tx = new TX({
version: 1,
inputs: [{
prevout: {
hash: encoding.NULL_HASH,
index: 0xffffffff
},
script: Script()
.pushInt(486604799)
.pushPush(Buffer.from([4]))
.pushData(flags)
.compile(),
sequence: 0xffffffff
}],
outputs: [{
value: reward,
script: Script.fromPubkey(key)
}],
locktime: 0
});
const block = new Block({
version: options.version,
prevBlock: encoding.NULL_HASH,
merkleRoot: tx.hash('hex'),
time: options.time,
bits: options.bits,
nonce: options.nonce,
height: 0
});
block.txs.push(tx);
return block;
}
const main = createGenesisBlock({
version: 1,
time: 1317972665,
bits: 504365040,
nonce: 2084524493,
flags: Buffer.from(
'NY Times 05/Oct/2011 Steve Jobs, Apples Visionary, Dies at 56',
'ascii'),
key: Buffer.from('040184710fa689ad5023690c80f3a49c8f13f8d45b8c857fbcbc8bc4a8e4d3eb4b10f4d4604fa08dce601aaf0f470216fe1b51850b4acf21b179c45070ac7b03a9', 'hex')
});
const testnet = createGenesisBlock({
version: 1,
time: 1486949366,
bits: 0x1e0ffff0,
nonce: 293345,
flags: Buffer.from(
'NY Times 05/Oct/2011 Steve Jobs, Apples Visionary, Dies at 56',
'ascii'),
key: Buffer.from('040184710fa689ad5023690c80f3a49c8f13f8d45b8c857fbcbc8bc4a8e4d3eb4b10f4d4604fa08dce601aaf0f470216fe1b51850b4acf21b179c45070ac7b03a9', 'hex')
});
const regtest = createGenesisBlock({
version: 1,
time: 1296688602,
bits: 0x207fffff,
nonce: 0,
flags: Buffer.from(
'NY Times 05/Oct/2011 Steve Jobs, Apples Visionary, Dies at 56',
'ascii'),
key: Buffer.from('040184710fa689ad5023690c80f3a49c8f13f8d45b8c857fbcbc8bc4a8e4d3eb4b10f4d4604fa08dce601aaf0f470216fe1b51850b4acf21b179c45070ac7b03a9', 'hex')
});
util.log(main);
util.log('');
util.log(testnet);
util.log('');
util.log(regtest);
util.log('');
util.log('main hash: %s', main.rhash());
util.log('main raw: %s', main.toRaw().toString('hex'));
util.log('');
util.log('testnet hash: %s', testnet.rhash());
util.log('testnet raw: %s', testnet.toRaw().toString('hex'));
util.log('');
util.log('regtest hash: %s', regtest.rhash());
util.log('regtest raw: %s', regtest.toRaw().toString('hex'));
util.log('');