forked from circlecloud/tera
@@ -15,11 +15,11 @@ global.PERIOD_FOR_RECONNECT = 3600 * 1000;
|
||||
global.CHECK_DELTA_TIME = { Num: 0, bUse: 0, StartBlockNum: 0, EndBlockNum: 0, bAddTime: 0, DeltaTime: 0, Sign: [] };
|
||||
global.CHECK_POINT = { BlockNum: 0, Hash: [], Sign: [] };
|
||||
global.CODE_VERSION = {
|
||||
BlockNum: 0, addrArr: [], LevelUpdate: 0, BlockPeriod: 0, VersionNum: UPDATE_CODE_VERSION_NUM, Hash: [], Sign: [],
|
||||
BlockNum: 0, addrArr: [], LevelUpdate: 0, BlockPeriod: 0, VersionNum: global.UPDATE_CODE_VERSION_NUM, Hash: [], Sign: [],
|
||||
StartLoadVersionNum: 0
|
||||
};
|
||||
global.NET_CONSTANT = {
|
||||
Num: 0, BlockNum: 0, MaxTrasactionLimit: MAX_TRANSACTION_LIMIT, Reserv1: 0, Reserv2: 0, Reserv3: 0, Reserv4: 0,
|
||||
Num: 0, BlockNum: 0, MaxTrasactionLimit: global.MAX_TRANSACTION_LIMIT, Reserv1: 0, Reserv2: 0, Reserv3: 0, Reserv4: 0,
|
||||
Reserv5: 0, Hash: [], Sign: []
|
||||
};
|
||||
global.START_LOAD_CODE = {};
|
||||
@@ -28,7 +28,7 @@ global.MIN_PERIOD_PING = 4 * 1000;
|
||||
const MAX_PERIOD_PING = 120 * 1000;
|
||||
global.MAX_PING_FOR_CONNECT = 400;
|
||||
var MAX_TIME_CORRECT = 3 * 3600 * 1000;
|
||||
global.MAX_WAIT_PERIOD_FOR_HOT = 4 * CONSENSUS_PERIOD_TIME;
|
||||
global.MAX_WAIT_PERIOD_FOR_HOT = 4 * global.CONSENSUS_PERIOD_TIME;
|
||||
const PERIOD_FOR_START_CHECK_TIME = 300;
|
||||
module.exports = class CConnect extends require("./transfer-msg")
|
||||
{
|
||||
@@ -41,6 +41,15 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
NodesIPMap
|
||||
PerioadAfterCanStart
|
||||
КодДляРазработчикаХекс
|
||||
CommonKey
|
||||
KeyToNode
|
||||
NameToNode
|
||||
BlockNumDB
|
||||
idTimerSetConst
|
||||
SignCurrentTimeDev
|
||||
StopDetectGrayMode
|
||||
LastNotZeroNodesTime
|
||||
TransferTree
|
||||
constructor(SetKeyPair, RunIP, RunPort, UseRNDHeader, bVirtual) {
|
||||
super(SetKeyPair, RunIP, RunPort, UseRNDHeader, bVirtual)
|
||||
this.StartTime = Date.now()
|
||||
@@ -69,21 +78,21 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
СтатДанныеОтладкиИзБлока() {
|
||||
var Массив = [];
|
||||
if (this.СтатБлок && this.СтатБлок.SeqHash) {
|
||||
WriteArrToArr(Массив, this.ValueToXORDevelop("Stat:BlockNum", this.СтатБлок.BlockNum, "uint"), 6)
|
||||
WriteArrToArr(Массив, this.ValueToXORDevelop("Stat:SeqHash", this.СтатБлок.SeqHash, "hash"), 32)
|
||||
WriteArrToArr(Массив, this.ValueToXORDevelop("Stat:AddrHash", this.СтатБлок.AddrHash, "hash"), 32)
|
||||
global.WriteArrToArr(Массив, this.ValueToXORDevelop("Stat:BlockNum", this.СтатБлок.BlockNum, "uint"), 6)
|
||||
global.WriteArrToArr(Массив, this.ValueToXORDevelop("Stat:SeqHash", this.СтатБлок.SeqHash, "hash"), 32)
|
||||
global.WriteArrToArr(Массив, this.ValueToXORDevelop("Stat:AddrHash", this.СтатБлок.AddrHash, "hash"), 32)
|
||||
}
|
||||
return Массив;
|
||||
}
|
||||
ДоступенКлючРазработчика(Node) {
|
||||
if (Node.PubKey && global.WALLET.WalletOpen !== false && IsDeveloperAccount(WALLET.PubKeyArr)) {
|
||||
if (Node.PubKey && global.WALLET.WalletOpen !== false && global.IsDeveloperAccount(global.WALLET.PubKeyArr)) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
БлокИзДанных(Node, Arr) {
|
||||
var Block = {};
|
||||
if (this.ДоступенКлючРазработчика(Node) && !IsZeroArr(Arr)) {
|
||||
var Block: any = {};
|
||||
if (this.ДоступенКлючРазработчика(Node) && !global.IsZeroArr(Arr)) {
|
||||
var Data = global.BufLib.GetObjectFromBuffer(Arr, "{BlockNum:arr6,SeqHash:arr32,AddrHash:arr32}", {});
|
||||
Block.BlockNum = this.ValueFromXORDevelop(Node, "Stat:BlockNum", Data.BlockNum, "uint")
|
||||
Block.SeqHash = this.ValueFromXORDevelop(Node, "Stat:SeqHash", Data.SeqHash, "hash")
|
||||
@@ -106,7 +115,7 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
}
|
||||
FindRunNodeContext(addrArr, ip, port, bUpdate) {
|
||||
var Node, addrStr;
|
||||
addrStr = GetHexFromAddres(addrArr)
|
||||
addrStr = global.GetHexFromAddres(addrArr)
|
||||
Node = this.NodesMap[addrStr]
|
||||
if (!Node) {
|
||||
var key = "" + ip + ":" + port;
|
||||
@@ -132,7 +141,7 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
var Node2 = this.NodesMap[Node.addrStr];
|
||||
if (Node2 && Node2 !== Node) {
|
||||
Node2.Delete = 1
|
||||
AddNodeInfo(Node2, "FIND DOUBLE!!")
|
||||
global.AddNodeInfo(Node2, "FIND DOUBLE!!")
|
||||
delete this.NodesMap[Node.addrStr]
|
||||
}
|
||||
this.NodesMap[Node.addrStr] = Node
|
||||
@@ -143,7 +152,7 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
return this.StartConnectTry(Node);
|
||||
}
|
||||
StartPingPong() {
|
||||
if (glStopNode)
|
||||
if (global.glStopNode)
|
||||
return;
|
||||
if (global.CAN_START)
|
||||
this.PerioadAfterCanStart++
|
||||
@@ -153,9 +162,9 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
var Node = arr[i];
|
||||
if (this.IsCanConnect(Node) && !Node.IsAddrList) {
|
||||
if (Node.Hot)
|
||||
Node.NextPing = MIN_PERIOD_PING
|
||||
if (Node.NextPing < MIN_PERIOD_PING)
|
||||
Node.NextPing = MIN_PERIOD_PING
|
||||
Node.NextPing = global.MIN_PERIOD_PING
|
||||
if (Node.NextPing < global.MIN_PERIOD_PING)
|
||||
Node.NextPing = global.MIN_PERIOD_PING
|
||||
var Delta = Date.now() - Node.PingStart;
|
||||
if (Delta >= Node.NextPing) {
|
||||
Node.PingStart = Date.now()
|
||||
@@ -165,7 +174,7 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
if (!Node.PingNumber)
|
||||
Node.PingNumber = 0
|
||||
Node.PingNumber++
|
||||
var Context = { "StartTime": GetCurrentTime(0), PingNumber: Node.PingNumber };
|
||||
var Context = { "StartTime": global.GetCurrentTime(0), PingNumber: Node.PingNumber };
|
||||
this.SendF(Node, { "Method": "PING", "Context": Context, "Data": this.GetPingData(Node) })
|
||||
}
|
||||
}
|
||||
@@ -173,13 +182,13 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
}
|
||||
GetPingData(Node) {
|
||||
var GrayAddres = 0;
|
||||
if (GrayConnect())
|
||||
if (global.GrayConnect())
|
||||
GrayAddres = 1
|
||||
var BlockNumHash = Math.trunc((GetCurrentBlockNumByTime() - global.BLOCK_PROCESSING_LENGTH2) / PERIOD_ACCOUNT_HASH) * PERIOD_ACCOUNT_HASH;
|
||||
var BlockNumHash = Math.trunc((global.GetCurrentBlockNumByTime() - global.BLOCK_PROCESSING_LENGTH2) / global.PERIOD_ACCOUNT_HASH) * global.PERIOD_ACCOUNT_HASH;
|
||||
var AccountsHash = global.DApps.Accounts.GetHashOrUndefined(BlockNumHash);
|
||||
var CheckPointHashDB = [];
|
||||
if (CHECK_POINT.BlockNum && CHECK_POINT.BlockNum <= this.BlockNumDB) {
|
||||
var Block = this.ReadBlockHeaderFromMapDB(CHECK_POINT.BlockNum);
|
||||
if (global.CHECK_POINT.BlockNum && global.CHECK_POINT.BlockNum <= this.BlockNumDB) {
|
||||
var Block = this.ReadBlockHeaderFromMapDB(global.CHECK_POINT.BlockNum);
|
||||
if (Block) {
|
||||
CheckPointHashDB = Block.Hash
|
||||
}
|
||||
@@ -199,15 +208,15 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
var СтатДанные = [];
|
||||
var DirectMAccount = 0;
|
||||
var Ret = {
|
||||
VERSIONMAX: DEF_VERSION,
|
||||
VERSIONMAX: global.DEF_VERSION,
|
||||
FIRST_TIME_BLOCK: 0,
|
||||
PingVersion: 3,
|
||||
GrayConnect: GrayAddres, Reserve2: 0, AutoCorrectTime: AUTO_CORRECT_TIME,
|
||||
LevelCount: LevelCount, Time: (GetCurrentTime() - 0), BlockNumDB: this.BlockNumDB, LoadHistoryMode: this.LoadHistoryMode, CanStart: global.CAN_START,
|
||||
CheckPoint: CHECK_POINT, Reserv3: [], Key: this.KeyToNode, Name: this.NameToNode, TrafficFree: this.SendTrafficFree, AccountBlockNum: BlockNumHash,
|
||||
AccountsHash: AccountsHash, MemoryUsage: Math.trunc(process.memoryUsage().heapTotal / 1024 / 1024), CheckDeltaTime: CHECK_DELTA_TIME,
|
||||
CodeVersion: CODE_VERSION, IsAddrList: global.ADDRLIST_MODE, CheckPointHashDB: CheckPointHashDB, PortWeb: HTTP_HOSTING_PORT, HashDB: HashDB,
|
||||
StopGetBlock: StopGetBlock, NetConstant: NET_CONSTANT,
|
||||
GrayConnect: GrayAddres, Reserve2: 0, AutoCorrectTime: global.AUTO_CORRECT_TIME,
|
||||
LevelCount: LevelCount, Time: (global.GetCurrentTime() - 0), BlockNumDB: this.BlockNumDB, LoadHistoryMode: this.LoadHistoryMode, CanStart: global.CAN_START,
|
||||
CheckPoint: global.CHECK_POINT, Reserv3: [], Key: this.KeyToNode, Name: this.NameToNode, TrafficFree: this.SendTrafficFree, AccountBlockNum: BlockNumHash,
|
||||
AccountsHash: AccountsHash, MemoryUsage: Math.trunc(process.memoryUsage().heapTotal / 1024 / 1024), CheckDeltaTime: global.CHECK_DELTA_TIME,
|
||||
CodeVersion: global.CODE_VERSION, IsAddrList: global.ADDRLIST_MODE, CheckPointHashDB: CheckPointHashDB, PortWeb: global.HTTP_HOSTING_PORT, HashDB: HashDB,
|
||||
StopGetBlock: StopGetBlock, NetConstant: global.NET_CONSTANT,
|
||||
};
|
||||
return Ret;
|
||||
}
|
||||
@@ -286,7 +295,7 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
if (Info.Context.PingNumber !== Node.PingNumber)
|
||||
return;
|
||||
this.DoPingData(Info, 0)
|
||||
var DeltaTime = GetCurrentTime(0) - Info.Context.StartTime;
|
||||
var DeltaTime = global.GetCurrentTime(0) - Info.Context.StartTime;
|
||||
Node.DeltaTimeM = DeltaTime
|
||||
Node.SumDeltaTime += DeltaTime
|
||||
Node.CountDeltaTime++
|
||||
@@ -302,11 +311,11 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
this.CheckNetConstant(Data, Info.Node)
|
||||
this.CheckCodeVersion(Data, Info.Node)
|
||||
if (!global.CAN_START) {
|
||||
if (DeltaTime > MAX_PING_FOR_CONNECT)
|
||||
global.ToLog("DeltaTime=" + DeltaTime + ">" + MAX_PING_FOR_CONNECT + " ms - " + NodeInfo(Node), 2)
|
||||
if (DeltaTime > global.MAX_PING_FOR_CONNECT)
|
||||
global.ToLog("DeltaTime=" + DeltaTime + ">" + global.MAX_PING_FOR_CONNECT + " ms - " + NodeInfo(Node), 2)
|
||||
}
|
||||
var Times;
|
||||
if (DeltaTime <= MAX_PING_FOR_CONNECT) {
|
||||
if (DeltaTime <= global.MAX_PING_FOR_CONNECT) {
|
||||
Times = Node.Times
|
||||
if (!Times || Times.Count >= 10) {
|
||||
Times = { SumDelta: 0, Count: 0, AvgDelta: 0, Arr: [] }
|
||||
@@ -340,18 +349,18 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
this.CheckDeltaTime(Data, Info.Node)
|
||||
}
|
||||
CheckCheckPoint(Data, Node) {
|
||||
if (CREATE_ON_START)
|
||||
if (global.CREATE_ON_START)
|
||||
return;
|
||||
if (Data.CheckPoint.BlockNum && Data.CheckPoint.BlockNum > CHECK_POINT.BlockNum) {
|
||||
var SignArr = arr2(Data.CheckPoint.Hash, GetArrFromValue(Data.CheckPoint.BlockNum));
|
||||
if (CheckDevelopSign(SignArr, Data.CheckPoint.Sign)) {
|
||||
if (Data.CheckPoint.BlockNum && Data.CheckPoint.BlockNum > global.CHECK_POINT.BlockNum) {
|
||||
var SignArr = global.arr2(Data.CheckPoint.Hash, global.SaveToFile(Data.CheckPoint.BlockNum));
|
||||
if (global.CheckDevelopSign(SignArr, Data.CheckPoint.Sign)) {
|
||||
global.CHECK_POINT = Data.CheckPoint
|
||||
this.ResetNextPingAllNode()
|
||||
if (Data.CheckPoint.BlockNum < this.BlockNumDBMin)
|
||||
return;
|
||||
var Block = this.ReadBlockHeaderDB(CHECK_POINT.BlockNum);
|
||||
if (Block && global.CompareArr(Block.Hash, CHECK_POINT.Hash) !== 0) {
|
||||
this.BlockNumDB = CHECK_POINT.BlockNum - 1
|
||||
var Block = this.ReadBlockHeaderDB(global.CHECK_POINT.BlockNum);
|
||||
if (Block && global.CompareArr(Block.Hash, global.CHECK_POINT.Hash) !== 0) {
|
||||
this.BlockNumDB = global.CHECK_POINT.BlockNum - 1
|
||||
this.TruncateBlockDB(this.BlockNumDB)
|
||||
this.StartSyncBlockchain(Node, 0, 1)
|
||||
}
|
||||
@@ -365,10 +374,10 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
}
|
||||
CheckDeltaTime(Data, Node) {
|
||||
if (global.AUTO_CORRECT_TIME)
|
||||
if (global.CAN_START && !CREATE_ON_START) {
|
||||
if (Data.CheckDeltaTime.Num > CHECK_DELTA_TIME.Num) {
|
||||
if (global.CAN_START && !global.CREATE_ON_START) {
|
||||
if (Data.CheckDeltaTime.Num > global.CHECK_DELTA_TIME.Num) {
|
||||
var SignArr = this.GetSignCheckDeltaTime(Data.CheckDeltaTime);
|
||||
if (CheckDevelopSign(SignArr, Data.CheckDeltaTime.Sign)) {
|
||||
if (global.CheckDevelopSign(SignArr, Data.CheckDeltaTime.Sign)) {
|
||||
global.CHECK_DELTA_TIME = Data.CheckDeltaTime
|
||||
}
|
||||
else {
|
||||
@@ -380,11 +389,11 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
}
|
||||
}
|
||||
CheckNetConstant(Data, Node) {
|
||||
if (Data.NetConstant.Num > NET_CONSTANT.Num) {
|
||||
if (Data.NetConstant.Num > global.NET_CONSTANT.Num) {
|
||||
var SignArr = this.GetSignCheckNetConstant(Data.NetConstant);
|
||||
if (CheckDevelopSign(SignArr, Data.NetConstant.Sign)) {
|
||||
if (global.CheckDevelopSign(SignArr, Data.NetConstant.Sign)) {
|
||||
global.NET_CONSTANT = Data.NetConstant
|
||||
var CurBlockNum = GetCurrentBlockNumByTime();
|
||||
var CurBlockNum = global.GetCurrentBlockNumByTime();
|
||||
var Delta = Data.NetConstant.BlockNum - CurBlockNum;
|
||||
if (Delta < 1)
|
||||
Delta = 1
|
||||
@@ -406,12 +415,12 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
}
|
||||
}
|
||||
DoNetConst() {
|
||||
global.MAX_TRANSACTION_LIMIT = NET_CONSTANT.MaxTrasactionLimit
|
||||
global.MAX_TRANSACTION_LIMIT = global.NET_CONSTANT.MaxTrasactionLimit
|
||||
}
|
||||
CheckCodeVersion(Data, Node) {
|
||||
var CodeVersion = Data.CodeVersion;
|
||||
Node.VersionNum = CodeVersion.VersionNum
|
||||
if (CodeVersion.VersionNum >= MIN_CODE_VERSION_NUM) {
|
||||
if (CodeVersion.VersionNum >= global.MIN_CODE_VERSION_NUM) {
|
||||
Node.VersionOK = true
|
||||
}
|
||||
else {
|
||||
@@ -419,8 +428,8 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
}
|
||||
if (Node.VersionOK) {
|
||||
Node.CanHot = true
|
||||
if (CHECK_POINT.BlockNum && Data.CheckPoint.BlockNum)
|
||||
if (CHECK_POINT.BlockNum !== Data.CheckPoint.BlockNum || global.CompareArr(CHECK_POINT.Hash, Data.CheckPoint.Hash) !== 0) {
|
||||
if (global.CHECK_POINT.BlockNum && Data.CheckPoint.BlockNum)
|
||||
if (global.CHECK_POINT.BlockNum !== Data.CheckPoint.BlockNum || global.CompareArr(global.CHECK_POINT.Hash, Data.CheckPoint.Hash) !== 0) {
|
||||
Node.CanHot = false
|
||||
Node.NextConnectDelta = 60 * 1000
|
||||
}
|
||||
@@ -432,24 +441,24 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
}
|
||||
}
|
||||
var bLoadVer = 0;
|
||||
if (CodeVersion.BlockNum && (CodeVersion.BlockNum <= GetCurrentBlockNumByTime() || CodeVersion.BlockPeriod === 0) && CodeVersion.BlockNum > CODE_VERSION.BlockNum && !IsZeroArr(CodeVersion.Hash) && (CodeVersion.VersionNum > CODE_VERSION.VersionNum && CodeVersion.VersionNum > global.START_LOAD_CODE.StartLoadVersionNum || CodeVersion.VersionNum === CODE_VERSION.VersionNum && IsZeroArr(CODE_VERSION.Hash))) {
|
||||
if (CodeVersion.BlockNum && (CodeVersion.BlockNum <= global.GetCurrentBlockNumByTime() || CodeVersion.BlockPeriod === 0) && CodeVersion.BlockNum > global.CODE_VERSION.BlockNum && !global.IsZeroArr(CodeVersion.Hash) && (CodeVersion.VersionNum > global.CODE_VERSION.VersionNum && CodeVersion.VersionNum > global.START_LOAD_CODE.StartLoadVersionNum || CodeVersion.VersionNum === global.CODE_VERSION.VersionNum && global.IsZeroArr(global.CODE_VERSION.Hash))) {
|
||||
bLoadVer = 1
|
||||
}
|
||||
if (bLoadVer) {
|
||||
var Level = AddrLevelArrFromBegin(this.addrArr, CodeVersion.addrArr);
|
||||
var Level = global.AddrLevelArrFromBegin(this.addrArr, CodeVersion.addrArr);
|
||||
if (CodeVersion.BlockPeriod) {
|
||||
var Delta = GetCurrentBlockNumByTime() - CodeVersion.BlockNum;
|
||||
var Delta = global.GetCurrentBlockNumByTime() - CodeVersion.BlockNum;
|
||||
Level += Delta / CodeVersion.BlockPeriod
|
||||
}
|
||||
if (Level >= CodeVersion.LevelUpdate) {
|
||||
var SignArr = arr2(CodeVersion.Hash, GetArrFromValue(CodeVersion.VersionNum));
|
||||
if (CheckDevelopSign(SignArr, CodeVersion.Sign)) {
|
||||
var SignArr = global.arr2(CodeVersion.Hash, global.SaveToFile(CodeVersion.VersionNum));
|
||||
if (global.CheckDevelopSign(SignArr, CodeVersion.Sign)) {
|
||||
global.ToLog("Get new CodeVersion = " + CodeVersion.VersionNum + " HASH:" + global.GetHexFromArr(CodeVersion.Hash).substr(0, 20))
|
||||
if (CodeVersion.VersionNum > CODE_VERSION.VersionNum && CodeVersion.VersionNum > global.START_LOAD_CODE.StartLoadVersionNum) {
|
||||
if (CodeVersion.VersionNum > global.CODE_VERSION.VersionNum && CodeVersion.VersionNum > global.START_LOAD_CODE.StartLoadVersionNum) {
|
||||
this.StartLoadCode(Node, CodeVersion)
|
||||
}
|
||||
else {
|
||||
CODE_VERSION = CodeVersion
|
||||
global.CODE_VERSION = CodeVersion
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -480,21 +489,21 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
Node2.NextPing = 5 * 1000
|
||||
}
|
||||
}
|
||||
StartDisconnectHot(Node, StrError, bDeleteHot) {
|
||||
AddNodeInfo(Node, "DisconnectHot:" + StrError)
|
||||
StartDisconnectHot(Node, StrError, bDeleteHot?) {
|
||||
global.AddNodeInfo(Node, "DisconnectHot:" + StrError)
|
||||
if (Node.Active && Node.Hot) {
|
||||
AddNodeInfo(Node, "SEND DISCONNECTHOT")
|
||||
this.Send(Node, { "Method": "DISCONNECTHOT", "Context": {}, "Data": StrError }, STR_TYPE)
|
||||
global.AddNodeInfo(Node, "SEND DISCONNECTHOT")
|
||||
this.Send(Node, { "Method": "DISCONNECTHOT", "Context": {}, "Data": StrError }, global.STR_TYPE)
|
||||
}
|
||||
this.DeleteNodeFromHot(Node)
|
||||
}
|
||||
DISCONNECTHOT(Info, CurTime) {
|
||||
this.DeleteNodeFromHot(Info.Node)
|
||||
global.ADD_TO_STAT("DISCONNECTHOT")
|
||||
AddNodeInfo(Info.Node, "GET DISCONNECTHOT:" + Info.Data)
|
||||
global.AddNodeInfo(Info.Node, "GET DISCONNECTHOT:" + Info.Data)
|
||||
}
|
||||
StartGetNodes(Node) {
|
||||
if (glStopNode)
|
||||
if (global.glStopNode)
|
||||
return;
|
||||
var Delta = Date.now() - Node.StartTimeGetNodes;
|
||||
if (Delta >= Node.NextGetNodesDelta) {
|
||||
@@ -510,7 +519,7 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
"Method": "RETGETNODES", "Context": Info.Context, "Data": {
|
||||
arr: this.GetDirectNodesArray(false, 0, 1), IsAddrList: global.ADDRLIST_MODE,
|
||||
}
|
||||
}, MAX_NODES_RETURN * 250 + 300)
|
||||
}, global.MAX_NODES_RETURN * 250 + 300)
|
||||
}
|
||||
static
|
||||
RETGETNODES_F() {
|
||||
@@ -539,7 +548,7 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
}
|
||||
}
|
||||
Info.Node.IsAddrList = Data.IsAddrList
|
||||
AddNodeInfo(Info.Node, "RETGETNODES length=" + arr.length)
|
||||
global.AddNodeInfo(Info.Node, "RETGETNODES length=" + arr.length)
|
||||
}
|
||||
static
|
||||
RETGETNODES2_F() {
|
||||
@@ -567,7 +576,7 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
}
|
||||
}
|
||||
Info.Node.IsAddrList = Data.IsAddrList
|
||||
AddNodeInfo(Info.Node, "RETGETNODES2 length=" + arr.length)
|
||||
global.AddNodeInfo(Info.Node, "RETGETNODES2 length=" + arr.length)
|
||||
}
|
||||
GetNewNode(addrStr, ip, port) {
|
||||
var Node = new CNode(addrStr, ip, port);
|
||||
@@ -583,10 +592,10 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
GetDirectNodesArray(bAll, bWebPort, bGetAddrArr) {
|
||||
GetDirectNodesArray(bAll, bWebPort?, bGetAddrArr?) {
|
||||
var ret = [];
|
||||
var Value = {
|
||||
addrStr: this.addrStr, ip: this.ip, port: this.port, LastTime: 0, DeltaTime: 0, Hot: true, BlockProcessCount: 0, portweb: HTTP_HOSTING_PORT,
|
||||
var Value: any = {
|
||||
addrStr: this.addrStr, ip: this.ip, port: this.port, LastTime: 0, DeltaTime: 0, Hot: true, BlockProcessCount: 0, portweb: global.HTTP_HOSTING_PORT,
|
||||
};
|
||||
if (bGetAddrArr)
|
||||
Value.addrArr = global.GetArrFromHex(Value.addrStr)
|
||||
@@ -594,17 +603,17 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
var len = this.NodesArr.length;
|
||||
var UseRandom = 0;
|
||||
var MaxDeltaTime = 24 * 3600 * 1000;
|
||||
if (len > MAX_NODES_RETURN && !bAll) {
|
||||
if (len > global.MAX_NODES_RETURN && !bAll) {
|
||||
UseRandom = 1
|
||||
MaxDeltaTime = NODES_DELTA_CALC_HOUR * 3600 * 1000
|
||||
len = MAX_NODES_RETURN
|
||||
MaxDeltaTime = global.NODES_DELTA_CALC_HOUR * 3600 * 1000
|
||||
len = global.MAX_NODES_RETURN
|
||||
}
|
||||
var mapWasAdd = {};
|
||||
var CurTime = global.GetCurrentTime();
|
||||
for (var i = 0; i < len; i++) {
|
||||
var Item;
|
||||
if (UseRandom) {
|
||||
Item = this.NodesArr[random(this.NodesArr.length)]
|
||||
Item = this.NodesArr[global.random(this.NodesArr.length)]
|
||||
if (mapWasAdd[Item.addrStr]) {
|
||||
continue;
|
||||
}
|
||||
@@ -621,9 +630,9 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
continue;
|
||||
if (Item.BlockProcessCount < 0)
|
||||
continue;
|
||||
if (!GrayConnect() && Item.LastTime - 0 < CurTime - MaxDeltaTime)
|
||||
if (!global.GrayConnect() && Item.LastTime - 0 < CurTime - MaxDeltaTime)
|
||||
continue;
|
||||
var Value = {
|
||||
var Value: any = {
|
||||
addrStr: Item.addrStr, ip: Item.ip, port: Item.port, FirstTime: Item.FirstTime, FirstTimeStr: Item.FirstTimeStr, LastTime: Item.LastTime - 0,
|
||||
DeltaTime: Item.DeltaTime, Hot: Item.Hot, BlockProcessCount: Item.BlockProcessCount, Name: Item.Name, portweb: Item.portweb,
|
||||
};
|
||||
@@ -633,7 +642,7 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
AddToArrNodes(Item) {
|
||||
AddToArrNodes(Item, b?) {
|
||||
if (Item.addrStr === "" || Item.addrStr === this.addrStr)
|
||||
return;
|
||||
var Node;
|
||||
@@ -648,7 +657,7 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
else
|
||||
Node = new CNode(Item.addrStr, Item.ip, Item.port)
|
||||
Node.id = this.NodesArr.length
|
||||
Node.addrArr = GetAddresFromHex(Node.addrStr)
|
||||
Node.addrArr = global.GetAddresFromHex(Node.addrStr)
|
||||
this.NodesMap[Node.addrStr] = Node
|
||||
this.NodesArr.push(Node)
|
||||
this.NodesArrUnSort.push(Node)
|
||||
@@ -673,14 +682,14 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
}
|
||||
NodesArrSort() {
|
||||
this.NodesArr.sort(SortNodeBlockProcessCount)
|
||||
if ((GrayConnect() || !this.LoadHistoryMode) && Date.now() - this.StartTime > 120 * 1000) {
|
||||
if ((global.GrayConnect() || !this.LoadHistoryMode) && Date.now() - this.StartTime > 120 * 1000) {
|
||||
var arr0 = this.GetDirectNodesArray(true);
|
||||
var arr = arr0.slice(1, 2000);
|
||||
SaveParams(global.GetDataPath("nodes.lst"), arr)
|
||||
global.SaveParams(global.GetDataPath("nodes.lst"), arr)
|
||||
}
|
||||
}
|
||||
LoadNodesFromFile() {
|
||||
var arr = LoadParams(global.GetDataPath("nodes.lst"), []);
|
||||
var arr = global.LoadParams(global.GetDataPath("nodes.lst"), []);
|
||||
arr.sort(SortNodeBlockProcessCount)
|
||||
for (var i = 0; i < arr.length; i++) {
|
||||
if (arr[i].LastTime) {
|
||||
@@ -733,7 +742,7 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
var Count;
|
||||
if (!global.CAN_START)
|
||||
return;
|
||||
if (Info.Node.GrayConnect || GrayConnect())
|
||||
if (Info.Node.GrayConnect || global.GrayConnect())
|
||||
return;
|
||||
var Count = this.GetLevelEnum(Info.Node);
|
||||
var bAdd = this.AddLevelConnect(Info.Node);
|
||||
@@ -743,7 +752,7 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
else {
|
||||
ret = { result: 0, Count: Count }
|
||||
}
|
||||
AddNodeInfo(Info.Node, "GET ADDLEVELCONNECT, DO bAdd=" + bAdd)
|
||||
global.AddNodeInfo(Info.Node, "GET ADDLEVELCONNECT, DO bAdd=" + bAdd)
|
||||
this.SendF(Info.Node, { "Method": "RETADDLEVELCONNECT", "Context": Info.Context, "Data": ret })
|
||||
}
|
||||
AddLevelConnect(Node) {
|
||||
@@ -765,9 +774,9 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
arr.push(Node)
|
||||
Node.TransferCount = 0
|
||||
if (this.LoadHistoryMode)
|
||||
Node.LastTimeTransfer = (GetCurrentTime() - 0) + 30 * 1000
|
||||
Node.LastTimeTransfer = (global.GetCurrentTime() - 0) + 30 * 1000
|
||||
else
|
||||
Node.LastTimeTransfer = (GetCurrentTime() - 0) + 10 * 1000
|
||||
Node.LastTimeTransfer = (global.GetCurrentTime() - 0) + 10 * 1000
|
||||
Node.CanHot = true
|
||||
this.CheckDisconnectHot(Level)
|
||||
if (!Node.CanHot)
|
||||
@@ -775,7 +784,7 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
this.SendGetMessage(Node)
|
||||
global.ADD_TO_STAT("NETCONFIGURATION")
|
||||
global.ADD_TO_STAT("AddLevelConnect")
|
||||
AddNodeInfo(Node, "Add Level connect")
|
||||
global.AddNodeInfo(Node, "Add Level connect")
|
||||
return true;
|
||||
}
|
||||
static
|
||||
@@ -784,7 +793,7 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
}
|
||||
RETADDLEVELCONNECT(Info, CurTime) {
|
||||
var Data = this.DataFromF(Info);
|
||||
AddNodeInfo(Info.Node, "GET RETADDLEVELCONNECT: " + Data.result)
|
||||
global.AddNodeInfo(Info.Node, "GET RETADDLEVELCONNECT: " + Data.result)
|
||||
if (Data.result === 1) {
|
||||
this.AddLevelConnect(Info.Node)
|
||||
}
|
||||
@@ -794,7 +803,7 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
Info.Node.LevelCount = Data.Count
|
||||
}
|
||||
DeleteBadConnectingByTimer() {
|
||||
if (glStopNode)
|
||||
if (global.glStopNode)
|
||||
return;
|
||||
var CurTime = global.GetCurrentTime();
|
||||
var arr = global.SERVER.NodesArr;
|
||||
@@ -803,8 +812,8 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
var Status = GetSocketStatus(Node.Socket);
|
||||
if (Node.Active && Status < 100) {
|
||||
var Delta = CurTime - Node.LastTime;
|
||||
if (Delta > MAX_WAIT_PERIOD_FOR_STATUS) {
|
||||
AddNodeInfo(Node, "Close bad connecting by time")
|
||||
if (Delta > global.MAX_WAIT_PERIOD_FOR_STATUS) {
|
||||
global.AddNodeInfo(Node, "Close bad connecting by time")
|
||||
this.DeleteNodeFromActive(Node)
|
||||
}
|
||||
}
|
||||
@@ -816,21 +825,21 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
if (Level < 3)
|
||||
MaxCountChilds = 4
|
||||
else
|
||||
MaxCountChilds = MAX_CONNECT_CHILD
|
||||
MaxCountChilds = global.MAX_CONNECT_CHILD
|
||||
var arr = this.LevelNodes[Level];
|
||||
if (arr) {
|
||||
for (var n = arr.length - 1; n >= 0; n--) {
|
||||
var Node = arr[n];
|
||||
if (Node) {
|
||||
var DeltaTime = CurTime - Node.LastTimeTransfer;
|
||||
if (!Node.Hot || DeltaTime > MAX_WAIT_PERIOD_FOR_HOT) {
|
||||
if (!Node.Hot || DeltaTime > global.MAX_WAIT_PERIOD_FOR_HOT) {
|
||||
this.StartDisconnectHot(Node, "TimeDisconnectHot")
|
||||
}
|
||||
}
|
||||
}
|
||||
arr.sort(SortNodeBlockProcessCount)
|
||||
var ChildCount = arr.length;
|
||||
for (var n = arr.length - 1; n >= MIN_CONNECT_CHILD; n--) {
|
||||
for (var n = arr.length - 1; n >= global.MIN_CONNECT_CHILD; n--) {
|
||||
var Node = arr[n];
|
||||
if (Node) {
|
||||
if (ChildCount > MaxCountChilds) {
|
||||
@@ -840,7 +849,7 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
global.ADD_TO_STAT("DisconnectChild")
|
||||
continue;
|
||||
}
|
||||
if (ChildCount > (MIN_CONNECT_CHILD) && Node.LevelCount > MIN_CONNECT_CHILD) {
|
||||
if (ChildCount > (global.MIN_CONNECT_CHILD) && Node.LevelCount > global.MIN_CONNECT_CHILD) {
|
||||
ChildCount--
|
||||
Node.CanHot = false
|
||||
this.AddCheckErrCount(Node, 1)
|
||||
@@ -855,8 +864,8 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
SetTime(NewTime) {
|
||||
global.ToLog("Set new time: " + NewTime)
|
||||
if (NewTime) {
|
||||
global.DELTA_CURRENT_TIME = NewTime - (GetCurrentTime(0) - 0)
|
||||
SAVE_CONST(true)
|
||||
global.DELTA_CURRENT_TIME = NewTime - (global.GetCurrentTime(0) - 0)
|
||||
global.SAVE_CONST(true)
|
||||
}
|
||||
}
|
||||
static
|
||||
@@ -864,13 +873,13 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
return "{Time:uint, Sign:arr64}";
|
||||
}
|
||||
SendTimeDev(Node) {
|
||||
if (!WALLET.WalletOpen) {
|
||||
if (!global.WALLET.WalletOpen) {
|
||||
global.ToLog("Error Wallet not open")
|
||||
return 0;
|
||||
}
|
||||
if (!this.SignCurrentTimeDev) {
|
||||
var SignArr = global.GetArrFromHex(SERVER.addrStr);
|
||||
this.SignCurrentTimeDev = secp256k1.sign(SHA3BUF(SignArr), global.WALLET.KeyPair.getPrivateKey('')).signature
|
||||
var SignArr = global.GetArrFromHex(global.SERVER.addrStr);
|
||||
this.SignCurrentTimeDev = global.SaveToFile(global.SHA3BUF(SignArr), global.WALLET.KeyPair.getPrivateKey('')).signature
|
||||
}
|
||||
var Time = global.GetCurrentTime() - 0;
|
||||
global.ToLog("Send time: " + Time + " to " + NodeInfo(Node))
|
||||
@@ -893,7 +902,7 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
var Node = Info.Node;
|
||||
var Data = this.DataFromF(Info);
|
||||
var SignArr = global.GetArrFromHex(Node.addrStr);
|
||||
if (CheckDevelopSign(SignArr, Data.Sign)) {
|
||||
if (global.CheckDevelopSign(SignArr, Data.Sign)) {
|
||||
this.SetTime(Data.Time)
|
||||
}
|
||||
else {
|
||||
@@ -908,10 +917,10 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
for (var i = 0; i < this.NodesArr.length; i++) {
|
||||
var Node = this.NodesArr[i];
|
||||
if (!Node.Active && this.IsCanConnect(Node) && !Node.WasAddToConnect) {
|
||||
AddNodeInfo(Node, "To connect all")
|
||||
global.AddNodeInfo(Node, "To connect all")
|
||||
Node.NextConnectDelta = 1000
|
||||
Node.WasAddToConnect = 1
|
||||
ArrConnect.push(Node)
|
||||
global.ArrConnect.push(Node)
|
||||
Count++
|
||||
}
|
||||
}
|
||||
@@ -922,7 +931,7 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
for (var i = 0; i < this.NodesArr.length; i++) {
|
||||
var Node = this.NodesArr[i];
|
||||
if (Node.Active) {
|
||||
AddNodeInfo(Node, "Disconnect hot all")
|
||||
global.AddNodeInfo(Node, "Disconnect hot all")
|
||||
Node.NextConnectDelta = 10000
|
||||
this.DeleteNodeFromActive(Node)
|
||||
Count++
|
||||
@@ -942,7 +951,7 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
var ArrNodes = this.GetHotTimeNodes();
|
||||
var CountNodes = ArrNodes.length;
|
||||
var DeltaArr = [];
|
||||
var NodesSet = new Set();
|
||||
var NodesSet: any = new Set();
|
||||
for (var i = 0; i < ArrNodes.length; i++) {
|
||||
var Node = ArrNodes[i];
|
||||
if (!Node.Times)
|
||||
@@ -983,6 +992,7 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
}
|
||||
var Sum = 0;
|
||||
var Count = 0;
|
||||
//@ts-ignore
|
||||
for (var i = start; i <= finish; i++) {
|
||||
Sum = Sum + DeltaArr[i]
|
||||
Count++
|
||||
@@ -1010,7 +1020,7 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
global.ADD_TO_STAT("CORRECT_TIME_DOWN", - AvgDelta)
|
||||
global.DELTA_CURRENT_TIME = Math.trunc(global.DELTA_CURRENT_TIME + AvgDelta)
|
||||
this.ClearTimeStat()
|
||||
SAVE_CONST()
|
||||
global.SAVE_CONST()
|
||||
}
|
||||
ClearTimeStat() {
|
||||
var ArrNodes = this.GetHotTimeNodes();
|
||||
@@ -1019,19 +1029,19 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
}
|
||||
}
|
||||
TimeDevCorrect() {
|
||||
if (CHECK_DELTA_TIME.bUse) {
|
||||
var BlockNum = GetCurrentBlockNumByTime();
|
||||
if (CHECK_DELTA_TIME.StartBlockNum <= BlockNum && CHECK_DELTA_TIME.EndBlockNum > BlockNum) {
|
||||
if (global.CHECK_DELTA_TIME.bUse) {
|
||||
var BlockNum = global.GetCurrentBlockNumByTime();
|
||||
if (global.CHECK_DELTA_TIME.StartBlockNum <= BlockNum && global.CHECK_DELTA_TIME.EndBlockNum > BlockNum) {
|
||||
if (!global.DELTA_CURRENT_TIME)
|
||||
global.DELTA_CURRENT_TIME = 0
|
||||
var CorrectTime = 0;
|
||||
if (CHECK_DELTA_TIME.bAddTime)
|
||||
CorrectTime = CHECK_DELTA_TIME.DeltaTime
|
||||
if (global.CHECK_DELTA_TIME.bAddTime)
|
||||
CorrectTime = global.CHECK_DELTA_TIME.DeltaTime
|
||||
else
|
||||
CorrectTime = - CHECK_DELTA_TIME.DeltaTime
|
||||
CorrectTime = - global.CHECK_DELTA_TIME.DeltaTime
|
||||
global.DELTA_CURRENT_TIME += CorrectTime
|
||||
this.ClearTimeStat()
|
||||
SAVE_CONST(true)
|
||||
global.SAVE_CONST(true)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1061,7 +1071,7 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
Node.NextConnectDelta = 1000
|
||||
if (!Node.FirstTime) {
|
||||
Node.FirstTime = global.GetCurrentTime() - 0
|
||||
Node.FirstTimeStr = "" + GetStrTimeUTC()
|
||||
Node.FirstTimeStr = "" + global.GetStrTimeUTC()
|
||||
}
|
||||
global.ADD_TO_STAT("AddToActive")
|
||||
}
|
||||
@@ -1071,8 +1081,8 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
this.StartDisconnectHot(Node, "NotActive", 1)
|
||||
Node.Hot = false
|
||||
this.ActualNodes.remove(Node)
|
||||
CloseSocket(Node.Socket, "DeleteNodeFromActive")
|
||||
CloseSocket(Node.Socket2, "DeleteNodeFromActive")
|
||||
global.CloseSocket(Node.Socket, "DeleteNodeFromActive")
|
||||
global.CloseSocket(Node.Socket2, "DeleteNodeFromActive")
|
||||
Node.ResetNode()
|
||||
Node.Socket = undefined
|
||||
Node.Socket2 = undefined
|
||||
@@ -1086,8 +1096,8 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
if (!Node.SocketStart)
|
||||
Node.SocketStart = Date.now()
|
||||
var DeltaTime = Date.now() - Node.SocketStart;
|
||||
if (DeltaTime >= PERIOD_FOR_RECONNECT) {
|
||||
if (random(100) >= 90)
|
||||
if (DeltaTime >= global.PERIOD_FOR_RECONNECT) {
|
||||
if (global.random(100) >= 90)
|
||||
Node.CreateReconnection()
|
||||
}
|
||||
}
|
||||
@@ -1120,8 +1130,8 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
}
|
||||
AddrLevelNode(Node) {
|
||||
if (Node.GrayConnect)
|
||||
return MAX_LEVEL_SPECIALIZATION - 1;
|
||||
return AddrLevelArr(this.addrArr, Node.addrArr);
|
||||
return global.MAX_LEVEL_SPECIALIZATION - 1;
|
||||
return global.AddrLevelArr(this.addrArr, Node.addrArr);
|
||||
}
|
||||
GetNodesLevelCount() {
|
||||
var Count = 0;
|
||||
@@ -1222,7 +1232,7 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
global.NET_WORK_MODE = { ip: "", port: "" }
|
||||
}
|
||||
global.NET_WORK_MODE.UseDirectIP = 0
|
||||
SAVE_CONST()
|
||||
global.SAVE_CONST()
|
||||
}
|
||||
}
|
||||
SetDirectMode() {
|
||||
@@ -1230,14 +1240,14 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
if (CountNodes && !global.NET_WORK_MODE) {
|
||||
global.NET_WORK_MODE = { ip: "", port: "30000" }
|
||||
global.NET_WORK_MODE.UseDirectIP = 1
|
||||
SAVE_CONST()
|
||||
global.SAVE_CONST()
|
||||
}
|
||||
}
|
||||
StartCheckTransferTree() {
|
||||
var ArrTree = this.GetTransferTree();
|
||||
this.TransferTree = ArrTree
|
||||
var CurTime = Date.now();
|
||||
if (GrayConnect()) {
|
||||
if (global.GrayConnect()) {
|
||||
var MustCount = GetGrayServerConnections();
|
||||
if (this.ActualNodes.size < MustCount) {
|
||||
this.NodesArr.sort(SortNodeBlockProcessCountGray)
|
||||
@@ -1251,16 +1261,16 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
continue;
|
||||
var DeltaTime = CurTime - Node.StartTimeConnect;
|
||||
if (!Node.Active && WasDoConnect < 5 && !Node.WasAddToConnect && DeltaTime >= Node.NextConnectDelta) {
|
||||
AddNodeInfo(Node, "To connect")
|
||||
global.AddNodeInfo(Node, "To connect")
|
||||
Node.WasAddToConnect = 1
|
||||
ArrConnect.push(Node)
|
||||
global.ArrConnect.push(Node)
|
||||
WasDoConnect++
|
||||
}
|
||||
}
|
||||
}
|
||||
while (this.ActualNodes.size > MustCount) {
|
||||
var Node = this.ActualNodes.max();
|
||||
AddNodeInfo(Node, "DeleteFromActive")
|
||||
global.AddNodeInfo(Node, "DeleteFromActive")
|
||||
this.DeleteNodeFromActive(Node)
|
||||
}
|
||||
}
|
||||
@@ -1278,14 +1288,14 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
var Node = arr[n];
|
||||
var DeltaTime = CurTime - Node.StartTimeConnect;
|
||||
if (!Node.Active && WasDoConnect < 5 && !Node.WasAddToConnect && DeltaTime >= Node.NextConnectDelta) {
|
||||
AddNodeInfo(Node, "To connect")
|
||||
global.AddNodeInfo(Node, "To connect")
|
||||
Node.WasAddToConnect = 1
|
||||
ArrConnect.push(Node)
|
||||
global.ArrConnect.push(Node)
|
||||
WasDoConnect++
|
||||
}
|
||||
DeltaTime = CurTime - Node.StartTimeHot
|
||||
if (Node.Active && !Node.Hot && WasDoHot < MIN_CONNECT_CHILD && DeltaTime > Node.NextHotDelta && !Node.GrayConnect) {
|
||||
AddNodeInfo(Node, "To hot level")
|
||||
if (Node.Active && !Node.Hot && WasDoHot < global.MIN_CONNECT_CHILD && DeltaTime > Node.NextHotDelta && !Node.GrayConnect) {
|
||||
global.AddNodeInfo(Node, "To hot level")
|
||||
this.StartAddLevelConnect(Node)
|
||||
Node.StartTimeHot = CurTime
|
||||
Node.NextHotDelta = Node.NextHotDelta * 2
|
||||
@@ -1299,21 +1309,21 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
}
|
||||
}
|
||||
ValueToXOR(StrType, Str) {
|
||||
var Arr1 = toUTF8Array(Str);
|
||||
var Arr1 = global.toUTF8Array(Str);
|
||||
var Arr2 = global.shaarr(this.CommonKey + ":" + this.addrStr + ":" + StrType);
|
||||
return global.WALLET.XORHash(Arr1, Arr2, 32);
|
||||
}
|
||||
ValueFromXOR(Node, StrType, Arr1) {
|
||||
var Arr2 = global.shaarr(this.CommonKey + ":" + Node.addrStr + ":" + StrType);
|
||||
var Arr = global.WALLET.XORHash(Arr1, Arr2, 32);
|
||||
var Str = Utf8ArrayToStr(Arr);
|
||||
var Str = global.Utf8ArrayToStr(Arr);
|
||||
return Str;
|
||||
}
|
||||
ValueToXORDevelop(StrName, Data, Type) {
|
||||
var Arr1;
|
||||
if (Type === "uint") {
|
||||
Arr1 = []
|
||||
WriteUintToArr(Arr1, Data)
|
||||
global.WriteUintToArr(Arr1, Data)
|
||||
}
|
||||
else
|
||||
if (Type === "hash") {
|
||||
@@ -1321,25 +1331,25 @@ module.exports = class CConnect extends require("./transfer-msg")
|
||||
}
|
||||
else
|
||||
if (Type === "str") {
|
||||
Arr1 = toUTF8Array(Data)
|
||||
Arr1 = global.toUTF8Array(Data)
|
||||
}
|
||||
var Arr2 = global.shaarr(this.КодДляРазработчикаХекс + ":" + StrName);
|
||||
return global.WALLET.XORHash(Arr1, Arr2, Arr1.length);
|
||||
}
|
||||
ValueFromXORDevelop(Node, StrName, Arr1, Type) {
|
||||
if (!Node.КодДляРазработчикаХекс) {
|
||||
Node.КодДляРазработчикаХекс = global.GetHexFromArr(WALLET.KeyPair.computeSecret(Node.PubKey, null))
|
||||
Node.КодДляРазработчикаХекс = global.GetHexFromArr(global.WALLET.KeyPair.computeSecret(Node.PubKey, null))
|
||||
}
|
||||
var Arr2 = global.shaarr(Node.КодДляРазработчикаХекс + ":" + StrName);
|
||||
var Arr = global.WALLET.XORHash(Arr1, Arr2, Arr1.length);
|
||||
if (Type === "uint") {
|
||||
return ReadUintFromArr(Arr, 0);
|
||||
return global.ReadUintFromArr(Arr, 0);
|
||||
}
|
||||
else
|
||||
if (Type === "hash") {
|
||||
return Arr;
|
||||
}
|
||||
var Str = Utf8ArrayToStr(Arr);
|
||||
var Str = global.Utf8ArrayToStr(Arr);
|
||||
return Str;
|
||||
}
|
||||
};
|
||||
@@ -1363,8 +1373,8 @@ function SortNodeBlockProcessCountGray(a, b) {
|
||||
};
|
||||
|
||||
function GetGrayServerConnections() {
|
||||
var Count = MAX_GRAY_CONNECTIONS_TO_SERVER;
|
||||
if (SERVER.LoadHistoryMode && global.SERVER.LoadHistoryMessage)
|
||||
var Count = global.MAX_GRAY_CONNECTIONS_TO_SERVER;
|
||||
if (global.SERVER.LoadHistoryMode && global.SERVER.LoadHistoryMessage)
|
||||
Count = Count * 10;
|
||||
return Count;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user