1
0
forked from circlecloud/tera

refactor: 0 error

Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
2019-07-10 15:59:04 +08:00
parent cbc0ed72c4
commit 4527e437fa
39 changed files with 1802 additions and 1695 deletions

View File

@@ -11,14 +11,19 @@
"use strict";
module.exports = class CRest extends require("./db/block-db")
{
LoadRestContext
BlockNumDB
BlockNumDBMin
UseTruncateBlockDB
ContextSendLoadToBegin
constructor(SetKeyPair, RunIP, RunPort, UseRNDHeader, bVirtual) {
super(SetKeyPair, RunIP, RunPort, UseRNDHeader, bVirtual)
}
CheckSyncRest() {
var BlockNumTime = GetCurrentBlockNumByTime();
var BlockNumTime = global.GetCurrentBlockNumByTime();
var Delta = BlockNumTime - this.BlockNumDB;
if (Delta > REST_START_COUNT + DELTA_BLOCK_ACCOUNT_HASH + 500) {
var BlockNumRest = GetCurrentRestNum(REST_START_COUNT + DELTA_BLOCK_ACCOUNT_HASH + 500);
if (Delta > global.REST_START_COUNT + global.DELTA_BLOCK_ACCOUNT_HASH + 500) {
var BlockNumRest = GetCurrentRestNum(global.REST_START_COUNT + global.DELTA_BLOCK_ACCOUNT_HASH + 500);
if (this.BlockNumDB >= this.BlockNumDBMin && this.BlockNumDB <= this.BlockNumDBMin + global.BLOCK_PROCESSING_LENGTH2) {
}
else
@@ -29,8 +34,8 @@ module.exports = class CRest extends require("./db/block-db")
return;
}
this.LoadRestContext = {
Mode: 0, BlockNum: BlockNumRest, BlockNumRest: BlockNumRest, WasDelta: Delta, BlockNumProof: BlockNumRest + DELTA_BLOCK_ACCOUNT_HASH,
CountProof: COUNT_BLOCKS_FOR_LOAD, StartTimeHistory: Date.now(), MaxTimeOut: 600 * 1000, LoopSyncRest: 1, SendGetHeaderCount: 0,
Mode: 0, BlockNum: BlockNumRest, BlockNumRest: BlockNumRest, WasDelta: Delta, BlockNumProof: BlockNumRest + global.DELTA_BLOCK_ACCOUNT_HASH,
CountProof: global.COUNT_BLOCKS_FOR_LOAD, StartTimeHistory: Date.now(), MaxTimeOut: 600 * 1000, LoopSyncRest: 1, SendGetHeaderCount: 0,
ReceiveHeaderCount: 0, ArrProof: [], MapSend: {}
}
for (var i = 0; i < this.NodesArr.length; i++) {
@@ -60,7 +65,7 @@ module.exports = class CRest extends require("./db/block-db")
Context.SendGetHeaderCount++
break;
}
if (Context.ReceiveHeaderCount >= COUNT_NODE_PROOF) {
if (Context.ReceiveHeaderCount >= global.COUNT_NODE_PROOF) {
Context.Mode = 2
global.ToLog("Next mode: " + Context.Mode + " Receive:" + Context.ReceiveHeaderCount + "/" + Context.SendGetHeaderCount, 2)
}
@@ -133,13 +138,13 @@ module.exports = class CRest extends require("./db/block-db")
F: function(Info) {
if (Context.TxProof)
return;
var Data = global.BufLib.GetObjectFromBuffer(Info.Data, FORMAT_BLOCK_TRANSFER, WRK_BLOCK_TRANSFER);
var Data = global.BufLib.GetObjectFromBuffer(Info.Data, global.FORMAT_BLOCK_TRANSFER, global.WRK_BLOCK_TRANSFER);
Info.Data = undefined
if (Data.BlockNum !== BlockProof.BlockNum || global.CompareArr(Data.TreeHash, BlockProof.TreeHash) !== 0) {
global.ToLog("Error get proof block from " + NodeName(Item.Node), 2)
return;
}
var TreeHash = CalcTreeHashFromArrBody(Data.BlockNum, Data.arrContent);
var TreeHash = global.CalcTreeHashFromArrBody(Data.BlockNum, Data.arrContent);
if (global.CompareArr(BlockProof.TreeHash, TreeHash) !== 0) {
global.ToLog("Error TreeHash in proof block from " + NodeName(Item.Node), 2)
return;
@@ -148,9 +153,9 @@ module.exports = class CRest extends require("./db/block-db")
var FindTx = undefined;
for (var n = 0; n < Data.arrContent.length; n++) {
var Body = Data.arrContent[n];
if (Body[0] === TYPE_TRANSACTION_ACC_HASH) {
if (Body[0] === global.TYPE_TRANSACTION_ACC_HASH) {
try {
FindTx = global.BufLib.GetObjectFromBuffer(Body, FORMAT_ACCOUNT_HASH3, {})
FindTx = global.BufLib.GetObjectFromBuffer(Body, global.FORMAT_ACCOUNT_HASH3, {})
}
catch (e) {
global.ToLog("Error parsing Body[" + n + "] block proof: " + e, 2)
@@ -167,16 +172,16 @@ module.exports = class CRest extends require("./db/block-db")
Context.AccTaskList = []
Context.AccTaskFinished = 0
var AccCount = FindTx.AccountMax + 1;
for (var n = 0; n < AccCount; n += MAX_ACCOUNTS_TRANSFER) {
var Task = { StartNum: n, Count: MAX_ACCOUNTS_TRANSFER, Time: 0, MapSend: {} };
for (var n = 0; n < AccCount; n += global.MAX_ACCOUNTS_TRANSFER) {
var Task = { StartNum: n, Count: global.MAX_ACCOUNTS_TRANSFER, Time: 0, MapSend: {} };
if (Task.StartNum + Task.Count > AccCount)
Task.Count = AccCount - Task.StartNum
Context.AccTaskList.push(Task)
}
Context.SmartTaskList = []
Context.SmartTaskFinished = 0
for (var n = 0; n < FindTx.SmartCount; n += MAX_SMARTS_TRANSFER) {
var Task = { StartNum: n, Count: MAX_SMARTS_TRANSFER, Time: 0, MapSend: {} };
for (var n = 0; n < FindTx.SmartCount; n += global.MAX_SMARTS_TRANSFER) {
var Task = { StartNum: n, Count: global.MAX_SMARTS_TRANSFER, Time: 0, MapSend: {} };
if (Task.StartNum + Task.Count > FindTx.SmartCount)
Task.Count = FindTx.SmartCount - Task.StartNum
Context.SmartTaskList.push(Task)
@@ -221,7 +226,7 @@ module.exports = class CRest extends require("./db/block-db")
global.ToLog("ERROR Version Result GETREST Num:" + Task.StartNum + " from " + NodeName(Info.Node), 2)
return;
}
if (CompareArrL(Data.ProofHash, Context.TxProof.AccHash) !== 0) {
if (global.CompareArrL(Data.ProofHash, Context.TxProof.AccHash) !== 0) {
global.ToLog("ERROR PROOF HASH Result GETREST Num:" + Task.StartNum + " Hash: " + global.GetHexFromArr(Data.ProofHash) + "/" + global.GetHexFromArr(Context.TxProof.AccHash) + " from " + NodeName(Info.Node),
2)
return;
@@ -230,8 +235,8 @@ module.exports = class CRest extends require("./db/block-db")
for (var i = 0; i < Data.Arr.length; i++) {
ArrM[i] = global.shaarr(Data.Arr[i])
}
var GetHash = CheckMerkleProof(Data.ProofArrL, ArrM, Data.ProofArrR);
if (CompareArrL(GetHash, Context.TxProof.AccHash) !== 0) {
var GetHash = global.CheckMerkleProof(Data.ProofArrL, ArrM, Data.ProofArrR);
if (global.CompareArrL(GetHash, Context.TxProof.AccHash) !== 0) {
global.ToLog("ERROR CALC PROOF HASH Result GETREST Num:" + Task.StartNum + " Hash: " + global.GetHexFromArr(GetHash) + "/" + global.GetHexFromArr(Context.TxProof.AccHash) + " from " + NodeName(Info.Node),
2)
return;
@@ -302,7 +307,7 @@ module.exports = class CRest extends require("./db/block-db")
if (ErrSmartNum > 0) {
var Str = "Error hash in smart num: " + ErrSmartNum;
global.ToLog(Str, 2)
var t = Math.trunc(ErrSmartNum / MAX_SMARTS_TRANSFER);
var t = Math.trunc(ErrSmartNum / global.MAX_SMARTS_TRANSFER);
var Task = Context.SmartTaskList[t];
if (!Task) {
global.ToLog("error task number: " + t)
@@ -444,7 +449,7 @@ function CheckHashSmarts(LastSumHash) {
Item.SumHash = [];
var Buf = global.BufLib.GetBufferFromObject(Item, global.DApps.Smart.FORMAT_ROW, 20000, WorkStruct);
var Hash = global.sha3(Buf);
var SumHash = sha3arr2(PrevItem.SumHash, Hash);
var SumHash = global.sha3arr2(PrevItem.SumHash, Hash);
if (global.CompareArr(SumHash, WasSumHash) !== 0)
return Num;
Item = PrevItem;