1
0
forked from circlecloud/tera

feat: alpine 0.0.1 version complate

Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
2019-07-11 13:35:16 +08:00
parent 63536569cf
commit 13607ba157
38 changed files with 1376 additions and 1064 deletions

View File

@@ -9,13 +9,14 @@
*/
"use strict";
module.exports = class CRest extends require("./db/block-db")
{
import CDB from './db/block-db'
export default class CRest extends CDB {
LoadRestContext
BlockNumDB
BlockNumDBMin
UseTruncateBlockDB
ContextSendLoadToBegin
LoadHistoryContext
constructor(SetKeyPair, RunIP, RunPort, UseRNDHeader, bVirtual) {
super(SetKeyPair, RunIP, RunPort, UseRNDHeader, bVirtual)
}
@@ -47,6 +48,15 @@ module.exports = class CRest extends require("./db/block-db")
this.LoadRestContext = undefined
}
}
GetNextNode(task, keyid, checktime?, BlockNum?): any {
//defiend in block-loader.ts(CBlock)
}
DataFromF(Info, bSendFormat?): any {
//defiend in block-loader.ts(CBlock)
}
AddToBan(Node, Str) {
//defiend in server.ts(CTransport)
}
LoopSyncRest() {
let Context = this.LoadRestContext;
switch (Context.Mode) {
@@ -58,7 +68,7 @@ module.exports = class CRest extends require("./db/block-db")
continue;
}
Node.SendRestGetHeader = 1
global.ToLog("Send rest get headers from " + Context.BlockNumProof + " to " + NodeName(Node), 2)
global.ToLog("Send rest get headers from " + Context.BlockNumProof + " to " + global.NodeName(Node), 2)
this.SendF(Node, {
"Method": "GETBLOCKHEADER", "Data": { Foward: 1, BlockNum: Context.BlockNumProof, Hash: [] }, "Context": { F: this.RETBLOCKHEADER_REST.bind(this) },
})
@@ -96,7 +106,7 @@ module.exports = class CRest extends require("./db/block-db")
var Item = Context.ArrProof[i];
if (Item.SumPower !== MaxPow) {
var Str = "BAD SumPower: " + Item.SumPower + "/" + MaxPow;
global.ToLog(Str + " from: " + NodeName(Item.Node), 2)
global.ToLog(Str + " from: " + global.NodeName(Item.Node), 2)
}
else
if (Item.SumPower && Item.arr.length >= Context.CountProof) {
@@ -116,6 +126,7 @@ module.exports = class CRest extends require("./db/block-db")
this.BlockNumDBMin = Block.BlockNum
this.WriteBlockHeaderDB(Block)
this.UseTruncateBlockDB = undefined
global.ToLog("Start run TXPrepareLoadRest", 2)
global.TX_PROCESS.RunRPC("TXPrepareLoadRest", Block.BlockNum, function(Err, Params) {
Context.Mode++
global.ToLog("Next mode: " + Context.Mode, 2)
@@ -132,7 +143,7 @@ module.exports = class CRest extends require("./db/block-db")
let Item = Context.ArrProof[i];
if (Item.OK) {
SendCount++
global.ToLog("Send rest get block proof:" + BlockProof.BlockNum + " to " + NodeName(Item.Node), 2)
global.ToLog("Send rest get block proof:" + BlockProof.BlockNum + " to " + global.NodeName(Item.Node), 2)
this.SendF(Item.Node, {
"Method": "GETBLOCK", "Data": { BlockNum: BlockProof.BlockNum, TreeHash: BlockProof.TreeHash }, "Context": {
F: function(Info) {
@@ -141,15 +152,15 @@ module.exports = class CRest extends require("./db/block-db")
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)
global.ToLog("Error get proof block from " + global.NodeName(Item.Node), 2)
return;
}
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)
global.ToLog("Error TreeHash in proof block from " + global.NodeName(Item.Node), 2)
return;
}
global.ToLog("GET BLOCK proof from " + NodeName(Item.Node), 2)
global.ToLog("GET BLOCK proof from " + global.NodeName(Item.Node), 2)
var FindTx = undefined;
for (var n = 0; n < Data.arrContent.length; n++) {
var Body = Data.arrContent[n];
@@ -211,7 +222,7 @@ module.exports = class CRest extends require("./db/block-db")
if (Delta > 5 * 1000 && !Task.OK) {
var Ret = this.GetNextNode(Task, "", 1);
if (Ret.Result) {
global.ToLog("Send GETREST Num:" + Task.StartNum + "-" + Task.Count + " to " + NodeName(Ret.Node), 2)
global.ToLog("Send GETREST Num:" + Task.StartNum + "-" + Task.Count + " to " + global.NodeName(Ret.Node), 2)
var SELF = this;
this.SendF(Ret.Node, {
"Method": "GETREST", "Data": { BlockNum: Context.BlockNumRest, AccNum: Task.StartNum, Count: Task.Count, AccHash: Context.TxProof.AccHash },
@@ -223,11 +234,11 @@ module.exports = class CRest extends require("./db/block-db")
if (!Data.Result)
return;
if (Data.Version !== 1) {
global.ToLog("ERROR Version Result GETREST Num:" + Task.StartNum + " from " + NodeName(Info.Node), 2)
global.ToLog("ERROR Version Result GETREST Num:" + Task.StartNum + " from " + global.NodeName(Info.Node), 2)
return;
}
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),
global.ToLog("ERROR PROOF HASH Result GETREST Num:" + Task.StartNum + " Hash: " + global.GetHexFromArr(Data.ProofHash) + "/" + global.GetHexFromArr(Context.TxProof.AccHash) + " from " + global.NodeName(Info.Node),
2)
return;
}
@@ -237,11 +248,11 @@ module.exports = class CRest extends require("./db/block-db")
}
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),
global.ToLog("ERROR CALC PROOF HASH Result GETREST Num:" + Task.StartNum + " Hash: " + global.GetHexFromArr(GetHash) + "/" + global.GetHexFromArr(Context.TxProof.AccHash) + " from " + global.NodeName(Info.Node),
2)
return;
}
global.ToLog("OK Result GETREST Num:" + Task.StartNum + " arr=" + Data.Arr.length + " from " + NodeName(Info.Node), 2)
global.ToLog("OK Result GETREST Num:" + Task.StartNum + " arr=" + Data.Arr.length + " from " + global.NodeName(Info.Node), 2)
if (!global.TX_PROCESS || !global.TX_PROCESS.RunRPC) {
global.ToLog("ERROR global.TX_PROCESS")
return;
@@ -272,7 +283,7 @@ module.exports = class CRest extends require("./db/block-db")
if (Delta > 3 * 1000 && !Task.OK) {
var Ret = this.GetNextNode(Task, "", 1);
if (Ret.Result) {
global.ToLog("Send GETSMART Num:" + Task.StartNum + "-" + Task.Count + " to " + NodeName(Ret.Node), 2)
global.ToLog("Send GETSMART Num:" + Task.StartNum + "-" + Task.Count + " to " + global.NodeName(Ret.Node), 2)
var SELF = this;
this.SendF(Ret.Node, {
"Method": "GETSMART", "Data": { BlockNum: Context.BlockNumRest, SmartNum: Task.StartNum, Count: Task.Count },
@@ -283,7 +294,7 @@ module.exports = class CRest extends require("./db/block-db")
var Data = SELF.DataFromF(Info);
if (!Data.Result)
return;
global.ToLog("Result GETSMART Num:" + Task.StartNum + " arr=" + Data.Arr.length + " from " + NodeName(Info.Node), 2)
global.ToLog("Result GETSMART Num:" + Task.StartNum + " arr=" + Data.Arr.length + " from " + global.NodeName(Info.Node), 2)
Task.Node = Info.Node
if (!global.TX_PROCESS || !global.TX_PROCESS.RunRPC)
return;
@@ -358,6 +369,9 @@ module.exports = class CRest extends require("./db/block-db")
global.ToLog("Error state!")
break;
}
}
GetBlockArrFromBuffer_Load(BufRead, Info?): any {
}
RETBLOCKHEADER_REST(Info, CurTime) {
if (Info.Node.SendRestGetHeader === 2)
@@ -366,7 +380,7 @@ module.exports = class CRest extends require("./db/block-db")
var Context = this.LoadRestContext;
var BufRead = global.BufLib.GetReadBuffer(Info.Data);
var arr = this.GetBlockArrFromBuffer_Load(BufRead, Info);
global.ToLog("RETBLOCKHEADER_FOWARD SyncRest from " + NodeName(Info.Node) + " arr=" + arr.length, 2)
global.ToLog("RETBLOCKHEADER_FOWARD SyncRest from " + global.NodeName(Info.Node) + " arr=" + arr.length, 2)
Context.ReceiveHeaderCount++
var MinSumPow = 10 * Context.CountProof;
var SumPower = 0;
@@ -420,13 +434,13 @@ module.exports = class CRest extends require("./db/block-db")
var Ret = this.GetNextNode(Context, Context.BlockNum, 1);
if (Ret.Result) {
var Node = Ret.Node;
global.ToLog("LOAD_TO_BEGIN - from: " + BlockDB.BlockNum + " to " + NodeName(Node), 2)
global.ToLog("LOAD_TO_BEGIN - from: " + BlockDB.BlockNum + " to " + global.NodeName(Node), 2)
Context.Time = CurTime
this.SendF(Node, {
"Method": "GETBLOCKHEADER", "Data": { Foward: 0, BlockNum: Context.BlockNum, Hash: BlockDB.Hash, IsSum: 0, Count: global.COUNT_HISTORY_BLOCKS_FOR_LOAD },
"Context": {
F: function(Info) {
global.ToLog("GET LOAD_TO_BEGIN from " + NodeName(Info.Node) + " Length=" + Info.Data.length, 2)
global.ToLog("GET LOAD_TO_BEGIN from " + global.NodeName(Info.Node) + " Length=" + Info.Data.length, 2)
}
}
})