Sat Jul 13 09:15:47 CST 2019 Source Update...

This commit is contained in:
2019-07-13 09:15:47 +08:00
parent 750a54c15f
commit b415da0a52
21 changed files with 1515 additions and 3682 deletions

View File

@@ -8,49 +8,37 @@
* Telegram: https://t.me/terafoundation
*/
global.PROCESS_NAME = "POW", global.POWPROCESS = 1, require("../core/library"), require("../core/crypto-library"), require("../core/terahashmining");
global.PROCESS_NAME = "POW";
global.POWPROCESS = 1;
require("../core/library");
require("../core/crypto-library");
require("../core/terahashmining");
var PROCESS = process;
process.send && !global.DEBUGPROCESS ? process.send({cmd:"online", message:"OK"}) : PROCESS = global.DEBUGPROCESS;
if(process.send && !global.DEBUGPROCESS)
{
process.send({cmd:"online", message:"OK"});
}
else
{
PROCESS = global.DEBUGPROCESS;
}
var LastAlive = Date.now();
setInterval(CheckAlive, 1e3);
var idInterval = void 0, Block = {};
function CheckAlive()
setInterval(CheckAlive, 1000);
var idInterval = undefined;
var Block = {};
PROCESS.on('message', function (msg)
{
if(!global.NOALIVE)
LastAlive = Date.now();
if(msg.cmd === "FastCalcBlock")
{
var e = Date.now() - LastAlive;
Math.abs(e) > CHECK_STOP_CHILD_PROCESS && PROCESS.exit(0);
}
};
function CalcPOWHash()
{
if(Block.SeqHash)
{
if(new Date - Block.Time > Block.Period)
return clearInterval(idInterval), void (idInterval = void 0);
var FastBlock = msg;
StartHashPump(FastBlock);
FastBlock.RunCount = 0;
try
{
CreatePOWVersionX(Block) && process.send({cmd:"POW", BlockNum:Block.BlockNum, SeqHash:Block.SeqHash, Hash:Block.Hash, PowHash:Block.PowHash,
AddrHash:Block.AddrHash, Num:Block.Num});
}
catch(e)
{
ToError(e);
}
}
};
PROCESS.on("message", function (e)
{
if(LastAlive = Date.now(), "FastCalcBlock" === e.cmd)
{
var o = e;
StartHashPump(o), o.RunCount = 0;
try
{
CreatePOWVersionX(o) && process.send({cmd:"POW", BlockNum:o.BlockNum, SeqHash:o.SeqHash, Hash:o.Hash, PowHash:o.PowHash, AddrHash:o.AddrHash,
Num:o.Num});
if(CreatePOWVersionX(FastBlock))
process.send({cmd:"POW", BlockNum:FastBlock.BlockNum, SeqHash:FastBlock.SeqHash, Hash:FastBlock.Hash, PowHash:FastBlock.PowHash,
AddrHash:FastBlock.AddrHash, Num:FastBlock.Num});
}
catch(e)
{
@@ -58,40 +46,113 @@ PROCESS.on("message", function (e)
}
}
else
if("SetBlock" === e.cmd)
if(msg.cmd === "SetBlock")
{
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 = CONSENSUS_PERIOD_TIME * Block.Percent / 100, 0 < Block.Period && 0 < Block.RunPeriod && (CalcPOWHash(),
void 0 !== idInterval && clearInterval(idInterval), idInterval = setInterval(CalcPOWHash, Block.RunPeriod));
var StartNonce = 1000000 * (1 + msg.Num);
if(Block.HashCount)
{
process.send({cmd:"HASHRATE", CountNonce:Block.HashCount, Hash:Block.Hash});
}
Block.HashCount = 0;
Block = msg;
Block.Time = Date.now();
Block.LastNonce = StartNonce;
Block.Period = CONSENSUS_PERIOD_TIME * Block.Percent / 100;
if(Block.Period > 0 && Block.RunPeriod > 0)
{
CalcPOWHash();
if(idInterval !== undefined)
{
clearInterval(idInterval);
}
idInterval = setInterval(CalcPOWHash, Block.RunPeriod);
}
}
else
"Alive" === e.cmd || "Exit" === e.cmd && PROCESS.exit(0);
if(msg.cmd === "Alive")
{
}
else
if(msg.cmd === "Exit")
{
PROCESS.exit(0);
}
});
var idIntervalPump = global.BlockPump = void 0;
function StartHashPump(e)
function CheckAlive()
{
(!BlockPump || BlockPump.BlockNum < e.BlockNum || BlockPump.MinerID !== e.MinerID || BlockPump.Percent !== e.Percent) && (global.BlockPump = {BlockNum:e.BlockNum,
RunCount:e.RunCount, MinerID:e.MinerID, Percent:e.Percent, LastNonce:0}), idIntervalPump = idIntervalPump || setInterval(PumpHash,
global.POWRunPeriod);
if(global.NOALIVE)
return ;
var Delta = Date.now() - LastAlive;
if(Math.abs(Delta) > CHECK_STOP_CHILD_PROCESS)
{
PROCESS.exit(0);
return ;
}
};
var StartTime = 1, EndTime = 0;
function CalcPOWHash()
{
if(!Block.SeqHash)
return ;
if(new Date() - Block.Time > Block.Period)
{
clearInterval(idInterval);
idInterval = undefined;
return ;
}
try
{
if(CreatePOWVersionX(Block))
process.send({cmd:"POW", BlockNum:Block.BlockNum, SeqHash:Block.SeqHash, Hash:Block.Hash, PowHash:Block.PowHash, AddrHash:Block.AddrHash,
Num:Block.Num});
}
catch(e)
{
ToError(e);
}
};
global.BlockPump = undefined;
var idIntervalPump = undefined;
function StartHashPump(SetBlock)
{
if(!BlockPump || BlockPump.BlockNum < SetBlock.BlockNum || BlockPump.MinerID !== SetBlock.MinerID || BlockPump.Percent !== SetBlock.Percent)
{
global.BlockPump = {BlockNum:SetBlock.BlockNum, RunCount:SetBlock.RunCount, MinerID:SetBlock.MinerID, Percent:SetBlock.Percent,
LastNonce:0, };
}
if(!idIntervalPump)
{
idIntervalPump = setInterval(PumpHash, global.POWRunPeriod);
}
};
var StartTime = 1;
var EndTime = 0;
function PumpHash()
{
if(BlockPump)
if(!BlockPump)
return ;
var CurTime = Date.now();
if(StartTime > EndTime)
{
var e = Date.now();
if(EndTime < StartTime)
var Delta = CurTime - StartTime;
var PeriodPercent = 100 * Delta / CONSENSUS_PERIOD_TIME;
if(PeriodPercent >= BlockPump.Percent)
{
if(100 * (e - StartTime) / CONSENSUS_PERIOD_TIME >= BlockPump.Percent)
return void (EndTime = e);
CreatePOWVersionX(BlockPump, 1);
EndTime = CurTime;
return ;
}
else
CreatePOWVersionX(BlockPump, 1);
}
else
{
var Delta = CurTime - EndTime;
var PeriodPercent = 100 * Delta / CONSENSUS_PERIOD_TIME;
if(PeriodPercent > 100 - BlockPump.Percent)
{
100 * (e - EndTime) / CONSENSUS_PERIOD_TIME > 100 - BlockPump.Percent && (StartTime = e);
StartTime = CurTime;
}
}
};

View File

@@ -274,7 +274,8 @@ function GETREST(msg)
var Tree = GetRestMerkleTree(BlockNumRest, RestIndexArr);
if(CompareArr(Data.AccHash, Tree.Root) !== 0)
{
ToLog("Get bad rest acc hash: " + BlockNumRest + " = " + GetHexFromArr(Data.AccHash) + "/" + GetHexFromArr(Tree.Root), 2);
ToLog("Get bad rest acc hash: " + BlockNumRest + " = " + GetHexFromArr(Data.AccHash).substr(0, 8) + "/" + GetHexFromArr(Tree.Root).substr(0,
8), 2);
ArrRest = [];
nResult = 0;
}

View File

@@ -296,10 +296,15 @@ function RunListenServer()
bWasRun = 1;
});
};
var SiteFolder = GetNormalPathString("./SITE");
if(!fs.existsSync(SiteFolder))
if(global.HTTP_START_PAGE)
IndexName = global.HTTP_START_PAGE;
else
{
IndexName = "web-wallet.html";
var SiteFolder = GetNormalPathString("./SITE");
if(!fs.existsSync(SiteFolder))
{
IndexName = "web-wallet.html";
}
}
var LangPathMap = {};
LangPathMap["ru"] = 1;