forked from circlecloud/tera
@@ -14,6 +14,7 @@ import fs = require('fs');
|
||||
import os = require('os');
|
||||
// import path = require('path')
|
||||
import * as crypto from 'crypto';
|
||||
import { secp256k1 } from '../core/library'
|
||||
|
||||
global.START_SERVER = 1;
|
||||
global.DATA_PATH = global.GetNormalPathString(global.DATA_PATH);
|
||||
@@ -37,18 +38,25 @@ global.glCurNumFindArr = 0;
|
||||
global.ArrReconnect = [];
|
||||
global.ArrConnect = [];
|
||||
var FindList = [
|
||||
{ "ip": "91.235.136.81", "port": 30005 },
|
||||
{ "ip": "149.154.70.158", "port": 30000 },
|
||||
{ "ip": "185.240.243.182", "port": 30000 },
|
||||
{ "ip": "212.109.197.205", "port": 30000 },
|
||||
{ "ip": "212.109.197.209", "port": 30000 },
|
||||
{ "ip": "80.87.192.24", "port": 30000 },
|
||||
{ "ip": "60.12.241.181", "port": 30000 },
|
||||
{ "ip": "60.12.241.181", "port": 30001 },
|
||||
{ "ip": "60.12.241.181", "port": 30002 },
|
||||
{ "ip": "60.12.241.181", "port": 30003 },
|
||||
{ "ip": "60.12.241.181", "port": 30004 },
|
||||
{ "ip": "60.12.241.181", "port": 30005 },
|
||||
{ "ip": "60.12.241.181", "port": 30006 },
|
||||
{ "ip": "60.12.241.181", "port": 30007 },
|
||||
{ "ip": "60.12.241.181", "port": 30008 },
|
||||
{ "ip": "60.12.241.181", "port": 30009 },
|
||||
{ "ip": "60.12.241.181", "port": 30010 },
|
||||
{ "ip": "60.12.241.181", "port": 30011 },
|
||||
{ "ip": "60.12.241.181", "port": 30012 },
|
||||
{ "ip": "60.12.241.181", "port": 30013 },
|
||||
{ "ip": "60.12.241.181", "port": 30014 },
|
||||
{ "ip": "60.12.241.181", "port": 30015 },
|
||||
{ "ip": "60.12.241.181", "port": 30016 },
|
||||
{ "ip": "60.12.241.181", "port": 30017 },
|
||||
{ "ip": "60.12.241.181", "port": 30018 },
|
||||
];
|
||||
if (global.LOCAL_RUN) {
|
||||
FindList = [{ "ip": "127.0.0.1", "port": 50001 }, { "ip": "127.0.0.1", "port": 50002 }];
|
||||
@@ -369,23 +377,22 @@ var StartCheckMining = 0;
|
||||
global.MiningPaused = 0;
|
||||
var ProcessMemorySize = 0;
|
||||
global.ArrMiningWrk = [];
|
||||
// var BlockMining;
|
||||
var BlockMining;
|
||||
if (global.ADDRLIST_MODE) {
|
||||
// @ts-ignore
|
||||
return;
|
||||
}
|
||||
let ArrMiningWrk = global.ArrMiningWrk
|
||||
function AllAlive() {
|
||||
for (var i = 0; i < ArrMiningWrk.length; i++) {
|
||||
ArrMiningWrk[i].send({ cmd: "Alive" });
|
||||
for (var i = 0; i < global.ArrMiningWrk.length; i++) {
|
||||
global.ArrMiningWrk[i].send({ cmd: "Alive" });
|
||||
}
|
||||
};
|
||||
|
||||
function ClearArrMining() {
|
||||
for (var i = 0; i < ArrMiningWrk.length; i++) {
|
||||
ArrMiningWrk[i].send({ cmd: "Exit" });
|
||||
for (var i = 0; i < global.ArrMiningWrk.length; i++) {
|
||||
global.ArrMiningWrk[i].send({ cmd: "Exit" });
|
||||
}
|
||||
ArrMiningWrk = [];
|
||||
global.ArrMiningWrk = [];
|
||||
};
|
||||
|
||||
function RunStopPOWProcess(Mode) {
|
||||
@@ -415,13 +422,13 @@ function RunStopPOWProcess(Mode) {
|
||||
global.MiningPaused = 0;
|
||||
}
|
||||
}
|
||||
if (ArrMiningWrk.length && global.MiningPaused) {
|
||||
if (global.ArrMiningWrk.length && global.MiningPaused) {
|
||||
global.ToLog("------------ MINING MUST STOP ON TIME");
|
||||
ClearArrMining();
|
||||
return;
|
||||
}
|
||||
else
|
||||
if (!ArrMiningWrk.length && !global.MiningPaused) {
|
||||
if (!global.ArrMiningWrk.length && !global.MiningPaused) {
|
||||
global.ToLog("*********** MINING MUST START ON TIME");
|
||||
}
|
||||
else {
|
||||
@@ -435,7 +442,7 @@ function RunStopPOWProcess(Mode) {
|
||||
ClearArrMining();
|
||||
return;
|
||||
}
|
||||
if (global.USE_MINING && ArrMiningWrk.length)
|
||||
if (global.USE_MINING && global.ArrMiningWrk.length)
|
||||
return;
|
||||
if (global.SERVER.LoadHistoryMode)
|
||||
return;
|
||||
@@ -444,7 +451,7 @@ function RunStopPOWProcess(Mode) {
|
||||
var PathMiner = global.GetCodePath("../miner.js");
|
||||
if (!fs.existsSync(PathMiner))
|
||||
PathMiner = "./process/pow-process.js";
|
||||
if (ArrMiningWrk.length >= global.GetCountMiningCPU())
|
||||
if (global.ArrMiningWrk.length >= global.GetCountMiningCPU())
|
||||
return;
|
||||
if (global.GrayConnect()) {
|
||||
global.ToLog("CANNOT START MINER IN NOT DIRECT IP MODE");
|
||||
@@ -464,8 +471,8 @@ function RunStopPOWProcess(Mode) {
|
||||
global.ToLog("START MINER PROCESS COUNT: " + global.GetCountMiningCPU() + " Memory: " + ProcessMemorySize / 1024 / 1024 + " Mb for each process");
|
||||
for (var R = 0; R < global.GetCountMiningCPU(); R++) {
|
||||
let Worker = Fork(PathMiner);
|
||||
ArrMiningWrk.push(Worker);
|
||||
Worker.Num = ArrMiningWrk.length;
|
||||
global.ArrMiningWrk.push(Worker);
|
||||
Worker.Num = global.ArrMiningWrk.length;
|
||||
Worker.on('message', function(msg) {
|
||||
if (msg.cmd === "log") {
|
||||
global.ToLog(msg.message);
|
||||
@@ -485,16 +492,16 @@ function RunStopPOWProcess(Mode) {
|
||||
}
|
||||
});
|
||||
Worker.on('error', function(err) {
|
||||
if (!ArrMiningWrk.length)
|
||||
if (!global.ArrMiningWrk.length)
|
||||
return;
|
||||
global.ToError('ERROR IN PROCESS: ' + err);
|
||||
});
|
||||
Worker.on('close', function(code) {
|
||||
global.ToLog("STOP PROCESS: " + Worker.Num + " pid:" + Worker.pid);
|
||||
for (var i = 0; i < ArrMiningWrk.length; i++) {
|
||||
if (ArrMiningWrk[i].pid === Worker.pid) {
|
||||
for (var i = 0; i < global.ArrMiningWrk.length; i++) {
|
||||
if (global.ArrMiningWrk[i].pid === Worker.pid) {
|
||||
global.ToLog("Delete wrk from arr - pid:" + Worker.pid);
|
||||
ArrMiningWrk.splice(i, 1);
|
||||
global.ArrMiningWrk.splice(i, 1);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -504,11 +511,11 @@ function RunStopPOWProcess(Mode) {
|
||||
function SetCalcPOW(Block, cmd) {
|
||||
if (!global.USE_MINING)
|
||||
return;
|
||||
if (ArrMiningWrk.length !== global.GetCountMiningCPU())
|
||||
if (global.ArrMiningWrk.length !== global.GetCountMiningCPU())
|
||||
return;
|
||||
// BlockMining = Block;
|
||||
for (var i = 0; i < ArrMiningWrk.length; i++) {
|
||||
var CurWorker = ArrMiningWrk[i];
|
||||
BlockMining = Block;
|
||||
for (var i = 0; i < global.ArrMiningWrk.length; i++) {
|
||||
var CurWorker = global.ArrMiningWrk[i];
|
||||
if (!CurWorker.bOnline)
|
||||
continue;
|
||||
CurWorker.send({
|
||||
@@ -650,7 +657,7 @@ function RunOnce() {
|
||||
}, 10000);
|
||||
}
|
||||
};
|
||||
// var glPortDebug = 49800;
|
||||
var glPortDebug = 49800;
|
||||
|
||||
function Fork(Path, ArrArgs?) {
|
||||
const child_process = require('child_process');
|
||||
@@ -670,7 +677,7 @@ function Fork(Path, ArrArgs?) {
|
||||
ArrArgs.push("NOALIVE");
|
||||
if (global.DEV_MODE)
|
||||
ArrArgs.push("DEV_MODE");
|
||||
// glPortDebug++;
|
||||
glPortDebug++;
|
||||
var execArgv = [];
|
||||
var Worker = child_process.fork(Path, ArrArgs, { execArgv: execArgv });
|
||||
return Worker;
|
||||
@@ -687,7 +694,7 @@ function TestSignLib(MaxTime) {
|
||||
var startTime = process.hrtime();
|
||||
var deltaTime = 1;
|
||||
for (var Num = 0; Num < 1000; Num++) {
|
||||
var Result = global.secp256k1.verify(hash, Sign, PubKey);
|
||||
var Result = secp256k1.verify(hash, Sign, PubKey);
|
||||
if (!Result) {
|
||||
global.ToError("Error test sign");
|
||||
process.exit(0);
|
||||
|
||||
@@ -50,20 +50,20 @@ PROCESS.on("message", function(e) {
|
||||
cmd: "POW", BlockNum: o.BlockNum, SeqHash: o.SeqHash, Hash: o.Hash, PowHash: o.PowHash, AddrHash: o.AddrHash,
|
||||
Num: o.Num
|
||||
});
|
||||
}
|
||||
catch (e) {
|
||||
} catch (e) {
|
||||
global.ToError(e);
|
||||
}
|
||||
}
|
||||
else
|
||||
} else {
|
||||
if ("SetBlock" === e.cmd) {
|
||||
var a = 1e6 * (1 + e.Num);
|
||||
Block.HashCount && process.send({ cmd: "HASHRATE", CountNonce: Block.HashCount, Hash: Block.Hash }), Block.HashCount = 0, (Block = e).Time = Date.now(),
|
||||
Block.LastNonce = a, Block.Period = global.CONSENSUS_PERIOD_TIME * Block.Percent / 100, 0 < Block.Period && 0 < Block.RunPeriod && (CalcPOWHash(),
|
||||
void 0 !== idInterval && clearInterval(idInterval), idInterval = setInterval(CalcPOWHash, Block.RunPeriod));
|
||||
}
|
||||
else
|
||||
} else {
|
||||
"Alive" === e.cmd || "Exit" === e.cmd && PROCESS.exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
var idIntervalPump = global.BlockPump = void 0;
|
||||
|
||||
@@ -83,8 +83,7 @@ function PumpHash() {
|
||||
if (100 * (e - StartTime) / global.CONSENSUS_PERIOD_TIME >= global.BlockPump.Percent)
|
||||
return void (EndTime = e);
|
||||
global.CreatePOWVersionX(global.BlockPump, 1);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
100 * (e - EndTime) / global.CONSENSUS_PERIOD_TIME > 100 - global.BlockPump.Percent && (StartTime = e);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -111,7 +111,7 @@ function GETBLOCKHEADER100(msg) {
|
||||
return;
|
||||
var EndNum100 = BlockNum / 100;
|
||||
var LoadHash100 = Data.Hash;
|
||||
// var Hash100;
|
||||
var Hash100;
|
||||
var Count = Data.Count;
|
||||
if (!Count || Count < 0 || !EndNum100)
|
||||
return;
|
||||
@@ -151,8 +151,7 @@ function GETBLOCKHEADER(msg) {
|
||||
if (BlockNum > global.SERVER.GetMaxNumBlockDB())
|
||||
BlockNum = global.SERVER.GetMaxNumBlockDB();
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
BlockNum = Data.BlockNum;
|
||||
var IsSum = Data.IsSum;
|
||||
var Count = Data.Count;
|
||||
@@ -228,8 +227,8 @@ function GETREST(msg) {
|
||||
var ProofArrR = [];
|
||||
var ArrRest = [];
|
||||
if (nResult) {
|
||||
// var WorkStruct = {};
|
||||
// var WorkFormat = global.DApps.Accounts.FORMAT_ACCOUNT_ROW;
|
||||
var WorkStruct = {};
|
||||
var WorkFormat = global.DApps.Accounts.FORMAT_ACCOUNT_ROW;
|
||||
var WorkFormatLength = global.DApps.Accounts.SIZE_ACCOUNT_ROW;
|
||||
var Max = global.DApps.Accounts.DBState.GetMaxNum();
|
||||
var LengthAccount = Data.Count;
|
||||
|
||||
@@ -121,7 +121,7 @@ function DoTXProcess() {
|
||||
var StartTime = Date.now();
|
||||
if (global.bShowDetail)
|
||||
global.ToLog("BlockMin: " + BlockMin.BlockNum + " LastBlockNum=" + LastBlockNum);
|
||||
// var CountTX = 0;
|
||||
var CountTX = 0;
|
||||
for (var Num = BlockMin.BlockNum; Num < BlockMin.BlockNum + 200; Num++) {
|
||||
var EndTime = Date.now();
|
||||
var Delta = EndTime - StartTime;
|
||||
@@ -154,7 +154,7 @@ function DoTXProcess() {
|
||||
global.SERVER.BlockProcessTX(Block);
|
||||
if (Num % 100000 === 0)
|
||||
global.ToLog("CALC: " + Num);
|
||||
// CountTX++;
|
||||
CountTX++;
|
||||
if (global.bShowDetail)
|
||||
global.ToLog(" CALC: " + Num + " SumHash: " + global.GetHexFromArr(Block.SumHash).substr(0, 12));
|
||||
BlockTree.SaveValue(Block.BlockNum, { BlockNum: Block.BlockNum, SumHash: Block.SumHash });
|
||||
@@ -331,8 +331,7 @@ function TXWriteAccHash() {
|
||||
var Item = global.DApps.Smart.DBSmart.Read(num);
|
||||
if (!Item)
|
||||
break;
|
||||
// var Body =
|
||||
global.BufLib.GetBufferFromObject(Item, global.DApps.Smart.FORMAT_ROW, 20000, {});
|
||||
var Body = global.BufLib.GetBufferFromObject(Item, global.DApps.Smart.FORMAT_ROW, 20000, {});
|
||||
global.DApps.Smart.DBSmartWrite(Item);
|
||||
}
|
||||
global.DApps.Accounts.CalcMerkleTree(1);
|
||||
|
||||
@@ -447,9 +447,19 @@ function DoCommandNew(response, Type, Path, Params) {
|
||||
HostingCaller.GetCurrentInfo = function(Params) {
|
||||
var MaxNumBlockDB = global.SERVER.GetMaxNumBlockDB();
|
||||
var Ret: any = {
|
||||
result: 1, VersionNum: global.UPDATE_CODE_VERSION_NUM, NETWORK: global.NETWORK, MaxNumBlockDB: MaxNumBlockDB, CurBlockNum: global.GetCurrentBlockNumByTime(),
|
||||
MaxAccID: global.DApps.Accounts.GetMaxAccount(), MaxDappsID: global.DApps.Smart.GetMaxNum(), CurTime: Date.now(), DELTA_CURRENT_TIME: global.DELTA_CURRENT_TIME,
|
||||
MIN_POWER_POW_TR: global.MIN_POWER_POW_TR, FIRST_TIME_BLOCK: global.FIRST_TIME_BLOCK, CONSENSUS_PERIOD_TIME: global.CONSENSUS_PERIOD_TIME, NEW_SIGN_TIME: global.NEW_SIGN_TIME,
|
||||
result: 1,
|
||||
VersionNum: global.UPDATE_CODE_VERSION_NUM,
|
||||
NETWORK: global.NETWORK,
|
||||
MaxNumBlockDB: MaxNumBlockDB,
|
||||
CurBlockNum: global.GetCurrentBlockNumByTime(),
|
||||
MaxAccID: global.DApps.Accounts.GetMaxAccount(),
|
||||
MaxDappsID: global.DApps.Smart.GetMaxNum(),
|
||||
CurTime: Date.now(),
|
||||
DELTA_CURRENT_TIME: global.DELTA_CURRENT_TIME,
|
||||
MIN_POWER_POW_TR: global.MIN_POWER_POW_TR,
|
||||
FIRST_TIME_BLOCK: global.FIRST_TIME_BLOCK,
|
||||
CONSENSUS_PERIOD_TIME: global.CONSENSUS_PERIOD_TIME,
|
||||
NEW_SIGN_TIME: global.NEW_SIGN_TIME,
|
||||
PRICE_DAO: global.PRICE_DAO(MaxNumBlockDB),
|
||||
};
|
||||
if (typeof Params === "object" && Params.Diagram == 1) {
|
||||
|
||||
Reference in New Issue
Block a user