1
0
forked from circlecloud/tera

refactor: split pow cacl process

Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
MiaoWoo 2019-07-14 18:27:58 +08:00
parent 375134fdc3
commit a11f96e775
7 changed files with 43 additions and 24 deletions

View File

@ -1325,7 +1325,7 @@ export default class CConsensus extends CBlock {
return SumPow / Count;
}
CreatePOWNew(Block) {
CreateHashMinimal(Block, global.GENERATE_BLOCK_ACCOUNT)
global.CreateHashMinimal(Block, global.GENERATE_BLOCK_ACCOUNT)
this.AddToMaxPOW(Block, {
SeqHash: Block.SeqHash, AddrHash: Block.AddrHash, PrevHash: Block.PrevHash, TreeHash: Block.TreeHash,
})

View File

@ -170,8 +170,7 @@ export default class CBlock extends CRest {
if (StartBlockNum <= 0)
StartBlockNum = 15
global.ToLog("Current DeltaNum=" + DeltaNum + " StartBlockNum=" + StartBlockNum, 2)
}
else {
} else {
StartBlockNum = this.BlockNumDB
}
this.LoadHistoryMode = true

View File

@ -401,8 +401,7 @@ export default class CConnect extends CMessages {
var SignArr = this.GetSignCheckDeltaTime(Data.CheckDeltaTime);
if (global.CheckDevelopSign(SignArr, Data.CheckDeltaTime.Sign)) {
global.CHECK_DELTA_TIME = Data.CheckDeltaTime
}
else {
} else {
Node.NextConnectDelta = 60 * 1000
global.ToLog("Error Sign CheckDeltaTime Num=" + Data.CheckDeltaTime.Num + " from " + global.NodeInfo(Node))
this.AddCheckErrCount(Node, 10, "Error Sign CheckDeltaTime")
@ -475,12 +474,10 @@ export default class CConnect extends CMessages {
global.ToLog("Get new CodeVersion = " + CodeVersion.VersionNum + " HASH:" + global.GetHexFromArr(CodeVersion.Hash).substr(0, 20))
if (CodeVersion.VersionNum > global.CODE_VERSION.VersionNum && CodeVersion.VersionNum > global.START_LOAD_CODE.StartLoadVersionNum) {
this.StartLoadCode(Node, CodeVersion)
}
else {
} else {
global.CODE_VERSION = CodeVersion
}
}
else {
} else {
global.ToLog("Error Sign CodeVersion=" + CodeVersion.VersionNum + " from " + global.NodeInfo(Node) + " HASH:" + global.GetHexFromArr(CodeVersion.Hash).substr(0, 20))
global.ToLog(JSON.stringify(CodeVersion))
this.AddCheckErrCount(Node, 10, "Error Sign CodeVersion")

View File

@ -20,7 +20,6 @@ require('./crypto-library');
require('../HTML/JS/terahashlib.js');
var DELTA_NONCE = Math.pow(2, 40) * global.MINING_VERSION_NUM;
global.CreateHashMinimal = CreateHashMinimal;
global.CreatePOWVersionX = CreatePOWVersion3;
function CreateHashMinimal(Block, MinerID) {
if (Block.BlockNum < BLOCKNUM_ALGO2) {
@ -73,7 +72,7 @@ function InitVer3(Block) {
}
};
function CreatePOWVersion3(Block, bHashPump) {
let CreatePOWVersionX = function CreatePOWVersion3(Block, bHashPump?) {
if (!bWasInitVer3)
InitVer3(Block);
if (!bWasInitVerOK3)
@ -201,3 +200,7 @@ global.GetNonceHashArr = function(BlockNum, Miner, StartNonceRnd, CountNonce) {
}
return { ArrNonce: ArrNonce, ArrHash: ArrHash };
};
export {
CreatePOWVersionX
}

12
src/global.d.ts vendored
View File

@ -1,5 +1,6 @@
export { };
import { ChildProcess } from 'child_process'
import CSmartContract from './core/transaction-validator'
import CConsensus from './core/block-exchange'
import CTransport from './core/server'
@ -234,7 +235,7 @@ declare global {
//#region main-process.ts:375
MiningPaused: number;
ArrMiningWrk: any[];
ArrMiningWrk: TeraChildProcess[];
//#endregion
//#region library.ts:118
@ -614,7 +615,6 @@ declare global {
//#region terahashmining.ts
CreateHashMinimal: Function;
CreatePOWVersionX: Function;
GetNonceHashArr: Function;
//#endregion
@ -667,14 +667,20 @@ declare global {
interface Process {
RunRPC: Function;
}
}
interface TeraChildProcess extends ChildProcess {
Num: number;
bOnline: boolean
}
interface TeraProcess {
pid?: number;
Name: string;
idInterval: number | any;
idInterval1: number | any;
idInterval2: number | any;
LastAlive: number;
Worker: Worker;
Worker: TeraChildProcess;
Path: string;
OnMessage: Function;
PeriodAlive: number;

View File

@ -222,7 +222,7 @@ function StartAllProcess(bClose) {
var GlobalRunID = 0;
var GlobalRunMap = {};
function StartChildProcess(Item) {
function StartChildProcess(Item: TeraProcess) {
let ITEM = Item;
ITEM.idInterval = setInterval(function() {
var Delta0 = Date.now() - ITEM.LastAlive;
@ -670,8 +670,9 @@ function RunOnce() {
};
var glPortDebug = 49800;
function Fork(Path, ArrArgs?) {
const child_process = require('child_process');
import { fork } from 'child_process'
function Fork(Path, ArrArgs?): TeraChildProcess {
ArrArgs = ArrArgs || [];
if (global.LOCAL_RUN)
ArrArgs.push("LOCALRUN");
@ -690,8 +691,8 @@ function Fork(Path, ArrArgs?) {
ArrArgs.push("DEV_MODE");
glPortDebug++;
var execArgv = [];
var Worker = child_process.fork(Path, ArrArgs, { execArgv: execArgv });
return Worker;
var Worker = fork(Path, ArrArgs, { execArgv: execArgv });
return Worker as any;
};
global.SpeedSignLib = 0;
global.TestSignLib = TestSignLib;

View File

@ -12,10 +12,18 @@ global.PROCESS_NAME = "POW";
global.POWPROCESS = 1;
import "../core/library"
import "../core/crypto-library"
import "../core/terahashmining"
import { CreatePOWVersionX } from "../core/terahashmining"
var PROCESS = process;
if (process.send && !global.DEBUGPROCESS) {
process.send({ cmd: "online", message: "OK" });
global.ToLogClient = function(Str, StrKey, bFinal) {
process.send({
cmd: "ToLogClient",
Str: "" + Str,
StrKey: StrKey,
bFinal: bFinal
});
};
} else {
PROCESS = global.DEBUGPROCESS;
}
@ -30,7 +38,7 @@ PROCESS.on('message', function(msg) {
StartHashPump(FastBlock);
FastBlock.RunCount = 0;
try {
if (global.CreatePOWVersionX(FastBlock))
if (CreatePOWVersionX(FastBlock))
process.send({
cmd: "POW",
BlockNum: FastBlock.BlockNum,
@ -88,9 +96,14 @@ function CalcPOWHash() {
return;
}
try {
if (global.CreatePOWVersionX(Block))
if (CreatePOWVersionX(Block))
process.send({
cmd: "POW", BlockNum: Block.BlockNum, SeqHash: Block.SeqHash, Hash: Block.Hash, PowHash: Block.PowHash, AddrHash: Block.AddrHash,
cmd: "POW",
BlockNum: Block.BlockNum,
SeqHash: Block.SeqHash,
Hash: Block.Hash,
PowHash: Block.PowHash,
AddrHash: Block.AddrHash,
Num: Block.Num
});
} catch (e) {
@ -128,7 +141,7 @@ function PumpHash() {
EndTime = CurTime;
return;
}
global.CreatePOWVersionX(global.BlockPump, 1);
CreatePOWVersionX(global.BlockPump, 1);
} else {
var Delta = CurTime - EndTime;
var PeriodPercent = 100 * Delta / global.CONSENSUS_PERIOD_TIME;