scripts: gen.js.
This commit is contained in:
parent
aadac3d525
commit
4d6d526126
117
scripts/gen.js
117
scripts/gen.js
@ -2,35 +2,36 @@
|
||||
|
||||
var bcoin = require('bcoin');
|
||||
var constants = bcoin.protocol.constants;
|
||||
var opcodes = constants.opcodes;
|
||||
var network = bcoin.protocol.network;
|
||||
var utils = bcoin.utils;
|
||||
var bn = require('bn.js');
|
||||
|
||||
function createGenesisBlock(options) {
|
||||
var parser = bcoin.protocol.parser;
|
||||
var tx, block, txRaw, blockRaw;
|
||||
var flags = options.flags;
|
||||
var script = options.script;
|
||||
var reward = options.reward;
|
||||
var tx, block;
|
||||
|
||||
if (!options.flags) {
|
||||
options.flags = new Buffer(
|
||||
if (!flags) {
|
||||
flags = new Buffer(
|
||||
'The Times 03/Jan/2009 Chancellor on brink of second bailout for banks',
|
||||
'ascii');
|
||||
}
|
||||
|
||||
if (!options.script) {
|
||||
options.script = {
|
||||
code: [
|
||||
new Buffer('04678afdb0fe5548271967f1a67130b7105cd6a828e039'
|
||||
+ '09a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c3'
|
||||
+ '84df7ba0b8d578a4c702b6bf11d5f', 'hex'),
|
||||
constants.opcodes.OP_CHECKSIG
|
||||
]
|
||||
};
|
||||
if (!script) {
|
||||
script = bcoin.script.fromArray([
|
||||
new Buffer('04678afdb0fe5548271967f1a67130b7105cd6a828e039'
|
||||
+ '09a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c3'
|
||||
+ '84df7ba0b8d578a4c702b6bf11d5f', 'hex'),
|
||||
opcodes.OP_CHECKSIG
|
||||
]);
|
||||
}
|
||||
|
||||
if (!options.reward)
|
||||
options.reward = 50 * constants.COIN;
|
||||
if (!reward)
|
||||
reward = 50 * constants.COIN;
|
||||
|
||||
tx = {
|
||||
tx = new bcoin.tx({
|
||||
version: 1,
|
||||
flag: 1,
|
||||
inputs: [{
|
||||
@ -38,55 +39,31 @@ function createGenesisBlock(options) {
|
||||
hash: constants.NULL_HASH,
|
||||
index: 0xffffffff
|
||||
},
|
||||
script: {
|
||||
code: [
|
||||
new bn(486604799).toBuffer('le'),
|
||||
new bn(4).toBuffer('le'),
|
||||
options.flags
|
||||
]
|
||||
},
|
||||
script: [
|
||||
bcoin.opcode.fromNumber(new bn(486604799)),
|
||||
bcoin.opcode.fromPush(new Buffer([4])),
|
||||
bcoin.opcode.fromData(flags)
|
||||
],
|
||||
sequence: 0xffffffff
|
||||
}],
|
||||
outputs: [{
|
||||
value: options.reward,
|
||||
script: options.script
|
||||
value: reward,
|
||||
script: script
|
||||
}],
|
||||
locktime: 0
|
||||
};
|
||||
});
|
||||
|
||||
tx.inputs[0].script.code[1].opcode = 1;
|
||||
|
||||
txRaw = bcoin.protocol.framer.tx(tx);
|
||||
tx._raw = txRaw;
|
||||
tx._size = txRaw.length;
|
||||
tx._witnessSize = 0;
|
||||
|
||||
block = {
|
||||
block = new bcoin.block({
|
||||
version: options.version,
|
||||
prevBlock: constants.NULL_HASH,
|
||||
merkleRoot: utils.dsha256(txRaw).toString('hex'),
|
||||
merkleRoot: tx.hash('hex'),
|
||||
ts: options.ts,
|
||||
bits: options.bits,
|
||||
nonce: options.nonce,
|
||||
txs: [tx]
|
||||
};
|
||||
height: 0
|
||||
});
|
||||
|
||||
blockRaw = bcoin.protocol.framer.block(block);
|
||||
|
||||
block = parser.parseBlock(blockRaw);
|
||||
|
||||
block._hash = utils.dsha256(blockRaw.slice(0, 80));
|
||||
block.hash = block._hash.toString('hex');
|
||||
block._raw = blockRaw;
|
||||
block._size = blockRaw.length;
|
||||
block._witnessSize = 0;
|
||||
block.height = 0;
|
||||
|
||||
tx = block.txs[0];
|
||||
tx.height = 0;
|
||||
tx.ts = block.ts;
|
||||
tx._hash = block.merkleRoot;
|
||||
tx.hash = tx._hash.toString('hex');
|
||||
block.addTX(tx);
|
||||
|
||||
return block;
|
||||
}
|
||||
@ -115,31 +92,39 @@ var regtest = createGenesisBlock({
|
||||
var segnet3 = createGenesisBlock({
|
||||
version: 1,
|
||||
ts: 1452831101,
|
||||
bits: 0x1d00ffff,
|
||||
bits: 486604799,
|
||||
nonce: 0
|
||||
});
|
||||
|
||||
var segnet4 = createGenesisBlock({
|
||||
version: 1,
|
||||
ts: 1452831101,
|
||||
bits: utils.toCompact(network.segnet4.pow.limit),
|
||||
bits: 503447551,
|
||||
nonce: 0
|
||||
});
|
||||
|
||||
utils.print(main);
|
||||
utils.print('');
|
||||
utils.print(testnet);
|
||||
utils.print('');
|
||||
utils.print(regtest);
|
||||
utils.print('');
|
||||
utils.print(segnet3);
|
||||
utils.print('main hash: %s', utils.revHex(main.hash));
|
||||
utils.print('main raw: %s', main._raw.toString('hex'));
|
||||
utils.print('');
|
||||
utils.print('testnet hash: %s', utils.revHex(testnet.hash));
|
||||
utils.print('testnet raw: %s', testnet._raw.toString('hex'));
|
||||
utils.print('');
|
||||
utils.print('regtest hash: %s', utils.revHex(regtest.hash));
|
||||
utils.print('regtest raw: %s', regtest._raw.toString('hex'));
|
||||
utils.print('segnet3 hash: %s', utils.revHex(segnet3.hash));
|
||||
utils.print('segnet3 raw: %s', segnet3._raw.toString('hex'));
|
||||
utils.print('segnet4 hash: %s', utils.revHex(segnet4.hash));
|
||||
utils.print('segnet4 raw: %s', segnet4._raw.toString('hex'));
|
||||
utils.print(segnet4);
|
||||
utils.print('');
|
||||
utils.print('');
|
||||
utils.print('main hash: %s', main.rhash);
|
||||
utils.print('main raw: %s', main.toRaw().toString('hex'));
|
||||
utils.print('');
|
||||
utils.print('testnet hash: %s', testnet.rhash);
|
||||
utils.print('testnet raw: %s', testnet.toRaw().toString('hex'));
|
||||
utils.print('');
|
||||
utils.print('regtest hash: %s', regtest.rhash);
|
||||
utils.print('regtest raw: %s', regtest.toRaw().toString('hex'));
|
||||
utils.print('');
|
||||
utils.print('segnet3 hash: %s', segnet3.rhash);
|
||||
utils.print('segnet3 raw: %s', segnet3.toRaw().toString('hex'));
|
||||
utils.print('');
|
||||
utils.print('segnet4 hash: %s', segnet4.rhash);
|
||||
utils.print('segnet4 raw: %s', segnet4.toRaw().toString('hex'));
|
||||
|
||||
Loading…
Reference in New Issue
Block a user