int-cli
Version:
INT is the new generation of bottom-up created system of IoT and blockchain
57 lines (56 loc) • 1.91 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const error_code_1 = require("../error_code");
const chain_1 = require("../chain");
const bignumber_js_1 = require("bignumber.js");
const chain_2 = require("./chain");
const assert = require('assert');
class ValueMiner extends chain_1.Miner {
constructor(options) {
super(options);
this.m_blocklimit = new bignumber_js_1.BigNumber(0);
}
set coinbase(address) {
this.m_coinbase = address;
}
get coinbase() {
return this.m_coinbase;
}
_chainInstance() {
return new chain_2.ValueChain(this.m_constructOptions);
}
get chain() {
return this.m_chain;
}
parseInstanceOptions(options) {
let { err, value } = super.parseInstanceOptions(options);
if (err) {
return { err };
}
value.coinbase = options.origin.get('coinbase');
if (!options.origin.has('blocklimit')) {
console.log(`not exist 'blocklimit' option in command`);
return { err: error_code_1.ErrorCode.RESULT_PARSE_ERROR };
}
value.blocklimit = new bignumber_js_1.BigNumber(options.origin.get('blocklimit'));
return { err: error_code_1.ErrorCode.RESULT_OK, value };
}
async initialize(options) {
if (options.coinbase) {
this.m_coinbase = options.coinbase;
}
this.m_blocklimit = options.blocklimit;
return await super.initialize(options);
}
async _decorateBlock(block) {
block.header.coinbase = this.m_coinbase;
return error_code_1.ErrorCode.RESULT_OK;
}
async _collectTransactions(block) {
let txs = await this.chain.pending.popTransactionWithFee(this.m_blocklimit);
for (const tx of txs) {
block.content.addTransaction(tx);
}
}
}
exports.ValueMiner = ValueMiner;
;