1
0
forked from circlecloud/tera

fix: sync error

Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
2019-07-11 15:52:17 +08:00
parent 13607ba157
commit f8fcab7929
21 changed files with 195 additions and 142 deletions

View File

@@ -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);

View File

@@ -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);
}
}

View File

@@ -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;

View File

@@ -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);

View File

@@ -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) {