forked from circlecloud/tera
		
	feat: alpine 0.0.1 version complate
Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
		@@ -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)
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            })
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user