forked from circlecloud/tera
		
	feat: separate Server and Client
Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
		@@ -1353,14 +1353,14 @@ export default class CConsensus extends CBlock {
 | 
				
			|||||||
        var BlockMining = this.GetBlock(msg.BlockNum);
 | 
					        var BlockMining = this.GetBlock(msg.BlockNum);
 | 
				
			||||||
        if (!BlockMining) {
 | 
					        if (!BlockMining) {
 | 
				
			||||||
            teraManager.SendToWebClient({
 | 
					            teraManager.SendToWebClient({
 | 
				
			||||||
                msg: msg,
 | 
					                BlockNum: msg.BlockNum,
 | 
				
			||||||
                error: '!BlockMining'
 | 
					                error: '!BlockMining'
 | 
				
			||||||
            })
 | 
					            })
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if (!BlockMining.StartMining || BlockMining.bSave) {
 | 
					        if (!BlockMining.StartMining || BlockMining.bSave) {
 | 
				
			||||||
            teraManager.SendToWebClient({
 | 
					            teraManager.SendToWebClient({
 | 
				
			||||||
                msg: msg,
 | 
					                BlockNum: msg.BlockNum,
 | 
				
			||||||
                error: `!BlockMining.StartMining ${BlockMining.StartMining} || BlockMining.bSave ${BlockMining.bSave}`
 | 
					                error: `!BlockMining.StartMining ${BlockMining.StartMining} || BlockMining.bSave ${BlockMining.bSave}`
 | 
				
			||||||
            })
 | 
					            })
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
@@ -1414,7 +1414,7 @@ export default class CConsensus extends CBlock {
 | 
				
			|||||||
                    Object.assign(webmsg, {
 | 
					                    Object.assign(webmsg, {
 | 
				
			||||||
                        HashCount,
 | 
					                        HashCount,
 | 
				
			||||||
                        Power,
 | 
					                        Power,
 | 
				
			||||||
                        Num: msg.NodeNum
 | 
					                        NodeNum: msg.NodeNum
 | 
				
			||||||
                    })
 | 
					                    })
 | 
				
			||||||
                    teraManager.SendToWebClient(webmsg)
 | 
					                    teraManager.SendToWebClient(webmsg)
 | 
				
			||||||
                }, 1)
 | 
					                }, 1)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -35,9 +35,9 @@ const WorkStructHeader2 = {};
 | 
				
			|||||||
const DEFAULT_DB_VERSION = 2;
 | 
					const DEFAULT_DB_VERSION = 2;
 | 
				
			||||||
import CCode from '../code'
 | 
					import CCode from '../code'
 | 
				
			||||||
export default class CDB extends CCode {
 | 
					export default class CDB extends CCode {
 | 
				
			||||||
    DBHeader100
 | 
					    DBHeader100: DBRow
 | 
				
			||||||
    BlockNumDB
 | 
					    BlockNumDB: number
 | 
				
			||||||
    BlockNumDBMin
 | 
					    BlockNumDBMin: number
 | 
				
			||||||
    CurrentBlockNum
 | 
					    CurrentBlockNum
 | 
				
			||||||
    CheckOnStartComplete
 | 
					    CheckOnStartComplete
 | 
				
			||||||
    UseTruncateBlockDB
 | 
					    UseTruncateBlockDB
 | 
				
			||||||
@@ -501,8 +501,7 @@ export default class CDB extends CCode {
 | 
				
			|||||||
        bytesRead = fs.readSync(FileItem.fd, BufRead, 0, BufRead.length, Position)
 | 
					        bytesRead = fs.readSync(FileItem.fd, BufRead, 0, BufRead.length, Position)
 | 
				
			||||||
        Block = global.BufLib.GetObjectFromBuffer(BufRead, FORMAT_STREAM_HEADER, WorkStructStreamHeader)
 | 
					        Block = global.BufLib.GetObjectFromBuffer(BufRead, FORMAT_STREAM_HEADER, WorkStructStreamHeader)
 | 
				
			||||||
        if (Block.VersionDB !== global.DB_VERSION) {
 | 
					        if (Block.VersionDB !== global.DB_VERSION) {
 | 
				
			||||||
            throw ("ERROR Block.VersionDB");
 | 
					            throw (`ERROR Position: ${Position} Block.VersionDB: ${Block.VersionDB}`);
 | 
				
			||||||
            return undefined;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        Block.FilePos = Position
 | 
					        Block.FilePos = Position
 | 
				
			||||||
        Block.VersionDB = global.DB_VERSION
 | 
					        Block.VersionDB = global.DB_VERSION
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -381,11 +381,12 @@ global.CreateEval = CreateEval;
 | 
				
			|||||||
var CPU_Count = os.cpus().length;
 | 
					var CPU_Count = os.cpus().length;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function GetCountMiningCPU() {
 | 
					function GetCountMiningCPU() {
 | 
				
			||||||
    if (global.COUNT_MINING_CPU)
 | 
					    return global.COUNT_MINING_CPU
 | 
				
			||||||
        return global.COUNT_MINING_CPU;
 | 
					    // if (global.COUNT_MINING_CPU)
 | 
				
			||||||
    else {
 | 
					    //     return global.COUNT_MINING_CPU;
 | 
				
			||||||
        return CPU_Count - 1;
 | 
					    // else {
 | 
				
			||||||
    }
 | 
					    //     return CPU_Count - 1;
 | 
				
			||||||
 | 
					    // }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
global.GetCountMiningCPU = GetCountMiningCPU;
 | 
					global.GetCountMiningCPU = GetCountMiningCPU;
 | 
				
			||||||
var AddTrMap: any = {};
 | 
					var AddTrMap: any = {};
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								src/global.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								src/global.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -238,7 +238,7 @@ declare global {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            //#region main-process.ts:375
 | 
					            //#region main-process.ts:375
 | 
				
			||||||
            MiningPaused: number;
 | 
					            MiningPaused: number;
 | 
				
			||||||
            ArrMiningWrk: TeraChildProcess[];
 | 
					            ArrMiningWrk: any[];
 | 
				
			||||||
            //#endregion
 | 
					            //#endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //#region library.ts:118
 | 
					            //#region library.ts:118
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -396,129 +396,141 @@ if (global.ADDRLIST_MODE) {
 | 
				
			|||||||
    return;
 | 
					    return;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
function AllAlive() {
 | 
					function AllAlive() {
 | 
				
			||||||
    for (var i = 0; i < global.ArrMiningWrk.length; i++) {
 | 
					 | 
				
			||||||
        global.ArrMiningWrk[i].send({ cmd: "Alive", DELTA_CURRENT_TIME: global.DELTA_CURRENT_TIME });
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    teraManager.SendToClient({ cmd: "Alive", DELTA_CURRENT_TIME: global.DELTA_CURRENT_TIME })
 | 
					    teraManager.SendToClient({ cmd: "Alive", DELTA_CURRENT_TIME: global.DELTA_CURRENT_TIME })
 | 
				
			||||||
 | 
					    // for (var i = 0; i < global.ArrMiningWrk.length; i++) {
 | 
				
			||||||
 | 
					    //     global.ArrMiningWrk[i].send({ cmd: "Alive", DELTA_CURRENT_TIME: global.DELTA_CURRENT_TIME });
 | 
				
			||||||
 | 
					    // }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function ClearArrMining() {
 | 
					// function ClearArrMining() {
 | 
				
			||||||
    for (var i = 0; i < global.ArrMiningWrk.length; i++) {
 | 
					//     for (var i = 0; i < global.ArrMiningWrk.length; i++) {
 | 
				
			||||||
        global.ArrMiningWrk[i].send({ cmd: "Exit" });
 | 
					//         global.ArrMiningWrk[i].send({ cmd: "Exit" });
 | 
				
			||||||
    }
 | 
					//     }
 | 
				
			||||||
    global.ArrMiningWrk = [];
 | 
					//     global.ArrMiningWrk = [];
 | 
				
			||||||
};
 | 
					// };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function RunStopPOWProcess(Mode) {
 | 
					function RunStopPOWProcess(Mode) {
 | 
				
			||||||
    if (!global.GetCountMiningCPU() || global.GetCountMiningCPU() <= 0)
 | 
					 | 
				
			||||||
        return;
 | 
					 | 
				
			||||||
    if (!StartCheckMining) {
 | 
					    if (!StartCheckMining) {
 | 
				
			||||||
        StartCheckMining = 1;
 | 
					        StartCheckMining = 1;
 | 
				
			||||||
 | 
					        global.COUNT_MINING_CPU = 0
 | 
				
			||||||
        setInterval(RunStopPOWProcess, global.CHECK_RUN_MINING);
 | 
					        setInterval(RunStopPOWProcess, global.CHECK_RUN_MINING);
 | 
				
			||||||
        setInterval(AllAlive, 1000);
 | 
					        setInterval(AllAlive, 1000);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (global.NeedRestart)
 | 
					    if (global.ArrMiningWrk.length != Object.keys(teraManager.pows).length) {
 | 
				
			||||||
        return;
 | 
					        global.ArrMiningWrk = Object.keys(teraManager.pows)
 | 
				
			||||||
    if (global.USE_MINING && global.MINING_START_TIME && global.MINING_PERIOD_TIME) {
 | 
					        global.COUNT_MINING_CPU = global.ArrMiningWrk.length
 | 
				
			||||||
        var Time = global.GetCurrentTime();
 | 
					 | 
				
			||||||
        var TimeCur = Time.getUTCHours() * 3600 + Time.getUTCMinutes() * 60 + Time.getUTCSeconds();
 | 
					 | 
				
			||||||
        var StartTime = global.GetSecFromStrTime(global.MINING_START_TIME);
 | 
					 | 
				
			||||||
        var RunPeriod = global.GetSecFromStrTime(global.MINING_PERIOD_TIME);
 | 
					 | 
				
			||||||
        var TimeEnd = StartTime + RunPeriod;
 | 
					 | 
				
			||||||
        global.MiningPaused = 1;
 | 
					 | 
				
			||||||
        if (TimeCur >= StartTime && TimeCur <= TimeEnd) {
 | 
					 | 
				
			||||||
            global.MiningPaused = 0;
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            StartTime -= 24 * 3600;
 | 
					 | 
				
			||||||
            TimeEnd -= 24 * 3600;
 | 
					 | 
				
			||||||
            if (TimeCur >= StartTime && TimeCur <= TimeEnd) {
 | 
					 | 
				
			||||||
                global.MiningPaused = 0;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        if (global.ArrMiningWrk.length && global.MiningPaused) {
 | 
					 | 
				
			||||||
            global.ToLog("------------ MINING MUST STOP ON TIME");
 | 
					 | 
				
			||||||
            ClearArrMining();
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
        } else
 | 
					 | 
				
			||||||
            if (!global.ArrMiningWrk.length && !global.MiningPaused) {
 | 
					 | 
				
			||||||
                global.ToLog("*********** MINING MUST START ON TIME");
 | 
					 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
                return;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
        global.MiningPaused = 0;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    if (!global.USE_MINING || Mode === "STOP") {
 | 
					 | 
				
			||||||
        ClearArrMining();
 | 
					 | 
				
			||||||
        return;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    if (global.USE_MINING && global.ArrMiningWrk.length)
 | 
					 | 
				
			||||||
        return;
 | 
					 | 
				
			||||||
    if (global.SERVER.LoadHistoryMode)
 | 
					 | 
				
			||||||
        return;
 | 
					 | 
				
			||||||
    if (global.GENERATE_BLOCK_ACCOUNT < 8)
 | 
					 | 
				
			||||||
        return;
 | 
					 | 
				
			||||||
    var PathMiner = global.GetCodePath("../miner.js");
 | 
					 | 
				
			||||||
    if (!fs.existsSync(PathMiner))
 | 
					 | 
				
			||||||
        PathMiner = "./process/pow-process.js";
 | 
					 | 
				
			||||||
    if (global.ArrMiningWrk.length >= global.GetCountMiningCPU())
 | 
					 | 
				
			||||||
        return;
 | 
					 | 
				
			||||||
    if (global.GrayConnect()) {
 | 
					 | 
				
			||||||
        global.ToLog("CANNOT START MINER IN NOT DIRECT IP MODE");
 | 
					 | 
				
			||||||
        return;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    var Memory;
 | 
					 | 
				
			||||||
    if (global.SIZE_MINING_MEMORY)
 | 
					 | 
				
			||||||
        Memory = global.SIZE_MINING_MEMORY;
 | 
					 | 
				
			||||||
    else {
 | 
					 | 
				
			||||||
        Memory = os.freemem() - (512 + global.GetCountMiningCPU() * 100) * 1024 * 1014;
 | 
					 | 
				
			||||||
        if (Memory < 0) {
 | 
					 | 
				
			||||||
            global.ToLog("Not enough memory to start processes.");
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    ProcessMemorySize = Math.trunc(Memory / global.GetCountMiningCPU());
 | 
					 | 
				
			||||||
    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);
 | 
					 | 
				
			||||||
        global.ArrMiningWrk.push(Worker);
 | 
					 | 
				
			||||||
        Worker.Num = global.ArrMiningWrk.length;
 | 
					 | 
				
			||||||
        Worker.on('message', function(msg) {
 | 
					 | 
				
			||||||
            if (msg.cmd === "log") {
 | 
					 | 
				
			||||||
                global.ToLog(msg.message);
 | 
					 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
                if (msg.cmd === "online") {
 | 
					 | 
				
			||||||
                    Worker.bOnline = true;
 | 
					 | 
				
			||||||
                    global.ToLog("RUNNING PROCESS:" + Worker.Num + ":" + msg.message);
 | 
					 | 
				
			||||||
                } else {
 | 
					 | 
				
			||||||
                    if (msg.cmd === "POW") {
 | 
					 | 
				
			||||||
                        global.SERVER.MiningProcess(msg);
 | 
					 | 
				
			||||||
                    } else {
 | 
					 | 
				
			||||||
                        if (msg.cmd === "HASHRATE") {
 | 
					 | 
				
			||||||
                            global.ADD_HASH_RATE(msg.CountNonce);
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
        Worker.on('error', function(err) {
 | 
					 | 
				
			||||||
            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 < global.ArrMiningWrk.length; i++) {
 | 
					 | 
				
			||||||
                if (global.ArrMiningWrk[i].pid === Worker.pid) {
 | 
					 | 
				
			||||||
                    global.ToLog("Delete wrk from arr - pid:" + Worker.pid);
 | 
					 | 
				
			||||||
                    global.ArrMiningWrk.splice(i, 1);
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    // if (!global.GetCountMiningCPU() || global.GetCountMiningCPU() <= 0)
 | 
				
			||||||
 | 
					    //     return;
 | 
				
			||||||
 | 
					    // if (!StartCheckMining) {
 | 
				
			||||||
 | 
					    //     StartCheckMining = 1;
 | 
				
			||||||
 | 
					    //     setInterval(RunStopPOWProcess, global.CHECK_RUN_MINING);
 | 
				
			||||||
 | 
					    //     setInterval(AllAlive, 1000);
 | 
				
			||||||
 | 
					    // }
 | 
				
			||||||
 | 
					    // if (global.NeedRestart)
 | 
				
			||||||
 | 
					    //     return;
 | 
				
			||||||
 | 
					    // if (global.USE_MINING && global.MINING_START_TIME && global.MINING_PERIOD_TIME) {
 | 
				
			||||||
 | 
					    //     var Time = global.GetCurrentTime();
 | 
				
			||||||
 | 
					    //     var TimeCur = Time.getUTCHours() * 3600 + Time.getUTCMinutes() * 60 + Time.getUTCSeconds();
 | 
				
			||||||
 | 
					    //     var StartTime = global.GetSecFromStrTime(global.MINING_START_TIME);
 | 
				
			||||||
 | 
					    //     var RunPeriod = global.GetSecFromStrTime(global.MINING_PERIOD_TIME);
 | 
				
			||||||
 | 
					    //     var TimeEnd = StartTime + RunPeriod;
 | 
				
			||||||
 | 
					    //     global.MiningPaused = 1;
 | 
				
			||||||
 | 
					    //     if (TimeCur >= StartTime && TimeCur <= TimeEnd) {
 | 
				
			||||||
 | 
					    //         global.MiningPaused = 0;
 | 
				
			||||||
 | 
					    //     } else {
 | 
				
			||||||
 | 
					    //         StartTime -= 24 * 3600;
 | 
				
			||||||
 | 
					    //         TimeEnd -= 24 * 3600;
 | 
				
			||||||
 | 
					    //         if (TimeCur >= StartTime && TimeCur <= TimeEnd) {
 | 
				
			||||||
 | 
					    //             global.MiningPaused = 0;
 | 
				
			||||||
 | 
					    //         }
 | 
				
			||||||
 | 
					    //     }
 | 
				
			||||||
 | 
					    //     if (global.ArrMiningWrk.length && global.MiningPaused) {
 | 
				
			||||||
 | 
					    //         global.ToLog("------------ MINING MUST STOP ON TIME");
 | 
				
			||||||
 | 
					    //         ClearArrMining();
 | 
				
			||||||
 | 
					    //         return;
 | 
				
			||||||
 | 
					    //     } else
 | 
				
			||||||
 | 
					    //         if (!global.ArrMiningWrk.length && !global.MiningPaused) {
 | 
				
			||||||
 | 
					    //             global.ToLog("*********** MINING MUST START ON TIME");
 | 
				
			||||||
 | 
					    //         } else {
 | 
				
			||||||
 | 
					    //             return;
 | 
				
			||||||
 | 
					    //         }
 | 
				
			||||||
 | 
					    // } else {
 | 
				
			||||||
 | 
					    //     global.MiningPaused = 0;
 | 
				
			||||||
 | 
					    // }
 | 
				
			||||||
 | 
					    // if (!global.USE_MINING || Mode === "STOP") {
 | 
				
			||||||
 | 
					    //     ClearArrMining();
 | 
				
			||||||
 | 
					    //     return;
 | 
				
			||||||
 | 
					    // }
 | 
				
			||||||
 | 
					    // if (global.USE_MINING && global.ArrMiningWrk.length)
 | 
				
			||||||
 | 
					    //     return;
 | 
				
			||||||
 | 
					    // if (global.SERVER.LoadHistoryMode)
 | 
				
			||||||
 | 
					    //     return;
 | 
				
			||||||
 | 
					    // if (global.GENERATE_BLOCK_ACCOUNT < 8)
 | 
				
			||||||
 | 
					    //     return;
 | 
				
			||||||
 | 
					    // var PathMiner = global.GetCodePath("../miner.js");
 | 
				
			||||||
 | 
					    // if (!fs.existsSync(PathMiner))
 | 
				
			||||||
 | 
					    //     PathMiner = "./process/pow-process.js";
 | 
				
			||||||
 | 
					    // if (global.ArrMiningWrk.length >= global.GetCountMiningCPU())
 | 
				
			||||||
 | 
					    //     return;
 | 
				
			||||||
 | 
					    // if (global.GrayConnect()) {
 | 
				
			||||||
 | 
					    //     global.ToLog("CANNOT START MINER IN NOT DIRECT IP MODE");
 | 
				
			||||||
 | 
					    //     return;
 | 
				
			||||||
 | 
					    // }
 | 
				
			||||||
 | 
					    // var Memory;
 | 
				
			||||||
 | 
					    // if (global.SIZE_MINING_MEMORY)
 | 
				
			||||||
 | 
					    //     Memory = global.SIZE_MINING_MEMORY;
 | 
				
			||||||
 | 
					    // else {
 | 
				
			||||||
 | 
					    //     Memory = os.freemem() - (512 + global.GetCountMiningCPU() * 100) * 1024 * 1014;
 | 
				
			||||||
 | 
					    //     if (Memory < 0) {
 | 
				
			||||||
 | 
					    //         global.ToLog("Not enough memory to start processes.");
 | 
				
			||||||
 | 
					    //         return;
 | 
				
			||||||
 | 
					    //     }
 | 
				
			||||||
 | 
					    // }
 | 
				
			||||||
 | 
					    // ProcessMemorySize = Math.trunc(Memory / global.GetCountMiningCPU());
 | 
				
			||||||
 | 
					    // 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);
 | 
				
			||||||
 | 
					    //     global.ArrMiningWrk.push(Worker);
 | 
				
			||||||
 | 
					    //     Worker.Num = global.ArrMiningWrk.length;
 | 
				
			||||||
 | 
					    //     Worker.on('message', function(msg) {
 | 
				
			||||||
 | 
					    //         if (msg.cmd === "log") {
 | 
				
			||||||
 | 
					    //             global.ToLog(msg.message);
 | 
				
			||||||
 | 
					    //         } else {
 | 
				
			||||||
 | 
					    //             if (msg.cmd === "online") {
 | 
				
			||||||
 | 
					    //                 Worker.bOnline = true;
 | 
				
			||||||
 | 
					    //                 global.ToLog("RUNNING PROCESS:" + Worker.Num + ":" + msg.message);
 | 
				
			||||||
 | 
					    //             } else {
 | 
				
			||||||
 | 
					    //                 if (msg.cmd === "POW") {
 | 
				
			||||||
 | 
					    //                     global.SERVER.MiningProcess(msg);
 | 
				
			||||||
 | 
					    //                 } else {
 | 
				
			||||||
 | 
					    //                     if (msg.cmd === "HASHRATE") {
 | 
				
			||||||
 | 
					    //                         global.ADD_HASH_RATE(msg.CountNonce);
 | 
				
			||||||
 | 
					    //                     }
 | 
				
			||||||
 | 
					    //                 }
 | 
				
			||||||
 | 
					    //             }
 | 
				
			||||||
 | 
					    //         }
 | 
				
			||||||
 | 
					    //     });
 | 
				
			||||||
 | 
					    //     Worker.on('error', function(err) {
 | 
				
			||||||
 | 
					    //         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 < global.ArrMiningWrk.length; i++) {
 | 
				
			||||||
 | 
					    //             if (global.ArrMiningWrk[i].pid === Worker.pid) {
 | 
				
			||||||
 | 
					    //                 global.ToLog("Delete wrk from arr - pid:" + Worker.pid);
 | 
				
			||||||
 | 
					    //                 global.ArrMiningWrk.splice(i, 1);
 | 
				
			||||||
 | 
					    //             }
 | 
				
			||||||
 | 
					    //         }
 | 
				
			||||||
 | 
					    //     });
 | 
				
			||||||
 | 
					    // }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function SetCalcPOW(Block, cmd) {
 | 
					function SetCalcPOW(Block, cmd) {
 | 
				
			||||||
 | 
					    if (!global.USE_MINING)
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
    teraManager.SendToClient({
 | 
					    teraManager.SendToClient({
 | 
				
			||||||
        cmd: cmd,
 | 
					        cmd: cmd,
 | 
				
			||||||
        BlockNum: Block.BlockNum,
 | 
					        BlockNum: Block.BlockNum,
 | 
				
			||||||
@@ -530,36 +542,32 @@ function SetCalcPOW(Block, cmd) {
 | 
				
			|||||||
        Time: Date.now(),
 | 
					        Time: Date.now(),
 | 
				
			||||||
        RunPeriod: global.POWRunPeriod,
 | 
					        RunPeriod: global.POWRunPeriod,
 | 
				
			||||||
        RunCount: global.POW_RUN_COUNT,
 | 
					        RunCount: global.POW_RUN_COUNT,
 | 
				
			||||||
        Percent: global.POW_MAX_PERCENT,
 | 
					        Percent: global.POW_MAX_PERCENT
 | 
				
			||||||
        CountMiningCPU: global.GetCountMiningCPU(),
 | 
					 | 
				
			||||||
        ProcessMemorySize: ProcessMemorySize,
 | 
					 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
    if (!global.USE_MINING)
 | 
					    // if (global.ArrMiningWrk.length !== global.GetCountMiningCPU())
 | 
				
			||||||
        return;
 | 
					    //     return;
 | 
				
			||||||
    if (global.ArrMiningWrk.length !== global.GetCountMiningCPU())
 | 
					    // BlockMining = Block;
 | 
				
			||||||
        return;
 | 
					    // for (var i = 0; i < global.ArrMiningWrk.length; i++) {
 | 
				
			||||||
    BlockMining = Block;
 | 
					    //     var CurWorker = global.ArrMiningWrk[i];
 | 
				
			||||||
    for (var i = 0; i < global.ArrMiningWrk.length; i++) {
 | 
					    //     if (!CurWorker.bOnline)
 | 
				
			||||||
        var CurWorker = global.ArrMiningWrk[i];
 | 
					    //         continue;
 | 
				
			||||||
        if (!CurWorker.bOnline)
 | 
					    //     CurWorker.send({
 | 
				
			||||||
            continue;
 | 
					    //         cmd: cmd,
 | 
				
			||||||
        CurWorker.send({
 | 
					    //         BlockNum: Block.BlockNum,
 | 
				
			||||||
            cmd: cmd,
 | 
					    //         Account: global.GENERATE_BLOCK_ACCOUNT,
 | 
				
			||||||
            BlockNum: Block.BlockNum,
 | 
					    //         MinerID: global.GENERATE_BLOCK_ACCOUNT,
 | 
				
			||||||
            Account: global.GENERATE_BLOCK_ACCOUNT,
 | 
					    //         SeqHash: Block.SeqHash,
 | 
				
			||||||
            MinerID: global.GENERATE_BLOCK_ACCOUNT,
 | 
					    //         Hash: Block.Hash,
 | 
				
			||||||
            SeqHash: Block.SeqHash,
 | 
					    //         PrevHash: Block.PrevHash,
 | 
				
			||||||
            Hash: Block.Hash,
 | 
					    //         Time: Date.now(),
 | 
				
			||||||
            PrevHash: Block.PrevHash,
 | 
					    //         Num: CurWorker.Num,
 | 
				
			||||||
            Time: Date.now(),
 | 
					    //         RunPeriod: global.POWRunPeriod,
 | 
				
			||||||
            Num: CurWorker.Num,
 | 
					    //         RunCount: global.POW_RUN_COUNT,
 | 
				
			||||||
            RunPeriod: global.POWRunPeriod,
 | 
					    //         Percent: global.POW_MAX_PERCENT,
 | 
				
			||||||
            RunCount: global.POW_RUN_COUNT,
 | 
					    //         CountMiningCPU: global.GetCountMiningCPU(),
 | 
				
			||||||
            Percent: global.POW_MAX_PERCENT,
 | 
					    //         ProcessMemorySize: ProcessMemorySize,
 | 
				
			||||||
            CountMiningCPU: global.GetCountMiningCPU(),
 | 
					    //     });
 | 
				
			||||||
            ProcessMemorySize: ProcessMemorySize,
 | 
					    // }
 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
global.SetCalcPOW = SetCalcPOW;
 | 
					global.SetCalcPOW = SetCalcPOW;
 | 
				
			||||||
global.RunStopPOWProcess = RunStopPOWProcess;
 | 
					global.RunStopPOWProcess = RunStopPOWProcess;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -42,23 +42,6 @@ PROCESS.on('message', function(msg) {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { powClient } from '../rpc/client'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
powClient.on('message', (msg) => {
 | 
					 | 
				
			||||||
    LastAlive = Date.now();
 | 
					 | 
				
			||||||
    switch (msg.cmd) {
 | 
					 | 
				
			||||||
        case "FastCalcBlock":
 | 
					 | 
				
			||||||
            FastCalcBlock(msg);
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        case "Alive":
 | 
					 | 
				
			||||||
            global.DELTA_CURRENT_TIME = msg.DELTA_CURRENT_TIME;
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        case "Exit":
 | 
					 | 
				
			||||||
            PROCESS.exit(0);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
})
 | 
					 | 
				
			||||||
powClient.connect()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function FastCalcBlock(msg) {
 | 
					function FastCalcBlock(msg) {
 | 
				
			||||||
    var FastBlock = msg;
 | 
					    var FastBlock = msg;
 | 
				
			||||||
    StartHashPump(FastBlock);
 | 
					    StartHashPump(FastBlock);
 | 
				
			||||||
@@ -75,7 +58,7 @@ function FastCalcBlock(msg) {
 | 
				
			|||||||
                Hash: FastBlock.Hash,
 | 
					                Hash: FastBlock.Hash,
 | 
				
			||||||
                PowHash: FastBlock.PowHash,
 | 
					                PowHash: FastBlock.PowHash,
 | 
				
			||||||
                AddrHash: FastBlock.AddrHash,
 | 
					                AddrHash: FastBlock.AddrHash,
 | 
				
			||||||
                Num: FastBlock.NodeNum
 | 
					                NodeNum: FastBlock.NodeNum
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    } catch (e) {
 | 
					    } catch (e) {
 | 
				
			||||||
@@ -129,8 +112,8 @@ function PumpHash() {
 | 
				
			|||||||
            EndTime = CurTime;
 | 
					            EndTime = CurTime;
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        global.BlockPump.LastNonce = global.BlockPump.LastNonce + global.BlockPump.Num * 200000
 | 
					        global.BlockPump.LastNonce = global.BlockPump.LastNonce + global.BlockPump.NodeNum * 200000
 | 
				
			||||||
        global.BlockPump.LastNonce0 = global.BlockPump.LastNonce0 + global.BlockPump.Num * 200000
 | 
					        global.BlockPump.LastNonce0 = global.BlockPump.LastNonce0 + global.BlockPump.NodeNum * 200000
 | 
				
			||||||
        CreatePOWVersionX(global.BlockPump, 1);
 | 
					        CreatePOWVersionX(global.BlockPump, 1);
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        var Delta = CurTime - EndTime;
 | 
					        var Delta = CurTime - EndTime;
 | 
				
			||||||
@@ -140,3 +123,24 @@ function PumpHash() {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import { powClient } from '../rpc/client'
 | 
				
			||||||
 | 
					powClient.on('disconnect', (error) => {
 | 
				
			||||||
 | 
					    console.log(`Client disconnect Error: ${error}...`)
 | 
				
			||||||
 | 
					    clearInterval(idIntervalPump)
 | 
				
			||||||
 | 
					    idIntervalPump = undefined
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					powClient.on('message', (msg) => {
 | 
				
			||||||
 | 
					    LastAlive = Date.now();
 | 
				
			||||||
 | 
					    switch (msg.cmd) {
 | 
				
			||||||
 | 
					        case "FastCalcBlock":
 | 
				
			||||||
 | 
					            FastCalcBlock(msg);
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        case "Alive":
 | 
				
			||||||
 | 
					            global.DELTA_CURRENT_TIME = msg.DELTA_CURRENT_TIME;
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        case "Exit":
 | 
				
			||||||
 | 
					            PROCESS.exit(0);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					powClient.connect()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,10 +14,6 @@ powClient.on('connect', () => {
 | 
				
			|||||||
    powClient.send({ cmd: "online", message: "OK" })
 | 
					    powClient.send({ cmd: "online", message: "OK" })
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
powClient.on('disconnect', (error) => {
 | 
					 | 
				
			||||||
    console.log(`Client disconnect Error: ${error}...`)
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function SendToWebClient(msg: any) {
 | 
					function SendToWebClient(msg: any) {
 | 
				
			||||||
    powClient.emit('web', msg)
 | 
					    powClient.emit('web', msg)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
let thread = parseInt(process.env.TERA_THREAD) || 1;
 | 
					let thread = parseInt(process.env.TERA_THREAD) || 1;
 | 
				
			||||||
let Memory = thread * 4 * 1024 * 1024 * 1024
 | 
					let threadMemory = parseInt(process.env.TERA_THREAD_MEMORY) || 4;
 | 
				
			||||||
 | 
					let Memory = thread * threadMemory * 1024 * 1024 * 1024
 | 
				
			||||||
let ProcessMemorySize = Math.trunc(Memory / thread);
 | 
					let ProcessMemorySize = Math.trunc(Memory / thread);
 | 
				
			||||||
import { fork } from 'child_process'
 | 
					import { fork } from 'child_process'
 | 
				
			||||||
import './core/constant'
 | 
					import './core/constant'
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user