diff --git a/src/HTML/JS/coinlib.js b/src/HTML/JS/coinlib.js index 2479f46..84916aa 100644 --- a/src/HTML/JS/coinlib.js +++ b/src/HTML/JS/coinlib.js @@ -11,97 +11,82 @@ var MAX_SUM_TER = 1e9; var MAX_SUM_CENT = 1e9; -function ADD(Coin,Value2) -{ +function ADD(Coin, Value2) { Coin.SumCOIN += Value2.SumCOIN; Coin.SumCENT += Value2.SumCENT; - if(Coin.SumCENT >= MAX_SUM_CENT) - { + if (Coin.SumCENT >= MAX_SUM_CENT) { Coin.SumCENT -= MAX_SUM_CENT; Coin.SumCOIN++; } return true; }; -function SUB(Coin,Value2) -{ +function SUB(Coin, Value2) { Coin.SumCOIN -= Value2.SumCOIN; - if(Coin.SumCENT >= Value2.SumCENT) - { + if (Coin.SumCENT >= Value2.SumCENT) { Coin.SumCENT -= Value2.SumCENT; } - else - { + else { Coin.SumCENT = MAX_SUM_CENT + Coin.SumCENT - Value2.SumCENT; Coin.SumCOIN--; } - if(Coin.SumCOIN < 0) - { + if (Coin.SumCOIN < 0) { return false; } return true; }; -function DIV(Coin,Value) -{ +function DIV(Coin, Value) { Coin.SumCOIN = Coin.SumCOIN / Value; Coin.SumCENT = Math.floor(Coin.SumCENT / Value); var SumCOIN = Math.floor(Coin.SumCOIN); var SumCENT = Math.floor((Coin.SumCOIN - SumCOIN) * MAX_SUM_CENT); Coin.SumCOIN = SumCOIN; Coin.SumCENT = Coin.SumCENT + SumCENT; - if(Coin.SumCENT >= MAX_SUM_CENT) - { + if (Coin.SumCENT >= MAX_SUM_CENT) { Coin.SumCENT -= MAX_SUM_CENT; Coin.SumCOIN++; } return true; }; -function FLOAT_FROM_COIN(Coin) -{ +function FLOAT_FROM_COIN(Coin) { var Sum = Coin.SumCOIN + Coin.SumCENT / MAX_SUM_CENT; return Sum; }; -function STRING_FROM_COIN(Coin) -{ +function STRING_FROM_COIN(Coin) { var Sum = FLOAT_FROM_COIN(Coin); - return Sum.toLocaleString(undefined, {useGrouping:true, style:'decimal', maximumFractionDigits:9}); + return Sum.toLocaleString(undefined, { useGrouping: true, style: 'decimal', maximumFractionDigits: 9 }); }; -function COIN_FROM_FLOAT(Sum) -{ +function COIN_FROM_FLOAT(Sum) { var SumCOIN = Math.floor(Sum); var SumCENT = Math.floor((Sum - SumCOIN) * MAX_SUM_CENT); - var Coin = {SumCOIN:SumCOIN, SumCENT:SumCENT}; + var Coin = { SumCOIN: SumCOIN, SumCENT: SumCENT }; return Coin; }; -function COIN_FROM_FLOAT2(Sum) -{ +function COIN_FROM_FLOAT2(Sum) { var SumCOIN = Math.floor(Sum); var SumCENT = Math.floor(Sum * MAX_SUM_CENT - SumCOIN * MAX_SUM_CENT); - var Coin = {SumCOIN:SumCOIN, SumCENT:SumCENT}; + var Coin = { SumCOIN: SumCOIN, SumCENT: SumCENT }; return Coin; }; -if(typeof window === "object") +if (typeof window === "object") window.COIN_FROM_FLOAT = COIN_FROM_FLOAT2; -function ISZERO(Coin) -{ - if(Coin.SumCOIN === 0 && Coin.SumCENT === 0) +function ISZERO(Coin) { + if (Coin.SumCOIN === 0 && Coin.SumCENT === 0) return true; else return false; }; -function COIN_FROM_STRING(Str) -{ +function COIN_FROM_STRING(Str) { throw "TODO: COIN_FROM_STRING"; }; -if(typeof global === "object") -{ +if (typeof global === "object") { global.ADD = ADD; global.SUB = SUB; global.DIV = DIV; diff --git a/src/HTML/JS/wallet-node.js b/src/HTML/JS/wallet-node.js index 00d6a4b..5433d5d 100644 --- a/src/HTML/JS/wallet-node.js +++ b/src/HTML/JS/wallet-node.js @@ -9,40 +9,34 @@ */ -function SavePrivateKey() -{ +function SavePrivateKey() { var Select = document.getElementById("idTypeKey"); - if(Select.value === "brain") - { + if (Select.value === "brain") { ConvertToPrivateKey(); - return ; + return; } var Str = document.getElementById("idKeyNew").value; Str = Str.trim(); - if(Select.value === "private" && (Str.length !== 64 || !IsHexStr(Str))) - { + if (Select.value === "private" && (Str.length !== 64 || !IsHexStr(Str))) { SetError("Error: Length must 64 HEX chars. (Length=" + Str.length + ")"); - return ; + return; } else - if(Select.value !== "private" && (Str.length !== 66 || Str.substr(0, 1) !== "0" || !IsHexStr(Str))) - { + if (Select.value !== "private" && (Str.length !== 66 || Str.substr(0, 1) !== "0" || !IsHexStr(Str))) { SetError("Error: Length must 66 HEX chars. (Length=" + Str.length + ")"); - return ; + return; } - if(Select.value === "private" && PrivKeyStr !== Str) + if (Select.value === "private" && PrivKeyStr !== Str) SetStatus("Changed privat key"); else - if(Select.value === "public" && PubKeyStr !== Str) + if (Select.value === "public" && PubKeyStr !== Str) SetStatus("Changed public key"); - GetData("SetWalletKey", Str, function (Data) - { - if(Data && Data.result === 1) - { - if(Select.value === "private") + GetData("SetWalletKey", Str, function(Data) { + if (Data && Data.result === 1) { + if (Select.value === "private") SelectStyle("styleContrast1"); else - if(Select.value === "public") + if (Select.value === "public") SelectStyle("styleContrast2"); SetVisibleEditKeys(0); UpdatesData(); @@ -50,46 +44,36 @@ function SavePrivateKey() }); }; -function CreateCheckPoint() -{ - if(!ServerBlockNumDB || ServerBlockNumDB < 16) - { +function CreateCheckPoint() { + if (!ServerBlockNumDB || ServerBlockNumDB < 16) { SetError("Not set ServerBlockNumDB"); - return ; + return; } var BlockNum = ServerBlockNumDB - 10; SetCheckPoint(BlockNum); }; -function UseAutoCheckPoint() -{ +function UseAutoCheckPoint() { var Set = $("idUseAutoCheckPoint").checked; var Period = ParseNum($("idPeriodAutoCheckPoint").value); - GetData("SetAutoCheckPoint", {Set:Set, Period:Period}, function (Data) - { - if(Data) - { + GetData("SetAutoCheckPoint", { Set: Set, Period: Period }, function(Data) { + if (Data) { SetStatus(Data.text, !Data.result); } }); }; -function UseAutoCorrTime() -{ - GetData("SetAutoCorrTime", document.getElementById("idUseAutoCorrTime").checked, function (Data) - { - if(Data) - { +function UseAutoCorrTime() { + GetData("SetAutoCorrTime", document.getElementById("idUseAutoCorrTime").checked, function(Data) { + if (Data) { SetStatus(Data.text, !Data.result); } }); }; -function SetCodeVersionJSON() -{ +function SetCodeVersionJSON() { var Data = JSON.parse(JSON.stringify(CONFIG_DATA.CODE_VERSION)); - if(!Data.BlockNum) - { + if (!Data.BlockNum) { Data.LevelUpdate = 160; } Data.BlockNum = CONFIG_DATA.CurBlockNum; @@ -103,13 +87,11 @@ function SetCodeVersionJSON() document.getElementById("idDevService").value = Str; }; -function SetCorrTimeJSON() -{ +function SetCorrTimeJSON() { var AutoDelta = parseInt(document.getElementById("idDevValue").value); - var Data = {Num:CONFIG_DATA.CurBlockNum, bUse:1, bAddTime:1}; - if(AutoDelta < 0) - { - AutoDelta = - AutoDelta; + var Data = { Num: CONFIG_DATA.CurBlockNum, bUse: 1, bAddTime: 1 }; + if (AutoDelta < 0) { + AutoDelta = - AutoDelta; Data.bAddTime = 0; } Data.DeltaTime = 40; @@ -119,180 +101,140 @@ function SetCorrTimeJSON() document.getElementById("idDevService").value = Str; }; -function SetNetConstJSON() -{ +function SetNetConstJSON() { var Str = JSON.stringify(Data, "", 2); document.getElementById("idDevService").value = Str; - var Data = {MaxTrasactionLimit:CONFIG_DATA.MAX_TRANSACTION_LIMIT}; + var Data = { MaxTrasactionLimit: CONFIG_DATA.MAX_TRANSACTION_LIMIT }; var Str = JSON.stringify(Data, "", 2); document.getElementById("idDevService").value = Str; }; -function SetNewCodeVersion() -{ - try - { +function SetNewCodeVersion() { + try { var Data = JSON.parse(document.getElementById("idDevService").value); } - catch(e) - { + catch (e) { SetError("Error format setting data"); - return ; + return; } Data.addrArr = GetArrFromHex(Data.addrArr); - GetData("SetNewCodeVersion", Data, function (Data) - { - if(Data) - { + GetData("SetNewCodeVersion", Data, function(Data) { + if (Data) { SetStatus(Data.text, !Data.result); } }); }; -function StartTimeCorrect() -{ - try - { +function StartTimeCorrect() { + try { var Data = JSON.parse(document.getElementById("idDevService").value); } - catch(e) - { + catch (e) { SetError("Error format setting data"); - return ; + return; } - GetData("SetCheckDeltaTime", Data, function (Data) - { - if(Data) - { + GetData("SetCheckDeltaTime", Data, function(Data) { + if (Data) { SetStatus(Data.text, !Data.result); } }); }; -function StartNetConst() -{ - try - { +function StartNetConst() { + try { var Data = JSON.parse(document.getElementById("idDevService").value); } - catch(e) - { + catch (e) { SetError("Error format setting data"); - return ; + return; } - GetData("SetCheckNetConstant", Data, function (Data) - { - if(Data) - { + GetData("SetCheckNetConstant", Data, function(Data) { + if (Data) { SetStatus(Data.text, !Data.result); } }); }; -function RestartNode() -{ +function RestartNode() { GetData("RestartNode", {}); DoRestartWallet(); }; -function UseAutoUpdate() -{ - var Data = {USE_AUTO_UPDATE:document.getElementById("idAutoUpdate").checked, DoMining:1}; - GetData("SaveConstant", Data, function (Data) - { - if(Data && Data.result) - { +function UseAutoUpdate() { + var Data = { USE_AUTO_UPDATE: document.getElementById("idAutoUpdate").checked, DoMining: 1 }; + GetData("SaveConstant", Data, function(Data) { + if (Data && Data.result) { SetStatus("Save AutoUpdate: " + document.getElementById("idAutoUpdate").checked); } }); }; -function UseMining() -{ - if(!MiningAccount) - { +function UseMining() { + if (!MiningAccount) { SetError("Not set mining account"); - return ; + return; } - var Data = {USE_MINING:document.getElementById("idUseMining").checked, DoMining:1}; - GetData("SaveConstant", Data, function (Data) - { - if(Data && Data.result) - { + var Data = { USE_MINING: document.getElementById("idUseMining").checked, DoMining: 1 }; + GetData("SaveConstant", Data, function(Data) { + if (Data && Data.result) { SetStatus("Save Mining: " + document.getElementById("idUseMining").checked); } }); }; -function SetPercentMining() -{ - var Data = {POW_MAX_PERCENT:document.getElementById("idPercentMining").value}; - GetData("SaveConstant", Data, function (Data) - { - if(Data && Data.result) - { +function SetPercentMining() { + var Data = { POW_MAX_PERCENT: document.getElementById("idPercentMining").value }; + GetData("SaveConstant", Data, function(Data) { + if (Data && Data.result) { SetStatus("Save Mining percent: " + document.getElementById("idPercentMining").value + " %"); } }); }; -function MiningSets() -{ +function MiningSets() { var name = "edit_mining_set"; - if(IsVisibleBlock(name)) - { + if (IsVisibleBlock(name)) { SetVisibleBlock(name, false); } - else - { + else { SetVisibleBlock(name, true); document.getElementById("idMiningAccount").value = MiningAccount; document.getElementById("idMiningAccount").focus(); } }; -function SaveMiningSet(Value) -{ +function SaveMiningSet(Value) { SetVisibleBlock("edit_mining_set", false); - if(Value) - { + if (Value) { MiningAccount = Value; } - else - { + else { MiningAccount = ParseNum(document.getElementById("idMiningAccount").value); } - GetData("SetMining", MiningAccount, function (Data) - { + GetData("SetMining", MiningAccount, function(Data) { }); }; -function CancalMiningSet() -{ +function CancalMiningSet() { var name = "edit_mining_set"; SetVisibleBlock(name, false); }; var WasHistoryMaxNum; var WasLastNumSound = 0; -function CheckNewMoney() -{ - return ; - if(!$("idUseSoundHistory").checked) - return ; - if(WasHistoryMaxNum === HistoryMaxNum || !ServerBlockNumDB) - return ; +function CheckNewMoney() { + return; + if (!$("idUseSoundHistory").checked) + return; + if (WasHistoryMaxNum === HistoryMaxNum || !ServerBlockNumDB) + return; WasHistoryMaxNum = HistoryMaxNum; - GetData("GetHistoryAct", {StartNum:HistoryMaxNum - 40, CountNum:40}, function (Data) - { - if(Data && Data.result) - { + GetData("GetHistoryAct", { StartNum: HistoryMaxNum - 40, CountNum: 40 }, function(Data) { + if (Data && Data.result) { var arr = Data.arr; - for(var i = 0; i < arr.length; i++) - { + for (var i = 0; i < arr.length; i++) { var Item = arr[i]; - if(Item.Direct === "+" && Item.BlockNum > ServerBlockNumDB - 60 && Item.BlockNum < ServerBlockNumDB - 20 && Item.BlockNum > WasLastNumSound) - { + if (Item.Direct === "+" && Item.BlockNum > ServerBlockNumDB - 60 && Item.BlockNum < ServerBlockNumDB - 20 && Item.BlockNum > WasLastNumSound) { WasLastNumSound = Item.BlockNum; $("sound_coin").play(); } @@ -301,52 +243,41 @@ function CheckNewMoney() }); }; -function DoRestartWallet() -{ +function DoRestartWallet() { SetStatus("

Restarting program...

"); - if(!WasSetRestart) - { + if (!WasSetRestart) { WasSetRestart = 1; - setTimeout(function () - { + setTimeout(function() { window.location.reload(); }, 10 * 1000); } }; -function SetArrLog(arr) -{ +function SetArrLog(arr) { var Str = ""; var bFindAccount = 0; - for(var i = 0; i < arr.length; i++) - { + for (var i = 0; i < arr.length; i++) { var Item = arr[i]; var tr_text = GetTransactionText(MapSendTransaction[Item.key], Item.key.substr(0, 16)); var info = Item.text; - if(tr_text) + if (tr_text) info += " (" + tr_text + ")"; - if(Item.final) - { + if (Item.final) { var TR = MapSendTransaction[Item.key]; - if(TR) - { - if(Item.text.indexOf("Add to blockchain") >= 0) - { - if(TR.bFindAcc) - { + if (TR) { + if (Item.text.indexOf("Add to blockchain") >= 0) { + if (TR.bFindAcc) { bFindAccount = 1; TR.bFindAcc = 0; } - if(TR.Run) - { + if (TR.Run) { TR.Run(TR); TR.Run = undefined; } } } var Account = MapCheckTransaction[Item.key]; - if(Account) - { + if (Account) { delete MapCheckTransaction[Item.key]; Account.NextSendTime = 0; } @@ -355,39 +286,31 @@ function SetArrLog(arr) } SetStatusFromServer(Str); CheckSending(); - if(bFindAccount) - { + if (bFindAccount) { FindMyAccounts(); } }; -function SetAutoMining() -{ - setTimeout(function () - { +function SetAutoMining() { + setTimeout(function() { var Select = $("idAccount"); - if(Select.options.length) - { + if (Select.options.length) { SaveMiningSet(Select.options[Select.options.length - 1].value); } }, 100); }; -function ViewNetworkMode() -{ - if(IsVisibleBlock('idNetworkView')) - { +function ViewNetworkMode() { + if (IsVisibleBlock('idNetworkView')) { SetVisibleBlock('idNetworkView', false); } - else - { + else { SetVisibleBlock('idNetworkView', true); var Mode = CONFIG_DATA.CONSTANTS.NET_WORK_MODE; - if(!Mode) - { + if (!Mode) { Mode = {}; Mode.UseDirectIP = true; - if(INTERNET_IP_FROM_STUN) + if (INTERNET_IP_FROM_STUN) Mode.ip = INTERNET_IP_FROM_STUN; else Mode.ip = SERVER_IP; @@ -396,146 +319,120 @@ function ViewNetworkMode() document.getElementById("idUseDirectIP").checked = Mode.UseDirectIP; document.getElementById("idIP").value = Mode.ip; document.getElementById("idPort").value = Mode.port; - if(!Mode.NodeWhiteList) + if (!Mode.NodeWhiteList) Mode.NodeWhiteList = ""; document.getElementById("idNodeWhiteList").value = Mode.NodeWhiteList; } }; -function SetNetworkParams(bRestart) -{ +function SetNetworkParams(bRestart) { var Mode = {}; Mode.UseDirectIP = document.getElementById("idUseDirectIP").checked; Mode.ip = document.getElementById("idIP").value; Mode.port = ParseNum(document.getElementById("idPort").value); Mode.NodeWhiteList = document.getElementById("idNodeWhiteList").value; Mode.DoRestartNode = bRestart; - GetData("SetNetMode", Mode, function (Data) - { - if(Data && Data.result) - { + GetData("SetNetMode", Mode, function(Data) { + if (Data && Data.result) { SetStatus("Set net work params OK"); SetVisibleBlock('idNetworkView', false); } }); - if(bRestart) + if (bRestart) DoRestartWallet(); }; -function ViewConstant() -{ - if(IsVisibleBlock('idConstantView')) - { +function ViewConstant() { + if (IsVisibleBlock('idConstantView')) { SetVisibleBlock('idConstantView', false); } - else - { + else { SetVisibleBlock('idConstantView', true); document.getElementById("idConstant").value = JSON.stringify(CONFIG_DATA.CONSTANTS, "", 2); } }; -function SaveConstant(bRestart) -{ - try - { +function SaveConstant(bRestart) { + try { var Data = JSON.parse(document.getElementById("idConstant").value); } - catch(e) - { + catch (e) { SetError("Error JSON format setting constant"); - return ; + return; } Data.DoRestartNode = bRestart; - GetData("SaveConstant", Data, function (Data) - { - if(Data && Data.result) - { + GetData("SaveConstant", Data, function(Data) { + if (Data && Data.result) { SetStatus("Save Constant OK"); SetVisibleBlock('idConstantView', false); } }); - if(bRestart) + if (bRestart) DoRestartWallet(); }; -function ViewRemoteParams() -{ - if(IsVisibleBlock('idRemoteView')) - { +function ViewRemoteParams() { + if (IsVisibleBlock('idRemoteView')) { SetVisibleBlock('idRemoteView', false); } - else - { + else { SetVisibleBlock('idRemoteView', true); - if(CONFIG_DATA.HTTPPort) + if (CONFIG_DATA.HTTPPort) document.getElementById("idHTTPPort").value = CONFIG_DATA.HTTPPort; document.getElementById("idHTTPPassword").value = CONFIG_DATA.HTTPPassword; } }; -function SetRemoteParams(bRestart) -{ +function SetRemoteParams(bRestart) { var PrevHTTPPassword = HTTPPassword; var HTTPPort = ParseNum(document.getElementById("idHTTPPort").value); var HTTPPassword = document.getElementById("idHTTPPassword").value; - GetData("SetHTTPParams", {HTTPPort:HTTPPort, HTTPPassword:HTTPPassword, DoRestartNode:bRestart}, function (Data) - { - if(!PrevHTTPPassword && HTTPPassword) + GetData("SetHTTPParams", { HTTPPort: HTTPPort, HTTPPassword: HTTPPassword, DoRestartNode: bRestart }, function(Data) { + if (!PrevHTTPPassword && HTTPPassword) window.location.reload(); - else - { + else { SetVisibleBlock('idRemoteView', false); SetStatus("Set HTTP params OK"); } }); - if(bRestart) + if (bRestart) DoRestartWallet(); }; -function RewriteAllTransactions() -{ +function RewriteAllTransactions() { DoBlockChainProcess("RewriteAllTransactions", "Rewrite all transactions", 0); }; -function RewriteTransactions() -{ +function RewriteTransactions() { DoBlockChainProcess("RewriteTransactions", "Rewrite transactions on last %1 blocks", 1); }; -function TruncateBlockChain() -{ +function TruncateBlockChain() { DoBlockChainProcess("TruncateBlockChain", "Truncate last %1 blocks", 1); }; -function ClearDataBase() -{ +function ClearDataBase() { DoBlockChainProcess("ClearDataBase", "Clear DataBase", 0); }; -function CleanChain() -{ +function CleanChain() { DoBlockChainProcess("CleanChain", "Clean chain on last %1 blocks", 1); }; -function DoBlockChainProcess(FuncName,Text,LastBlock) -{ +function DoBlockChainProcess(FuncName, Text, LastBlock) { SaveValues(); var Params = {}; - if(LastBlock) - { + if (LastBlock) { Params.BlockCount = ParseNum(document.getElementById("idBlockCount").value); Text = Text.replace("%1", Params.BlockCount); } var result = confirm(Text + "?"); - if(!result) - return ; + if (!result) + return; SetVisibleBlock("idServerBlock", 1); SetStatus("START: " + Text); - GetData(FuncName, Params, function (Data) - { - if(Data) - { + GetData(FuncName, Params, function(Data) { + if (Data) { SetStatus("FINISH: " + Text, !Data.result); } }); diff --git a/src/a.sh b/src/a.sh index e74c3d8..63f6ee1 100755 --- a/src/a.sh +++ b/src/a.sh @@ -4,3 +4,10 @@ DIST=ts for name in `ls *.${EXT}`; do mv $name ${name%.${EXT}}.${DIST} done +: Function; +global. + +BlockNumDB +RelayMode +LoadHistoryMessage +LastLoadedBlockNum \ No newline at end of file diff --git a/src/core/api/api-exchange.ts b/src/core/api/api-exchange.ts index b11574d..eab54be 100644 --- a/src/core/api/api-exchange.ts +++ b/src/core/api/api-exchange.ts @@ -15,7 +15,7 @@ global.HTTPCaller.CreateAccount = function(Params, response) { Type: global.TYPE_TRANSACTION_CREATE, Currency: Params.Currency, PubKey: global.GetArrFromHex(Params.PubKey), Description: Params.Name, Smart: Params.Smart, Adviser: 0, }; - var Body = global.BufLib.GetBufferFromObject(TR, global.global.FORMAT_CREATE, 1000, {}); + var Body = global.BufLib.GetBufferFromObject(TR, global.FORMAT_CREATE, 1000, {}); return { result: 1 }; } return { result: 0 }; diff --git a/src/core/base.ts b/src/core/base.ts index 246feb0..4923996 100644 --- a/src/core/base.ts +++ b/src/core/base.ts @@ -9,18 +9,34 @@ */ "use strict"; -require("./library.js"); -require("./crypto-library"); -require("./terahashmining"); +import "./library" +import "./crypto-library" +import "./terahashmining" import * as crypto from 'crypto'; -const os = require('os'); +import * as os from 'os' + global.glStopNode = false; const MAX_TIME_NETWORK_TRANSPORT = 1 * 1000; var GlSumUser; var GlSumSys; var GlSumIdle; global.CountAllNode = 0; -module.exports = class CCommon importasdasd { +module.exports = class CCommon { + VirtualMode + KeyPair + PubKeyType + addrArr + addrStr + HashDBArr + ServerSign + MetaMap1 + MetaMap2 + CheckName + NodesArr + CurrentBlockNum + ReadBlockHeaderDB + GetActualNodes + BlockNumDB constructor(SetKeyPair, RunIP, RunPort, UseRNDHeader, bVirtual) { global.SERVER = this this.VirtualMode = bVirtual @@ -29,7 +45,7 @@ module.exports = class CCommon importasdasd { this.PubKeyType = PubKey[0] this.addrArr = PubKey.slice(1) this.addrStr = global.GetHexFromArr(this.addrArr) - this.HashDBArr = shaarr2(this.KeyPair.getPrivateKey(), [0, 0, 0, 0, 0, 0, 0, 1]) + this.HashDBArr = global.shaarr2(this.KeyPair.getPrivateKey(), [0, 0, 0, 0, 0, 0, 0, 1]) this.ServerSign = [] } AddStatOnTimer() { @@ -37,10 +53,10 @@ module.exports = class CCommon importasdasd { var CurTime = global.GetCurrentTime() - 0; for (var i = 0; i < this.NodesArr.length; i++) { var Item = this.NodesArr[i]; - if (Item.LastTime && (CurTime - Item.LastTime) < NODES_DELTA_CALC_HOUR * 3600 * 1000) + if (Item.LastTime && (CurTime - Item.LastTime) < global.NODES_DELTA_CALC_HOUR * 3600 * 1000) CountAll++ else - if (Item.LastTimeGetNode && (CurTime - Item.LastTimeGetNode) < NODES_DELTA_CALC_HOUR * 3600 * 1000) + if (Item.LastTimeGetNode && (CurTime - Item.LastTimeGetNode) < global.NODES_DELTA_CALC_HOUR * 3600 * 1000) CountAll++ } global.CountAllNode = CountAll @@ -52,9 +68,9 @@ module.exports = class CCommon importasdasd { global.ADD_TO_STAT("MAX:DELTA_TX", Delta) } var bHasCP = 0; - if (CHECK_POINT.BlockNum) { - var Block = this.ReadBlockHeaderDB(CHECK_POINT.BlockNum); - if (Block && global.CompareArr(CHECK_POINT.Hash, Block.Hash) === 0) + if (global.CHECK_POINT.BlockNum) { + var Block = this.ReadBlockHeaderDB(global.CHECK_POINT.BlockNum); + if (Block && global.CompareArr(global.CHECK_POINT.Hash, Block.Hash) === 0) bHasCP = 1 } var MinVer = global.MIN_VER_STAT; @@ -73,7 +89,7 @@ module.exports = class CCommon importasdasd { var INFO = Node.INFO; if (!INFO) INFO = {} - if (bHasCP && CHECK_POINT.BlockNum && INFO.CheckPointHashDB && global.CompareArr(CHECK_POINT.Hash, INFO.CheckPointHashDB) === 0) { + if (bHasCP && global.CHECK_POINT.BlockNum && INFO.CheckPointHashDB && global.CompareArr(global.CHECK_POINT.Hash, INFO.CheckPointHashDB) === 0) { CountCP++ } if (INFO.LoadHistoryMode) @@ -118,7 +134,7 @@ module.exports = class CCommon importasdasd { global.ADD_TO_STAT("MAX:MIN_VERSION", CountVer) global.ADD_TO_STAT("MAX:STOP_GET", CountStop) global.ADD_TO_STAT("MAX:AUTOCORRECT", CountAutoCorrectTime) - global.ADD_TO_STAT("MAX:TIME_DELTA", DELTA_CURRENT_TIME) + global.ADD_TO_STAT("MAX:TIME_DELTA", global.DELTA_CURRENT_TIME) if (!Count) Count = 1 if (!CountHot) @@ -202,7 +218,7 @@ class SMemBuffer { if (typeof Arr === "number" || typeof Arr === "string") { return Arr; } else { - return GetHexFromAddres(Arr); + return global.GetHexFromAddres(Arr); } throw "NOT RET!"; } @@ -229,7 +245,7 @@ class SMemBuffer { this.MetaMap1[Key] = Value } ShiftMapDirect() { - if (glStopNode) + if (global.glStopNode) return; if (this.CheckName) { var Count = 0; @@ -249,6 +265,10 @@ class SMemBuffer { } }; class STreeBuffer { + KeyType + MetaTree1 + MetaTree2 + CheckName constructor(MaxTime, CompareFunction?, KeyType?, CheckName?) { this.KeyType = KeyType this.MetaTree1 = new RBTree(CompareFunction) @@ -364,9 +384,9 @@ function TestCreateTr() { var StartData = Date.now(); var nonce = CreateHashBodyPOWInnerMinPower(Body, 1000, 17); var Time = process.hrtime(startTime); - var power = GetPowPower(shaarr(Body)); + var power = global.GetPowPower(global.shaarr(Body)); var deltaTime = (Time[0] * 1000 + Time[1] / 1e6) / 1000; - var DeltaData = (new Date() - StartData) / 1000; + var DeltaData = ((new Date() as any) - StartData) / 1000; global.ToLog("power=" + power + " nonce=" + nonce + " TIME=" + deltaTime + " sec" + " DeltaData=" + DeltaData + " sec"); return { time1: deltaTime, time2: DeltaData }; }; @@ -381,7 +401,7 @@ function CreateHashBodyPOWInnerMinPower(arr, BlockNum, MinPow) { var nonce = 0; while (1) { var arrhash = CreateHashBody(arr, BlockNum, nonce); - var power = GetPowPower(arrhash); + var power = global.GetPowPower(arrhash); if (power >= MinPow) { return nonce; } diff --git a/src/core/block-exchange.ts b/src/core/block-exchange.ts index 149b353..38c145c 100644 --- a/src/core/block-exchange.ts +++ b/src/core/block-exchange.ts @@ -15,10 +15,10 @@ const TX_PROCESS_TIME = 100; const TX_DELTA_PROCESS_TIME = 300; global.CAN_START = false; global.StrWarn = ""; -global.SUM_LIST_LENGTH = 2 * BLOCK_PROCESSING_LENGTH; -global.CONSENSUS_TIK_TIME = CONSENSUS_PERIOD_TIME / 10; -global.CONSENSUS_CHECK_TIME = CONSENSUS_PERIOD_TIME / 20; -const PERIOD_FOR_NEXT_SEND = CONSENSUS_TIK_TIME * 3; +global.SUM_LIST_LENGTH = 2 * global.BLOCK_PROCESSING_LENGTH; +global.CONSENSUS_TIK_TIME = global.CONSENSUS_PERIOD_TIME / 10; +global.CONSENSUS_CHECK_TIME = global.CONSENSUS_PERIOD_TIME / 20; +const PERIOD_FOR_NEXT_SEND = global.CONSENSUS_TIK_TIME * 3; global.BLOCK_DELTA_ACTIVATE = 0; global.TIME_END_EXCHANGE = - 3; global.TIME_START_POW = - 4; @@ -40,47 +40,53 @@ var FORMAT_DATA_TRANSFER = "{\ const WorkStructSend = {}; module.exports = class CConsensus extends require("./block-loader") { + CurrentBlockNum + SendBlockID + RelayMode + TreeSendPacket + idBlockChainTimer + OwnBlockCount constructor(SetKeyPair, RunIP, RunPort, UseRNDHeader, bVirtual) { super(SetKeyPair, RunIP, RunPort, UseRNDHeader, bVirtual) this.CurrentBlockNum = 0 this.SendBlockID = 0 this.RelayMode = false - this.TreeSendPacket = new RBTree(CompareItemHash) + this.TreeSendPacket = new RBTree(global.CompareItemHash) if (!global.ADDRLIST_MODE && !this.VirtualMode) { - this.idBlockChainTimer = setInterval(this.StartBlockChain.bind(this), CONSENSUS_PERIOD_TIME - 5) - setInterval(this.DoTransfer.bind(this), CONSENSUS_CHECK_TIME) + this.idBlockChainTimer = setInterval(this.StartBlockChain.bind(this), global.CONSENSUS_PERIOD_TIME - 5) + setInterval(this.DoTransfer.bind(this), global.CONSENSUS_CHECK_TIME) } } StartBlockChain() { this.OnStartSecond() - var CurTimeNum = global.GetCurrentTime() - CONSENSUS_PERIOD_TIME / 2; - var StartTimeNum = Math.floor((CurTimeNum + CONSENSUS_PERIOD_TIME) / CONSENSUS_PERIOD_TIME) * CONSENSUS_PERIOD_TIME; + var CurTimeNum = global.GetCurrentTime() - global.CONSENSUS_PERIOD_TIME / 2; + var StartTimeNum = Math.floor((CurTimeNum + global.CONSENSUS_PERIOD_TIME) / global.CONSENSUS_PERIOD_TIME) * global.CONSENSUS_PERIOD_TIME; var DeltaForStart = StartTimeNum - CurTimeNum; - if (DeltaForStart < (CONSENSUS_PERIOD_TIME - 5)) { + if (DeltaForStart < (global.CONSENSUS_PERIOD_TIME - 5)) { var self = this; if (self.idBlockChainTimer) clearInterval(self.idBlockChainTimer) self.idBlockChainTimer = 0 setTimeout(function() { - self.idBlockChainTimer = setInterval(self.StartBlockChain.bind(self), CONSENSUS_PERIOD_TIME) + self.idBlockChainTimer = setInterval(self.StartBlockChain.bind(self), global.CONSENSUS_PERIOD_TIME) self.OnStartSecond() }, DeltaForStart) } } OnStartSecond() { - PrepareStatEverySecond() + global.PrepareStatEverySecond() this.AddStatOnTimer() this.DoBlockChain() } CreateBlockContext() { - var Context = {}; - Context.AddInfo = AddInfoBlock.bind(Context) + var Context: any = {}; + Context.AddInfo = global.AddInfoBlock.bind(Context) Context.Active = false Context.TransferFromAddr = {} Context.LevelsTransfer = [] Context.ErrRun = "" - Context.PowTxTree = new RBTree(CompareItemTimePow) - Context.PowTicketTree = new RBTree(CompareItemTimePow) + Context.PowTxTree = new RBTree(global.CompareItemTimePow) + Context.PowTicketTree = new RBTree(global.CompareItemTimePow) Context.bSave = false Context.PrevHash = undefined Context.TreeHash = undefined @@ -91,7 +97,7 @@ module.exports = class CConsensus extends require("./block-loader") Context.TrCount = 0 Context.TrDataPos = 0 Context.TrDataLen = 0 - Context.Info = "Create at:" + GetStrOnlyTimeUTC() + Context.Info = "Create at:" + global.GetStrOnlyTimeUTC() var Transfer; var TransferM2; var LocalLevel = 0; @@ -100,7 +106,7 @@ module.exports = class CConsensus extends require("./block-loader") var arr = Levels[L]; if (arr && arr.length > 0) { Transfer = { - LocalLevel: LocalLevel, TreeLevel: L, SendCount: 0, GetCount: 0, TransferNodes: {}, WasGet: false, WasSend: false, MustDeltaTime: CONSENSUS_TIK_TIME * (2 + MAX_LEVEL_SPECIALIZATION - L), + LocalLevel: LocalLevel, TreeLevel: L, SendCount: 0, GetCount: 0, TransferNodes: {}, WasGet: false, WasSend: false, MustDeltaTime: global.CONSENSUS_TIK_TIME * (2 + global.MAX_LEVEL_SPECIALIZATION - L), } LocalLevel++ Context.LevelsTransfer.push(Transfer) @@ -109,7 +115,7 @@ module.exports = class CConsensus extends require("./block-loader") var Node = arr[j]; var Addr = Node.addrStr; if (!Transfer.TransferNodes[Addr]) { - let Item = { Node: Node, SendCount: 0, GetCount: 0, addrStr: Addr, TreeLevel: L, GetTiming: 3 * CONSENSUS_PERIOD_TIME, }; + let Item = { Node: Node, SendCount: 0, GetCount: 0, addrStr: Addr, TreeLevel: L, GetTiming: 3 * global.CONSENSUS_PERIOD_TIME, }; Transfer.TransferNodes[Addr] = Item } Context.TransferFromAddr[Addr] = Transfer @@ -120,19 +126,19 @@ module.exports = class CConsensus extends require("./block-loader") return Context; } StartConsensus() { - if (!CAN_START) + if (!global.global.CAN_START) return; - var StartBlockNum = GetCurrentBlockNumByTime(); + var StartBlockNum = global.GetCurrentBlockNumByTime(); if (StartBlockNum < global.BLOCK_PROCESSING_LENGTH2) return; this.CurrentBlockNum = StartBlockNum - var Block0 = this.GetBlockContext(StartBlockNum - BLOCK_DELTA_ACTIVATE); + var Block0 = this.GetBlockContext(StartBlockNum - global.BLOCK_DELTA_ACTIVATE); if (!Block0.Active) { - AddInfoBlock(Block0, "Activate") + global.AddInfoBlock(Block0, "Activate") this.StartBlock(Block0) } else { - AddInfoBlock(Block0, "Was Active") + global.AddInfoBlock(Block0, "Was Active") } } TrToInfo(Block, Array, StrInfo) { @@ -140,9 +146,9 @@ module.exports = class CConsensus extends require("./block-loader") for (var i = 0; i < Array.length; i++) { var Item = Array[i]; this.CheckCreateTransactionObject(Item) - Str += this.GetStrFromHashShort(shaarr(Item.body)) + "(" + Item.body.length + ")," + Str += this.GetStrFromHashShort(global.shaarr(Item.body)) + "(" + Item.body.length + ")," } - AddInfoBlock(Block, "" + StrInfo + ": Arr=[" + Str + "]") + global.AddInfoBlock(Block, "" + StrInfo + ": Arr=[" + Str + "]") } TRANSFER(Info, CurTime) { var startTime = process.hrtime(); @@ -202,7 +208,7 @@ module.exports = class CConsensus extends require("./block-loader") } } } - ADD_TO_STAT_TIME("TRANSFER_MS", startTime) + global.ADD_TO_STAT_TIME("TRANSFER_MS", startTime) var Delta = Date.now() - this.StartLoadBlockTime; if (Delta > 10 * 1000 && Node.TransferCount > 10) { Node.BlockProcessCount++ @@ -211,19 +217,19 @@ module.exports = class CConsensus extends require("./block-loader") Node.TransferCount++ Node.LastTimeTransfer = global.GetCurrentTime() - 0 var Item = Transfer.TransferNodes[Key]; - Item.GetTiming = GetCurrentTime(Block.DELTA_CURRENT_TIME) - Block.StartTimeNum + Item.GetTiming = global.GetCurrentTime(Block.DELTA_CURRENT_TIME) - Block.StartTimeNum if (!Block.TransferNodesCount) Block.TransferNodesCount = 0 Block.TransferNodesCount++ } DoTransfer() { - if (glStopNode) + if (global.glStopNode) return; - if (!CAN_START) + if (!global.CAN_START) return; var MaxPOWList; var MaxSumList; - var start = this.CurrentBlockNum - BLOCK_PROCESSING_LENGTH; + var start = this.CurrentBlockNum - global.BLOCK_PROCESSING_LENGTH; var finish = this.GetLastCorrectBlockNum(); for (var b = start; b <= finish; b++) { var Block = this.GetBlock(b); @@ -257,7 +263,7 @@ module.exports = class CConsensus extends require("./block-loader") Transfer.WasSend = true var bNext = Transfer.WasGet; if (!bNext) { - var CurTimeNum = GetCurrentTime(Block.DELTA_CURRENT_TIME) - 0; + var CurTimeNum = global.GetCurrentTime(Block.DELTA_CURRENT_TIME) - 0; var DeltaTime = CurTimeNum - Block.StartTimeNum; if (DeltaTime > Transfer.MustDeltaTime) { bNext = true @@ -393,7 +399,7 @@ module.exports = class CConsensus extends require("./block-loader") if (this.CanSendTest()) Arr.push(Tr0) BufLength += Tr0.body.length - if (BufLength > MAX_BLOCK_SIZE) + if (BufLength > global.MAX_BLOCK_SIZE) break; } else { @@ -479,7 +485,7 @@ module.exports = class CConsensus extends require("./block-loader") } return 0; } - FilterArrForSendNode(Block, Node, ArrTx, bTt) { + FilterArrForSendNode(Block, Node, ArrTx, bTt?) { var Arr = []; for (var t = 0; t < ArrTx.length; t++) { var Tr = ArrTx[t]; @@ -521,7 +527,7 @@ module.exports = class CConsensus extends require("./block-loader") this.CheckTxExchange(Block, bSend) } } - CheckTxExchange(Block) { + CheckTxExchange(Block, b?) { return; if (Block.EndExchange) return; @@ -627,7 +633,7 @@ module.exports = class CConsensus extends require("./block-loader") "Version": 5, "BlockNum": Block.BlockNum, "Reserv1": 0, "MaxPOW": MaxPOWList, "Reserv2": 0, "BaseBlockNum": this.CurrentBlockNum - Block.BlockNum, "MaxSumID": MaxSumID, "BlockList": BlockList, "TicketArray": ArrTt, "TxArray": ArrTx, "NoSendTx": Node.NoSendTx, } - var BufWrite = global.BufLib.GetBufferFromObject(Data, FORMAT_DATA_TRANSFER, MAX_BLOCK_SIZE + 30000, WorkStructSend); + var BufWrite = global.BufLib.GetBufferFromObject(Data, FORMAT_DATA_TRANSFER, global.MAX_BLOCK_SIZE + 30000, WorkStructSend); return BufWrite; } static @@ -642,11 +648,11 @@ module.exports = class CConsensus extends require("./block-loader") var StrKey = this.GetStrFromHashShort(LoadHash); var StrHashWas = this.GetStrFromHashShort(Block.Hash); this.StartLoadBlockHeader(LoadHash, LoadBlockNum, "START OTHER:" + StrKey + " WAS:" + StrHashWas, false) - AddInfoBlock(Block, "REQ H: " + StrKey) + global.AddInfoBlock(Block, "REQ H: " + StrKey) } Block.CheckMaxPow = true } - AddToMaxPOW(Block, item, Node) { + AddToMaxPOW(Block, item, Node?) { if (Block && item) { if (!Block.MaxPOW) Block.MaxPOW = {} @@ -655,7 +661,7 @@ module.exports = class CConsensus extends require("./block-loader") return; item.BlockNum = Block.BlockNum item.PrevHash = Block.PrevHash - CalcHashBlockFromSeqAddr(item, Block.PrevHash, global.MINING_VERSION_NUM) + global.CalcHashBlockFromSeqAddr(item, Block.PrevHash, global.MINING_VERSION_NUM) if (POW.SeqHash === undefined || global.CompareArr(item.PowHash, POW.PowHash) < 0) { POW.AddrHash = item.AddrHash POW.Hash = item.Hash @@ -678,8 +684,8 @@ module.exports = class CConsensus extends require("./block-loader") if (wasLider) { var newLider = POW.MaxTree.min(); if (newLider !== wasLider) { - var Power = GetPowPower(newLider.PowHash); - AddInfoBlock(Block, "MaxPOW: " + Power) + var Power = global.GetPowPower(newLider.PowHash); + global.AddInfoBlock(Block, "MaxPOW: " + Power) } } } @@ -701,7 +707,7 @@ module.exports = class CConsensus extends require("./block-loader") GetMaxPOWList() { var arr = []; var start, finish; - start = this.CurrentBlockNum + TIME_START_SAVE - 2 + start = this.CurrentBlockNum + global.TIME_START_SAVE - 2 finish = this.CurrentBlockNum for (var b = start; b < finish; b++) { var Block = this.GetBlock(b); @@ -720,7 +726,7 @@ module.exports = class CConsensus extends require("./block-loader") ToMaxPOWList(Arr) { for (var i = 0; i < Arr.length; i++) { var item = Arr[i]; - if (item && item.BlockNum >= this.CurrentBlockNum - BLOCK_PROCESSING_LENGTH && item.BlockNum < this.CurrentBlockNum) { + if (item && item.BlockNum >= this.CurrentBlockNum - global.BLOCK_PROCESSING_LENGTH && item.BlockNum < this.CurrentBlockNum) { var Block = this.GetBlock(item.BlockNum); this.AddToMaxPOW(Block, item) } @@ -750,7 +756,7 @@ module.exports = class CConsensus extends require("./block-loader") var LoadHash = POW.SumHash; var StrKey = this.GetStrFromHashShort(LoadHash); if (this.StartLoadBlockHeader(LoadHash, LoadBlockNum, "START POW:" + POW.SumPow + ">" + SumPow + " SH:" + StrKey, true)) - AddInfoBlock(Block, "REQ SH: " + StrKey) + global.AddInfoBlock(Block, "REQ SH: " + StrKey) } Block.CheckMaxSum = true } @@ -764,7 +770,7 @@ module.exports = class CConsensus extends require("./block-loader") POW.SumPow = SumPow POW.SumHash = item.SumHash POW.SumList = item.SumList - AddInfoBlock(Block, "SumPow:" + POW.SumPow) + global.AddInfoBlock(Block, "SumPow:" + POW.SumPow) Block.CheckMaxSum = false } return SumPow; @@ -774,7 +780,7 @@ module.exports = class CConsensus extends require("./block-loader") GetMaxSumList() { var Arr = []; var start, finish; - start = this.CurrentBlockNum + TIME_START_LOAD - 2 + start = this.CurrentBlockNum + global.TIME_START_LOAD - 2 finish = this.CurrentBlockNum for (var b = start; b <= finish; b++) { var Block = this.GetBlock(b); @@ -788,7 +794,7 @@ module.exports = class CConsensus extends require("./block-loader") } ToMaxSumList(Arr) { var start, finish; - start = this.CurrentBlockNum + TIME_START_LOAD - 2 + start = this.CurrentBlockNum + global.TIME_START_LOAD - 2 finish = this.CurrentBlockNum for (var i = 0; i < Arr.length; i++) { var item = Arr[i]; @@ -803,7 +809,7 @@ module.exports = class CConsensus extends require("./block-loader") } GetBlockList(CurBlockNum) { var arr = []; - for (var b = CurBlockNum - SUM_LIST_LENGTH + 1; b <= CurBlockNum; b++) { + for (var b = CurBlockNum - global.SUM_LIST_LENGTH + 1; b <= CurBlockNum; b++) { var Block = this.GetBlock(b); if (Block && Block.bSave) { var item = { AddrHash: Block.AddrHash, SeqHash: Block.SeqHash, }; @@ -817,7 +823,7 @@ module.exports = class CConsensus extends require("./block-loader") } GetSumFromList(arr, CurBlockNum) { var SumPow = 0; - if (arr.length !== SUM_LIST_LENGTH) + if (arr.length !== global.SUM_LIST_LENGTH) return SumPow; var CountLoad = 0; var BlockNumStart = CurBlockNum - arr.length + 1; @@ -825,8 +831,8 @@ module.exports = class CConsensus extends require("./block-loader") var Item = arr[i]; if (Item) { Item.BlockNum = BlockNumStart + i - var Value = GetHashFromSeqAddr(Item.SeqHash, Item.AddrHash, Item.BlockNum, undefined, global.MINING_VERSION_NUM); - SumPow += GetPowPower(Value.PowHash) + var Value = global.GetHashFromSeqAddr(Item.SeqHash, Item.AddrHash, Item.BlockNum, undefined, global.MINING_VERSION_NUM); + SumPow += global.GetPowPower(Value.PowHash) Item.Hash3 = Value.Hash } else { @@ -844,7 +850,7 @@ module.exports = class CConsensus extends require("./block-loader") while ((Item = it.next()) !== null) { arr.push(Item) BufLength += Item.body.length - if (BufLength > MAX_BLOCK_SIZE) + if (BufLength > global.MAX_BLOCK_SIZE) break; } return arr; @@ -866,7 +872,7 @@ module.exports = class CConsensus extends require("./block-loader") } else { Tree.insert(Tr) - if (Tree.size > MAX_TRANSACTION_LIMIT) { + if (Tree.size > global.MAX_TRANSACTION_LIMIT) { var maxitem = Tree.max(); Tree.remove(maxitem) if (global.CompareArr(maxitem.HashPow, Tr.HashPow) === 0) @@ -886,7 +892,7 @@ module.exports = class CConsensus extends require("./block-loader") return null; } } - AddTrToBlockQuote(Block, Tr, bTTAdd) { + AddTrToBlockQuote(Block, Tr, bTTAdd?) { if (Block.PowTxTree) { var Res = this.IsValidTransaction(Tr, Block.BlockNum); if (Res >= 1) { @@ -907,8 +913,8 @@ module.exports = class CConsensus extends require("./block-loader") if (!Context || !Context.StartTimeNum) { Context = this.CreateBlockContext() Context.BlockNum = BlockNum - Context.DELTA_CURRENT_TIME = GetDeltaCurrentTime() - Context.StartTimeNum = (BlockNum - 1 + BLOCK_DELTA_ACTIVATE) * CONSENSUS_PERIOD_TIME + START_NETWORK_DATE + Context.DELTA_CURRENT_TIME = global.GetDeltaCurrentTime() + Context.StartTimeNum = (BlockNum - 1 + global.BLOCK_DELTA_ACTIVATE) * global.CONSENSUS_PERIOD_TIME + global.START_NETWORK_DATE this.BlockChain[BlockNum] = Context } if (!Context.TransferFromAddr) { @@ -921,7 +927,7 @@ module.exports = class CConsensus extends require("./block-loader") Block.Active = true } IsCorrectBlockNum(BlockNum) { - var start = this.CurrentBlockNum - BLOCK_PROCESSING_LENGTH; + var start = this.CurrentBlockNum - global.BLOCK_PROCESSING_LENGTH; var finish = this.GetLastCorrectBlockNum(); if (BlockNum < start || BlockNum > finish) { return false; @@ -971,23 +977,23 @@ module.exports = class CConsensus extends require("./block-loader") hashStr = Block.ErrRun.substr(0, 5) else if (Block && Block.TreeHash) - hashStr = "-" + GetHexFromAddres(Block.TreeHash).substr(0, 3) + "-" + hashStr = "-" + global.GetHexFromAddres(Block.TreeHash).substr(0, 3) + "-" } else if (Block && Block.TreeHash) { - hashStr = GetHexFromAddres(Block.TreeHash).substr(0, 5) + hashStr = global.GetHexFromAddres(Block.TreeHash).substr(0, 5) } Str = Str + "|" + (hashStr + " ").substr(0, 5) } Str = Str.substr(1) - ToInfo("" + finish + " -> " + Str + " " + DopStr) + global.ToInfo("" + finish + " -> " + Str + " " + DopStr) } PreparePOWHash(Block) { if (!Block.TreeHash) Block.TreeHash = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] var PrevHash = this.GetPrevHash(Block); if (!PrevHash) { - AddInfoBlock(Block, "-err prev hash-") + global.AddInfoBlock(Block, "-err prev hash-") return false; } Block.PrevHash = PrevHash @@ -996,7 +1002,7 @@ module.exports = class CConsensus extends require("./block-loader") Block.Prepared = true if (global.USE_MINING && !Block.StartMining) { Block.StartMining = true - AddInfoBlock(Block, "-send mining-") + global.AddInfoBlock(Block, "-send mining-") global.SetCalcPOW(Block, "FastCalcBlock") } return true; @@ -1007,7 +1013,7 @@ module.exports = class CConsensus extends require("./block-loader") var Tr = arrTr[i]; arrHASH.push(Tr.HASH) } - var Tree = CalcMerklFromArray(BlockNum, arrHASH); + var Tree = global.CalcMerklFromArray(BlockNum, arrHASH); return Tree.Root; } CreateTreeHash(Block) { @@ -1018,10 +1024,10 @@ module.exports = class CConsensus extends require("./block-loader") return; var PrevBlock = this.GetBlock(Block.BlockNum - 1); if (PrevBlock && !PrevBlock.EndExchange && !PrevBlock.bSave) { - AddInfoBlock(Block, "Prev Not End Exchange") + global.AddInfoBlock(Block, "Prev Not End Exchange") return; } - AddInfoBlock(Block, "End Exchange,N=" + Block.TransferNodesCount) + global.AddInfoBlock(Block, "End Exchange,N=" + Block.TransferNodesCount) var arrContent = []; var arrHASH = []; var arrTr = this.GetArrayFromTxTree(Block); @@ -1031,7 +1037,7 @@ module.exports = class CConsensus extends require("./block-loader") arrContent.push(Tr.body) arrHASH.push(Tr.HASH) } - var Tree = CalcMerklFromArray(Block.BlockNum, arrHASH); + var Tree = global.CalcMerklFromArray(Block.BlockNum, arrHASH); Block.TreeHash = Tree.Root Block.arrContent = arrContent Block.TrCount = Block.arrContent.length @@ -1049,49 +1055,49 @@ module.exports = class CConsensus extends require("./block-loader") return; } if (global.CompareArr(BlockDB.Hash, Block.Hash) !== 0) { - AddInfoBlock(Block, "=ERR:WATCHDOG=") + global.AddInfoBlock(Block, "=ERR:WATCHDOG=") global.ToLog("#3 WatchdogSaved: Error Hash on Num=" + BlockNum) return; } if (global.CompareArr(BlockDB.SumHash, Block.SumHash) !== 0) { - AddInfoBlock(Block, "=ERR:WATCHDOG=") + global.AddInfoBlock(Block, "=ERR:WATCHDOG=") global.ToLog("#4 WatchdogSaved: Error SumHash on Num=" + BlockNum) return; } if (global.CompareArr(BlockDB.SeqHash, Block.SeqHash) !== 0) { - AddInfoBlock(Block, "=ERR:WATCHDOG=") + global.AddInfoBlock(Block, "=ERR:WATCHDOG=") global.ToLog("#5 WatchdogSaved: Error SeqHash on Num=" + BlockNum) return; } var PrevHash = this.GetPrevHash(Block); if (!PrevHash) { - AddInfoBlock(Block, "=ERR:WATCHDOG=") + global.AddInfoBlock(Block, "=ERR:WATCHDOG=") global.ToLog("#6 WatchdogSaved: Error PrevHash on Num=" + BlockNum) return; } var SeqHash = this.GetSeqHash(Block.BlockNum, PrevHash, Block.TreeHash); if (global.CompareArr(SeqHash, Block.SeqHash) !== 0) { - AddInfoBlock(Block, "=ERR:WATCHDOG=") + global.AddInfoBlock(Block, "=ERR:WATCHDOG=") global.ToLog("#7 WatchdogSaved: Error SeqHash on Num=" + BlockNum) return; } PrevHash = this.GetPrevHashDB(BlockDB) SeqHash = this.GetSeqHash(BlockDB.BlockNum, PrevHash, BlockDB.TreeHash) if (global.CompareArr(SeqHash, BlockDB.SeqHash) !== 0) { - AddInfoBlock(Block, "=ERR:WATCHDOG=") + global.AddInfoBlock(Block, "=ERR:WATCHDOG=") global.ToLog("#8 WatchdogSaved: Error SeqHash on Num=" + BlockNum) return; } } } DoBlockChain() { - if (glStopNode) + if (global.glStopNode) return; - if (!CAN_START) + if (!global.CAN_START) return; this.StartConsensus() var CURRENTBLOCKNUM = this.CurrentBlockNum; - if (GrayConnect()) { + if (global.GrayConnect()) { if (!this.LoadHistoryMode) this.StartSyncBlockchain(undefined, 1) return; @@ -1101,7 +1107,7 @@ module.exports = class CConsensus extends require("./block-loader") var bWasSave = false; var LoadBlockNum; var LoadHash; - var start_save = CURRENTBLOCKNUM + TIME_START_SAVE; + var start_save = CURRENTBLOCKNUM + global.TIME_START_SAVE; for (var BlockNum = CURRENTBLOCKNUM - global.BLOCK_PROCESSING_LENGTH2; BlockNum > global.BLOCK_PROCESSING_LENGTH2 && BlockNum < CURRENTBLOCKNUM; BlockNum++) { var Block = this.GetBlock(BlockNum); if (!Block) { @@ -1121,10 +1127,10 @@ module.exports = class CConsensus extends require("./block-loader") if (Block.bSave) { bWasSave = true if (Block.MaxSum && !Block.CheckMaxSum) { - AddInfoBlock(Block, "CheckMaxSum") + global.AddInfoBlock(Block, "CheckMaxSum") this.CheckMaxSum(Block) } - if (BlockNum <= CURRENTBLOCKNUM - BLOCK_PROCESSING_LENGTH * 4) { + if (BlockNum <= CURRENTBLOCKNUM - global.BLOCK_PROCESSING_LENGTH * 4) { Block.TransferFromAddr = undefined Block.LevelsTransfer = undefined Block.mapData = undefined @@ -1141,39 +1147,39 @@ module.exports = class CConsensus extends require("./block-loader") var PrevBlock = this.GetBlock(BlockNum - 1); if (!PrevBlock) { Block.HasErr = 1 - AddInfoBlock(Block, "!PrevBlock") + global.AddInfoBlock(Block, "!PrevBlock") continue; } - if (BlockNum >= CURRENTBLOCKNUM + TIME_END_EXCHANGE) { + if (BlockNum >= CURRENTBLOCKNUM + global.TIME_END_EXCHANGE) { if (!Block.Active) { - AddInfoBlock(Block, "WAIT ACTIVATE") + global.AddInfoBlock(Block, "WAIT ACTIVATE") continue; } else if (!Block.EndExchange) { - AddInfoBlock(Block, "WAIT EXCHANGE") + global.AddInfoBlock(Block, "WAIT EXCHANGE") continue; } } - if (BlockNum === CURRENTBLOCKNUM + TIME_START_POW || Block.EndExchange) + if (BlockNum === CURRENTBLOCKNUM + global.TIME_START_POW || Block.EndExchange) if (!Block.Prepared) { if (!Block.EndExchange) this.CreateTreeHash(Block) - AddInfoBlock(Block, "Start POW") + global.AddInfoBlock(Block, "Start POW") this.PreparePOWHash(Block) if (!Block.Prepared) - AddInfoBlock(Block, "!!Prepared") + global.AddInfoBlock(Block, "!!Prepared") continue; } if (!Block.EndExchange) { - AddInfoBlock(Block, "Not EndExchange") + global.AddInfoBlock(Block, "Not EndExchange") Block.HasErr = 1 Block.Prepared = 0 this.CreateTreeHash(Block) } if (!Block.Prepared) { Block.HasErr = 1 - AddInfoBlock(Block, "Not was Prepared") + global.AddInfoBlock(Block, "Not was Prepared") this.PreparePOWHash(Block) if (!Block.Prepared) continue; @@ -1187,53 +1193,53 @@ module.exports = class CConsensus extends require("./block-loader") var SeqHash = this.GetSeqHash(Block.BlockNum, PrevHash, Block.TreeHash); if (global.CompareArr(SeqHash, Block.SeqHash) !== 0) { Block.HasErr = 1 - AddInfoBlock(Block, "New fast pow") + global.AddInfoBlock(Block, "New fast pow") this.PreparePOWHash(Block) } if (Block.MaxPOW && Block.MaxPOW.SeqHash && Block.MaxPOW.AddrHash && Block.MaxPOW.LocalSeqHash && global.CompareArr(Block.SeqHash, Block.MaxPOW.LocalSeqHash) === 0) { if (global.CompareArr(Block.SeqHash, Block.MaxPOW.LocalSeqHash) === 0 && global.CompareArr(Block.MaxPOW.PowLocalHash, Block.PowHash) < 0) { Block.AddrHash = Block.MaxPOW.LocalAddrHash - CalcHashBlockFromSeqAddr(Block, Block.PrevHash, global.MINING_VERSION_NUM) - AddInfoBlock(Block, "->Local lider:" + GetPowPower(Block.PowHash)) + global.CalcHashBlockFromSeqAddr(Block, Block.PrevHash, global.MINING_VERSION_NUM) + global.AddInfoBlock(Block, "->Local lider:" + global.GetPowPower(Block.PowHash)) } if (global.CompareArr(Block.SeqHash, Block.MaxPOW.SeqHash) === 0 && global.CompareArr(Block.MaxPOW.AddrHash, Block.AddrHash) !== 0 && global.CompareArr(Block.MaxPOW.PowHash, Block.PowHash) < 0) { Block.AddrHash = Block.MaxPOW.AddrHash - CalcHashBlockFromSeqAddr(Block, Block.PrevHash, global.MINING_VERSION_NUM) - AddInfoBlock(Block, "->Max lider") + global.CalcHashBlockFromSeqAddr(Block, Block.PrevHash, global.MINING_VERSION_NUM) + global.AddInfoBlock(Block, "->Max lider") } } else { Block.HasErr = 1 - AddInfoBlock(Block, "ERROR MaxPOW") + global.AddInfoBlock(Block, "ERROR MaxPOW") } if (Block.MaxPOW && Block.MaxPOW.SeqHash && !Block.CheckMaxPow && !Block.CheckMaxSum && global.CompareArr(Block.SeqHash, Block.MaxPOW.SeqHash) !== 0) { - AddInfoBlock(Block, "CheckMaxPow") + global.AddInfoBlock(Block, "CheckMaxPow") this.CheckingMaxPowOther(Block) } if (BlockNum > start_save) continue; if (PrevBlock.bSave && this.BlockNumDB + 1 >= Block.BlockNum) { this.AddToStatBlockConfirmation(Block) - var Power = GetPowPower(Block.PowHash); + var Power = global.GetPowPower(Block.PowHash); if (this.WriteBlockDB(Block)) { if (Block.arrContent && Block.arrContent.length) global.ADD_TO_STAT("MAX:TRANSACTION_COUNT", Block.arrContent.length) - AddInfoBlock(Block, "SAVE:" + Power + " TH:" + this.GetStrFromHashShort(Block.TreeHash).substr(0, 4)) + global.AddInfoBlock(Block, "SAVE:" + Power + " TH:" + this.GetStrFromHashShort(Block.TreeHash).substr(0, 4)) } else { Block.HasErr = 1 - AddInfoBlock(Block, "ERROR WRITE DB") + global.AddInfoBlock(Block, "ERROR WRITE DB") } this.AddToMaxSum(Block, { SumHash: Block.SumHash, SumList: this.GetBlockList(Block.BlockNum), }) if (typeof global.RESYNC_CONDITION === "object") { if (!this.OwnBlockCount) this.OwnBlockCount = 0 - var Miner = ReadUintFromArr(Block.AddrHash, 0); - var MultK = RESYNC_CONDITION.K_POW; - var MaxBlocks = RESYNC_CONDITION.OWN_BLOCKS; - if (Miner === GENERATE_BLOCK_ACCOUNT) { + var Miner = global.ReadUintFromArr(Block.AddrHash, 0); + var MultK = global.RESYNC_CONDITION.K_POW; + var MaxBlocks = global.RESYNC_CONDITION.OWN_BLOCKS; + if (Miner === global.GENERATE_BLOCK_ACCOUNT) { this.OwnBlockCount++ if (this.OwnBlockCount >= MaxBlocks) { var PrevSumPow = this.GetAvgPowBlock(Block.BlockNum - 2 * MaxBlocks, MaxBlocks); @@ -1254,9 +1260,9 @@ module.exports = class CConsensus extends require("./block-loader") else { Block.HasErr = 1 if (!PrevBlock.bSave) - AddInfoBlock(Block, "Prev block not saved") + global.AddInfoBlock(Block, "Prev block not saved") else - AddInfoBlock(Block, "Low BlockNumDB") + global.AddInfoBlock(Block, "Low BlockNumDB") } } } @@ -1264,15 +1270,15 @@ module.exports = class CConsensus extends require("./block-loader") if (CURRENTBLOCKNUM + global.BLOCK_PROCESSING_LENGTH2 > MaxNumBlockDB) for (var BlockNum = CURRENTBLOCKNUM - global.BLOCK_PROCESSING_LENGTH2; BlockNum > global.BLOCK_PROCESSING_LENGTH2 && BlockNum < start_save; BlockNum++) { var Block = this.GetBlock(BlockNum); - if (Block && !Block.bSave && Block.TrCount && Block.TreeHash && !IsZeroArr(Block.TreeHash) && !Block.WasSaveDataTree) { + if (Block && !Block.bSave && Block.TrCount && Block.TreeHash && !global.IsZeroArr(Block.TreeHash) && !Block.WasSaveDataTree) { this.PreSaveDataTreeToDB(Block) Block.WasSaveDataTree = 1 - AddInfoBlock(Block, "*PRESAVE DATA TREE*") + global.AddInfoBlock(Block, "*PRESAVE DATA TREE*") global.ToLog("PRESAVE DATA: " + Block.BlockNum) } } this.RelayMode = !bWasSave - this.FREE_MEM_BLOCKS(CURRENTBLOCKNUM - BLOCK_COUNT_IN_MEMORY) + this.FREE_MEM_BLOCKS(CURRENTBLOCKNUM - global.BLOCK_COUNT_IN_MEMORY) } GetAvgPowBlock(StartNum, CountNum) { var Count = 0; @@ -1280,7 +1286,7 @@ module.exports = class CConsensus extends require("./block-loader") for (var Num = StartNum; Num < StartNum + CountNum; Num++) { var Block = this.GetBlock(Num); if (Block && Block.bSave) { - var Power = GetPowPower(Block.PowHash); + var Power = global.GetPowPower(Block.PowHash); SumPow += Power Count++ } @@ -1291,7 +1297,7 @@ module.exports = class CConsensus extends require("./block-loader") return SumPow / Count; } CreatePOWNew(Block) { - CreateHashMinimal(Block, GENERATE_BLOCK_ACCOUNT) + CreateHashMinimal(Block, global.GENERATE_BLOCK_ACCOUNT) this.AddToMaxPOW(Block, { SeqHash: Block.SeqHash, AddrHash: Block.AddrHash, PrevHash: Block.PrevHash, TreeHash: Block.TreeHash, }) @@ -1303,7 +1309,7 @@ module.exports = class CConsensus extends require("./block-loader") var BlockMem = this.BlockChain[CurNum]; if (BlockMem) { if (BlockMem.Prepared) { - AddInfoBlock(BlockMem, "-reset POW:" + RefBlockNum + "/" + bReload) + global.AddInfoBlock(BlockMem, "-reset POW:" + RefBlockNum + "/" + bReload) BlockMem.bSave = false BlockMem.Prepared = false BlockMem.StartMining = false @@ -1324,36 +1330,36 @@ module.exports = class CConsensus extends require("./block-loader") if (!BlockMining.StartMining || BlockMining.bSave) return; if (BlockMining && BlockMining.Hash && BlockMining.SeqHash && global.CompareArr(BlockMining.SeqHash, msg.SeqHash) === 0) { - var ValueOld = GetHashFromSeqAddr(BlockMining.SeqHash, BlockMining.AddrHash, BlockMining.BlockNum); - var ValueMsg = GetHashFromSeqAddr(msg.SeqHash, msg.AddrHash, BlockMining.BlockNum); + var ValueOld = global.GetHashFromSeqAddr(BlockMining.SeqHash, BlockMining.AddrHash, BlockMining.BlockNum); + var ValueMsg = global.GetHashFromSeqAddr(msg.SeqHash, msg.AddrHash, BlockMining.BlockNum); var bWas = 0; if (global.CompareArr(ValueOld.Hash1, ValueMsg.Hash1) > 0) { - var Nonce1 = ReadUintFromArr(msg.AddrHash, 12); - var DeltaNum1 = ReadUint16FromArr(msg.AddrHash, 24); - WriteUintToArrOnPos(BlockMining.AddrHash, Nonce1, 12) - WriteUint16ToArrOnPos(BlockMining.AddrHash, DeltaNum1, 24) + var Nonce1 = global.ReadUintFromArr(msg.AddrHash, 12); + var DeltaNum1 = global.ReadUint16FromArr(msg.AddrHash, 24); + global.WriteUintToArrOnPos(BlockMining.AddrHash, Nonce1, 12) + global.WriteUint16ToArrOnPos(BlockMining.AddrHash, DeltaNum1, 24) bWas += 1 } if (global.CompareArr(ValueOld.Hash2, ValueMsg.Hash2) > 0) { - var Nonce0 = ReadUintFromArr(msg.AddrHash, 6); - var Nonce2 = ReadUintFromArr(msg.AddrHash, 18); - var DeltaNum2 = ReadUint16FromArr(msg.AddrHash, 26); - WriteUintToArrOnPos(BlockMining.AddrHash, Nonce0, 6) - WriteUintToArrOnPos(BlockMining.AddrHash, Nonce2, 18) - WriteUint16ToArrOnPos(BlockMining.AddrHash, DeltaNum2, 26) + var Nonce0 = global.ReadUintFromArr(msg.AddrHash, 6); + var Nonce2 = global.ReadUintFromArr(msg.AddrHash, 18); + var DeltaNum2 = global.ReadUint16FromArr(msg.AddrHash, 26); + global.WriteUintToArrOnPos(BlockMining.AddrHash, Nonce0, 6) + global.WriteUintToArrOnPos(BlockMining.AddrHash, Nonce2, 18) + global.WriteUint16ToArrOnPos(BlockMining.AddrHash, DeltaNum2, 26) bWas += 2 } if (!bWas) return; - var ValueNew = GetHashFromSeqAddr(BlockMining.SeqHash, BlockMining.AddrHash, BlockMining.BlockNum); + var ValueNew = global.GetHashFromSeqAddr(BlockMining.SeqHash, BlockMining.AddrHash, BlockMining.BlockNum); BlockMining.Hash = ValueNew.Hash BlockMining.PowHash = ValueNew.PowHash - BlockMining.Power = GetPowPower(BlockMining.PowHash) + BlockMining.Power = global.GetPowPower(BlockMining.PowHash) global.ADD_TO_STAT("MAX:POWER", BlockMining.Power) - var Power = GetPowPower(BlockMining.PowHash); + var Power = global.GetPowPower(BlockMining.PowHash); var HashCount = Math.pow(2, Power); - ADD_HASH_RATE(HashCount) - AddInfoBlock(BlockMining, "Set POW: " + Power) + global.ADD_HASH_RATE(HashCount) + global.AddInfoBlock(BlockMining, "Set POW: " + Power) this.SetNoPOW(BlockMining.BlockNum + 8, 0, BlockMining.BlockNum) this.AddToMaxPOW(BlockMining, { SeqHash: BlockMining.SeqHash, AddrHash: BlockMining.AddrHash, PrevHash: BlockMining.PrevHash, TreeHash: BlockMining.TreeHash, @@ -1361,7 +1367,8 @@ module.exports = class CConsensus extends require("./block-loader") } } }; -global.TreeBlockBuf = new STreeBuffer(50 * 1000, CompareItemHashSimple, "string"); +let STreeBuffer = global.STreeBuffer; +global.TreeBlockBuf = new STreeBuffer(50 * 1000, global.CompareItemHashSimple, "string"); var PrevTimeIdle = 0; OnTimeIdle(); diff --git a/src/core/block-loader-const.ts b/src/core/block-loader-const.ts index 61ef3ad..98f5141 100644 --- a/src/core/block-loader-const.ts +++ b/src/core/block-loader-const.ts @@ -8,9 +8,19 @@ * Telegram: https://t.me/terafoundation */ -global.PERIOD_GET_BLOCK = 300, global.COUNT_HISTORY_BLOCKS_FOR_LOAD = 600, global.COUNT_BLOCKS_FOR_CHECK_POW = 50, global.MAX_DELTA_COUNT_SUM_FOR_LOAD = 10, -global.MAX_COUNT_CHAIN_LOAD = 120, global.PACKET_ALIVE_PERIOD = 4 * CONSENSUS_PERIOD_TIME, global.PACKET_ALIVE_PERIOD_NEXT_NODE = PACKET_ALIVE_PERIOD / 2, -global.MAX_BLOCK_SEND = 8, global.COUNT_TASK_FOR_NODE = 10, global.FORMAT_BLOCK_TRANSFER = "{ BlockNum:uint, TreeHash:hash, arrContent:[tr], }", -global.WRK_BLOCK_TRANSFER = {}, global.MAX_ACCOUNTS_TRANSFER = 1024, global.MAX_SMARTS_TRANSFER = 10, global.TEST_NETWORK && (global.MAX_ACCOUNTS_TRANSFER = 128, -global.MAX_SMARTS_TRANSFER = 10), global.FORMAT_REST_TRANSFER = "{ Result:uint, Version:uint, Arr:[arr200], ProofHash:hash, ProofArrL:, ProofArrR:, }", +global.PERIOD_GET_BLOCK = 300 +global.COUNT_HISTORY_BLOCKS_FOR_LOAD = 600 +global.COUNT_BLOCKS_FOR_CHECK_POW = 50 +global.MAX_DELTA_COUNT_SUM_FOR_LOAD = 10 +global.MAX_COUNT_CHAIN_LOAD = 120 +global.PACKET_ALIVE_PERIOD = 4 * global.CONSENSUS_PERIOD_TIME +global.PACKET_ALIVE_PERIOD_NEXT_NODE = global.PACKET_ALIVE_PERIOD / 2 +global.MAX_BLOCK_SEND = 8 +global.COUNT_TASK_FOR_NODE = 10 +global.FORMAT_BLOCK_TRANSFER = "{ BlockNum:uint, TreeHash:hash, arrContent:[tr], }" +global.WRK_BLOCK_TRANSFER = {} +global.MAX_ACCOUNTS_TRANSFER = 1024 +global.MAX_SMARTS_TRANSFER = 10 +global.TEST_NETWORK && (global.MAX_ACCOUNTS_TRANSFER = 128, global.MAX_SMARTS_TRANSFER = 10) +global.FORMAT_REST_TRANSFER = "{ Result:uint, Version:uint, Arr:[arr200], ProofHash:hash, ProofArrL:, ProofArrR:, }" global.FORMAT_SMART_TRANSFER = "{ Result:uint, Arr:[tr], }"; diff --git a/src/core/block-loader.ts b/src/core/block-loader.ts index 5578c4e..eda41ff 100644 --- a/src/core/block-loader.ts +++ b/src/core/block-loader.ts @@ -12,9 +12,26 @@ const fs = require("fs"); import * as crypto from 'crypto'; require('./block-loader-const'); -const STAT_BLOCK_LOAD_PERIOD = CONSENSUS_PERIOD_TIME / 5; +const STAT_BLOCK_LOAD_PERIOD = global.CONSENSUS_PERIOD_TIME / 5; module.exports = class CBlock extends require("./rest-loader.js") { + MapMapLoaded + BlockChain + ChainID + BlockID + TaskNodeIndex + LoadedChainList + LastChainLoad + StartLoadBlockTime + LoadHistoryMode + MapBlockBodyLoad + BlockNumDB + RelayMode + LoadHistoryMessage + LastLoadedBlockNum + LoadHistoryContext + LoadBlockStatNum + BADHashCount constructor(SetKeyPair, RunIP, RunPort, UseRNDHeader, bVirtual) { super(SetKeyPair, RunIP, RunPort, UseRNDHeader, bVirtual) this.MapMapLoaded = {} @@ -43,9 +60,9 @@ module.exports = class CBlock extends require("./rest-loader.js") GenesisBlockHeaderDB(Num) { if (Num < 0) return undefined; - var Block = { + var Block: any = { BlockNum: Num, TreeHash: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0], AddrHash: DEVELOP_PUB_KEY0, Hash: this.GetHashGenesis(Num), PowHash: this.GetHashGenesis(Num), PrevHash: [0, 0, 0, 0, + 0, 0, 0], AddrHash: global.DEVELOP_PUB_KEY0, Hash: this.GetHashGenesis(Num), PowHash: this.GetHashGenesis(Num), PrevHash: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], SeqHash: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], SumHash: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], Comment1: "GENESIS", Comment2: "", TrCount: 0, TrDataPos: 0, TrDataLen: 0, @@ -59,7 +76,7 @@ module.exports = class CBlock extends require("./rest-loader.js") this.FindStartBlockNum() if (this.UseTruncateBlockDB) this.TruncateBlockDB(this.UseTruncateBlockDB) - var CurNum = GetCurrentBlockNumByTime(); + var CurNum = global.GetCurrentBlockNumByTime(); if (CurNum <= this.BlockNumDB) { this.TruncateBlockDB(CurNum) } @@ -70,8 +87,8 @@ module.exports = class CBlock extends require("./rest-loader.js") } if (this.BlockNumDB < global.BLOCK_PROCESSING_LENGTH2) this.CreateGenesisBlocks() - if (fs.existsSync(GetCodePath("EXPERIMENTAL/_run.js"))) { - require(GetCodePath("EXPERIMENTAL/_run.js")).Run() + if (fs.existsSync(global.GetCodePath("EXPERIMENTAL/_run.js"))) { + require(global.GetCodePath("EXPERIMENTAL/_run.js")).Run() } this.LoadMemBlocksOnStart() } @@ -89,7 +106,7 @@ module.exports = class CBlock extends require("./rest-loader.js") var startPrev = Block.BlockNum - global.BLOCK_PROCESSING_LENGTH2; var Sum = 0; var arr = []; - for (var i = 0; i < BLOCK_PROCESSING_LENGTH; i++) { + for (var i = 0; i < global.BLOCK_PROCESSING_LENGTH; i++) { var PrevBlock = this.GetBlock(startPrev + i); if (PrevBlock && PrevBlock.bSave) { Sum = Sum + PrevBlock.SumPow @@ -99,13 +116,13 @@ module.exports = class CBlock extends require("./rest-loader.js") return undefined; } } - var PrevHash = CalcHashFromArray(arr, true); + var PrevHash = global.CalcHashFromArray(arr, true); return PrevHash; } GetPrevHashDB(Block) { var startPrev = Block.BlockNum - global.BLOCK_PROCESSING_LENGTH2; var arr = []; - for (var i = 0; i < BLOCK_PROCESSING_LENGTH; i++) { + for (var i = 0; i < global.BLOCK_PROCESSING_LENGTH; i++) { var num = startPrev + i; var PrevBlock = this.ReadBlockHeaderDB(num); if (!PrevBlock || !PrevBlock.bSave) { @@ -114,18 +131,18 @@ module.exports = class CBlock extends require("./rest-loader.js") } arr.push(PrevBlock.Hash) } - var PrevHash = CalcHashFromArray(arr, true); + var PrevHash = global.CalcHashFromArray(arr, true); return PrevHash; } - StartSyncBlockchain(Node, bSilent, bCheckPoint) { + StartSyncBlockchain(Node?, bSilent?, bCheckPoint?) { this.FREE_ALL_MEM_CHAINS() if (global.NO_HISTORY_MODE) { this.LoadHistoryMode = 0 return; } - if (global.CREATE_ON_START && !LOCAL_RUN) + if (global.CREATE_ON_START && !global.LOCAL_RUN) return; - if (!GrayConnect()) + if (!global.GrayConnect()) this.RelayMode = true else this.RelayMode = false @@ -137,7 +154,7 @@ module.exports = class CBlock extends require("./rest-loader.js") PrevBlockNum: - 1, Node: Node, BlockNum: this.BlockNumDB, MapSend: {}, Foward: 1, Pause: 0, DeltaBlockNum: 10, StartTimeHistory: Date.now(), MaxTimeOut: 30 * 1000 } - if (!bSilent && !bCheckPoint && REST_START_COUNT) { + if (!bSilent && !bCheckPoint && global.REST_START_COUNT) { this.CheckSyncRest() } if (!this.ActualNodes.size) { @@ -181,7 +198,7 @@ module.exports = class CBlock extends require("./rest-loader.js") Context.BlockNum = this.BlockNumDB } var BlockDB = this.ReadBlockHeaderDB(Context.BlockNum); - if (!BlockDB || this.BlockNumDB >= GetCurrentBlockNumByTime() - BLOCK_PROCESSING_LENGTH - 2) { + if (!BlockDB || this.BlockNumDB >= global.GetCurrentBlockNumByTime() - global.BLOCK_PROCESSING_LENGTH - 2) { this.LoadHistoryMode = false if (this.LoadHistoryMessage) global.ToLog("Finish synchronization") @@ -200,7 +217,7 @@ module.exports = class CBlock extends require("./rest-loader.js") if (global.NO_HISTORY_MODE) return; this.StartLoadBlockTime = Date.now() - if (Num > this.CurrentBlockNum + TIME_START_SAVE) { + if (Num > this.CurrentBlockNum + global.TIME_START_SAVE) { return; } bIsSum = bIsSum || false @@ -208,7 +225,7 @@ module.exports = class CBlock extends require("./rest-loader.js") if (Tree.find({ hash: LoadHash })) return false; Tree.insert({ hash: LoadHash }) - var chain = { + var chain: any = { id: 0, Count: 16, BlockNum: Num, IsSum: bIsSum, Hash: LoadHash, time: undefined, FindBlockDB: false, LoadDB: false, LoadCountDB: 0, LoadSumDB: 0, LoadSum: 0, ParentChain: undefined, RootChain: undefined, BlockNumStart: Num, HashStart: LoadHash, IsSumStart: bIsSum, BlockHead: undefined, MapSend: {}, Comment2: "", StopSend: false, Info: "", Error: false, @@ -232,7 +249,7 @@ module.exports = class CBlock extends require("./rest-loader.js") this.LoadedChainList.push(chain) } LoopChainLoad() { - if (glStopNode) + if (global.glStopNode) return; if (this.UseTruncateBlockDB) this.TruncateBlockDB(this.UseTruncateBlockDB) @@ -248,7 +265,7 @@ module.exports = class CBlock extends require("./rest-loader.js") this.SendLoadToBegin() } var CountStopSend = 0; - var min_num = this.CurrentBlockNum - MAX_COUNT_CHAIN_LOAD; + var min_num = this.CurrentBlockNum - global.MAX_COUNT_CHAIN_LOAD; var min_num_load = this.CurrentBlockNum; for (var i = 0; i < this.LoadedChainList.length; i++) { var chain = this.LoadedChainList[i]; @@ -263,7 +280,7 @@ module.exports = class CBlock extends require("./rest-loader.js") min_num_load = RootChain.BlockNum if (!chain.StopSend) { if (chain.BlockHead) { - if (chain.BlockNum < this.CurrentBlockNum - COUNT_HISTORY_BLOCKS_FOR_LOAD) { + if (chain.BlockNum < this.CurrentBlockNum - global.COUNT_HISTORY_BLOCKS_FOR_LOAD) { if (global.WATCHDOG_DEV) global.ToLog("Very long length of blocks to load history, stop chain with id=" + chain.id + " (" + chain.BlockNum + "-" + chain.BlockNumMax + ")") chain.StopSend = true @@ -302,17 +319,17 @@ module.exports = class CBlock extends require("./rest-loader.js") global.ADD_TO_STAT("MAX:LOADEDCHAINLIST", this.LoadedChainList.length) this.FREE_MEM_CHAINS(min_num_load) this.LastLoadedBlockNum = 0 - if (this.LoadedChainList.length > COUNT_HISTORY_BLOCKS_FOR_LOAD) { + if (this.LoadedChainList.length > global.COUNT_HISTORY_BLOCKS_FOR_LOAD) { if (global.WATCHDOG_DEV) global.ToLog("LoadedChainList>COUNT_HISTORY_BLOCKS_FOR_LOAD -> FREE_ALL_MEM_CHAINS") this.FREE_ALL_MEM_CHAINS() } } - GetNextNode(task, keyid, checktime, BlockNum) { - var CurTime = GetCurrentTime(0) - 0; + GetNextNode(task, keyid?, checktime?, BlockNum?) { + var CurTime = global.GetCurrentTime(0) - 0; if (checktime && task.time) { var Delta = CurTime - task.time; - if (Delta < PACKET_ALIVE_PERIOD_NEXT_NODE) + if (Delta < global.PACKET_ALIVE_PERIOD_NEXT_NODE) return { Result: false, timewait: true }; } task.time = undefined @@ -337,7 +354,7 @@ module.exports = class CBlock extends require("./rest-loader.js") Node = arr[this.TaskNodeIndex % arr.length] } if (Node.Active) { - if (!Node.INFO || !Node.INFO.WasPing || Node.StopGetBlock || (Node.INFO.CheckPointHashDB && CHECK_POINT.BlockNum && global.CompareArr(CHECK_POINT.Hash, + if (!Node.INFO || !Node.INFO.WasPing || Node.StopGetBlock || (Node.INFO.CheckPointHashDB && global.global.CHECK_POINT.BlockNum && global.CompareArr(global.global.CHECK_POINT.Hash, Node.INFO.CheckPointHashDB) !== 0)) { timewait = true continue; @@ -391,7 +408,7 @@ module.exports = class CBlock extends require("./rest-loader.js") var DopStr = ""; if (chain.IsSum) DopStr = "SUM:" - chain.AddInfo(chain.BlockNum + "/" + DopStr + this.GetStrFromHashShort(chain.Hash) + "->" + GetNodeStrPort(Node)) + chain.AddInfo(chain.BlockNum + "/" + DopStr + this.GetStrFromHashShort(chain.Hash) + "->" + global.GetNodeStrPort(Node)) return true; } return false; @@ -415,9 +432,9 @@ module.exports = class CBlock extends require("./rest-loader.js") }"; } GetBlockArrFromBuffer_Load(BufRead, Info) { - var BlockArr = GetBlockArrFromBuffer(BufRead, Info); + var BlockArr = global.GetBlockArrFromBuffer(BufRead, Info); if (BlockArr.length > 0 && BlockArr[0].BlockNum === global.BLOCK_PROCESSING_LENGTH2) - BlockArr.unshift(this.ReadBlockHeaderDB(BLOCK_PROCESSING_LENGTH2 - 1)) + BlockArr.unshift(this.ReadBlockHeaderDB(global.BLOCK_PROCESSING_LENGTH2 - 1)) return BlockArr; } RETBLOCKHEADER_FOWARD(Info, CurTime) { @@ -434,8 +451,8 @@ module.exports = class CBlock extends require("./rest-loader.js") var Block = arr[i]; if (!Block) return; - if (Block.BlockNum === CHECK_POINT.BlockNum && !IsZeroArr(CHECK_POINT.Hash)) { - if (global.CompareArr(CHECK_POINT.Hash, Block.Hash) !== 0) { + if (Block.BlockNum === global.CHECK_POINT.BlockNum && !global.IsZeroArr(global.CHECK_POINT.Hash)) { + if (global.CompareArr(global.CHECK_POINT.Hash, Block.Hash) !== 0) { break; } Context.FindCheckPoint = true @@ -450,7 +467,7 @@ module.exports = class CBlock extends require("./rest-loader.js") arr2.push(Block) } else - if (BlockDB && IsZeroArr(BlockDB.SumHash)) { + if (BlockDB && global.IsZeroArr(BlockDB.SumHash)) { bFindDB = 1 arr2.push(Block) } @@ -485,7 +502,7 @@ module.exports = class CBlock extends require("./rest-loader.js") } } RETBLOCKHEADER(Info, CurTime) { - Info.Node.NextPing = MIN_PERIOD_PING + Info.Node.NextPing = global.MIN_PERIOD_PING if (Info.Context.Foward) return this.RETBLOCKHEADER_FOWARD(Info, CurTime); var chain = Info.Context.Chain; @@ -496,10 +513,10 @@ module.exports = class CBlock extends require("./rest-loader.js") if (arr.length <= 1) { var keysend = "" + Info.Node.addrStr + ":" + chain.BlockNum; chain.MapSend[keysend] = 1 - chain.AddInfo("NO:" + GetNodeStrPort(Info.Node)) + chain.AddInfo("NO:" + global.GetNodeStrPort(Info.Node)) return; } - chain.AddInfo("L=" + arr.length + " from:" + GetNodeStrPort(Info.Node)) + chain.AddInfo("L=" + arr.length + " from:" + global.GetNodeStrPort(Info.Node)) var NextLoadBlock; var PrevBlock; for (var i = arr.length - 1; i >= 0; i--) { @@ -551,7 +568,7 @@ module.exports = class CBlock extends require("./rest-loader.js") MapBlockLoaded["TH:" + StrTreeHash] = Block var BlockDB = this.ReadBlockHeaderDB(Block.BlockNum); if (BlockDB) { - Block.Power = GetPowPower(Block.PowHash) + Block.Power = global.GetPowPower(Block.PowHash) chain.LoadCountDB++ chain.LoadSumDB += BlockDB.Power chain.LoadSum += Block.Power @@ -571,11 +588,11 @@ module.exports = class CBlock extends require("./rest-loader.js") if (NextLoadBlock && !NextLoadBlock.chain.StopSend) { if (arr.length >= chain.Count) { chain.Count = chain.Count * 2 - if (chain.Count > COUNT_BLOCKS_FOR_LOAD) - chain.Count = COUNT_BLOCKS_FOR_LOAD + if (chain.Count > global.COUNT_BLOCKS_FOR_LOAD) + chain.Count = global.COUNT_BLOCKS_FOR_LOAD } - if (chain.LoadCountDB >= COUNT_BLOCKS_FOR_CHECK_POW) { - if (chain.LoadSumDB - chain.LoadSum > MAX_DELTA_COUNT_SUM_FOR_LOAD) { + if (chain.LoadCountDB >= global.COUNT_BLOCKS_FOR_CHECK_POW) { + if (chain.LoadSumDB - chain.LoadSum > global.MAX_DELTA_COUNT_SUM_FOR_LOAD) { var Str = "ERR LOADED SUM POW chains: SumDB > Sum loaded from: " + NodeInfo(Info.Node); chain.StopSend = true chain.AddInfo(Str) @@ -611,7 +628,7 @@ module.exports = class CBlock extends require("./rest-loader.js") var PrevBlock = BlockMin; for (var i = 1; i < arr.length; i++) { var Block = arr[i]; - Block.Power = GetPowPower(Block.PowHash) + Block.Power = global.GetPowPower(Block.PowHash) Block.SumPow = PrevBlock.SumPow + Block.Power PrevBlock = Block } @@ -637,7 +654,7 @@ module.exports = class CBlock extends require("./rest-loader.js") } return arr; } - PrepareTransactionsForLoad(chain, arr, bNoSlice) { + PrepareTransactionsForLoad(chain, arr, bNoSlice?) { if (!bNoSlice) arr = arr.slice(1) chain.arr = arr @@ -648,7 +665,7 @@ module.exports = class CBlock extends require("./rest-loader.js") } } LoopBlockLoad() { - if (glStopNode) + if (global.glStopNode) return; var CountSend = 0; for (var num = 0; num < this.LoadedChainList.length; num++) { @@ -658,7 +675,7 @@ module.exports = class CBlock extends require("./rest-loader.js") for (var i = chain.CurNumArrLoad; i < chain.arr.length; i++) { Count++ var Block = chain.arr[i]; - if (!IsZeroArr(Block.TreeHash) && !Block.TreeEq && !Block.LoadDBFinaly) { + if (!global.IsZeroArr(Block.TreeHash) && !Block.TreeEq && !Block.LoadDBFinaly) { if (!Block.MapSend) { if (!Block.BodyLoad) { var BlockDB = this.ReadBlockHeaderDB(Block.BlockNum); @@ -676,7 +693,7 @@ module.exports = class CBlock extends require("./rest-loader.js") } if (this.SendBlockNext(Block)) { CountSend++ - if (CountSend >= MAX_BLOCK_SEND) + if (CountSend >= global.MAX_BLOCK_SEND) return; } } @@ -694,7 +711,7 @@ module.exports = class CBlock extends require("./rest-loader.js") CheckAndWriteLoadedChain(chain) { if (chain.CurNumArrLoad >= chain.arr.length) { var Block = chain.arr[chain.arr.length - 1]; - if (chain.WriteToDBAfterLoad || Block.BlockNum >= this.CurrentBlockNum + TIME_START_SAVE - 2) { + if (chain.WriteToDBAfterLoad || Block.BlockNum >= this.CurrentBlockNum + global.TIME_START_SAVE - 2) { var bAllLoaded = true; if (!chain.WriteToDBAfterLoad) { var cur_parent = chain.ParentChain; @@ -728,7 +745,7 @@ module.exports = class CBlock extends require("./rest-loader.js") var startTime = process.hrtime(); if (this.LoadHistoryMessage) global.ToLog("WRITE DATA Count:" + arr.length + " " + arr[0].BlockNum + "-" + arr[arr.length - 1].BlockNum, 2) - var CurrentBlockNum = GetCurrentBlockNumByTime(); + var CurrentBlockNum = global.GetCurrentBlockNumByTime(); var Block, FirstBlock; for (var i = 0; i < arr.length; i++) { Block = arr[i] @@ -752,12 +769,12 @@ module.exports = class CBlock extends require("./rest-loader.js") Res = this.WriteBlockDBFinaly(Block) } else { - if (IsZeroArr(Block.TreeHash)) { + if (global.IsZeroArr(Block.TreeHash)) { Res = this.WriteBlockDB(Block) } else { - ToLogTrace("IsZeroArr(Block.TreeHash)") - throw "IsZeroArr(Block.TreeHash)"; + global.ToLogTrace("global.IsZeroArr(Block.TreeHash)") + throw "global.IsZeroArr(Block.TreeHash)"; } } if (!Res) { @@ -766,7 +783,7 @@ module.exports = class CBlock extends require("./rest-loader.js") return; } Block.LoadDB = true - if (Block.BlockNum >= CurrentBlockNum - BLOCK_COUNT_IN_MEMORY) { + if (Block.BlockNum >= CurrentBlockNum - global.BLOCK_COUNT_IN_MEMORY) { this.CopyBlockToMem(Block) } else { @@ -776,7 +793,7 @@ module.exports = class CBlock extends require("./rest-loader.js") } var BlockMem = this.BlockChain[Block.BlockNum]; if (BlockMem) { - AddInfoBlock(BlockMem, "LOAD:" + GetPowPower(Block.PowHash) + " TH:" + this.GetStrFromHashShort(Block.TreeHash).substr(0, 4)) + global.AddInfoBlock(BlockMem, "LOAD:" + global.GetPowPower(Block.PowHash) + " TH:" + this.GetStrFromHashShort(Block.TreeHash).substr(0, 4)) } } if (Block && FirstBlock) { @@ -784,7 +801,7 @@ module.exports = class CBlock extends require("./rest-loader.js") this.SetNoPOW(CurNumStart, 1, FirstBlock.BlockNum) } this.FREE_ALL_MEM_CHAINS() - ADD_TO_STAT_TIME("WRITECHAIN_TO_DB_TIME", startTime) + global.ADD_TO_STAT_TIME("WRITECHAIN_TO_DB_TIME", startTime) } CopyBlock(Block, BlockDst) { BlockDst.BlockNum = Block.BlockNum @@ -834,12 +851,12 @@ module.exports = class CBlock extends require("./rest-loader.js") POW.SumPow = Block.SumPow } AddToStatBlockConfirmation(Block) { - if (Block.BlockNum > START_BLOCK_RUN + global.BLOCK_PROCESSING_LENGTH2) { + if (Block.BlockNum > global.START_BLOCK_RUN + global.BLOCK_PROCESSING_LENGTH2) { var TimeDelta = this.CurrentBlockNum - Block.BlockNum; global.ADD_TO_STAT("MAX:BlockConfirmation", TimeDelta) } else { - global.ADD_TO_STAT("MAX:BlockConfirmation", BLOCK_PROCESSING_LENGTH) + global.ADD_TO_STAT("MAX:BlockConfirmation", global.BLOCK_PROCESSING_LENGTH) } } SendBlockNext(Block) { @@ -854,9 +871,9 @@ module.exports = class CBlock extends require("./rest-loader.js") this.SendF(Node, { "Method": "GETBLOCK", "Context": Block.Context, "Data": { BlockNum: Block.BlockNum, TreeHash: Block.TreeHash } }) Node.SendBlockCount++ SendResult = 1 - AddInfoBlock(Block, "SendNext") + global.AddInfoBlock(Block, "SendNext") if (Block.chain) - Block.chain.AddInfo("QUERY BL:" + Block.BlockNum + "/" + this.GetStrFromHashShort(Block.TreeHash) + " TO:" + GetNodeStrPort(Node)) + Block.chain.AddInfo("QUERY BL:" + Block.BlockNum + "/" + this.GetStrFromHashShort(Block.TreeHash) + " TO:" + global.GetNodeStrPort(Node)) } else { if (!Ret.timewait) { @@ -867,7 +884,7 @@ module.exports = class CBlock extends require("./rest-loader.js") } return SendResult; } - ClearChains(DeleteChain, bShow) { + ClearChains(DeleteChain, bShow?) { if (!DeleteChain) { this.FREE_ALL_MEM_CHAINS() return this.LoadedChainList.length; @@ -899,7 +916,7 @@ module.exports = class CBlock extends require("./rest-loader.js") return; this.LoadBlockStatNum = TimeNum const PeriodSec = 5; - const Period = CONSENSUS_PERIOD_TIME / STAT_BLOCK_LOAD_PERIOD; + const Period = global.CONSENSUS_PERIOD_TIME / STAT_BLOCK_LOAD_PERIOD; const PeriodCount = PeriodSec * Period; var FreeGet = 64; var it = this.ActualNodes.iterator(), Node; @@ -940,41 +957,41 @@ module.exports = class CBlock extends require("./rest-loader.js") }"; } RETGETBLOCK(Info, CurTime) { - Info.Node.NextPing = MIN_PERIOD_PING + Info.Node.NextPing = global.MIN_PERIOD_PING var Block = Info.Context.Block; if (Block && !Block.TreeEq) { - 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 !== Block.BlockNum || global.CompareArr(Data.TreeHash, Block.TreeHash) !== 0) { this.SetBlockNOSendToNode(Block, Info.Node, "NO") return; } if (Block.chain) { - Block.chain.AddInfo("Load TR:" + Data.BlockNum + "/" + this.GetStrFromHashShort(Data.TreeHash) + " from:" + GetNodeStrPort(Info.Node)) - AddInfoBlock(Block, "LOAD TR OK") + Block.chain.AddInfo("Load TR:" + Data.BlockNum + "/" + this.GetStrFromHashShort(Data.TreeHash) + " from:" + global.GetNodeStrPort(Info.Node)) + global.AddInfoBlock(Block, "LOAD TR OK") } var arrContent = Data.arrContent; - var TreeHash = CalcTreeHashFromArrBody(Block.BlockNum, arrContent); + var TreeHash = global.CalcTreeHashFromArrBody(Block.BlockNum, arrContent); if (global.CompareArr(Block.TreeHash, TreeHash) !== 0) { global.ToLog("2. BAD CMP TreeHash block=" + Block.BlockNum + " from:" + NodeName(Info.Node) + " TreeHash=" + global.GetHexFromArr(TreeHash) + " BlockTreeHash=" + global.GetHexFromArr(Block.TreeHash)) this.SetBlockNOSendToNode(Block, Info.Node, "BAD CMP TreeHash") return; } - if (arrContent.length > 0 && Data.BlockNum % PERIOD_ACCOUNT_HASH === 0) { + if (arrContent.length > 0 && Data.BlockNum % global.PERIOD_ACCOUNT_HASH === 0) { var TR = arrContent[0]; - if (TR[0] === TYPE_TRANSACTION_ACC_HASH) { - if (!DApps.Accounts.TRCheckAccountHash(TR, Data.BlockNum)) { + if (TR[0] === global.TYPE_TRANSACTION_ACC_HASH) { + if (!global.DApps.Accounts.TRCheckAccountHash(TR, Data.BlockNum)) { if (!this.BADHashCount) this.BADHashCount = 0 this.BADHashCount++ global.ToLog("**** BAD ACCOUNT Hash in block=" + Block.BlockNum + " from:" + NodeName(Info.Node) + " ****") - global.ToLog("May be need to Rewrite transactions from: " + (Block.BlockNum - 2 * DELTA_BLOCK_ACCOUNT_HASH)) + global.ToLog("May be need to Rewrite transactions from: " + (Block.BlockNum - 2 * global.DELTA_BLOCK_ACCOUNT_HASH)) this.SetBlockNOSendToNode(Block, Info.Node, "BAD CMP ACC HASH") if (global.WATCHDOG_BADACCOUNT && this.BADHashCount > 60) { global.ToLog("Run WATCHDOG!") this.BADHashCount = 0 this.FREE_ALL_MEM_CHAINS() - this.SetTruncateBlockDB(Block.BlockNum - 5 * DELTA_BLOCK_ACCOUNT_HASH) + this.SetTruncateBlockDB(Block.BlockNum - 5 * global.DELTA_BLOCK_ACCOUNT_HASH) } else { } @@ -995,7 +1012,7 @@ module.exports = class CBlock extends require("./rest-loader.js") Block.Send = undefined global.ADD_TO_STAT("BLOCK_LOADED", 1) Info.Node.LoadBlockCount++ - if (GrayConnect()) + if (global.GrayConnect()) Info.Node.BlockProcessCount++ if (this.LoadHistoryMode) { var Context = this.LoadHistoryContext; @@ -1036,7 +1053,7 @@ module.exports = class CBlock extends require("./rest-loader.js") var keysend = "" + Node.addrStr + ":" + Str; Block.MapSend[keysend] = 1 if (Block.chain) - Block.chain.AddInfo("" + Block.BlockNum + " " + Str2 + "<-" + GetNodeStrPort(Node)) + Block.chain.AddInfo("" + Block.BlockNum + " " + Str2 + "<-" + global.GetNodeStrPort(Node)) } FindBlockInLoadedChain(BlockNum, TreeHash) { var StrTreeHash = global.GetHexFromArr(TreeHash); @@ -1050,25 +1067,25 @@ module.exports = class CBlock extends require("./rest-loader.js") CheckSeqHashDB(Block, StrError) { if (Block.BlockNum < global.BLOCK_PROCESSING_LENGTH2) return true; - var TreeHashTest = CalcTreeHashFromArrBody(Block.BlockNum, Block.arrContent); + var TreeHashTest = global.CalcTreeHashFromArrBody(Block.BlockNum, Block.arrContent); if (global.CompareArr(TreeHashTest, Block.TreeHash) !== 0) { var StrHex = global.GetHexFromArr(TreeHashTest); var StrHex0 = global.GetHexFromArr(Block.TreeHash); var Str = StrError + " #3 ERROR TREEHASH: " + Block.BlockNum + " Hex:" + StrHex0.substr(0, 12) + " != " + StrHex.substr(0, 12); if (global.WATCHDOG_DEV) - ToErrorTrace(Str) + global.ToErrorTrace(Str) else global.ToError(Str) return false; } var PrevHash = this.GetPrevHashDB(Block); var testSeqHash = this.GetSeqHash(Block.BlockNum, PrevHash, Block.TreeHash); - var TestValue = GetHashFromSeqAddr(testSeqHash, Block.AddrHash, Block.BlockNum, PrevHash); + var TestValue = global.GetHashFromSeqAddr(testSeqHash, Block.AddrHash, Block.BlockNum, PrevHash); if (global.CompareArr(TestValue.Hash, Block.Hash) !== 0) { var Str = StrError + " #2 ERROR HASH - block num: " + Block.BlockNum; if (global.WATCHDOG_DEV) - ToErrorTrace(Str) + global.ToErrorTrace(Str) else global.ToError(Str) return false; @@ -1089,10 +1106,10 @@ module.exports = class CBlock extends require("./rest-loader.js") global.ToLog("arr[" + i + "]=" + global.GetHexFromArr(arr[i])) } } - GetBlock(num, bToMem, bReadBody) { + GetBlock(num, bToMem?, bReadBody?) { if (bToMem === undefined) bToMem = true - if (num < this.CurrentBlockNum - BLOCK_COUNT_IN_MEMORY) + if (num < this.CurrentBlockNum - global.BLOCK_COUNT_IN_MEMORY) bToMem = false var Block = this.BlockChain[num]; if (!Block) { @@ -1109,7 +1126,7 @@ module.exports = class CBlock extends require("./rest-loader.js") GetMapLoaded(num) { if (num < 0) num = 0 - var index = Math.floor(num / BLOCK_COUNT_IN_MEMORY); + var index = Math.floor(num / global.BLOCK_COUNT_IN_MEMORY); var map = this.MapMapLoaded[index]; if (!map) { map = {} @@ -1129,19 +1146,19 @@ module.exports = class CBlock extends require("./rest-loader.js") } } FREE_MEM_CHAINS(NumMax) { - this.FREE_MEM_BLOCKS(NumMax - BLOCK_COUNT_IN_MEMORY) - var maxArrMap = Math.floor(NumMax / BLOCK_COUNT_IN_MEMORY) - 1; + this.FREE_MEM_BLOCKS(NumMax - global.BLOCK_COUNT_IN_MEMORY) + var maxArrMap = Math.floor(NumMax / global.BLOCK_COUNT_IN_MEMORY) - 1; if (maxArrMap >= 0) { var nWasCount = 0; for (var key in this.MapMapLoaded) - if (key < maxArrMap) { + if (key as any < maxArrMap) { nWasCount++ delete this.MapMapLoaded[key] } } } FREE_ALL_MEM_CHAINS() { - this.FREE_MEM_BLOCKS(this.BlockNumDB - BLOCK_COUNT_IN_MEMORY) + this.FREE_MEM_BLOCKS(this.BlockNumDB - global.BLOCK_COUNT_IN_MEMORY) for (var i = 0; i < this.LoadedChainList.length; i++) { var chain = this.LoadedChainList[i]; if (chain) { @@ -1155,7 +1172,9 @@ module.exports = class CBlock extends require("./rest-loader.js") } this.LoadedChainList = [] this.MapMapLoaded = {} + //@ts-ignore if (typeof gc === "function") + //@ts-ignore gc() } AddValueToHistory(typedata, val) { @@ -1169,7 +1188,7 @@ module.exports = class CBlock extends require("./rest-loader.js") GetHistoryTree(typedata) { var Tree = global.HistoryBlockBuf.LoadValue(typedata, 1); if (!Tree) { - Tree = new RBTree(CompareItemHash) + Tree = new RBTree(global.CompareItemHash) global.HistoryBlockBuf.SaveValue(typedata, Tree) } return Tree; @@ -1182,8 +1201,8 @@ module.exports = class CBlock extends require("./rest-loader.js") while (root_chain.RootChain) { Count++ root_chain = root_chain.RootChain - if (Count > MAX_COUNT_CHAIN_LOAD) { - TO_ERROR_LOG("BLOCK", 10, "Error COUNT GetRootChain") + if (Count > global.MAX_COUNT_CHAIN_LOAD) { + global.TO_ERROR_LOG("BLOCK", 10, "Error COUNT GetRootChain") global.SERVER.FREE_ALL_MEM_CHAINS() return undefined; } @@ -1200,10 +1219,10 @@ module.exports = class CBlock extends require("./rest-loader.js") }; chain.GetRootChain = GetRootChain.bind(chain) chain.GetFindDB = GetFindDB.bind(chain) - chain.AddInfo = AddInfoChain.bind(chain) + chain.AddInfo = global.AddInfoChain.bind(chain) } GetMemoryStamp(Str) { - return Str + ":##:" + Math.floor(this.CurrentBlockNum / BLOCK_COUNT_IN_MEMORY); + return Str + ":##:" + Math.floor(this.CurrentBlockNum / global.BLOCK_COUNT_IN_MEMORY); } GetStrFromHashShort(Hash) { var Str = global.GetHexFromArr(Hash); @@ -1255,7 +1274,7 @@ global.LoadBlockFromNetwork = function(Params, F) { global.SERVER.SendF(Node, { "Method": "GETBLOCK", "Data": { BlockNum: BlockNum, TreeHash: [] }, "Context": { F: function(Info) { - var Block = global.BufLib.GetObjectFromBuffer(Info.Data, FORMAT_BLOCK_TRANSFER, WRK_BLOCK_TRANSFER); + var Block = global.BufLib.GetObjectFromBuffer(Info.Data, global.FORMAT_BLOCK_TRANSFER, global.WRK_BLOCK_TRANSFER); Info.Data = undefined; if (!Block.BlockNum || Block.BlockNum !== Params.BlockNum) { global.ToLog("Error get BlockNum:" + Params.BlockNum + " from " + NodeName(Info.Node), 2); @@ -1281,4 +1300,4 @@ global.LoadBlockFromNetwork = function(Params, F) { F(1); } }; -global.HistoryBlockBuf = new STreeBuffer(HISTORY_BLOCK_COUNT * 1000, CompareItemHashSimple, "string"); +global.HistoryBlockBuf = new STreeBuffer(global.HISTORY_BLOCK_COUNT * 1000, global.CompareItemHashSimple, "string"); diff --git a/src/core/buffer.ts b/src/core/buffer.ts index 52a1bb0..c411884 100644 --- a/src/core/buffer.ts +++ b/src/core/buffer.ts @@ -9,30 +9,26 @@ */ -function Write(e,r,t,n,l) -{ - if(!(e.len >= e.length)) - { - if("number" == typeof t) - throw ToLogTrace("ERRR StringFormat "), "ERR!!"; +function Write(e, r, t, n?, l?) { + if (!(e.len >= e.length)) { + if ("number" == typeof t) + throw global.ToLogTrace("ERRR StringFormat "), "ERR!!"; var a = t; - if("buffer" === a.substr(0, 6) && 6 < a.length) + if ("buffer" === a.substr(0, 6) && 6 < a.length) n = parseInt(a.substr(6)), a = "buffer"; else - if("arr" === a.substr(0, 3) && 3 < a.length) + if ("arr" === a.substr(0, 3) && 3 < a.length) n = parseInt(a.substr(3)), a = "arr"; else - if("str" === a.substr(0, 3) && 3 < a.length) - { + if ("str" === a.substr(0, 3) && 3 < a.length) { var i = parseInt(a.substr(3)); return r && e.write(r, e.len, i), void (e.len += i); } - switch(a) - { + switch (a) { case "str": - var f = toUTF8Array(r); + var f = global.toUTF8Array(r); 65535 < (i = f.length) && (i = 0), e[e.len] = 255 & i, e[e.len + 1] = i >>> 8 & 255, e.len += 2; - for(var s = 0; s < i; s++) + for (var s = 0; s < i; s++) e[e.len + s] = f[s]; e.len += i; break; @@ -58,39 +54,39 @@ function Write(e,r,t,n,l) case "addres": case "hash": i = r ? Math.min(32, r.length) : 0; - for(s = 0; s < i; s++) + for (s = 0; s < i; s++) e[e.len + s] = r[s]; e.len += 32; break; case "buffer": i = void 0 === n ? r.length : Math.min(n, r.length); - for(s = 0; s < i; s++) + for (s = 0; s < i; s++) e[e.len + s] = r[s]; e.len += n; break; case "arr": i = r ? Math.min(n, r.length) : 0; - for(s = 0; s < i; s++) + for (s = 0; s < i; s++) e[e.len + s] = r[s]; e.len += n; break; case "tr": i = r.length; - MAX_TRANSACTION_SIZE > MAX_TRANSACTION_SIZE && (i = MAX_TRANSACTION_SIZE), e[e.len] = 255 & i, e[e.len + 1] = i >>> 8 & 255, - e.len += 2; - for(s = 0; s < i; s++) + global.MAX_TRANSACTION_SIZE > global.MAX_TRANSACTION_SIZE && (i = global.MAX_TRANSACTION_SIZE), e[e.len] = 255 & i, e[e.len + 1] = i >>> 8 & 255, + e.len += 2; + for (s = 0; s < i; s++) e[e.len + s] = r[s]; e.len += i; break; case "data": i = r.length; e.writeUInt32LE(i, e.len, 4), e.len += 4; - for(s = 0; s < i; s++) + for (s = 0; s < i; s++) e[e.len + s] = r[s]; e.len += i; break; case "hashSTR": - var o = GetHexFromAddres(r); + var o = global.GetHexFromAddres(r); e.write(o, e.len, 64), e.len += 64; break; case "uintSTR": @@ -100,33 +96,29 @@ function Write(e,r,t,n,l) default: l = l || {}; var d = t.substr(0, 1); - if("[" === d) - { + if ("[" === d) { r && (i = r.length); var b = GetMiddleString(a); Write(e, i, "uint32"); - for(s = 0; s < i; s++) + for (s = 0; s < i; s++) Write(e, r[s], b, void 0, l); } else - if("<" === d) - { + if ("<" === d) { r && (i = r.length); b = GetMiddleString(a); var h = 0, c = e.len; e.len += 4; - for(s = 0; s < i; s++) - r[s] && (h++, Write(e, s, "uint32"), Write(e, r[s], b, void 0, l)); + for (s = 0; s < i; s++) + r[s] && (h++ , Write(e, s, "uint32"), Write(e, r[s], b, void 0, l)); e.writeUInt32LE(h, c, 4); } - else - { - if("{" !== d) + else { + if ("{" !== d) throw "Bad write type params: " + a; var g = l[a]; g || (g = GetAttributes(GetMiddleString(a)), l[a] = g); - for(s = 0; s < g.length; s++) - { + for (s = 0; s < g.length; s++) { var v = g[s]; Write(e, r[v.Key], v.Value, void 0, l); } @@ -135,27 +127,23 @@ function Write(e,r,t,n,l) } }; -function Read(e,r,t,n,l) -{ +function Read(e, r, t?, n?, l?) { var a; - if("number" == typeof r) - throw ToLogTrace("ERR StringFormat"), "ERRR!"; + if ("number" == typeof r) + throw global.ToLogTrace("ERR StringFormat"), "ERRR!"; var i = r; - if("buffer" === i.substr(0, 6)) + if ("buffer" === i.substr(0, 6)) 6 < i.length ? (t = parseInt(i.substr(6)), i = "buffer") : t = 0; else - if("arr" === i.substr(0, 3)) + if ("arr" === i.substr(0, 3)) 3 < i.length ? (t = parseInt(i.substr(3)), i = "arr") : t = 0; else - if("str" === i.substr(0, 3)) - { - if(3 < i.length) - { + if ("str" === i.substr(0, 3)) { + if (3 < i.length) { var f = parseInt(i.substr(3)); a = e.toString("utf8", e.len, e.len + f), e.len += f; - for(var s = - 1, u = a.length - 1; 0 <= u; u--) - if(0 !== a.charCodeAt(u)) - { + for (var s = - 1, u = a.length - 1; 0 <= u; u--) + if (0 !== a.charCodeAt(u)) { s = u; break; } @@ -163,12 +151,11 @@ function Read(e,r,t,n,l) } t = 0; } - switch(i) - { + switch (i) { case "str": f = e.len + 2 <= e.length ? e[e.len] + 256 * e[e.len + 1] : 0, e.len += 2; var o = e.slice(e.len, e.len + f); - a = Utf8ArrayToStr(o), e.len += f; + a = global.Utf8ArrayToStr(o), e.len += f; break; case "byte": a = e.len + 1 <= e.length ? e[e.len] : 0, e.len += 1; @@ -186,14 +173,14 @@ function Read(e,r,t,n,l) a = e.len + 4 <= e.length ? e.readUInt32LE(e.len, 4) : 0, e.len += 4; break; case "time": - if(l) + if (l) throw "Bad read type params: time - DisableTime ON"; a = e.len + 6 <= e.length ? e.readUIntLE(e.len, 6) : 0, a = new Date(a), e.len += 6; break; case "addres": case "hash": a = []; - for(u = 0; u < 32; u++) + for (u = 0; u < 32; u++) e.len + u <= e.length ? a[u] = e[e.len + u] : a[u] = 0; e.len += 32; break; @@ -202,8 +189,7 @@ function Read(e,r,t,n,l) a = e.len + t <= e.length ? e.slice(e.len, e.len + t) : Buffer.alloc(t), e.len += t; break; case "tr": - if(e.len + 1 >= e.length) - { + if (e.len + 1 >= e.length) { a = void 0; break; } @@ -212,11 +198,11 @@ function Read(e,r,t,n,l) break; case "data": (f = e.len + 4 <= e.length ? e.readUInt32LE(e.len, 4) : 0) > e.length - e.len - 4 && (f = 0), e.len += 4, a = e.slice(e.len, - e.len + f), e.len += f; + e.len + f), e.len += f; break; case "hashSTR": var d = e.toString("utf8", e.len, e.len + 64); - a = GetAddresFromHex(d), e.len += 64; + a = global.GetAddresFromHex(d), e.len += 64; break; case "uintSTR": d = e.toString("utf8", e.len, e.len + 10); @@ -225,24 +211,20 @@ function Read(e,r,t,n,l) default: n = n || {}; var b = i.substr(0, 1); - if("[" === b || "<" === b) - { + if ("[" === b || "<" === b) { var h = "<" === b; a = []; var c = GetMiddleString(i); - for(f = Read(e, "uint32"), u = 0; u < f && e.len <= e.length; u++) - { + for (f = Read(e, "uint32"), u = 0; u < f && e.len <= e.length; u++) { h ? a[Read(e, "uint32")] = Read(e, c, void 0, n, l) : a[u] = Read(e, c, void 0, n, l); } } - else - { - if("{" !== b) + else { + if ("{" !== b) throw "Bad read type params: " + i; var g = n[i]; g || (g = GetAttributes(GetMiddleString(i)), n[i] = g), a = {}; - for(u = 0; u < g.length; u++) - { + for (u = 0; u < g.length; u++) { var v = g[u]; a[v.Key] = Read(e, v.Value, void 0, n, l); } @@ -251,58 +233,47 @@ function Read(e,r,t,n,l) return a; }; -function BufWriteByte(e) -{ +function BufWriteByte(e) { this[this.len] = e, this.len += 1; }; -function BufWrite(e,r,t) -{ +function BufWrite(e, r, t) { Write(this, e, r, t); }; -function BufRead(e,r) -{ +function BufRead(e, r) { return Read(this, e, r); }; -function GetNewBuffer(e) -{ +function GetNewBuffer(e) { var r = Buffer.alloc(e); return r.Read = BufRead.bind(r), r.Write = BufWrite.bind(r), r.len = 0, r; }; -function GetReadBuffer(e) -{ +function GetReadBuffer(e) { var r = Buffer.from(e); return r.Read = BufRead.bind(r), r.Write = BufWrite.bind(r), r.len = 0, r; }; -function GetObjectFromBuffer(e,r,t,n) -{ +function GetObjectFromBuffer(e, r, t, n) { var l = Buffer.from(e); return l.len = 0, Read(l, r, void 0, t, n); }; -function GetBufferFromObject(e,r,t,n,l) -{ +function GetBufferFromObject(e, r, t?, n?, l?) { var a = Buffer.alloc(t); return a.len = 0, Write(a, e, r, void 0, n), l || (a = a.slice(0, a.len)), a; }; -function GetMiddleString(e) -{ +function GetMiddleString(e) { return e.substr(1, e.length - 2); }; -function GetMiddleString2(e,r,t) -{ - for(var n = 0, l = "", a = 0; a < e.length; a++) - { +function GetMiddleString2(e, r, t) { + for (var n = 0, l = "", a = 0; a < e.length; a++) { var i = e.substr(a, 1); - if(" " !== i && "\n" !== i && (i !== r || 1 != ++n)) - { - if(i === t && 0 === --n) + if (" " !== i && "\n" !== i && (i !== r || 1 != ++n)) { + if (i === t && 0 === --n) break; n && (l += i); } @@ -310,24 +281,20 @@ function GetMiddleString2(e,r,t) return l; }; -function GetAttributeStrings(e) -{ - for(var r = 0, t = [], n = "", l = 0; l < e.length; l++) - { +function GetAttributeStrings(e) { + for (var r = 0, t = [], n = "", l = 0; l < e.length; l++) { var a = e.substr(l, 1); - if("{" === a) + if ("{" === a) r++; else - if("}" === a) + if ("}" === a) r--; - else - { - if("," === a && 0 === r) - { + else { + if ("," === a && 0 === r) { 0 < n.length && t.push(n), n = ""; continue; } - if(" " === a || "\n" === a) + if (" " === a || "\n" === a) continue; } n += a; @@ -335,30 +302,25 @@ function GetAttributeStrings(e) return 0 < n.length && t.push(n), t; }; -function GetKeyValueStrings(e) -{ - for(var r = "", t = 0; t < e.length; t++) - { +function GetKeyValueStrings(e) { + for (var r = "", t = 0; t < e.length; t++) { var n = e.substr(t, 1); - if(" " !== n && "\n" !== n) - { - if(":" === n) - return {Key:r, Value:e.substr(t + 1)}; + if (" " !== n && "\n" !== n) { + if (":" === n) + return { Key: r, Value: e.substr(t + 1) }; r += n; } } throw "Error format Key:Value = " + e; }; -function GetAttributes(e) -{ - for(var r = [], t = GetAttributeStrings(e), n = 0; n < t.length; n++) - { +function GetAttributes(e) { + for (var r = [], t = GetAttributeStrings(e), n = 0; n < t.length; n++) { var l = GetKeyValueStrings(t[n]); r.push(l); } return r; }; module.exports.GetNewBuffer = GetNewBuffer, module.exports.GetReadBuffer = GetReadBuffer, module.exports.alloc = GetNewBuffer, -module.exports.from = GetReadBuffer, module.exports.Write = Write, module.exports.Read = Read, module.exports.GetObjectFromBuffer = GetObjectFromBuffer, -module.exports.GetBufferFromObject = GetBufferFromObject; + module.exports.from = GetReadBuffer, module.exports.Write = Write, module.exports.Read = Read, module.exports.GetObjectFromBuffer = GetObjectFromBuffer, + module.exports.GetBufferFromObject = GetBufferFromObject; diff --git a/src/core/code.ts b/src/core/code.ts index f55b103..3d87ba3 100644 --- a/src/core/code.ts +++ b/src/core/code.ts @@ -78,7 +78,7 @@ module.exports = class CCode extends require("./base") if (bUpdate) { UpdateCodeFiles(VersionNum) } - if (global.global.START_LOAD_CODE.StartLoad) { + if (global.START_LOAD_CODE.StartLoad) { global.CODE_VERSION = global.START_LOAD_CODE.StartLoad this.ClearLoadCode() } @@ -95,8 +95,8 @@ module.exports = class CCode extends require("./base") var file_handle = fs.openSync(fname2, "w"); fs.writeSync(file_handle, data, 0, data.length) fs.closeSync(file_handle) - var SignArr = arr2(Hash, GetArrFromValue(Data.VersionNum)); - var Sign = secp256k1.sign(SHA3BUF(SignArr), PrivateKey).signature; + var SignArr = global.arr2(Hash, global.GetArrFromValue(Data.VersionNum)); + var Sign = global.secp256k1.sign(global.SHA3BUF(SignArr), PrivateKey).signature; global.CODE_VERSION = Data global.CODE_VERSION.Hash = Hash global.CODE_VERSION.Sign = Sign @@ -150,10 +150,10 @@ global.UnpackCodeFile = UnpackCodeFile; function UnpackCodeFile(fname) { var data = fs.readFileSync(fname); - var reader = ZIP.Reader(data); + var reader = global.ZIP.Reader(data); reader.forEach(function(entry) { var Name = entry.getName(); - var Path = GetCodePath(Name); + var Path = global.GetCodePath(Name); if (entry.isFile()) { var buf = entry.getData(); global.CheckCreateDir(Path, true, true); @@ -171,7 +171,7 @@ global.RestartNode = function RestartNode(bForce) { setTimeout(DoExit, 5000); if (global.nw || global.NWMODE) { } else { - StopChildProcess(); + global.StopChildProcess(); global.ToLog("********************************** FORCE RESTART!!!"); return; } @@ -179,12 +179,12 @@ global.RestartNode = function RestartNode(bForce) { var it = this.ActualNodes.iterator(), Node; while ((Node = it.next()) !== null) { if (Node.Socket) - CloseSocket(Node.Socket, "Restart"); + global.CloseSocket(Node.Socket, "Restart"); } } this.StopServer(); this.StopNode(); - StopChildProcess(); + global.StopChildProcess(); global.ToLog("****************************************** RESTART!!!"); global.ToLog("EXIT 1"); }; @@ -195,7 +195,7 @@ function DoExit() { global.ToLog("RESTART NW"); var StrRun = '"' + process.argv[0] + '" .\n'; StrRun += '"' + process.argv[0] + '" .\n'; - SaveToFile("run-next.bat", StrRun); + global.SaveToFile("run-next.bat", StrRun); const child_process = require('child_process'); child_process.exec("run-next.bat", { shell: true }); } diff --git a/src/core/connect.ts b/src/core/connect.ts index da2ce31..a308722 100644 --- a/src/core/connect.ts +++ b/src/core/connect.ts @@ -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; }; diff --git a/src/core/constant.ts b/src/core/constant.ts index 2b67aae..51335f6 100644 --- a/src/core/constant.ts +++ b/src/core/constant.ts @@ -63,6 +63,8 @@ global.CONST_NAME_ARR = [ "REST_START_COUNT", "LOAD_TO_BEGIN" ]; +global.MAX_LENGTH_SENDER_MAP = 3000; +global.DELTA_START_SENDER_MAP = 24; global.NODES_DELTA_CALC_HOUR = 4; global.USE_HARD_API_V2 = 0; global.USE_TICKET = 0; @@ -196,7 +198,7 @@ if (global.LOCAL_RUN) { global.NEW_FORMULA_KTERA = 3; global.NEW_FORMULA_TARGET1 = 0; global.NEW_FORMULA_TARGET2 = 1; - NETWORK = "LOCAL"; + global.NETWORK = "LOCAL"; global.ALL_VIEW_ROWS = 1; global.COUNT_NODE_PROOF = 1; global.NEW_SIGN_TIME = 0; @@ -217,7 +219,7 @@ else global.START_BLOCK_ACCOUNT_HASH3 = 2356000; global.BLOCKNUM_TICKET_ALGO = 1; global.WALLET_NAME = "TEST"; - NETWORK = "TERA-TEST2"; + global.NETWORK = "TERA-TEST2"; if (global.START_PORT_NUMBER === undefined) global.START_PORT_NUMBER = 40000; global.ALL_VIEW_ROWS = 1; @@ -238,7 +240,7 @@ if (global.LOCAL_RUN) { global.CHECK_GLOBAL_TIME = 0; } global.GetNetworkName = function() { - return NETWORK + "-" + global.DEF_MAJOR_VERSION; + return global.NETWORK + "-" + global.DEF_MAJOR_VERSION; }; global.DEF_VERSION = global.DEF_MAJOR_VERSION + "." + global.UPDATE_CODE_VERSION_NUM; global.DEF_CLIENT = "TERA-CORE"; diff --git a/src/core/crypto-library.ts b/src/core/crypto-library.ts index 8c4f4ff..9311bbb 100644 --- a/src/core/crypto-library.ts +++ b/src/core/crypto-library.ts @@ -10,15 +10,6 @@ require("./library.js"); import * as crypto from 'crypto' -let { - sha3, - secp256k1, - SHA3BUF, - GetSignHash, - shaarr, - ToLog -} = global - global.MAX_SUPER_VALUE_POW = (1 << 30) * 2; var BuferForStr = Buffer.alloc(32); global.GetHexFromAddres = function(arr) { @@ -79,9 +70,9 @@ global.GetPublicKeyFromAddres = function(Arr) { return RetArr; }; global.CheckDevelopSign = function(SignArr, Sign) { - var hash = SHA3BUF(SignArr); + var hash = global.SHA3BUF(SignArr); for (var i = 0; i < DEVELOP_PUB_KEY_ARR.length; i++) { - var Result = secp256k1.verify(hash, Buffer.from(Sign), DEVELOP_PUB_KEY_ARR[i]); + var Result = global.secp256k1.verify(hash, Buffer.from(Sign), DEVELOP_PUB_KEY_ARR[i]); if (Result) return 1; } @@ -107,7 +98,7 @@ global.GetSignHash = function(Context, ContextAddrTo, Msg) { }; global.GetVerifyHash = function(Context, ContextAddr, Msg, Sign1) { try { - var Sign2 = GetSignHash(Context, ContextAddr, Msg); + var Sign2 = global.GetSignHash(Context, ContextAddr, Msg); for (var i = 0; i < Sign1.length; i++) if (Sign1[i] !== Sign2[i]) return false; @@ -170,7 +161,7 @@ global.GetKeyPairTest = function(password, Power) { var Data = KeyPair.getPublicKey('', 'compressed'); if (Data[0] === 2) { if (Power) { - var nBits = GetPowPower(Data.slice(1)); + var nBits = global.GetPowPower(Data.slice(1)); if (nBits < Power) continue; } @@ -197,7 +188,7 @@ function GetArrFromValue(Num) { }; function GetHashWithNonce(hash0, nonce) { - return shaarr2(hash0, GetArrFromValue(nonce)); + return global.shaarr2(hash0, global.GetArrFromValue(nonce)); }; global.GetHashWithValues = GetHashWithValues; @@ -246,7 +237,7 @@ function CreateNoncePOWExtern(arr0, BlockNum, count, startnone) { if (!startnone) startnone = 0; var maxnonce = 0; - var supervalue = MAX_SUPER_VALUE_POW; + var supervalue = global.MAX_SUPER_VALUE_POW; for (var nonce = startnone; nonce <= startnone + count; nonce++) { var arrhash = GetHashWithValues(arr, nonce, BlockNum, true); var value = GetPowValue(arrhash); @@ -266,7 +257,7 @@ function CreateNoncePOWExternMinPower(arr0, BlockNum, MinPow) { var nonce = 0; while (1) { var arrhash = GetHashWithValues(arr, nonce, BlockNum, true); - var power = GetPowPower(arrhash); + var power = global.GetPowPower(arrhash); if (power >= MinPow) { return nonce; } @@ -277,7 +268,7 @@ global.CreateNoncePOWInner = function(arr0, count) { var Hash; var arr = arr0.slice(); var maxnonce = 0; - var supervalue = MAX_SUPER_VALUE_POW; + var supervalue = global.MAX_SUPER_VALUE_POW; for (var nonce = 0; nonce < count; nonce++) { var hashTest = GetHashWithNonce(arr, nonce); var value = GetPowValue(hashTest); @@ -297,7 +288,7 @@ global.CreateAddrPOW = function(SeqHash, AddrArr, MaxHash, Start, CountNonce, Bl AddrArr[7] = (nonce >>> 8) & 0xFF; AddrArr[8] = (nonce >>> 16) & 0xFF; AddrArr[9] = (nonce >>> 24) & 0xFF; - var HashTest = shaarrblock2(SeqHash, AddrArr, BlockNum); + var HashTest = global.shaarrblock2(SeqHash, AddrArr, BlockNum); if (global.CompareArr(MaxHash, HashTest) >= 0) { MaxHash = HashTest; MaxNonce = nonce; @@ -324,7 +315,7 @@ function IsZeroArr(arr) { function CalcHashFromArray(ArrHashes, bOriginalSeq) { if (bOriginalSeq === undefined) - ArrHashes.sort(CompareArr); + ArrHashes.sort(global.CompareArr); var Buf = []; for (var i = 0; i < ArrHashes.length; i++) { var Value = ArrHashes[i]; @@ -342,7 +333,7 @@ function CalcHashFromArray(ArrHashes, bOriginalSeq) { function CalcHash3FromArray(ArrHashes, bOriginalSeq) { if (bOriginalSeq === undefined) - ArrHashes.sort(CompareArr); + ArrHashes.sort(global.CompareArr); var Buf = []; for (var i = 0; i < ArrHashes.length; i++) { var Value = ArrHashes[i]; @@ -381,12 +372,12 @@ function CalcMerkl3FromArray(Arr, Tree0?) { return Tree; } if (bSort) { - Arr.sort(CompareArr); + Arr.sort(global.CompareArr); } var Arr2 = []; var len = Math.floor(Arr.length / 2); for (var i = 0; i < len; i++) { - var Hash = sha3arr2(Arr[i * 2], Arr[i * 2 + 1]); + var Hash = global.sha3arr2(Arr[i * 2], Arr[i * 2 + 1]); Arr2.push(Hash); } if (len * 2 !== Arr.length) { @@ -418,12 +409,12 @@ function CalcMerkl0FromArray(Arr, Tree0?) { return Tree; } if (bSort) { - Arr.sort(CompareArr); + Arr.sort(global.CompareArr); } var Arr2 = []; var len = Math.floor(Arr.length / 2); for (var i = 0; i < len; i++) { - var Hash = shaarr2(Arr[i * 2], Arr[i * 2 + 1]); + var Hash = global.shaarr2(Arr[i * 2], Arr[i * 2 + 1]); Arr2.push(Hash); } if (len * 2 !== Arr.length) { @@ -555,7 +546,7 @@ function CheckMerkleProof(ArrL, ArrM, ArrR) { var length2 = Math.floor(Arr.length / 2); Arr2 = []; for (i = 0; i < length2; i++) { - var Hash = global.sha3(arr2(Arr[i * 2], Arr[i * 2 + 1])); + var Hash = global.sha3(global.arr2(Arr[i * 2], Arr[i * 2 + 1])); Arr2.push(Hash); } if (Arr.length / 2 > length2) @@ -593,7 +584,7 @@ function UpdateMerklTree(Tree, CalcMap: any, NumLevel) { if (i2 < len2) { Count++; CalcMap2[i2] = 1; - HashArr2[i2] = global.sha3(arr2(HashArr[i2 * 2], HashArr[i2 * 2 + 1])); + HashArr2[i2] = global.sha3(global.arr2(HashArr[i2 * 2], HashArr[i2 * 2 + 1])); } else { if (key as any > LastIndex) { diff --git a/src/core/db/block-db.ts b/src/core/db/block-db.ts index aa4e785..4b38b90 100644 --- a/src/core/db/block-db.ts +++ b/src/core/db/block-db.ts @@ -9,7 +9,7 @@ */ "use strict"; -const fs = require('fs'); +import * as fs from 'fs' const DBLib = require("./db"); const DBRow = require("./db-row"); global.BlockDB = new DBLib(); @@ -35,24 +35,33 @@ const WorkStructHeader2 = {}; const DEFAULT_DB_VERSION = 2; module.exports = class CDB extends require("../code") { + DBHeader100 + BlockNumDB + BlockNumDBMin + CurrentBlockNum + CheckOnStartComplete + UseTruncateBlockDB + MapHeader + StatMap + PrevBlockChainArr constructor(SetKeyPair, RunIP, RunPort, UseRNDHeader, bVirtual) { super(SetKeyPair, RunIP, RunPort, UseRNDHeader, bVirtual) var bWriteMode = (global.PROCESS_NAME === "MAIN"); global.DB_VERSION = DEFAULT_DB_VERSION - var FileItem1 = BlockDB.OpenDBFile(FILE_NAME_HEADER, bWriteMode); - var FileItem2 = BlockDB.OpenDBFile(FILE_NAME_HEADER2, bWriteMode); + var FileItem1 = global.BlockDB.OpenDBFile(FILE_NAME_HEADER, bWriteMode); + var FileItem2 = global.BlockDB.OpenDBFile(FILE_NAME_HEADER2, bWriteMode); if (FileItem2.size) global.DB_VERSION = 2 else if (FileItem1.size) global.DB_VERSION = 1 - BlockDB.OpenDBFile(FILE_NAME_BODY, bWriteMode) + global.BlockDB.OpenDBFile(FILE_NAME_BODY, bWriteMode) this.DBHeader100 = new DBRow("block-header100", 32 + 32, "{Hash100:hash,Hash:hash}", !bWriteMode) this.BlockNumDB = 0 this.BlockNumDBMin = 0 this.ClearBufMap() setTimeout(function() { - SERVER.ReadStateTX() + global.SERVER.ReadStateTX() }, 10) } ReadStateTX() { @@ -62,10 +71,10 @@ module.exports = class CDB extends require("../code") } } LoadMemBlocksOnStart() { - this.CurrentBlockNum = GetCurrentBlockNumByTime() - for (var i = this.BlockNumDB - BLOCK_COUNT_IN_MEMORY; i <= this.BlockNumDB; i++) + this.CurrentBlockNum = global.GetCurrentBlockNumByTime() + for (var i = this.BlockNumDB - global.BLOCK_COUNT_IN_MEMORY; i <= this.BlockNumDB; i++) if (i >= 0) { - if (i >= this.BlockNumDB - BLOCK_PROCESSING_LENGTH * 5) + if (i >= this.BlockNumDB - global.BLOCK_PROCESSING_LENGTH * 5) this.GetBlock(i, true, true) else this.GetBlock(i, true, false) @@ -74,12 +83,12 @@ module.exports = class CDB extends require("../code") GetMaxNumBlockDB() { var FileItem, BlockNum; if (global.DB_VERSION === 2) { - FileItem = BlockDB.OpenDBFile(FILE_NAME_HEADER2) - BlockNum = (FileItem.size / BLOCK_HEADER_SIZE2) - 1 + FileItem = global.BlockDB.OpenDBFile(FILE_NAME_HEADER2) + BlockNum = (FileItem.size / global.BLOCK_HEADER_SIZE2) - 1 } else { - FileItem = BlockDB.OpenDBFile(FILE_NAME_HEADER) - BlockNum = (FileItem.size / BLOCK_HEADER_SIZE) - 1 + FileItem = global.BlockDB.OpenDBFile(FILE_NAME_HEADER) + BlockNum = (FileItem.size / global.BLOCK_HEADER_SIZE) - 1 } return BlockNum; } @@ -88,7 +97,7 @@ module.exports = class CDB extends require("../code") var BlockNum = this.GetMaxNumBlockDB(); if (global.NO_CHECK_BLOCKNUM_ONSTART) { this.BlockNumDB = this.CheckBlocksOnStartFoward(BlockNum - 2, 0) - ToLog("START_BLOCK_NUM:" + this.BlockNumDB, 2) + global.ToLog("START_BLOCK_NUM:" + this.BlockNumDB, 2) return; } BlockNum = this.CheckBlocksOnStartReverse(BlockNum) @@ -97,7 +106,7 @@ module.exports = class CDB extends require("../code") if (this.BlockNumDB >= global.BLOCK_PROCESSING_LENGTH2) { this.TruncateBlockDB(this.BlockNumDB) } - ToLog("START_BLOCK_NUM:" + this.BlockNumDB, 2) + global.ToLog("START_BLOCK_NUM:" + this.BlockNumDB, 2) this.CheckOnStartComplete = 1 } CheckBlocksOnStartReverse(StartNum) { @@ -106,21 +115,21 @@ module.exports = class CDB extends require("../code") var PrevBlock; for (var num = StartNum; num >= this.BlockNumDBMin + global.BLOCK_PROCESSING_LENGTH2; num -= delta) { var Block = this.ReadBlockHeaderDB(num); - if (!Block || IsZeroArr(Block.SumHash)) { + if (!Block || global.IsZeroArr(Block.SumHash)) { delta++ Count = 0 continue; } var PrevBlock = this.ReadBlockHeaderDB(num - 1); - if (!PrevBlock || IsZeroArr(PrevBlock.SumHash)) { + if (!PrevBlock || global.IsZeroArr(PrevBlock.SumHash)) { Count = 0 continue; } - var SumHash = shaarr2(PrevBlock.SumHash, Block.Hash); + var SumHash = global.shaarr2(PrevBlock.SumHash, Block.Hash); if (global.CompareArr(SumHash, Block.SumHash) === 0) { delta = 1 Count++ - if (Count > COUNT_BLOCKS_FOR_LOAD / 10) + if (Count > global.COUNT_BLOCKS_FOR_LOAD / 10) return num; } else { @@ -135,7 +144,7 @@ module.exports = class CDB extends require("../code") if (StartNum < this.BlockNumDBMin + global.BLOCK_PROCESSING_LENGTH2) StartNum = this.BlockNumDBMin + global.BLOCK_PROCESSING_LENGTH2 var MaxNum = global.DApps.Accounts.GetHashedMaxBlockNum(); - var BlockNumTime = GetCurrentBlockNumByTime(); + var BlockNumTime = global.GetCurrentBlockNumByTime(); if (BlockNumTime < MaxNum) MaxNum = BlockNumTime var arr = []; @@ -148,37 +157,37 @@ module.exports = class CDB extends require("../code") if (!Block) return num > 0 ? num - 1 : 0; if (num % 100000 === 0) - ToLog("CheckBlocksOnStartFoward: " + num) + global.ToLog("CheckBlocksOnStartFoward: " + num) if (bCheckBody) { - var TreeHash = CalcTreeHashFromArrBody(Block.BlockNum, Block.arrContent); + var TreeHash = global.CalcTreeHashFromArrBody(Block.BlockNum, Block.arrContent); if (global.CompareArr(Block.TreeHash, TreeHash) !== 0) { - ToLog("BAD TreeHash block=" + Block.BlockNum) + global.ToLog("BAD TreeHash block=" + Block.BlockNum) return num > 0 ? num - 1 : 0; } } if (PrevBlock) { - if (arr.length !== BLOCK_PROCESSING_LENGTH) { + if (arr.length !== global.BLOCK_PROCESSING_LENGTH) { var start = num - global.BLOCK_PROCESSING_LENGTH2; - for (var n = 0; n < BLOCK_PROCESSING_LENGTH; n++) { + for (var n = 0; n < global.BLOCK_PROCESSING_LENGTH; n++) { var Prev = this.ReadBlockHeaderDB(start + n); arr.push(Prev.Hash) } } else { arr.shift() - var Prev = this.ReadBlockHeaderDB(num - BLOCK_PROCESSING_LENGTH - 1); + var Prev = this.ReadBlockHeaderDB(num - global.BLOCK_PROCESSING_LENGTH - 1); arr.push(Prev.Hash) } - var PrevHash = CalcHashFromArray(arr, true); + var PrevHash = global.CalcHashFromArray(arr, true); var SeqHash = this.GetSeqHash(Block.BlockNum, PrevHash, Block.TreeHash); - var Value = GetHashFromSeqAddr(SeqHash, Block.AddrHash, Block.BlockNum, PrevHash); + var Value = global.GetHashFromSeqAddr(SeqHash, Block.AddrHash, Block.BlockNum, PrevHash); if (global.CompareArr(Value.Hash, Block.Hash) !== 0) { - ToLog("=================== FIND ERR Hash in " + Block.BlockNum + " bCheckBody=" + bCheckBody) + global.ToLog("=================== FIND ERR Hash in " + Block.BlockNum + " bCheckBody=" + bCheckBody) return num > 0 ? num - 1 : 0; } - var SumHash = shaarr2(PrevBlock.SumHash, Block.Hash); + var SumHash = global.shaarr2(PrevBlock.SumHash, Block.Hash); if (global.CompareArr(SumHash, Block.SumHash) !== 0) { - ToLog("=================== FIND ERR SumHash in " + Block.BlockNum) + global.ToLog("=================== FIND ERR SumHash in " + Block.BlockNum) return num > 0 ? num - 1 : 0; } } @@ -188,23 +197,23 @@ module.exports = class CDB extends require("../code") } WriteBlockDB(Block) { var startTime = process.hrtime(); - if (Block.TrCount === 0 && !IsZeroArr(Block.TreeHash)) { - ToLogTrace("ERROR WRITE TrCount BLOCK:" + Block.BlockNum) + if (Block.TrCount === 0 && !global.IsZeroArr(Block.TreeHash)) { + global.ToLogTrace("ERROR WRITE TrCount BLOCK:" + Block.BlockNum) throw "ERROR WRITE"; } var Ret = this.WriteBodyDB(Block); if (Ret) { Ret = this.WriteBlockDBFinaly(Block) } - ADD_TO_STAT_TIME("MAX:WriteBlockDB", startTime) - ADD_TO_STAT_TIME("WriteBlockDB", startTime) + global.ADD_TO_STAT_TIME("MAX:WriteBlockDB", startTime) + global.ADD_TO_STAT_TIME("WriteBlockDB", startTime) return Ret; } WriteBlockDBFinaly(Block) { var Ret = this.WriteBlockHeaderDB(Block); if (Ret) { - if (Block.TrDataLen === 0 && !IsZeroArr(Block.TreeHash)) { - ToLogTrace("ERROR WRITE FINAL TrDataLen BLOCK") + if (Block.TrDataLen === 0 && !global.IsZeroArr(Block.TreeHash)) { + global.ToLogTrace("ERROR WRITE FINAL TrDataLen BLOCK") throw "ERROR WRITE"; } this.OnWriteBlock(Block) @@ -224,28 +233,28 @@ module.exports = class CDB extends require("../code") WriteBodyResultDB(Block) { var arrTr = Block.arrContentResult; if (Block.TrDataPos && Block.TrDataLen && Block.VersionBody && arrTr && arrTr.length) { - var FileItem = BlockDB.OpenDBFile(FILE_NAME_BODY, 1); + var FileItem = global.BlockDB.OpenDBFile(FILE_NAME_BODY, 1); var FD = FileItem.fd; var Size = arrTr.length * 6; var Position = Block.TrDataPos + Block.TrDataLen - Size; if (FileItem.size < Position + Size) { - TO_ERROR_LOG("DB", 241, "Error Position in WriteBodyResultDB on block: " + Block.BlockNum) + global.TO_ERROR_LOG("DB", 241, "Error Position in WriteBodyResultDB on block: " + Block.BlockNum) return false; } - var BufWrite = BufLib.GetNewBuffer(Size); + var BufWrite = global.BufLib.GetNewBuffer(Size); for (var i = 0; i < arrTr.length; i++) { BufWrite.Write(arrTr[i], "uint") } var written = fs.writeSync(FD, BufWrite, 0, BufWrite.length, Position); if (written !== BufWrite.length) { - TO_ERROR_LOG("DB", 242, "Error write to file block-chain : " + written + " <> " + BufWrite.length) + global.TO_ERROR_LOG("DB", 242, "Error write to file block-chain : " + written + " <> " + BufWrite.length) return false; } } return true; } WriteBodyDB(Block) { - var FileItem = BlockDB.OpenDBFile(FILE_NAME_BODY, 1); + var FileItem = global.BlockDB.OpenDBFile(FILE_NAME_BODY, 1); var FD = FileItem.fd; var Position = FileItem.size; Block.TrDataPos = Position @@ -264,7 +273,7 @@ module.exports = class CDB extends require("../code") } Block.VersionBody = 1 TrDataLen += arrTr.length * 6 - var BufWrite = BufLib.GetNewBuffer(TrDataLen); + var BufWrite = global.BufLib.GetNewBuffer(TrDataLen); BufWrite.Write(arrTr.length, "uint16") BufWrite.Write(Block.VersionBody, "uint16") for (var i = 0; i < arrTr.length; i++) { @@ -273,7 +282,7 @@ module.exports = class CDB extends require("../code") } var written = fs.writeSync(FD, BufWrite, 0, BufWrite.length, Position); if (written !== BufWrite.length) { - TO_ERROR_LOG("DB", 240, "Error write to file block-chain : " + written + " <> " + BufWrite.length) + global.TO_ERROR_LOG("DB", 240, "Error write to file block-chain : " + written + " <> " + BufWrite.length) return false; } FileItem.size += TrDataLen @@ -281,9 +290,9 @@ module.exports = class CDB extends require("../code") Block.TrDataLen = TrDataLen return true; } - WriteBlockHeaderDB(Block, bPreSave) { + WriteBlockHeaderDB(Block, bPreSave?) { if (!bPreSave && Block.BlockNum > this.BlockNumDBMin + global.BLOCK_PROCESSING_LENGTH2) { - if (USE_CHECK_SAVE_DB) + if (global.USE_CHECK_SAVE_DB) if (!this.CheckSeqHashDB(Block, "WriteBlockHeaderDB")) return false; this.WriteBlockHeader100(Block) @@ -291,17 +300,17 @@ module.exports = class CDB extends require("../code") this.BlockNumDB = Block.BlockNum - 1 var PrevBlock = this.ReadBlockHeaderDB(Block.BlockNum - 1); if (!PrevBlock) { - ToLogTrace("Cant write header block:" + Block.BlockNum + " prev block not found") + global.ToLogTrace("Cant write header block:" + Block.BlockNum + " prev block not found") throw "ERR: PREV BLOCK NOT FOUND"; return false; } - Block.SumHash = shaarr2(PrevBlock.SumHash, Block.Hash) - Block.SumPow = PrevBlock.SumPow + GetPowPower(Block.PowHash) + Block.SumHash = global.shaarr2(PrevBlock.SumHash, Block.Hash) + Block.SumPow = PrevBlock.SumPow + global.GetPowPower(Block.PowHash) } if (global.DB_VERSION === 2) { return this.WriteBlockHeaderToFile2(Block); } - var BufWrite = BufLib.GetNewBuffer(BLOCK_HEADER_SIZE); + var BufWrite = global.BufLib.GetNewBuffer(global.BLOCK_HEADER_SIZE); this.BlockHeaderToBuf(BufWrite, Block) var Res = this.WriteBufHeaderToFile1(BufWrite, Block.BlockNum); return Res; @@ -311,8 +320,8 @@ module.exports = class CDB extends require("../code") var BlockNum = Math.trunc(Block.BlockNum); this.ClearBufMap() Block.VersionDB = global.DB_VERSION - BufWrite = BufLib.GetBufferFromObject(Block, FORMAT_STREAM_HEADER, 200, WorkStructStreamHeader) - FileItem = BlockDB.OpenDBFile(FILE_NAME_BODY, 1) + BufWrite = global.BufLib.GetBufferFromObject(Block, FORMAT_STREAM_HEADER, 200, WorkStructStreamHeader) + FileItem = global.BlockDB.OpenDBFile(FILE_NAME_BODY, 1) if (!Block.FilePos) { if (!FileItem.size) FileItem.size = 100 @@ -320,21 +329,21 @@ module.exports = class CDB extends require("../code") } written = fs.writeSync(FileItem.fd, BufWrite, 0, BufWrite.length, Block.FilePos) if (written !== BufWrite.length) { - TO_ERROR_LOG("DB", 242, "Error write to file block-chain : " + written + " <> " + BufWrite.length) + global.TO_ERROR_LOG("DB", 242, "Error write to file block-chain : " + written + " <> " + BufWrite.length) return false; } if (Block.FilePos >= FileItem.size) { FileItem.size = Block.FilePos + BufWrite.length } - FileItem = BlockDB.OpenDBFile(FILE_NAME_HEADER2, 1) - var Position = BlockNum * BLOCK_HEADER_SIZE2; - BufWrite = BufLib.GetBufferFromObject(Block, FORMAT_HEADER_VERSION2, BLOCK_HEADER_SIZE2, WorkStructHeader2) + FileItem = global.BlockDB.OpenDBFile(FILE_NAME_HEADER2, 1) + var Position = BlockNum * global.BLOCK_HEADER_SIZE2; + BufWrite = global.BufLib.GetBufferFromObject(Block, FORMAT_HEADER_VERSION2, global.BLOCK_HEADER_SIZE2, WorkStructHeader2) written = fs.writeSync(FileItem.fd, BufWrite, 0, BufWrite.length, Position) if (Position >= FileItem.size) { FileItem.size = Position + BufWrite.length } if (written !== BufWrite.length) { - TO_ERROR_LOG("DB", 262, "Error write to file block-header :" + written + " <> " + BufWrite.length) + global.TO_ERROR_LOG("DB", 262, "Error write to file block-header :" + written + " <> " + BufWrite.length) return false; } else { @@ -344,14 +353,14 @@ module.exports = class CDB extends require("../code") WriteBufHeaderToFile1(BufWrite, BlockNum) { BlockNum = Math.trunc(BlockNum) this.ClearBufMap() - var FileItem = BlockDB.OpenDBFile(FILE_NAME_HEADER, 1); - var Position = BlockNum * BLOCK_HEADER_SIZE; + var FileItem = global.BlockDB.OpenDBFile(FILE_NAME_HEADER, 1); + var Position = BlockNum * global.BLOCK_HEADER_SIZE; var written = fs.writeSync(FileItem.fd, BufWrite, 0, BufWrite.length, Position); if (Position >= FileItem.size) { FileItem.size = Position + BufWrite.length } if (written !== BufWrite.length) { - TO_ERROR_LOG("DB", 260, "Error write to file block-header :" + written + " <> " + BufWrite.length) + global.TO_ERROR_LOG("DB", 260, "Error write to file block-header :" + written + " <> " + BufWrite.length) return false; } else { @@ -375,10 +384,10 @@ module.exports = class CDB extends require("../code") } else if (Num > 1) { - ToLog("NOT FIND PEVHASH100 BlockNum=" + Block.BlockNum, 2) + global.ToLog("NOT FIND PEVHASH100 BlockNum=" + Block.BlockNum, 2) return; } - Hash100 = sha3arr2(PrevHash100, Block.Hash) + Hash100 = global.sha3arr2(PrevHash100, Block.Hash) } this.DBHeader100.Write({ Num: Num, Hash100: Hash100, Hash: Block.Hash }) } @@ -397,31 +406,31 @@ module.exports = class CDB extends require("../code") return undefined; } else { - if (Block && !IsZeroArr(Block.TreeHash)) { - ToLogTrace("ERROR arrContent on BlockNum=" + Num) + if (Block && !global.IsZeroArr(Block.TreeHash)) { + global.ToLogTrace("ERROR arrContent on BlockNum=" + Num) return undefined; } } return Block; } ReadBlockBodyDB(Block) { - var FileItem = BlockDB.OpenDBFile(FILE_NAME_BODY); - if (Block.TrDataLen > MAX_BLOCK_SIZE * 2) { - ToLogTrace("Error value TrDataLen, BlockNum=" + Block.BlockNum) + var FileItem = global.BlockDB.OpenDBFile(FILE_NAME_BODY); + if (Block.TrDataLen > global.MAX_BLOCK_SIZE * 2) { + global.ToLogTrace("Error value TrDataLen, BlockNum=" + Block.BlockNum) return false; } var Position = Block.TrDataPos; - var BufRead = BufLib.GetNewBuffer(Block.TrDataLen); + var BufRead = global.BufLib.GetNewBuffer(Block.TrDataLen); var bytesRead = fs.readSync(FileItem.fd, BufRead, 0, BufRead.length, Position); if (bytesRead !== BufRead.length) { - TO_ERROR_LOG("DB", 272, "Error read block-body file: " + FileItem.name + " from POS:" + Position + " bytesRead=" + bytesRead + " of " + BufRead.length + " BlockNum=" + Block.BlockNum) + global.TO_ERROR_LOG("DB", 272, "Error read block-body file: " + FileItem.name + " from POS:" + Position + " bytesRead=" + bytesRead + " of " + BufRead.length + " BlockNum=" + Block.BlockNum) return false; } Block.arrContent = [] Block.arrContentResult = [] var TrCount = BufRead.Read("uint16"); Block.VersionBody = BufRead.Read("uint16") - if (TrCount <= MAX_TRANSACTION_COUNT) { + if (TrCount <= global.MAX_TRANSACTION_COUNT) { for (var i = 0; i < TrCount; i++) { var body = BufRead.Read("tr"); if (!body) @@ -448,9 +457,9 @@ module.exports = class CDB extends require("../code") } BlockNum = Math.trunc(BlockNum) var Block, BufRead, FileItem, bytesRead, Position; - BufRead = BufLib.GetNewBuffer(BLOCK_HEADER_SIZE) - Position = BlockNum * BLOCK_HEADER_SIZE - var FileItem = BlockDB.OpenDBFile(FILE_NAME_HEADER); + BufRead = global.BufLib.GetNewBuffer(global.BLOCK_HEADER_SIZE) + Position = BlockNum * global.BLOCK_HEADER_SIZE + var FileItem = global.BlockDB.OpenDBFile(FILE_NAME_HEADER); bytesRead = fs.readSync(FileItem.fd, BufRead, 0, BufRead.length, Position) if (bytesRead !== BufRead.length) return undefined; @@ -467,21 +476,21 @@ module.exports = class CDB extends require("../code") return undefined; } BlockNum = Math.trunc(BlockNum) - Position = BlockNum * BLOCK_HEADER_SIZE2 - FileItem = BlockDB.OpenDBFile(FILE_NAME_HEADER2) - BufRead = BufLib.GetNewBuffer(BLOCK_HEADER_SIZE2) + Position = BlockNum * global.BLOCK_HEADER_SIZE2 + FileItem = global.BlockDB.OpenDBFile(FILE_NAME_HEADER2) + BufRead = global.BufLib.GetNewBuffer(global.BLOCK_HEADER_SIZE2) bytesRead = fs.readSync(FileItem.fd, BufRead, 0, BufRead.length, Position) if (bytesRead !== BufRead.length) return undefined; - Block = BufLib.GetObjectFromBuffer(BufRead, FORMAT_HEADER_VERSION2, WorkStructHeader2) + Block = global.BufLib.GetObjectFromBuffer(BufRead, FORMAT_HEADER_VERSION2, WorkStructHeader2) if (!Block.FilePos) { return undefined; } Position = Block.FilePos - FileItem = BlockDB.OpenDBFile(FILE_NAME_BODY) - BufRead = BufLib.GetNewBuffer(200) + FileItem = global.BlockDB.OpenDBFile(FILE_NAME_BODY) + BufRead = global.BufLib.GetNewBuffer(200) bytesRead = fs.readSync(FileItem.fd, BufRead, 0, BufRead.length, Position) - Block = BufLib.GetObjectFromBuffer(BufRead, FORMAT_STREAM_HEADER, WorkStructStreamHeader) + Block = global.BufLib.GetObjectFromBuffer(BufRead, FORMAT_STREAM_HEADER, WorkStructStreamHeader) if (Block.VersionDB !== global.DB_VERSION) { throw ("ERROR Block.VersionDB"); return undefined; @@ -516,7 +525,7 @@ module.exports = class CDB extends require("../code") this.UseTruncateBlockDB = undefined var Block = this.ReadBlockDB(LastBlockNum); if (!Block) { - ToLog("************ ERROR TruncateBlockDB - not found block=" + LastBlockNum, 2) + global.ToLog("************ ERROR TruncateBlockDB - not found block=" + LastBlockNum, 2) return; } this.WriteBlockDB(Block) @@ -524,12 +533,12 @@ module.exports = class CDB extends require("../code") TruncateBlockDBInner(LastBlock) { var FItem1, size; if (global.DB_VERSION === 2) { - FItem1 = BlockDB.OpenDBFile(FILE_NAME_HEADER2, 1) - size = (LastBlock.BlockNum + 1) * BLOCK_HEADER_SIZE2 + FItem1 = global.BlockDB.OpenDBFile(FILE_NAME_HEADER2, 1) + size = (LastBlock.BlockNum + 1) * global.BLOCK_HEADER_SIZE2 } else { - FItem1 = BlockDB.OpenDBFile(FILE_NAME_HEADER, 1) - size = (LastBlock.BlockNum + 1) * BLOCK_HEADER_SIZE + FItem1 = global.BlockDB.OpenDBFile(FILE_NAME_HEADER, 1) + size = (LastBlock.BlockNum + 1) * global.BLOCK_HEADER_SIZE } if (size < 0) size = 0 @@ -543,13 +552,13 @@ module.exports = class CDB extends require("../code") ClearDataBase() { if (global.TX_PROCESS && global.TX_PROCESS.RunRPC) global.TX_PROCESS.RunRPC("ClearDataBase", {}) - var FItem1 = BlockDB.OpenDBFile(FILE_NAME_HEADER, 1); + var FItem1 = global.BlockDB.OpenDBFile(FILE_NAME_HEADER, 1); FItem1.size = 0 fs.ftruncateSync(FItem1.fd, FItem1.size) - var FItem12 = BlockDB.OpenDBFile(FILE_NAME_HEADER2, 1); + var FItem12 = global.BlockDB.OpenDBFile(FILE_NAME_HEADER2, 1); FItem12.size = 0 fs.ftruncateSync(FItem12.fd, FItem12.size) - var FItem2 = BlockDB.OpenDBFile(FILE_NAME_BODY, 1); + var FItem2 = global.BlockDB.OpenDBFile(FILE_NAME_BODY, 1); FItem2.size = 0 fs.ftruncateSync(FItem2.fd, FItem2.size) this.DBHeader100.Truncate(- 1) @@ -567,13 +576,13 @@ module.exports = class CDB extends require("../code") Close() { this.ClearBufMap() this.ReadStateTX() - BlockDB.CloseDBFile(FILE_NAME_HEADER) - BlockDB.CloseDBFile(FILE_NAME_HEADER2) - BlockDB.CloseDBFile(FILE_NAME_BODY) + global.BlockDB.CloseDBFile(FILE_NAME_HEADER) + global.BlockDB.CloseDBFile(FILE_NAME_HEADER2) + global.BlockDB.CloseDBFile(FILE_NAME_BODY) this.DBHeader100.Close() } RewriteAllTransactions() { - if (TX_PROCESS.Worker) { + if (global.TX_PROCESS.Worker) { if (global.TX_PROCESS && global.TX_PROCESS.RunRPC) { global.TX_PROCESS.RunRPC("RewriteAllTransactions", {}) return 1; @@ -592,10 +601,10 @@ module.exports = class CDB extends require("../code") BufWrite.Write(Block.Reserv500, "uint") BufWrite.Write(Block.TrDataPos, "uint") BufWrite.Write(Block.TrDataLen, "uint32") - BufWrite.len = len + BLOCK_HEADER_SIZE + BufWrite.len = len + global.BLOCK_HEADER_SIZE } BufToBlockHeader(BufRead, Num) { - var Block = {}; + var Block: any = {}; var len = BufRead.len; Block.TreeHash = BufRead.Read("hash") Block.AddrHash = BufRead.Read("hash") @@ -606,23 +615,23 @@ module.exports = class CDB extends require("../code") Block.TrDataPos = BufRead.Read("uint") Block.TrDataLen = BufRead.Read("uint32") Block.TrCount = 0 - BufRead.len = len + BLOCK_HEADER_SIZE + BufRead.len = len + global.BLOCK_HEADER_SIZE return this.PrepareBlockFields(Block, Num); } PrepareBlockFields(Block, Num) { - Block.AddInfo = AddInfoBlock.bind(Block) + Block.AddInfo = global.AddInfoBlock.bind(Block) Block.Info = "" Block.BlockNum = Num Block.SeqHash = this.GetSeqHash(Block.BlockNum, Block.PrevHash, Block.TreeHash) if (Block.BlockNum >= global.BLOCK_PROCESSING_LENGTH2) { - CalcHashBlockFromSeqAddr(Block) + global.CalcHashBlockFromSeqAddr(Block) } else { Block.Hash = this.GetHashGenesis(Block.BlockNum) Block.PowHash = Block.Hash } - Block.Power = GetPowPower(Block.PowHash) - if (IsZeroArr(Block.Hash)) + Block.Power = global.GetPowPower(Block.PowHash) + if (global.IsZeroArr(Block.Hash)) return undefined; return Block; } @@ -640,7 +649,7 @@ module.exports = class CDB extends require("../code") break; Block.Num = Block.BlockNum if (Block.AddrHash) { - Block.Miner = ReadUintFromArr(Block.AddrHash, 0) + Block.Miner = global.ReadUintFromArr(Block.AddrHash, 0) if (Block.BlockNum < 16 || Block.Miner > MaxAccount) Block.Miner = 0 if (bMinerName && Block.Miner) { @@ -650,7 +659,7 @@ module.exports = class CDB extends require("../code") else Block.MinerName = "" } - var Value = GetHashFromSeqAddr(Block.SeqHash, Block.AddrHash, Block.BlockNum, Block.PrevHash); + var Value = global.GetHashFromSeqAddr(Block.SeqHash, Block.AddrHash, Block.BlockNum, Block.PrevHash); Block.Hash1 = Value.Hash1 Block.Hash2 = Value.Hash2 } @@ -659,14 +668,14 @@ module.exports = class CDB extends require("../code") var Bytes = Block.TrDataLen; var Pow = Block.Power; var Miner = Block.Miner; - var Date = DateFromBlock(Block.BlockNum); + var Date = global.DateFromBlock(Block.BlockNum); try { if (!eval(Filter)) continue; } catch (e) { if (!WasError) - ToLog(e) + global.ToLog(e) WasError = 1 } } @@ -686,7 +695,7 @@ module.exports = class CDB extends require("../code") continue; if (num >= Block.arrContent.length) break; - var Tr = { body: Block.arrContent[num] }; + var Tr: any = { body: Block.arrContent[num] }; this.CheckCreateTransactionObject(Tr, 1) Tr.Num = num Tr.Type = Tr.body[0] @@ -694,7 +703,7 @@ module.exports = class CDB extends require("../code") Tr.Body = [] for (var j = 0; j < Tr.body.length; j++) Tr.Body[j] = Tr.body[j] - var App = DAppByType[Tr.Type]; + var App = global.DAppByType[Tr.Type]; if (App) { Tr.Script = App.GetScriptTransaction(Tr.body) if (BlockNum >= this.BlockNumDBMin) @@ -722,7 +731,7 @@ module.exports = class CDB extends require("../code") return arr; } ClearStat() { - var MAX_ARR_PERIOD = MAX_STAT_PERIOD * 2 + 10; + var MAX_ARR_PERIOD = global.MAX_STAT_PERIOD * 2 + 10; this.StatMap = { StartPos: 0, StartBlockNum: 0, Length: 0, "ArrPower": new Float64Array(MAX_ARR_PERIOD), "ArrPowerMy": new Float64Array(MAX_ARR_PERIOD), } @@ -755,9 +764,9 @@ module.exports = class CDB extends require("../code") if (num <= this.BlockNumDB) { var Block = this.ReadBlockHeaderDB(num); if (Block) { - Power = GetPowPower(Block.PowHash) - var Miner = ReadUintFromArr(Block.AddrHash, 0); - var Nonce = ReadUintFromArr(Block.AddrHash, 6); + Power = global.GetPowPower(Block.PowHash) + var Miner = global.ReadUintFromArr(Block.AddrHash, 0); + Nonce = global.ReadUintFromArr(Block.AddrHash, 6); if (Param.Miner < 0) { if (Param.Adviser) { var Adviser = global.DApps.Accounts.GetAdviserByMiner(Map, Miner); @@ -794,9 +803,9 @@ module.exports = class CDB extends require("../code") var StepTime = 1; while (ArrList.length >= MaxSizeArr) { if (Param.bNonce) - ArrList = ResizeArrMax(ArrList) + ArrList = global.ResizeArrMax(ArrList) else - ArrList = ResizeArrAvg(ArrList) + ArrList = global.ResizeArrAvg(ArrList) StepTime = StepTime * 2 } return { ArrList: ArrList, AvgValue: AvgValue, steptime: StepTime }; @@ -804,7 +813,7 @@ module.exports = class CDB extends require("../code") GetStatBlockchain(name, MinLength) { if (!MinLength) return []; - var MAX_ARR_PERIOD = MAX_STAT_PERIOD * 2 + 10; + var MAX_ARR_PERIOD = global.MAX_STAT_PERIOD * 2 + 10; if (!this.StatMap) { this.ClearStat() } @@ -835,9 +844,9 @@ module.exports = class CDB extends require("../code") if (num <= MaxNumBlockDB) { var Block = this.ReadBlockHeaderDB(num); if (Block) { - Power = GetPowPower(Block.PowHash) - var Miner = ReadUintFromArr(Block.AddrHash, 0); - if (Miner === GENERATE_BLOCK_ACCOUNT) { + Power = global.GetPowPower(Block.PowHash) + var Miner = global.ReadUintFromArr(Block.AddrHash, 0); + if (Miner === global.GENERATE_BLOCK_ACCOUNT) { PowerMy = Power } } @@ -860,7 +869,7 @@ module.exports = class CDB extends require("../code") this.StatMap["POWER_BLOCKCHAIN"] = arr this.StatMap["POWER_MY_WIN"] = arrmy } - var arr = this.StatMap[name]; + arr = this.StatMap[name]; if (!arr) arr = [] var arrT = this.StatMap["POWER_BLOCKCHAIN"]; @@ -875,8 +884,8 @@ module.exports = class CDB extends require("../code") return [Num + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, Num + 1]; } GetSeqHash(BlockNum, PrevHash, TreeHash) { - var arr = [GetArrFromValue(BlockNum), PrevHash, TreeHash]; - var SeqHash = CalcHashFromArray(arr, true); + var arr = [global.GetArrFromValue(BlockNum), PrevHash, TreeHash]; + var SeqHash = global.CalcHashFromArray(arr, true); return SeqHash; } CheckCreateTicketObject(Tr, BlockNum, SetTxID) { @@ -885,28 +894,28 @@ module.exports = class CDB extends require("../code") var FullHashTicket = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; for (var i = 0; i < global.TR_TICKET_HASH_LENGTH; i++) FullHashTicket[i] = Tr.HashTicket[i] - WriteUintToArrOnPos(FullHashTicket, Tr.num, global.TR_TICKET_HASH_LENGTH) + global.WriteUintToArrOnPos(FullHashTicket, Tr.num, global.TR_TICKET_HASH_LENGTH) Tr.HashPow = global.sha3(FullHashTicket) - Tr.power = GetPowPower(Tr.HashPow) + Tr.power = global.GetPowPower(Tr.HashPow) Tr.TimePow = Tr.power if (SetTxID) - Tr.TxID = GetHexFromArr(FullHashTicket.slice(0, TR_TICKET_HASH_LENGTH + 6)) + Tr.TxID = global.GetHexFromArr(FullHashTicket.slice(0, global.TR_TICKET_HASH_LENGTH + 6)) } } - CheckCreateTransactionObject(Tr, SetTxID, NotPrioritet) { + CheckCreateTransactionObject(Tr, SetTxID, NotPrioritet?) { if (!Tr.HashPow) { var Body = Tr.body; Tr.IsTx = 1 - Tr.num = ReadUintFromArr(Body, Body.length - 12) + Tr.num = global.ReadUintFromArr(Body, Body.length - 12) if (Tr.num >= global.BLOCKNUM_TICKET_ALGO) Tr.HASH = global.sha3(Body) else Tr.HASH = global.shaarr(Body) Tr.HashTicket = Tr.HASH.slice(0, global.TR_TICKET_HASH_LENGTH) this.CheckCreateTicketObject(Tr, Tr.num, SetTxID) - Tr.Prioritet = MAX_LENGTH_SENDER_MAP + Tr.Prioritet = global.MAX_LENGTH_SENDER_MAP if (!NotPrioritet && this.GetSenderPrioritet) { - var App = DAppByType[Body[0]]; + var App = global.DAppByType[Body[0]]; if (App) { Tr.SenderNum = App.GetSenderNum(Tr.num, Body) if (Tr.SenderNum && Tr.SenderNum > 0) { @@ -919,7 +928,7 @@ module.exports = class CDB extends require("../code") } BlockChainToBuf(WriteNum, StartNum, EndBlockNum) { if (StartNum === undefined) - return BufLib.GetNewBuffer(10); + return global.BufLib.GetNewBuffer(10); var GetLength = EndBlockNum - StartNum + 1; var arr = []; var arr0 = this.PrevBlockChainArr; @@ -927,7 +936,7 @@ module.exports = class CDB extends require("../code") var Block = arr0[arr0.length - 1]; if (Block.BlockNum >= StartNum && Block.BlockNum <= EndBlockNum) { var BlockDB = this.ReadBlockHeaderDB(Block.BlockNum); - if (!BlockDB || global.CompareArr(Block.SumHash, BlockDB.SumHash) !== 0) { + if (!BlockDB || global.CompareArr(Block.SumHash, global.BlockDB.SumHash) !== 0) { arr0 = undefined } else { @@ -960,11 +969,11 @@ module.exports = class CDB extends require("../code") var CountSend = arr.length - global.BLOCK_PROCESSING_LENGTH2; var BufWrite; if (CountSend <= 0) { - BufWrite = BufLib.GetNewBuffer(10) + BufWrite = global.BufLib.GetNewBuffer(10) } else { var BufSize = 6 + 4 + global.BLOCK_PROCESSING_LENGTH2 * 32 + 32 + 6 + CountSend * 64; - BufWrite = BufLib.GetNewBuffer(BufSize) + BufWrite = global.BufLib.GetNewBuffer(BufSize) BufWrite.Write(StartNum, "uint") BufWrite.Write(CountSend, "uint32") for (var i = 0; i < arr.length; i++) { @@ -993,8 +1002,8 @@ function AddInfo(Block, Str, BlockNumStart) { Block.Info = Str; else if (Block.Info.length < 2000) { - var timesend = "" + SERVER.CurrentBlockNum - BlockNumStart; - var now = GetCurrentTime(); + var timesend: any = "" as any + global.SERVER.CurrentBlockNum - BlockNumStart; + var now = global.GetCurrentTime(); timesend += ".[" + now.getSeconds().toStringZ(2) + "." + now.getMilliseconds().toStringZ(3) + "]"; Str = timesend + ": " + Str; Block.Info += "\n" + Str; @@ -1003,19 +1012,19 @@ function AddInfo(Block, Str, BlockNumStart) { global.AddInfoChain = function(Str) { if (!global.STAT_MODE) return; - if (this.BlockNumStart > GetCurrentBlockNumByTime() - HISTORY_BLOCK_COUNT) + if (this.BlockNumStart > global.GetCurrentBlockNumByTime() - global.HISTORY_BLOCK_COUNT) AddInfo(this, Str, this.BlockNumStart); }; global.AddInfoBlock = function(Block, Str) { if (!global.STAT_MODE) return; - if (Block && Block.BlockNum && Block.BlockNum > GetCurrentBlockNumByTime() - HISTORY_BLOCK_COUNT) + if (Block && Block.BlockNum && Block.BlockNum > global.GetCurrentBlockNumByTime() - global.HISTORY_BLOCK_COUNT) AddInfo(Block, Str, Block.BlockNum); }; global.GetNodeStrPort = function(Node) { if (!Node) return ""; - if (LOCAL_RUN) + if (global.LOCAL_RUN) return "" + Node.port; else { if (!Node.ip) diff --git a/src/core/db/db.ts b/src/core/db/db.ts index e439963..cd44163 100644 --- a/src/core/db/db.ts +++ b/src/core/db/db.ts @@ -21,8 +21,8 @@ module.exports = class { this.DBMap = {} } CheckPathDB() { - var Path = global.global.GetDataPath("DB"); - global.global.CheckCreateDir(Path) + var Path = global.GetDataPath("DB"); + global.CheckCreateDir(Path) } CloseDBFile(name, bdelete) { this.LastHash = undefined @@ -34,7 +34,7 @@ module.exports = class { fs.close(Item.fd, function(err) { if (!err) { if (bDelete) { - var fname = global.global.GetDataPath("DB/" + Name); + var fname = global.GetDataPath("DB/" + Name); fs.unlink(fname, function(err) { if (err) global.ToLog(err) @@ -63,7 +63,7 @@ module.exports = class { this.CheckPathDB() this.WasCheckPathDB = true } - var fname = global.global.GetDataPath("DB/" + name); + var fname = global.GetDataPath("DB/" + name); if (!fs.existsSync(fname)) { if (bExist) { this.DBMap[name] = null @@ -90,7 +90,7 @@ function CheckStartOneProcess(Name) { if (global.READ_ONLY_DB || MapCheckProcess[Name]) return; MapCheckProcess[Name] = 1; - var path = global.global.GetDataPath("DB/" + Name); + var path = global.GetDataPath("DB/" + Name); if (fs.existsSync(path)) { fs.unlinkSync(path); } diff --git a/src/core/html-server.ts b/src/core/html-server.ts index 7afe003..985bcdb 100644 --- a/src/core/html-server.ts +++ b/src/core/html-server.ts @@ -41,15 +41,7 @@ ContenTypeMap[".js"] = "application/javascript"; ContenTypeMap["html"] = "text/html"; ContenTypeMap["psd"] = "application/octet-stream"; global.HTTPCaller = {}; - -let { - ToLog, - ToError, - DApps, - SERVER, - MAX_TRANSACTION_COUNT -} = global - +let HTTPCaller = global.HTTPCaller function DoCommand(response, Type, Path, params, remoteAddress) { var F = global.HTTPCaller[params[0]]; if (F) { @@ -188,7 +180,7 @@ function DappClientCodeFile(response, StrNum) { response.end(); }; global.HTTPCaller.DappSmartHTMLFile = function(Params) { - var Data = global.DApps.Smart.ReadSmart(ParseNum(Params.Smart)); + var Data = global.DApps.Smart.ReadSmart(global.ParseNum(Params.Smart)); if (Data) { if (global.DEV_MODE && Params.DebugPath) { global.ToLog("Load: " + Params.DebugPath); @@ -203,7 +195,7 @@ global.SendBlockFile = SendBlockFile; function SendBlockFile(response, BlockNum, TrNum) { BlockNum = parseInt(BlockNum); TrNum = parseInt(TrNum); - if (BlockNum && BlockNum <= global.SERVER.GetMaxNumBlockDB() && TrNum <= MAX_TRANSACTION_COUNT) { + if (BlockNum && BlockNum <= global.SERVER.GetMaxNumBlockDB() && TrNum <= global.MAX_TRANSACTION_COUNT) { var Block = global.SERVER.ReadBlockDB(BlockNum); if (Block && Block.arrContent) { SendToResponceFile(response, Block, TrNum); @@ -211,7 +203,7 @@ function SendBlockFile(response, BlockNum, TrNum) { } else if (!Block || !Block.TrDataPos) { - LoadBlockFromNetwork({ BlockNum: BlockNum }, function(Err, Block) { + global.LoadBlockFromNetwork({ BlockNum: BlockNum }, function(Err, Block) { if (Err) { SendToResponce404(response); } @@ -247,11 +239,11 @@ function SendToResponce404(response) { response.end(); }; HTTPCaller.DappBlockFile = function(Params, response) { - Params.BlockNum = ParseNum(Params.BlockNum); - Params.TrNum = ParseNum(Params.TrNum); + Params.BlockNum = global.ParseNum(Params.BlockNum); + Params.TrNum = global.ParseNum(Params.TrNum); if (!Params.TrNum) Params.TrNum = 0; - if (Params.BlockNum && Params.BlockNum <= global.SERVER.GetMaxNumBlockDB() && Params.TrNum <= MAX_TRANSACTION_COUNT) { + if (Params.BlockNum && Params.BlockNum <= global.SERVER.GetMaxNumBlockDB() && Params.TrNum <= global.MAX_TRANSACTION_COUNT) { var Block = global.SERVER.ReadBlockDB(Params.BlockNum); if (Block && Block.arrContent) { SendToResponceDappFile(response, Block, Params.TrNum); @@ -259,7 +251,7 @@ HTTPCaller.DappBlockFile = function(Params, response) { } else if (!Block || !Block.TrDataPos) { - LoadBlockFromNetwork(Params, function(Err, Block) { + global.LoadBlockFromNetwork(Params, function(Err, Block) { if (Err) { SendToResponceResult0(response); } @@ -274,7 +266,7 @@ HTTPCaller.DappBlockFile = function(Params, response) { }; function SendToResponceDappFile(response, Block, TrNum) { - var Result = { result: 0 }; + var Result: any = { result: 0 }; var Body = Block.arrContent[TrNum]; if (Body) { var Type = Body[0]; @@ -283,7 +275,7 @@ function SendToResponceDappFile(response, Block, TrNum) { Result = { result: 1, Type: Type, ContentType: TR.ContentType, Name: TR.Name, Body: TR.Data.toString('utf8') }; } else { - var App = DAppByType[Type]; + var App = global.DAppByType[Type]; if (App) { Body = JSON.parse(App.GetScriptTransaction(Body)); } @@ -303,7 +295,7 @@ HTTPCaller.DappStaticCall = function(Params, response) { global.DApps.Accounts.BeginBlock(); global.DApps.Accounts.BeginTransaction(); global.TickCounter = 100000; - var Account = global.DApps.Accounts.ReadStateTR(ParseNum(Params.Account)); + var Account = global.DApps.Accounts.ReadStateTR(global.ParseNum(Params.Account)); if (!Account) { return { result: 0, RetValue: "Error account Num: " + Params.Account }; } @@ -324,7 +316,7 @@ HTTPCaller.DappStaticCall = function(Params, response) { return null; }; HTTPCaller.DappInfo = function(Params, responce, ObjectOnly) { - var SmartNum = ParseNum(Params.Smart); + var SmartNum = global.ParseNum(Params.Smart); if (global.TX_PROCESS && global.TX_PROCESS.Worker) global.TX_PROCESS.Worker.send({ cmd: "SetSmartEvent", Smart: SmartNum }); var Account; @@ -349,15 +341,15 @@ HTTPCaller.DappInfo = function(Params, responce, ObjectOnly) { var EArr = GetEventArray(SmartNum, Context); var WLData = HTTPCaller.DappWalletList(Params); var ArrLog = []; - for (var i = 0; i < ArrLogClient.length; i++) { - var Item = ArrLogClient[i]; + for (var i = 0; i < global.ArrLogClient.length; i++) { + var Item = global.ArrLogClient[i]; if (!Item.final) continue; ArrLog.push(Item); } - var Ret = { - result: 1, DELTA_CURRENT_TIME: DELTA_CURRENT_TIME, MIN_POWER_POW_TR: MIN_POWER_POW_TR, FIRST_TIME_BLOCK: FIRST_TIME_BLOCK, - CONSENSUS_PERIOD_TIME: CONSENSUS_PERIOD_TIME, PRICE_DAO: PRICE_DAO(SERVER.BlockNumDB), NEW_SIGN_TIME: NEW_SIGN_TIME, Smart: Smart, + var Ret: any = { + result: 1, DELTA_CURRENT_TIME: global.DELTA_CURRENT_TIME, MIN_POWER_POW_TR: global.MIN_POWER_POW_TR, FIRST_TIME_BLOCK: global.FIRST_TIME_BLOCK, + CONSENSUS_PERIOD_TIME: global.CONSENSUS_PERIOD_TIME, PRICE_DAO: global.PRICE_DAO(global.SERVER.BlockNumDB), NEW_SIGN_TIME: global.NEW_SIGN_TIME, Smart: Smart, Account: Account, ArrWallet: WLData.arr, ArrEvent: EArr, ArrLog: ArrLog, }; if (global.WALLET) { @@ -367,7 +359,7 @@ HTTPCaller.DappInfo = function(Params, responce, ObjectOnly) { } if (!ObjectOnly) { Ret.CurTime = Date.now(); - Ret.CurBlockNum = GetCurrentBlockNumByTime(); + Ret.CurBlockNum = global.GetCurrentBlockNumByTime(); Ret.BlockNumDB = global.SERVER.BlockNumDB; Ret.MaxAccID = global.DApps.Accounts.GetMaxAccount(); Ret.MaxDappsID = global.DApps.Smart.GetMaxNum(); @@ -375,14 +367,14 @@ HTTPCaller.DappInfo = function(Params, responce, ObjectOnly) { return Ret; }; HTTPCaller.DappWalletList = function(Params) { - var arr0 = global.DApps.Accounts.GetWalletAccountsByMap(WALLET.AccountMap); + var arr0 = global.DApps.Accounts.GetWalletAccountsByMap(global.WALLET.AccountMap); var arr = []; for (var i = 0; i < arr0.length; i++) { if (Params.AllAccounts || arr0[i].Value.Smart === Params.Smart) { arr.push(arr0[i]); } } - var Ret = { result: 1, arr: arr, }; + var Ret: any = { result: 1, arr: arr, }; return Ret; }; HTTPCaller.DappAccountList = function(Params) { @@ -402,13 +394,13 @@ HTTPCaller.DappTransactionList = function(Params, response) { Params.Param3 = Params.BlockNum; return HTTPCaller.GetTransactionAll(Params, response); }; -var sessionid = GetHexFromAddres(crypto.randomBytes(20)); +var sessionid = global.GetHexFromAddres(crypto.randomBytes(20)); HTTPCaller.RestartNode = function(Params) { global.RestartNode(); return { result: 1 }; }; HTTPCaller.ToLogServer = function(Str) { - ToLogClient(Str); + global.ToLogClient(Str); return { result: 1 }; }; HTTPCaller.FindMyAccounts = function(Params) { @@ -443,11 +435,11 @@ HTTPCaller.GetBlockList = function(Params, response, bOnlyNum) { if (!Block) { CountWait++; WasWait = 1; - LoadBlockFromNetwork({ BlockNum: BlockNum }, function(Err, Block) { + global.LoadBlockFromNetwork({ BlockNum: BlockNum }, function(Err, Block) { CountWait--; if (CountWait === 0) { var arr = global.SERVER.GetRows(Params.StartNum, Params.CountNum, Params.Filter); - var Result = { arr: arr, result: 1 }; + var Result: any = { arr: arr, result: 1 }; response.end(JSON.stringify(Result)); } }); @@ -466,7 +458,7 @@ HTTPCaller.GetTransactionAll = function(Params, response) { if (BlockNum < global.SERVER.BlockNumDBMin) { var Block = global.SERVER.ReadBlockHeaderDB(BlockNum); if (!Block) { - LoadBlockFromNetwork({ BlockNum: BlockNum }, function(Err, Block) { + global.LoadBlockFromNetwork({ BlockNum: BlockNum }, function(Err, Block) { var Result; if (Err) { Result = { arr: [], result: 0 }; @@ -492,7 +484,7 @@ HTTPCaller.GetHashList = function(Params) { var arr = global.DApps.Accounts.DBAccountsHash.GetRows(Params.StartNum, Params.CountNum, Params.Filter); for (var i = 0; i < arr.length; i++) { var item = arr[i]; - item.BlockNum = item.Num * PERIOD_ACCOUNT_HASH; + item.BlockNum = item.Num * global.PERIOD_ACCOUNT_HASH; item.Hash100 = []; if (item.BlockNum % 100 === 0) { var Data = global.SERVER.DBHeader100.Read(item.BlockNum / 100); @@ -527,24 +519,24 @@ HTTPCaller.GetWalletInfo = function(Params) { var TXBlockNum = 0; if (StateTX) TXBlockNum = StateTX.BlockNum; - var Ret = { + var Ret: any = { result: 1, WalletOpen: global.WALLET.WalletOpen, WalletIsOpen: (global.WALLET.WalletOpen !== false), WalletCanSign: (global.WALLET.WalletOpen !== false && global.WALLET.KeyPair.WasInit), - CODE_VERSION: CODE_VERSION, MAX_TRANSACTION_LIMIT: MAX_TRANSACTION_LIMIT, VersionNum: global.UPDATE_CODE_VERSION_NUM, RelayMode: global.SERVER.RelayMode, - BlockNumDB: global.SERVER.BlockNumDB, CurBlockNum: GetCurrentBlockNumByTime(), CurTime: Date.now(), IsDevelopAccount: IsDeveloperAccount(WALLET.PubKeyArr), - AccountMap: global.WALLET.AccountMap, ArrLog: ArrLogClient, MaxAccID: global.DApps.Accounts.GetMaxAccount(), MaxActNum: global.DApps.Accounts.GetActsMaxNum(), + CODE_VERSION: global.CODE_VERSION, MAX_TRANSACTION_LIMIT: global.MAX_TRANSACTION_LIMIT, VersionNum: global.UPDATE_CODE_VERSION_NUM, RelayMode: global.SERVER.RelayMode, + BlockNumDB: global.SERVER.BlockNumDB, CurBlockNum: global.GetCurrentBlockNumByTime(), CurTime: Date.now(), IsDevelopAccount: global.IsDeveloperAccount(global.WALLET.PubKeyArr), + AccountMap: global.WALLET.AccountMap, ArrLog: global.global.ArrLogClient, MaxAccID: global.DApps.Accounts.GetMaxAccount(), MaxActNum: global.DApps.Accounts.GetActsMaxNum(), MaxDappsID: global.DApps.Smart.GetMaxNum(), NeedRestart: global.NeedRestart, ip: global.SERVER.ip, port: global.SERVER.port, NET_WORK_MODE: global.NET_WORK_MODE, - INTERNET_IP_FROM_STUN: global.INTERNET_IP_FROM_STUN, HistoryMaxNum: MaxHistory, DELTA_CURRENT_TIME: DELTA_CURRENT_TIME, FIRST_TIME_BLOCK: FIRST_TIME_BLOCK, - CONSENSUS_PERIOD_TIME: CONSENSUS_PERIOD_TIME, NEW_SIGN_TIME: NEW_SIGN_TIME, DATA_PATH: (DATA_PATH.substr(1, 1) === ":" ? DATA_PATH : GetNormalPathString(process.cwd() + "/" + DATA_PATH)), - NodeAddrStr: global.SERVER.addrStr, STAT_MODE: global.STAT_MODE, HTTPPort: global.HTTP_PORT_NUMBER, HTTPPassword: HTTP_PORT_PASSWORD, - CONSTANTS: Constants, CheckPointBlockNum: CHECK_POINT.BlockNum, MiningAccount: global.GENERATE_BLOCK_ACCOUNT, CountMiningCPU: GetCountMiningCPU(), - CountRunCPU: global.ArrMiningWrk.length, MiningPaused: global.MiningPaused, HashRate: HashRateOneSec, MIN_POWER_POW_TR: MIN_POWER_POW_TR, - PRICE_DAO: PRICE_DAO(SERVER.BlockNumDB), NWMODE: global.NWMODE, PERIOD_ACCOUNT_HASH: PERIOD_ACCOUNT_HASH, MAX_ACCOUNT_HASH: global.DApps.Accounts.DBAccountsHash.GetMaxNum(), + INTERNET_IP_FROM_STUN: global.INTERNET_IP_FROM_STUN, HistoryMaxNum: MaxHistory, DELTA_CURRENT_TIME: global.DELTA_CURRENT_TIME, FIRST_TIME_BLOCK: global.FIRST_TIME_BLOCK, + CONSENSUS_PERIOD_TIME: global.CONSENSUS_PERIOD_TIME, NEW_SIGN_TIME: global.NEW_SIGN_TIME, DATA_PATH: (global.DATA_PATH.substr(1, 1) === ":" ? global.DATA_PATH : global.GetNormalPathString(process.cwd() + "/" + global.DATA_PATH)), + NodeAddrStr: global.SERVER.addrStr, STAT_MODE: global.STAT_MODE, HTTPPort: global.HTTP_PORT_NUMBER, HTTPPassword: global.HTTP_PORT_PASSWORD, + CONSTANTS: Constants, CheckPointBlockNum: global.CHECK_POINT.BlockNum, MiningAccount: global.GENERATE_BLOCK_ACCOUNT, CountMiningCPU: global.GetCountMiningCPU(), + CountRunCPU: global.ArrMiningWrk.length, MiningPaused: global.MiningPaused, HashRate: HashRateOneSec, MIN_POWER_POW_TR: global.MIN_POWER_POW_TR, + PRICE_DAO: global.PRICE_DAO(global.SERVER.BlockNumDB), NWMODE: global.NWMODE, PERIOD_ACCOUNT_HASH: global.PERIOD_ACCOUNT_HASH, MAX_ACCOUNT_HASH: global.DApps.Accounts.DBAccountsHash.GetMaxNum(), TXBlockNum: TXBlockNum, SpeedSignLib: global.SpeedSignLib, }; if (Params.Account) - Ret.PrivateKey = global.GetHexFromArr(WALLET.GetPrivateKey(WALLET.AccountMap[Params.Account])); + Ret.PrivateKey = global.GetHexFromArr(global.WALLET.GetPrivateKey(global.WALLET.AccountMap[Params.Account])); else - Ret.PrivateKey = global.GetHexFromArr(WALLET.GetPrivateKey()); + Ret.PrivateKey = global.GetHexFromArr(global.WALLET.GetPrivateKey()); Ret.PublicKey = global.WALLET.KeyPair.PubKeyStr; return Ret; }; @@ -553,7 +545,7 @@ HTTPCaller.TestSignLib = function() { global.TestSignLib(); }; HTTPCaller.GetWalletAccounts = function() { - var Ret = { result: 1, arr: global.DApps.Accounts.GetWalletAccountsByMap(WALLET.AccountMap), }; + var Ret: any = { result: 1, arr: global.DApps.Accounts.GetWalletAccountsByMap(global.WALLET.AccountMap), }; Ret.PrivateKey = global.WALLET.KeyPair.PrivKeyStr; Ret.PublicKey = global.WALLET.KeyPair.PubKeyStr; return Ret; @@ -589,14 +581,14 @@ HTTPCaller.GetSignFromHEX = function(Params) { }; HTTPCaller.SendTransactionHex = function(Params) { var body = global.GetArrFromHex(Params.Hex); - var Result = { result: 1 }; + var Result: any = { result: 1 }; var Res = global.SERVER.AddTransactionOwn({ body: body, ToAll: 1 }); Result.sessionid = sessionid; - Result.text = AddTrMap[Res]; + Result.text = global.AddTrMap[Res]; var final = false; if (Res <= 0 && Res !== - 3) final = true; - ToLogClient("Send: " + Result.text, global.GetHexFromArr(sha3(body)), final); + global.ToLogClient("Send: " + Result.text, global.GetHexFromArr(global.sha3(body)), final); return Result; }; HTTPCaller.SendDirectCode = function(Params, response) { @@ -617,7 +609,7 @@ HTTPCaller.SendDirectCode = function(Params, response) { else { try { var ret = eval(Params.Code); - Result = JSON.stringify(ret, "", 4); + Result = JSON.stringify(ret, undefined, 4); } catch (e) { Result = "" + e; @@ -634,12 +626,12 @@ HTTPCaller.SetMining = function(MiningAccount) { function CheckCorrectDevKey() { if (global.WALLET.WalletOpen === false) { var StrErr = "Not open wallet"; - ToLogClient(StrErr); + global.ToLogClient(StrErr); return { result: 0, text: StrErr }; } - if (!IsDeveloperAccount(WALLET.PubKeyArr)) { + if (!global.IsDeveloperAccount(global.WALLET.PubKeyArr)) { var StrErr = "Not developer key"; - ToLogClient(StrErr); + global.ToLogClient(StrErr); return { result: 0, text: StrErr }; } return true; @@ -685,8 +677,8 @@ function SetCheckPointOnBlock(BlockNum) { var Block = global.SERVER.ReadBlockHeaderDB(BlockNum); if (!Block) return 0; - var SignArr = arr2(Block.Hash, GetArrFromValue(Block.BlockNum)); - var Sign = secp256k1.sign(SHA3BUF(SignArr, Block.BlockNum), global.WALLET.KeyPair.getPrivateKey('')).signature; + var SignArr = global.arr2(Block.Hash, global.GetArrFromValue(Block.BlockNum)); + var Sign = global.secp256k1.sign(global.SHA3BUF(SignArr, Block.BlockNum), global.WALLET.KeyPair.getPrivateKey('')).signature; global.CHECK_POINT = { BlockNum: BlockNum, Hash: Block.Hash, Sign: Sign }; global.SERVER.ResetNextPingAllNode(); return 1; @@ -708,17 +700,17 @@ var SumCheckPow = 0; var CountCheckPow = 0; function RunSetCheckPoint() { - if (!SERVER.BlockNumDB) + if (!global.SERVER.BlockNumDB) return; - if (SERVER.BlockNumDB < 2100000) + if (global.SERVER.BlockNumDB < 2100000) return; - var Delta = GetCurrentBlockNumByTime() - global.SERVER.BlockNumDB; + var Delta = global.GetCurrentBlockNumByTime() - global.SERVER.BlockNumDB; if (Delta > 16) return; var BlockNum = global.SERVER.BlockNumDB - global.CheckPointDelta; var Block = global.SERVER.ReadBlockHeaderDB(BlockNum); if (Block) { - var Power = GetPowPower(Block.PowHash); + var Power = global.GetPowPower(Block.PowHash); if (Power < 30) { global.ToLog("CANNOT SET CHECK POINT Power=" + Power + " BlockNum=" + BlockNum); return; @@ -737,7 +729,7 @@ function RunSetCheckPoint() { } }; HTTPCaller.SetNewCodeVersion = function(Data) { - var Ret = CheckCorrectDevKey(); + var Ret: any = CheckCorrectDevKey(); if (Ret !== true) return Ret; var Ret = global.SERVER.SetNewCodeVersion(Data, global.WALLET.KeyPair.getPrivateKey('')); @@ -745,17 +737,17 @@ HTTPCaller.SetNewCodeVersion = function(Data) { return { result: 1, text: Ret }; }; HTTPCaller.SetCheckNetConstant = function(Data) { - var Ret = CheckCorrectDevKey(); + var Ret: any = CheckCorrectDevKey(); if (Ret !== true) return Ret; if (!Data) { - ToLogClient("Data not set"); + global.ToLogClient("Data not set"); return { result: 0, text: "Data not set" }; } - Data.Num = GetCurrentBlockNumByTime(); - Data.BlockNum = GetCurrentBlockNumByTime() + 10; + Data.Num = global.GetCurrentBlockNumByTime(); + Data.BlockNum = global.GetCurrentBlockNumByTime() + 10; var SignArr = global.SERVER.GetSignCheckNetConstant(Data); - Data.Sign = secp256k1.sign(SHA3BUF(SignArr), global.WALLET.KeyPair.getPrivateKey('')).signature; + Data.Sign = global.secp256k1.sign(global.SHA3BUF(SignArr), global.WALLET.KeyPair.getPrivateKey('')).signature; global.SERVER.CheckNetConstant({ NetConstant: Data }, { addrStr: "local" }); global.SERVER.ResetNextPingAllNode(); return { result: 1, text: "Set NET_CONSTANT BlockNum=" + Data.BlockNum }; @@ -765,11 +757,11 @@ HTTPCaller.SetCheckDeltaTime = function(Data) { if (Ret !== true) return Ret; if (!Data || !Data.Num) { - ToLogClient("Num not set"); + global.ToLogClient("Num not set"); return { result: 0 }; } var SignArr = global.SERVER.GetSignCheckDeltaTime(Data); - Data.Sign = secp256k1.sign(SHA3BUF(SignArr), global.WALLET.KeyPair.getPrivateKey('')).signature; + Data.Sign = global.secp256k1.sign(global.SHA3BUF(SignArr), global.WALLET.KeyPair.getPrivateKey('')).signature; global.CHECK_DELTA_TIME = Data; global.SERVER.ResetNextPingAllNode(); return { result: 1, text: "Set check time Num=" + Data.Num }; @@ -791,9 +783,9 @@ var StartCheckTimeNum = 0; function RunAutoCorrTime() { if (global.WALLET.WalletOpen === false) return; - if (GetCurrentBlockNumByTime() > StartCheckTimeNum && Math.abs(global.DELTA_CURRENT_TIME) >= 120) { + if (global.GetCurrentBlockNumByTime() > StartCheckTimeNum && Math.abs(global.DELTA_CURRENT_TIME) >= 120) { var AutoDelta = - Math.trunc(global.DELTA_CURRENT_TIME); - var Data = { Num: GetCurrentBlockNumByTime(), bUse: 1, bAddTime: 1 }; + var Data: any = { Num: global.GetCurrentBlockNumByTime(), bUse: 1, bAddTime: 1 }; if (AutoDelta < 0) { AutoDelta = - AutoDelta; Data.bAddTime = 0; @@ -802,7 +794,7 @@ function RunAutoCorrTime() { Data.StartBlockNum = Data.Num + 5; Data.EndBlockNum = Data.StartBlockNum + Math.trunc(AutoDelta / Data.DeltaTime); var SignArr = global.SERVER.GetSignCheckDeltaTime(Data); - Data.Sign = secp256k1.sign(SHA3BUF(SignArr), global.WALLET.KeyPair.getPrivateKey('')).signature; + Data.Sign = global.secp256k1.sign(global.SHA3BUF(SignArr), global.WALLET.KeyPair.getPrivateKey('')).signature; global.CHECK_DELTA_TIME = Data; global.SERVER.ResetNextPingAllNode(); StartCheckTimeNum = Data.EndBlockNum + 1; @@ -814,10 +806,10 @@ HTTPCaller.SaveConstant = function(SetObj) { for (var key in SetObj) { global[key] = SetObj[key]; } - SAVE_CONST(true); + global.SAVE_CONST(true); global.SERVER.DO_CONSTANT(); - if (!WasUpdate && global.USE_AUTO_UPDATE && CODE_VERSION.VersionNum && global.UPDATE_CODE_VERSION_NUM < CODE_VERSION.VersionNum) { - global.SERVER.UseCode(CODE_VERSION.VersionNum, true); + if (!WasUpdate && global.USE_AUTO_UPDATE && global.CODE_VERSION.VersionNum && global.UPDATE_CODE_VERSION_NUM < global.CODE_VERSION.VersionNum) { + global.SERVER.UseCode(global.CODE_VERSION.VersionNum, true); } if (SetObj.DoRestartNode) global.RestartNode(); @@ -830,7 +822,7 @@ HTTPCaller.SaveConstant = function(SetObj) { HTTPCaller.SetHTTPParams = function(SetObj) { global.HTTP_PORT_NUMBER = SetObj.HTTPPort; global.HTTP_PORT_PASSWORD = SetObj.HTTPPassword; - SAVE_CONST(true); + global.SAVE_CONST(true); if (SetObj.DoRestartNode) global.RestartNode(); return { result: 1 }; @@ -841,17 +833,17 @@ HTTPCaller.SetNetMode = function(SetObj) { for (var key in SetObj) { global.NET_WORK_MODE[key] = SetObj[key]; } - if (NET_WORK_MODE) { - global.START_IP = NET_WORK_MODE.ip; - global.START_PORT_NUMBER = NET_WORK_MODE.port; + if (global.NET_WORK_MODE) { + global.START_IP = global.NET_WORK_MODE.ip; + global.START_PORT_NUMBER = global.NET_WORK_MODE.port; } - SAVE_CONST(true); + global.SAVE_CONST(true); if (SetObj.DoRestartNode) global.RestartNode(); return { result: 1 }; }; HTTPCaller.GetAccountKey = function(Num) { - var Result = {}; + var Result: any = {}; Result.result = 0; var KeyPair = global.WALLET.GetAccountKey(Num); if (KeyPair) { @@ -924,7 +916,7 @@ function GetCopyNode(Node, BlockCounts) { var Item = { VersionNum: Node.VersionNum, NoSendTx: Node.NoSendTx, GetNoSendTx: Node.GetNoSendTx, DirectMAccount: Node.DirectMAccount, id: Node.id, ip: Node.ip, portweb: Node.portweb, port: Node.port, TransferCount: Node.TransferCount, GetTiming: GetTiming, ErrCountAll: Node.ErrCountAll, - LevelCount: Node.LevelCount, LevelEnum: Node.LevelEnum, TimeTransfer: GetStrOnlyTimeUTC(new Date(Node.LastTimeTransfer)), BlockProcessCount: Node.BlockProcessCount, + LevelCount: Node.LevelCount, LevelEnum: Node.LevelEnum, TimeTransfer: global.GetStrOnlyTimeUTC(new Date(Node.LastTimeTransfer)), BlockProcessCount: Node.BlockProcessCount, DeltaTime: Node.DeltaTime, DeltaTimeM: Node.DeltaTimeM, DeltaGlobTime: Node.DeltaGlobTime, PingNumber: Node.PingNumber, NextConnectDelta: Node.NextConnectDelta, NextGetNodesDelta: Node.NextGetNodesDelta, NextHotDelta: Node.NextHotDelta, Name: Node.Name, addrStr: Node.addrStr, CanHot: Node.CanHot, Active: Node.Active, Hot: Node.Hot, Info: Node.PrevInfo + Node.Info, InConnectArr: Node.WasAddToConnect, Level: Node.Level, TransferBlockNum: Node.TransferBlockNum, @@ -939,7 +931,7 @@ HTTPCaller.GetBlockchainStat = function(Param) { return Result; }; HTTPCaller.GetAllCounters = function(Params, response) { - let Result = GET_STATS(); + let Result = global.GET_STATS(); Result.result = 1; Result.sessionid = sessionid; Result.STAT_MODE = global.STAT_MODE; @@ -976,9 +968,9 @@ function AddStatData(Params, Result, Prefix) { }; HTTPCaller.SetStatMode = function(flag) { if (flag) - StartCommonStat(); + global.StartCommonStat(); global.STAT_MODE = flag; - SAVE_CONST(true); + global.SAVE_CONST(true); global.TX_PROCESS.RunRPC("LOAD_CONST"); return { result: 1, sessionid: sessionid, STAT_MODE: global.STAT_MODE }; }; @@ -995,7 +987,7 @@ HTTPCaller.ClearStat = function() { return { result: 1, sessionid: sessionid, STAT_MODE: global.STAT_MODE }; }; HTTPCaller.RewriteAllTransactions = function(Param) { - RewriteAllTransactions(); + global.RewriteAllTransactions(); return { result: 1, sessionid: sessionid }; }; HTTPCaller.RewriteTransactions = function(Param) { @@ -1006,7 +998,7 @@ HTTPCaller.TruncateBlockChain = function(Param) { var StartNum = global.SERVER.BlockNumDB - Param.BlockCount; var MinBlock = global.DApps.Accounts.GetMinBlockAct(); if (MinBlock > StartNum) { - global.ToLog("Cant Truncate BlockChain. Very long length. Max length=" + (SERVER.BlockNumDB - MinBlock), 0); + global.ToLog("Cant Truncate BlockChain. Very long length. Max length=" + (global.SERVER.BlockNumDB - MinBlock), 0); return { result: 0, sessionid: sessionid }; } global.SERVER.TruncateBlockDB(StartNum); @@ -1026,8 +1018,8 @@ HTTPCaller.CleanChain = function(Param) { return { result: 0, sessionid: sessionid }; }; HTTPCaller.GetArrStats = function(Keys, response) { - var arr = GET_STATDIAGRAMS(Keys); - let Result = { result: 1, sessionid: sessionid, arr: arr, STAT_MODE: global.STAT_MODE }; + var arr = global.GET_STATDIAGRAMS(Keys); + let Result: any = { result: 1, sessionid: sessionid, arr: arr, STAT_MODE: global.STAT_MODE }; if (!global.TX_PROCESS || !global.TX_PROCESS.RunRPC) return Result; var Keys2 = []; @@ -1051,7 +1043,7 @@ HTTPCaller.GetArrStats = function(Keys, response) { return null; }; HTTPCaller.GetBlockChain = function(type) { - if (!global.SERVER || !SERVER.LoadedChainList) { + if (!global.SERVER || !global.SERVER.LoadedChainList) { return { result: 0 }; } var MainChains = {}; @@ -1081,13 +1073,13 @@ HTTPCaller.GetBlockChain = function(type) { for (var List of ArrMapMapLoaded) { AddMapList(arrLoadedBlocks, type, List); } - var obj = { + var obj: any = { LastCurrentBlockNum: global.SERVER.GetLastCorrectBlockNum(), CurrentBlockNum: global.SERVER.CurrentBlockNum, LoadedChainList: arrLoadedChainList, - LoadedBlocks: arrLoadedBlocks, BlockChain: arrBlocks, port: global.SERVER.port, DELTA_CURRENT_TIME: DELTA_CURRENT_TIME, memoryUsage: process.memoryUsage(), - IsDevelopAccount: IsDeveloperAccount(WALLET.PubKeyArr), LoadedChainCount: global.SERVER.LoadedChainList.length, StartLoadBlockTime: global.SERVER.StartLoadBlockTime, + LoadedBlocks: arrLoadedBlocks, BlockChain: arrBlocks, port: global.SERVER.port, DELTA_CURRENT_TIME: global.DELTA_CURRENT_TIME, memoryUsage: process.memoryUsage(), + IsDevelopAccount: global.IsDeveloperAccount(global.WALLET.PubKeyArr), LoadedChainCount: global.SERVER.LoadedChainList.length, StartLoadBlockTime: global.SERVER.StartLoadBlockTime, sessionid: sessionid, result: 1 }; - var obj2 = HTTPCaller.GetHotArray(); + var obj2: any = HTTPCaller.GetHotArray(); obj.ArrTree = obj2.ArrTree; arrBlocks = []; arrLoadedChainList = []; @@ -1116,9 +1108,9 @@ HTTPCaller.GetHistoryTransactions = function(Params) { Item.Description = TR.Description; } } - var Result = { + var Result: any = { Value: { SumCOIN: Account.Value.SumCOIN, SumCENT: Account.Value.SumCENT }, Name: Account.Name, Currency: Account.Currency, - MaxBlockNum: GetCurrentBlockNumByTime(), FIRST_TIME_BLOCK: FIRST_TIME_BLOCK, result: arr.length > 0 ? 1 : 0, History: arr + MaxBlockNum: global.GetCurrentBlockNumByTime(), FIRST_TIME_BLOCK: global.FIRST_TIME_BLOCK, result: arr.length > 0 ? 1 : 0, History: arr }; return Result; } @@ -1126,10 +1118,10 @@ HTTPCaller.GetHistoryTransactions = function(Params) { }; function GetCopyBlock(Block) { - var Result = { - BlockNum: Block.BlockNum, bSave: Block.bSave, TreeHash: GetHexFromAddres(Block.TreeHash), AddrHash: GetHexFromAddres(Block.AddrHash), - PrevHash: GetHexFromAddres(Block.PrevHash), SumHash: GetHexFromAddres(Block.SumHash), SumPow: Block.SumPow, TrDataPos: Block.TrDataPos, - TrDataLen: Block.TrDataLen, SeqHash: GetHexFromAddres(Block.SeqHash), Hash: GetHexFromAddres(Block.Hash), Power: GetPowPower(Block.PowHash), + var Result: any = { + BlockNum: Block.BlockNum, bSave: Block.bSave, TreeHash: global.GetHexFromAddres(Block.TreeHash), AddrHash: global.GetHexFromAddres(Block.AddrHash), + PrevHash: global.GetHexFromAddres(Block.PrevHash), SumHash: global.GetHexFromAddres(Block.SumHash), SumPow: Block.SumPow, TrDataPos: Block.TrDataPos, + TrDataLen: Block.TrDataLen, SeqHash: global.GetHexFromAddres(Block.SeqHash), Hash: global.GetHexFromAddres(Block.Hash), Power: global.GetPowPower(Block.PowHash), TrCount: Block.TrCount, arrContent: Block.arrContent, }; return Result; @@ -1137,7 +1129,7 @@ function GetCopyBlock(Block) { var AddrLength = 16; function GetHexFromAddresShort(Hash) { - return GetHexFromAddres(Hash).substr(0, AddrLength); + return global.GetHexFromAddres(Hash).substr(0, AddrLength); }; function GetHexFromStrShort(Str) { @@ -1162,27 +1154,27 @@ function CopyBlockDraw(Block, MainChains) { var MinerID = 0; var MinerName = ""; if (Block.AddrHash) { - var Num = ReadUintFromArr(Block.AddrHash, 0); + var Num = global.ReadUintFromArr(Block.AddrHash, 0); MinerID = Num; var Item = global.DApps.Accounts.ReadState(Num); if (Item && Item.Name) MinerName = Item.Name.substr(0, 8); } var CheckPoint = 0; - if (Block.BlockNum === CHECK_POINT.BlockNum) + if (Block.BlockNum === global.CHECK_POINT.BlockNum) CheckPoint = 1; var Mining; - if (SERVER.MiningBlock === Block) + if (global.SERVER.MiningBlock === Block) Mining = 1; else Mining = 0; GetGUID(Block); - var Item = { + Item = { guid: Block.guid, Active: Block.Active, bSave: Block.bSave, Prepared: Block.Prepared, BlockNum: Block.BlockNum, Hash: GetHexFromAddresShort(Block.Hash), SumHash: GetHexFromAddresShort(Block.SumHash), SeqHash: GetHexFromAddresShort(Block.SeqHash), TreeHash: GetHexFromAddresShort(Block.TreeHash), AddrHash: GetHexFromAddresShort(Block.AddrHash), MinerID: MinerID, MinerName: MinerName, Comment1: Block.Comment1, Comment2: Block.Comment2, SumPow: Block.SumPow, Info: Block.Info, TreeLoaded: Block.TreeEq, AddToLoad: Block.AddToLoad, LoadDB: Block.LoadDB, FindBlockDB: Block.FindBlockDB, - TrCount: Block.TrCount, ArrLength: 0, TrDataLen: Block.TrDataLen, Power: GetPowPower(Block.PowHash), CheckPoint: CheckPoint, Mining: Mining, + TrCount: Block.TrCount, ArrLength: 0, TrDataLen: Block.TrDataLen, Power: global.GetPowPower(Block.PowHash), CheckPoint: CheckPoint, Mining: Mining, TransferSize: Block.TransferSize, HasErr: Block.HasErr, }; if (Block.chain) @@ -1198,11 +1190,11 @@ function CopyBlockDraw(Block, MainChains) { return Item; }; -function CopyChainDraw(Chain, bWasRecursive, bMain) { +function CopyChainDraw(Chain, bWasRecursive, bMain?) { if (!Chain) return Chain; GetGUID(Chain); - var Item = { + var Item: any = { guid: Chain.guid, id: Chain.id, chainid: Chain.id, bSave: Chain.LoadDB, FindBlockDB: Chain.FindBlockDB, GetFindDB: Chain.GetFindDB(), BlockNum: Chain.BlockNumStart, Hash: GetHexFromAddresShort(Chain.HashStart), Comment1: Chain.Comment1, Comment2: Chain.Comment2, StopSend: Chain.StopSend, SumPow: 0, Info: Chain.Info, IsSum: Chain.IsSum, Main: bMain, @@ -1231,7 +1223,7 @@ function CopyChainDraw(Chain, bWasRecursive, bMain) { return Item; }; -function AddChainList(arrLoadedChainList, LoadedChainList, bMain) { +function AddChainList(arrLoadedChainList, LoadedChainList, bMain?) { for (var chain of LoadedChainList) { if (chain) { arrLoadedChainList.push(CopyChainDraw(chain, false, bMain)); @@ -1239,7 +1231,7 @@ function AddChainList(arrLoadedChainList, LoadedChainList, bMain) { } }; -function AddMapList(arrLoadedBlocks, type, MapMapLoaded, MainChains) { +function AddMapList(arrLoadedBlocks, type, MapMapLoaded, MainChains?) { for (var key in MapMapLoaded) { var map = MapMapLoaded[key]; if (map) { @@ -1278,8 +1270,7 @@ function SendWebFile(response, name?, StrCookie?, bParsing?) { if (StrCookie) Headers['Set-Cookie'] = StrCookie; response.writeHead(200, Headers); - } - else { + } else { if (StrContentType === "application/font-woff") { response.writeHead(200, { 'Content-Type': StrContentType, 'Access-Control-Allow-Origin': "*" }); } @@ -1287,7 +1278,7 @@ function SendWebFile(response, name?, StrCookie?, bParsing?) { response.writeHead(200, { 'Content-Type': StrContentType }); } if (bParsing && StrContentType === "text/html") { - var data = GetFileHTMLWithParsing(Path); + data = GetFileHTMLWithParsing(Path); response.end(data); return; } @@ -1322,11 +1313,13 @@ function ParseTag(Str, TagName, bEdit) { if (index >= 0) { var index2 = Str.indexOf("}}", index + 3 + TagName.length); if (index2 < 0) { + //@ts-ignore global.ToLog("Error teg " + TagName + " in " + Path); break; } var Delta = index2 - index; if (Delta > 210) { + //@ts-ignore global.ToLog("Error length (more 200) teg File in " + Path); break; } @@ -1383,7 +1376,7 @@ function SaveFileSimple(Path, Str) { global.SendHTMLMap = {}; var Key = "GetFileSimple-" + Path; global.SendHTMLMap[Key] = Str; - SaveToFile(Path, Str); + global.SaveToFile(Path, Str); }; global.SendHTMLMap = {}; global.SendWebFile = SendWebFile; @@ -1394,7 +1387,7 @@ global.SaveFileSimple = SaveFileSimple; function GetStrTime(now) { if (!now) - now = GetCurrentTime(0); + now = global.GetCurrentTime(0); var Str = "" + now.getHours().toStringZ(2); Str = Str + ":" + now.getMinutes().toStringZ(2); Str = Str + ":" + now.getSeconds().toStringZ(2); @@ -1499,7 +1492,7 @@ if (global.HTTP_PORT_NUMBER) { global.ToLog("Path: " + Path, 0); } if (CheckPassword && global.HTTP_PORT_PASSWORD) { - var StrPort = ""; + var StrPort: any = ""; if (global.HTTP_PORT_NUMBER !== 80) StrPort = global.HTTP_PORT_NUMBER; var cookies = parseCookies(request.headers.cookie); @@ -1517,7 +1510,7 @@ if (global.HTTP_PORT_NUMBER) { if (!nonce) nonce = 0; } - var hash = ClientHex(cookies_token + "-" + global.HTTP_PORT_PASSWORD, nonce); + var hash = global.ClientHex(cookies_token + "-" + global.HTTP_PORT_PASSWORD, nonce); if (hash === cookies_hash) { ClientTokenMap[cookies_token] = 1; } @@ -1563,9 +1556,9 @@ if (global.HTTP_PORT_NUMBER) { else { DoCommand(response, Type, Path, params, remoteAddress); } - }).listen(port, LISTEN_IP, function() { + }).listen(port, global.LISTEN_IP, function() { global.HTTP_SERVER_START_OK = 1; - global.ToLog("Run HTTP-server on " + LISTEN_IP + ":" + port); + global.ToLog("Run HTTP-server on " + global.LISTEN_IP + ":" + port); }); HTTPServer.on('error', function(err) { global.ToError("H##3"); @@ -1654,7 +1647,7 @@ function GetEventArray(SmartNum, Context) { return ArrRet; }; HTTPCaller.GetHashRate = function(ArrParams) { - var CurBlockNum = GetCurrentBlockNumByTime(); + var CurBlockNum = global.GetCurrentBlockNumByTime(); var ResArr = []; for (var i = 0; i < ArrParams.length; i++) { var Item = ArrParams[i]; @@ -1693,7 +1686,7 @@ HTTPCaller.GetHashRate = function(ArrParams) { var Block = global.SERVER.ReadBlockHeaderDB(Num + d); if (Block) { CountSum++; - Sum += GetPowPower(Block.PowHash); + Sum += global.GetPowPower(Block.PowHash); } } if (!CountSum) diff --git a/src/core/library.ts b/src/core/library.ts index 989ea4e..afb97cf 100644 --- a/src/core/library.ts +++ b/src/core/library.ts @@ -14,7 +14,6 @@ import './constant' import './log' let { - CONSENSUS_PERIOD_TIME, ToLog, TO_ERROR_LOG, SaveToFile, @@ -82,7 +81,7 @@ require('../HTML/JS/sha3.js'); require('../HTML/JS/coinlib.js'); global.GetCurrentBlockNumByTime = function GetCurrentBlockNumByTime() { var CurTimeNum = global.GetCurrentTime() - global.FIRST_TIME_BLOCK; - var StartBlockNum = Math.trunc((CurTimeNum + CONSENSUS_PERIOD_TIME) / CONSENSUS_PERIOD_TIME); + var StartBlockNum = Math.trunc((CurTimeNum + global.CONSENSUS_PERIOD_TIME) / global.CONSENSUS_PERIOD_TIME); return StartBlockNum; }; global.DelDir = function(Path) { @@ -168,7 +167,7 @@ global.LoadParams = function(filename, DefaultValue) { return DefaultValue; }; global.SaveParams = function(filename, data) { - SaveToFile(filename, Buffer.from(JSON.stringify(data, undefined, 4))); + global.SaveToFile(filename, Buffer.from(JSON.stringify(data, undefined, 4))); }; global.StartTime = function() { global.TimeStart = global.GetCurrentTime(); diff --git a/src/core/log.ts b/src/core/log.ts index 34d3686..085f6a8 100644 --- a/src/core/log.ts +++ b/src/core/log.ts @@ -13,14 +13,8 @@ import './constant' import './log-strict' let { - GetDataPath, START_PORT_NUMBER, CheckSizeLogFile, - ToError, - ToLog, - GetCurrentTime, - DEBUG_MODE, - SERVER } = global var file_name_info = global.GetDataPath("info.log"), file_name_infoPrev = global.GetDataPath("info-prev.log"); @@ -172,7 +166,7 @@ global.PrepareStatEverySecond = function() { AddToStatContext(CONTEXT_STATS, e, t); } }, global.GET_STATDIAGRAMS = function(e) { - GetCurrentTime(); + global.GetCurrentTime(); var t = GetCurrentStatIndex(); if (!e || !e.length) return []; @@ -219,8 +213,8 @@ global.PrepareStatEverySecond = function() { }, global.ClearCommonStat = function() { StartStatTime = void (CurStatIndex = 0), CONTEXT_STATS = { Total: {}, Interval: [] }, CONTEXT_ERRORS = { Total: {}, Interval: [] }, global.HASH_RATE = 0, global.SERVER.ClearStat(); -}, global.ResizeArrAvg = ResizeArrAvg, global.ResizeArrMax = ResizeArrMax, DEBUG_MODE ? global.TO_DEBUG_LOG = function(e, t, r, o) { - DEBUG_MODE && ("rinfo" === t && (e += " from: " + r.address + ":" + r.port + " - " + o.length), global.ToLog(e)); +}, global.ResizeArrAvg = ResizeArrAvg, global.ResizeArrMax = ResizeArrMax, global.DEBUG_MODE ? global.TO_DEBUG_LOG = function(e, t, r, o) { + global.DEBUG_MODE && ("rinfo" === t && (e += " from: " + r.address + ":" + r.port + " - " + o.length), global.ToLog(e)); } : global.TO_DEBUG_LOG = function(e, t, r, o) { }, global.GetStrOnlyTime = function(e) { if (!global.GetCurrentTime) diff --git a/src/core/node.ts b/src/core/node.ts index 134292b..b1335a8 100644 --- a/src/core/node.ts +++ b/src/core/node.ts @@ -12,6 +12,7 @@ require("./library.js"); const net = require("net"); var ConnectIDCount = 1; +let RBTree = global.RBTree; module.exports = class CNode { addrStr ip @@ -81,6 +82,16 @@ module.exports = class CNode { SendPacketNum Socket Socket2 + ReconnectFromServer + SecretForReconnect + Self + addrStrTemp + DoubleConnection + PubKey + addrArr + SocketStart + WaitConnectFromServer + WaitConnectIP constructor(addrStr, ip, port) { this.addrStr = addrStr this.ip = ip.trim() @@ -131,7 +142,7 @@ module.exports = class CNode { this.StartTimeGetNodes = 0 this.NextGetNodesDelta = 1000 this.PingStart = 0 - this.NextPing = MIN_PERIOD_PING + this.NextPing = global.MIN_PERIOD_PING this.SendBlockArr = [] this.LoadBlockArr = [] this.SendBlockCount = 0 @@ -175,7 +186,7 @@ module.exports = class CNode { NODE.SocketStart = Date.now() NODE.Socket = net.createConnection(NODE.port, NODE.ip, function() { if (NODE.Socket) { - socketInit(NODE.Socket, "s") + global.socketInit(NODE.Socket, "s") global.AddNodeInfo(NODE, "OK connected *" + NODE.Socket.ConnectID) NODE.Socket.ConnectToServer = true SetSocketStatus(NODE.Socket, 2) @@ -194,7 +205,7 @@ module.exports = class CNode { NODE.SocketStart = Date.now() NODE.Socket2 = net.createConnection(NODE.port, NODE.ip, function() { if (NODE.Socket2) { - socketInit(NODE.Socket2, "s") + global.socketInit(NODE.Socket2, "s") global.AddNodeInfo(NODE, "OK Reconnected *" + NODE.Socket2.ConnectID) NODE.Socket2.ConnectToServer = true SetSocketStatus(NODE.Socket2, 2) @@ -287,7 +298,7 @@ module.exports = class CNode { global.CloseSocket(SOCKET, Buf ? "Method=" + Buf.Method + ":" + Str : "=CLIENT ON DATA=") } else { - socketRead(Socket, data) + global.socketRead(Socket, data) global.SERVER.OnGetFromTCP(NODE, Socket, data) } }) @@ -323,13 +334,13 @@ module.exports = class CNode { var Info = this.GetPOWClientData(0); Info.Reconnect = 1 Info.SecretForReconnect = Node.SecretForReconnect - var BufWrite = global.BufLib.GetBufferFromObject(Info, FORMAT_POW_TO_SERVER, 1200, {}); + var BufWrite = global.BufLib.GetBufferFromObject(Info, global.FORMAT_POW_TO_SERVER, 1200, {}); var BufAll = global.SERVER.GetBufFromData("POW_CONNECT7", BufWrite, 1); Socket.write(BufAll) return 1; } try { - var Buf = global.BufLib.GetObjectFromBuffer(data, FORMAT_POW_TO_CLIENT, {}); + var Buf = global.BufLib.GetObjectFromBuffer(data, global.FORMAT_POW_TO_CLIENT, {}); } catch (e) { global.SERVER.Sendglobal.CloseSocket(Socket, "FORMAT_POW_TO_CLIENT") @@ -341,7 +352,7 @@ module.exports = class CNode { global.SERVER.Sendglobal.CloseSocket(Socket, "SELF") return; } - var addrStr = GetHexFromAddres(Buf.addrArr); + var addrStr = global.GetHexFromAddres(Buf.addrArr); if (!Node.StartFindList && addrStr !== Node.addrStr) { global.AddNodeInfo(Node, "END: CHANGED ADDR: " + Node.addrStr.substr(0, 16) + "->" + addrStr.substr(0, 16)) global.SERVER.Sendglobal.CloseSocket(Socket, "ADDRESS_HAS_BEEN_CHANGED") @@ -354,9 +365,9 @@ module.exports = class CNode { } var Result = false; if (Buf.PubKeyType === 2 || Buf.PubKeyType === 3) { - Result = secp256k1.verify(Buffer.from(shaarr(addrStr)), Buffer.from(Buf.Sign), Buffer.from([Buf.PubKeyType].concat(Buf.addrArr))) + Result = global.secp256k1.verify(Buffer.from(global.shaarr(addrStr)), Buffer.from(Buf.Sign), Buffer.from([Buf.PubKeyType].concat(Buf.addrArr))) if (!Result) { - Result = secp256k1.verify(Buffer.from(sha3(addrStr)), Buffer.from(Buf.Sign), Buffer.from([Buf.PubKeyType].concat(Buf.addrArr))) + Result = global.secp256k1.verify(Buffer.from(global.sha3(addrStr)), Buffer.from(Buf.Sign), Buffer.from([Buf.PubKeyType].concat(Buf.addrArr))) } } if (!Result) { @@ -365,7 +376,7 @@ module.exports = class CNode { global.SERVER.Sendglobal.CloseSocket(Socket, "ERROR_SIGN_SERVER") return; } - if (Buf.MIN_POWER_POW_HANDSHAKE > 1 + MIN_POWER_POW_HANDSHAKE) { + if (Buf.MIN_POWER_POW_HANDSHAKE > 1 + global.MIN_POWER_POW_HANDSHAKE) { global.ToLog("END: BIG_MIN_POWER_POW_HANDSHAKE ADDR: " + addrStr.substr(0, 16) + " from ip: " + Socket.remoteAddress) return 0; } @@ -384,18 +395,18 @@ module.exports = class CNode { Node.PubKey = Buffer.from([Buf.PubKeyType].concat(Buf.addrArr)) Node.addrArr = Buf.addrArr Node.addrStr = addrStr - if (global.CompareArr(SERVER.addrArr, Node.addrArr) === 0) { + if (global.CompareArr(global.SERVER.addrArr, Node.addrArr) === 0) { Node.Self = 1 return 0; } - var Hash = shaarr2(Buf.addrArr, Buf.HashRND); - var nonce = CreateNoncePOWExternMinPower(Hash, 0, Buf.MIN_POWER_POW_HANDSHAKE); + var Hash = global.shaarr2(Buf.addrArr, Buf.HashRND); + var nonce = global.CreateNoncePOWExternMinPower(Hash, 0, Buf.MIN_POWER_POW_HANDSHAKE); var Info; - if (WALLET.WalletOpen && IsDeveloperAccount(WALLET.PubKeyArr)) { + if (global.WALLET.WalletOpen && global.IsDeveloperAccount(global.WALLET.PubKeyArr)) { Info = this.GetPOWClientData(0) Info.Reconnect = 255 - Info.Sign = secp256k1.sign(SHA3BUF(Hash), WALLET.KeyPair.getPrivateKey('')).signature - Result = CheckDevelopSign(Hash, Info.Sign) + Info.Sign = global.secp256k1.sign(global.SHA3BUF(Hash), global.WALLET.KeyPair.getPrivateKey('')).signature + Result = global.CheckDevelopSign(Hash, Info.Sign) if (!Result) { throw "ERROR DEVELOPSIGN!"; } @@ -403,19 +414,19 @@ module.exports = class CNode { else { Info = this.GetPOWClientData(nonce) Info.PubKeyType = global.SERVER.PubKeyType - Info.Sign = secp256k1.sign(Buffer.from(Hash), global.SERVER.KeyPair.getPrivateKey('')).signature + Info.Sign = global.secp256k1.sign(Buffer.from(Hash), global.SERVER.KeyPair.getPrivateKey('')).signature } - var BufWrite = global.BufLib.GetBufferFromObject(Info, FORMAT_POW_TO_SERVER, 1200, {}); + var BufWrite = global.BufLib.GetBufferFromObject(Info, global.FORMAT_POW_TO_SERVER, 1200, {}); var BufAll = global.SERVER.GetBufFromData("POW_CONNECT6", BufWrite, 1); Socket.write(BufAll) return 1; } GetPOWClientData(nonce) { var Node = this; - var Info = {}; - Info.DEF_NETWORK = GetNetworkName() - Info.DEF_VERSION = DEF_VERSION - Info.DEF_CLIENT = DEF_CLIENT + var Info: any = {}; + Info.DEF_NETWORK = global.GetNetworkName() + Info.DEF_VERSION = global.DEF_VERSION + Info.DEF_CLIENT = global.DEF_CLIENT Info.addrArr = global.SERVER.addrArr Info.ToIP = Node.ip Info.ToPort = Node.port @@ -426,7 +437,7 @@ module.exports = class CNode { Info.SendBytes = 0 Info.SecretForReconnect = [] Info.Reserv = [] - if (GrayConnect()) + if (global.GrayConnect()) Info.GrayConnect = 1 return Info; } @@ -480,7 +491,7 @@ global.CloseSocket = function(Socket, StrError?, bHide?) { function SetSocketStatus(Socket, Status) { if (Socket && Socket.SocketStatus !== Status) { if (Status === 100 && (Socket.SocketStatus !== 3 && Socket.SocketStatus !== 200)) { - ToLogTrace("===================ERROR=================== " + Status); + global.ToLogTrace("===================ERROR=================== " + Status); return; } if (Status === 100 && Socket.Node) @@ -494,7 +505,7 @@ function GetSocketStatus(Socket) { if (Socket && Socket.SocketStatus) { if (Socket.SocketStatus !== 100) { var Delta = Date.now() - Socket.TimeStatus; - if (Delta > MAX_WAIT_PERIOD_FOR_STATUS) { + if (Delta > global.MAX_WAIT_PERIOD_FOR_STATUS) { global.CloseSocket(Socket, "MAX_WAIT_PERIOD_FOR_STATUS = " + Socket.SocketStatus + " time = " + Delta); } } @@ -543,7 +554,7 @@ function NodeName(Node) { return ""; if (Node.Name) return Node.Name; - if (LOCAL_RUN) + if (global.LOCAL_RUN) return "" + Node.port; else { return "" + Node.ip + ":" + Node.addrStr.substr(0, 6); @@ -583,7 +594,7 @@ function AddNodeInfo(Node, Str, bSet) { Node.Info = ""; } { - var timesend = GetStrOnlyTimeUTC(); + var timesend = global.GetStrOnlyTimeUTC(); Str = timesend + " " + Str; Node.Info += Str + "\n"; } diff --git a/src/core/rest-loader.ts b/src/core/rest-loader.ts index bc1a875..54b2293 100644 --- a/src/core/rest-loader.ts +++ b/src/core/rest-loader.ts @@ -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; diff --git a/src/core/rest_tables.ts b/src/core/rest_tables.ts index 7df51d3..49d81d8 100644 --- a/src/core/rest_tables.ts +++ b/src/core/rest_tables.ts @@ -9,65 +9,59 @@ */ -function DoRest(r,t,e) -{ - var u = r.Arr[0], o = Math.floor(e / REST_BLOCK_SCALE); - if(o !== Math.floor((u.BlockNum - 1) / REST_BLOCK_SCALE)) - { - for(var n = GetRestArr(o), l = [], a = n.length - 2; 0 <= a; a--) - l.push(n[a] * REST_BLOCK_SCALE); +function DoRest(r, t, e) { + var u = r.Arr[0], o = Math.floor(e / global.REST_BLOCK_SCALE); + if (o !== Math.floor((u.BlockNum - 1) / global.REST_BLOCK_SCALE)) { + for (var n = GetRestArr(o), l = [], a = n.length - 2; 0 <= a; a--) + l.push(n[a] * global.REST_BLOCK_SCALE); RestPush(r, l, e, 1); } - r.Arr[0] = {BlockNum:e, Value:t.Value}; + r.Arr[0] = { BlockNum: e, Value: t.Value }; }; -function RestPush(r,t,e,u) -{ +function RestPush(r, t, e, u) { var o = r.Arr[u - 1], n = r.Arr[u]; - if(1 < u) - { + if (1 < u) { var l = t[u - 2]; - if(o.BlockNum > l) - return ; + if (o.BlockNum > l) + return; } - if(n.BlockNum && n.BlockNum >= e || o.BlockNum >= e) + if (n.BlockNum && n.BlockNum >= e || o.BlockNum >= e) return n.BlockNum = 0, void (n.Value = {}); n.BlockNum && u < r.Arr.length - 1 && RestPush(r, t, e, u + 1), r.Arr[u] = o; }; -function GetRestArr(r) -{ - for(var t = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], e = t.length, u = 0; u <= r; u++) - for(var o = 0, n = u, l = e - 1; 0 <= l; l--) - { +function GetRestArr(r) { + for (var t = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], e = t.length, u = 0; u <= r; u++) + for (var o = 0, n = u, l = e - 1; 0 <= l; l--) { var a = t[l]; - if(t[l] = n, n = a, 0 == ((o = o << 4 | 15) & u)) + if (t[l] = n, n = a, 0 == ((o = o << 4 | 15) & u)) break; - if(0 != (o & n)) + if (0 != (o & n)) break; } return t; }; var RestArrMap = {}; -function GetCurrentRestArr() -{ - var r = GetCurrentBlockNumByTime(), t = Math.floor(r / REST_BLOCK_SCALE), e = RestArrMap[t]; - if(void 0 === e) - { +function GetCurrentRestArr() { + var r = global.GetCurrentBlockNumByTime(), t = Math.floor(r / global.REST_BLOCK_SCALE), e = RestArrMap[t]; + if (void 0 === e) { RestArrMap = {}, (e = GetRestArr(t)).length = e.length - 1; - for(var u = 0; u < e.length; u++) - e[u] = e[u] * REST_BLOCK_SCALE; + for (var u = 0; u < e.length; u++) + e[u] = e[u] * global.REST_BLOCK_SCALE; RestArrMap[t] = e; } return e; }; -function GetCurrentRestNum(r) -{ - for(var t = GetCurrentBlockNumByTime() - r, e = GetCurrentRestArr(), u = e.length - 1; 0 <= u; u--) - if(e[u] <= t) +function GetCurrentRestNum(r) { + for (var t = global.GetCurrentBlockNumByTime() - r, e = GetCurrentRestArr(), u = e.length - 1; 0 <= u; u--) + if (e[u] <= t) return e[u]; return 0; }; -global.DoRest = DoRest, global.GetRestArr = GetRestArr, global.GetCurrentRestArr = GetCurrentRestArr, global.GetCurrentRestNum = GetCurrentRestNum; +global.DoRest = DoRest +global.GetRestArr = GetRestArr +global.GetCurrentRestArr = GetCurrentRestArr +global.GetCurrentRestNum = GetCurrentRestNum; diff --git a/src/core/server.ts b/src/core/server.ts index a631c76..9b77365 100644 --- a/src/core/server.ts +++ b/src/core/server.ts @@ -20,16 +20,16 @@ global.STR_TYPE = 2; global.MAX_STR_BUF_DATA = 200; global.MAX_CONNECTION_ACTIVE = 40; var MAX_CONNECTION_ANOTHER = 40; -const TRAFIC_LIMIT_NODE_1S = MAX_BLOCK_SIZE * 1.25; +const TRAFIC_LIMIT_NODE_1S = global.MAX_BLOCK_SIZE * 1.25; const TRAFIC_LIMIT_1S = 8 * TRAFIC_LIMIT_NODE_1S; -global.STAT_PERIOD = CONSENSUS_PERIOD_TIME / 5; -const TRAFIC_LIMIT_SEND = TRAFIC_LIMIT_1S * STAT_PERIOD / 1000; -const TRAFIC_LIMIT_NODE = TRAFIC_LIMIT_NODE_1S * STAT_PERIOD / 1000; +global.STAT_PERIOD = global.CONSENSUS_PERIOD_TIME / 5; +const TRAFIC_LIMIT_SEND = TRAFIC_LIMIT_1S * global.STAT_PERIOD / 1000; +const TRAFIC_LIMIT_NODE = TRAFIC_LIMIT_NODE_1S * global.STAT_PERIOD / 1000; const BUF_PACKET_SIZE = 32 * 1024; global.FORMAT_POW_TO_CLIENT = "{addrArr:hash,HashRND:hash,MIN_POWER_POW_HANDSHAKE:uint,PubKeyType:byte,Sign:arr64,Reserve:arr33}"; global.FORMAT_POW_TO_SERVER = "{\ DEF_NETWORK:str15,\ - DEF_VERSION:str9,\ + global.DEF_VERSION:str9,\ DEF_CLIENT:str16, \ addrArr:addres, \ ToIP:str26,\ @@ -57,8 +57,31 @@ const FORMAT_PACKET_SEND_TCP = "{\ Hash:hash,\ Data:data,\ }"; +let RBTree = global.RBTree; +let STreeBuffer = global.STreeBuffer; module.exports = class CTransport extends require("./connect") { + UseRNDHeader + BAN_IP + ip + port + CanSend + SendFormatMap + ActualNodes + SendTrafficFree + LoadedPacketNum + LoadedSocketNum + LoadBufSocketList + BusyLevel + LastTimeHard + LastTimeHardOK + HardPacketForSend + MethodTiming + CurrentTimeStart + CurrentTimeValues + SendStatNum + Server + ServerSign constructor(SetKeyPair, RunIP, RunPort, UseRNDHeader, bVirtual) { super(SetKeyPair, RunIP, RunPort, UseRNDHeader, bVirtual) this.UseRNDHeader = UseRNDHeader @@ -107,10 +130,10 @@ module.exports = class CTransport extends require("./connect") Map["DISCONNECTHOT"] = { Period: 1000, Hard: 1 } Map["GETMESSAGE"] = { Period: 1000, Hard: 1 } Map["MESSAGE"] = { Period: 1000, Hard: 1 } - Map["TRANSACTION"] = { Period: PERIOD_GET_BLOCK, Hard: 1 } - Map["GETBLOCKHEADER"] = { Period: PERIOD_GET_BLOCK, Hard: 2, Process: global.STATIC_PROCESS } - Map["GETBLOCKHEADER100"] = { Period: PERIOD_GET_BLOCK, Hard: 2, Process: global.STATIC_PROCESS } - Map["GETBLOCK"] = { Period: PERIOD_GET_BLOCK, Hard: 2, Process: global.STATIC_PROCESS } + Map["TRANSACTION"] = { Period: global.PERIOD_GET_BLOCK, Hard: 1 } + Map["GETBLOCKHEADER"] = { Period: global.PERIOD_GET_BLOCK, Hard: 2, Process: global.STATIC_PROCESS } + Map["GETBLOCKHEADER100"] = { Period: global.PERIOD_GET_BLOCK, Hard: 2, Process: global.STATIC_PROCESS } + Map["GETBLOCK"] = { Period: global.PERIOD_GET_BLOCK, Hard: 2, Process: global.STATIC_PROCESS } Map["GETNODES"] = { Period: 1000, Hard: 1, LowVersion: 1, IsAddrList: 1 } Map["RETGETNODES"] = { Period: 0, IsAddrList: 1 } Map["RETGETNODES2"] = { Period: 0, IsAddrList: 1 } @@ -152,7 +175,7 @@ module.exports = class CTransport extends require("./connect") Info.Data = global.BufLib.GetBufferFromObject(Info.Data, format.struct, Length, format.wrk) this.Send(Node, Info, 1) } - DataFromF(Info, bSendFormat) { + DataFromF(Info, bSendFormat?) { var format = this.GetF(Info.Method, bSendFormat); try { var Data = global.BufLib.GetObjectFromBuffer(Info.Data, format.struct, format.wrk); @@ -164,7 +187,7 @@ module.exports = class CTransport extends require("./connect") } } ADD_CURRENT_STAT_TIME(Key, Value) { - var TimeNum = Math.floor(Date.now() / STAT_PERIOD); + var TimeNum = Math.floor(Date.now() / global.STAT_PERIOD); if (this.CurrentTimeStart !== TimeNum) this.CurrentTimeValues = {} this.CurrentTimeStart = TimeNum @@ -173,7 +196,7 @@ module.exports = class CTransport extends require("./connect") this.CurrentTimeValues[Key] += Value } GET_CURRENT_STAT_TIME(Key) { - var TimeNum = Math.floor(Date.now() / STAT_PERIOD); + var TimeNum = Math.floor(Date.now() / global.STAT_PERIOD); if (this.CurrentTimeStart === TimeNum) { var Value = this.CurrentTimeValues[Key]; if (Value === undefined) @@ -186,11 +209,11 @@ module.exports = class CTransport extends require("./connect") } } RecalcSendStatictic() { - var TimeNum = Math.floor(Date.now() / STAT_PERIOD); + var TimeNum = Math.floor(Date.now() / global.STAT_PERIOD); if (this.SendStatNum === TimeNum) return; this.SendStatNum = TimeNum - var Period = CONSENSUS_PERIOD_TIME / STAT_PERIOD; + var Period = global.CONSENSUS_PERIOD_TIME / global.STAT_PERIOD; this.SendTrafficFree = TRAFIC_LIMIT_SEND var it = this.ActualNodes.iterator(), Node; while ((Node = it.next()) !== null) { @@ -212,17 +235,17 @@ module.exports = class CTransport extends require("./connect") this.SendTrafficFree -= Node.SendTrafficLimit } Node.SendTrafficCurrent = 0 - global.ADD_TO_STAT("MAX:NODE_TRAFFIC_LIMIT:" + NodeName(Node), 1000 / STAT_PERIOD * Node.SendTrafficLimit / 1024, 1) + global.ADD_TO_STAT("MAX:NODE_TRAFFIC_LIMIT:" + NodeName(Node), 1000 / global.STAT_PERIOD * Node.SendTrafficLimit / 1024, 1) } this.SendTrafficFree += TRAFIC_LIMIT_NODE global.ADD_TO_STAT("SEND_TRAFFIC_FREE", this.SendTrafficFree / 1024) } OnGetMethod(Info, CurTime) { - if (DEBUG_MODE) { + if (global.DEBUG_MODE) { var Str = ""; if (Info.Data && Info.Data.Length) Str = " LENGTH=" + Info.Data.Length - TO_DEBUG_LOG("GET:" + Info.Method + Str + " from: Node=" + NodeInfo(Info.Node)) + global.TO_DEBUG_LOG("GET:" + Info.Method + Str + " from: Node=" + NodeInfo(Info.Node)) } if (global.ADDRLIST_MODE) { var StrOK = ",HAND,GETNODES,"; @@ -239,7 +262,7 @@ module.exports = class CTransport extends require("./connect") F.bind(this)(Info, CurTime) } else { - TO_ERROR_LOG("TRANSPORT", 20, "Method '" + Info.Method + "' not found Socket=*" + Info.Socket.ConnectID, "node", Info.Node) + global.TO_ERROR_LOG("TRANSPORT", 20, "Method '" + Info.Method + "' not found Socket=*" + Info.Socket.ConnectID, "node", Info.Node) this.AddCheckErrCount(Info.Node, 1, "Method not found") } } @@ -277,7 +300,7 @@ module.exports = class CTransport extends require("./connect") var Key = "" + rinfo.address.trim(); var Stat = this.BAN_IP[Key]; if (Stat) { - if (Stat.TimeTo > (GetCurrentTime(0) - 0)) + if (Stat.TimeTo > (global.GetCurrentTime(0) - 0)) return true; } return false; @@ -306,17 +329,17 @@ module.exports = class CTransport extends require("./connect") if (Node.DeltaBan > 1000000) Node.DeltaBan = 1000000 Node.DeltaBan = Node.DeltaBan * 2 - var TimeTo = (GetCurrentTime(0) - 0) + Node.DeltaBan * 1000; + var TimeTo = (global.GetCurrentTime(0) - 0) + Node.DeltaBan * 1000; this.BAN_IP[Key] = { TimeTo: TimeTo } Node.BlockProcessCount = 0 this.DeleteNodeFromActiveByIP(Node.ip) global.ADD_TO_STAT("AddToBan") } - AddToBanIP(ip, Str, Period) { + AddToBanIP(ip, Str, Period?) { if (!Period) Period = 600 * 1000 var Key = "" + ip.trim(); - this.BAN_IP[Key] = { TimeTo: (GetCurrentTime(0) - 0) + Period } + this.BAN_IP[Key] = { TimeTo: (global.GetCurrentTime(0) - 0) + Period } this.DeleteNodeFromActiveByIP(ip) global.ToLog("ADD TO BAN:: " + Key + " " + Str) global.ADD_TO_STAT("AddToBanIP") @@ -333,29 +356,29 @@ module.exports = class CTransport extends require("./connect") else { this.OnGetMethod(Meta, CurTime) } - ADD_TO_STAT_TIME("MAX:TIME_USE_PACKET", startTime) - ADD_TO_STAT_TIME("TIME_USE_PACKET", startTime) - ADD_TO_STAT_TIME("MAX:TIME_USE_PACKET:" + Meta.Method, startTime) + global.ADD_TO_STAT_TIME("MAX:TIME_USE_PACKET", startTime) + global.ADD_TO_STAT_TIME("TIME_USE_PACKET", startTime) + global.ADD_TO_STAT_TIME("MAX:TIME_USE_PACKET:" + Meta.Method, startTime) } - GetBufFromData(Method, Data, TypeData, ContextID) { + GetBufFromData(Method, Data, TypeData, ContextID?) { var BufData; - if (TypeData === BUF_TYPE) { + if (TypeData === global.BUF_TYPE) { BufData = Data } else - if (TypeData === STR_TYPE) { - BufData = Buffer.from(Data.substr(0, MAX_STR_BUF_DATA)) + if (TypeData === global.STR_TYPE) { + BufData = Buffer.from(Data.substr(0, global.MAX_STR_BUF_DATA)) } else { if (Data === undefined) { - TypeData = BUF_TYPE + TypeData = global.BUF_TYPE BufData = Buffer.alloc(0) } else { throw "ERROR TYPE DATA"; } } - var BUF = {}; + var BUF: any = {}; BUF.PacketSize = 0 BUF.NumXORRND = 0 BUF.Method = Method @@ -375,7 +398,7 @@ module.exports = class CTransport extends require("./connect") var Meta = global.BufLib.GetObjectFromBuffer(buf, FORMAT_PACKET_SEND_TCP, WorkStructPacketSend); } catch (e) { - TO_ERROR_LOG("TRANSPORT", 640, "Error parsing Buffer") + global.TO_ERROR_LOG("TRANSPORT", 640, "Error parsing Buffer") return undefined; } var Hash = this.GetHashFromData(Meta); @@ -384,8 +407,8 @@ module.exports = class CTransport extends require("./connect") global.ToLog("TRANSPORT", 645, "Error hash Buffer", 2) return undefined; } - if (Meta.TypeData === STR_TYPE) { - Meta.Data = Meta.Data.slice(0, MAX_STR_BUF_DATA).toString() + if (Meta.TypeData === global.STR_TYPE) { + Meta.Data = Meta.Data.slice(0, global.MAX_STR_BUF_DATA).toString() } return Meta; } @@ -422,7 +445,7 @@ module.exports = class CTransport extends require("./connect") global.ADD_TO_STAT("MAX:BUFFE_LOAD_SIZE", Socket.Buf.length / 1024) Socket.Buf.len = 0 var PacketSize = global.BufLib.Read(Socket.Buf, "uint"); - if (PacketSize > MAX_PACKET_LENGTH) { + if (PacketSize > global.MAX_PACKET_LENGTH) { this.SendCloseSocket(Socket, "MAX_PACKET_LENGTH") break; } @@ -464,7 +487,7 @@ module.exports = class CTransport extends require("./connect") if (this.StopDoSendPacket(Param, Node, Buf.Method)) { return 1; } - if (!IsZeroArr(Buf.ContextID)) { + if (!global.IsZeroArr(Buf.ContextID)) { Buf.Context = global.ContextPackets.LoadValue(Buf.ContextID) } if (!Buf.Context) { @@ -494,11 +517,11 @@ module.exports = class CTransport extends require("./connect") this.OnPacketTCP(Buf) } } - ADD_TO_STAT_TIME("MAX:TIMEDOGETDATA", startTime) + global.ADD_TO_STAT_TIME("MAX:TIMEDOGETDATA", startTime) return 1; } StopDoSendPacket(Param, Node, Name) { - var CurTime = GetCurrentTime(0) - 0; + var CurTime = global.GetCurrentTime(0) - 0; if (!Param) { global.ADD_TO_STAT("STOP_METHOD") global.ADD_TO_STAT("STOP_METHOD:NO") @@ -589,7 +612,7 @@ module.exports = class CTransport extends require("./connect") global.ADD_TO_STAT("DO_HARD_PACKET") global.ADD_TO_STAT("DO_HARD_PACKET:" + Info.Method) var DeltaTime = Date.now() - Info.TimeLoad; - if (this.HardPacketForSend.size && DeltaTime > PACKET_ALIVE_PERIOD / 2) { + if (this.HardPacketForSend.size && DeltaTime > global.PACKET_ALIVE_PERIOD / 2) { global.ADD_TO_STAT("DELETE_HARD_PACKET_OLD", this.HardPacketForSend.size) this.HardPacketForSend.clear() return; @@ -597,9 +620,9 @@ module.exports = class CTransport extends require("./connect") var MaxCount = 20; while (Info = this.HardPacketForSend.max()) { var DeltaTime = Date.now() - Info.TimeLoad; - if (DeltaTime > PACKET_ALIVE_PERIOD / 2 || !Info.Node.Socket || Info.Node.Socket.WasClose) { + if (DeltaTime > global.PACKET_ALIVE_PERIOD / 2 || !Info.Node.Socket || Info.Node.Socket.WasClose) { this.HardPacketForSend.remove(Info) - if (DeltaTime > PACKET_ALIVE_PERIOD / 2) { + if (DeltaTime > global.PACKET_ALIVE_PERIOD / 2) { this.RiseBusyLevelByInfo(Info) Info.Node.NextPing = 1 * 1000 this.AddCheckErrCount(Info.Node, 0.2) @@ -645,10 +668,10 @@ module.exports = class CTransport extends require("./connect") DoSendPacketNode(Node) { var TimeNum = Date.now(); var Info = Node.SendPacket.max(); - if (Info && TimeNum - Info.TimeNum > PACKET_ALIVE_PERIOD) + if (Info && TimeNum - Info.TimeNum > global.PACKET_ALIVE_PERIOD) while (Info = Node.SendPacket.max()) { var DeltaTime = TimeNum - Info.TimeNum; - if (DeltaTime > PACKET_ALIVE_PERIOD / 2) { + if (DeltaTime > global.PACKET_ALIVE_PERIOD / 2) { Node.SendPacket.remove(Info) global.ADD_TO_STAT("DELETE_OLD_PACKET") } @@ -678,7 +701,7 @@ module.exports = class CTransport extends require("./connect") global.ADD_TO_STAT("SEND:" + Info.Method) global.ADD_TO_STAT("SEND:(KB)" + Info.Method, BufWrite.length / 1024) global.ADD_TO_STAT("SEND:" + Info.Method + ":" + NodeName(Node), 1, 1) - TO_DEBUG_LOG("SEND " + Info.Method + " to " + NodeInfo(Node) + " LENGTH=" + BufWrite.length) + global.TO_DEBUG_LOG("SEND " + Info.Method + " to " + NodeInfo(Node) + " LENGTH=" + BufWrite.length) return 1; } DoSendPacket() { @@ -723,36 +746,36 @@ module.exports = class CTransport extends require("./connect") } CheckPOWTicketConnect(Socket, data) { try { - var Info = global.BufLib.GetObjectFromBuffer(data, FORMAT_POW_TO_SERVER, {}); + var Info = global.BufLib.GetObjectFromBuffer(data, global.FORMAT_POW_TO_SERVER, {}); } catch (e) { this.SendCloseSocket(Socket, "FORMAT_POW_TO_SERVER") return; } - if (Info.DEF_NETWORK !== GetNetworkName()) { - this.SendCloseSocket(Socket, "DEF_NETWORK=" + Info.DEF_NETWORK + " MUST:" + GetNetworkName()) + if (Info.DEF_NETWORK !== global.GetNetworkName()) { + this.SendCloseSocket(Socket, "DEF_NETWORK=" + Info.DEF_NETWORK + " MUST:" + global.GetNetworkName()) return; } var Node = this.FindRunNodeContext(Info.addrArr, Info.FromIP, Info.FromPort, true); if (global.CompareArr(Info.addrArr, this.addrArr) === 0) { - AddNodeInfo(Node, "SERV: GET SELF") + global.AddNodeInfo(Node, "SERV: GET SELF") this.SendCloseSocket(Socket, "SELF") return; } - var Hash = shaarr2(this.addrArr, Socket.HashRND); - var hashInfo = GetHashWithValues(Hash, Info.nonce, 0); - var power = GetPowPower(hashInfo); + var Hash = global.shaarr2(this.addrArr, Socket.HashRND); + var hashInfo = global.GetHashWithValues(Hash, Info.nonce, 0); + var power = global.GetPowPower(hashInfo); if (Info.Reconnect) { if ((Node.SecretForReconnect && Node.WaitConnectFromServer && global.CompareArr(Node.SecretForReconnect, Info.SecretForReconnect) === 0) || Info.Reconnect === 255) { - var Result = 1; + let Result = 1; if (Info.Reconnect === 255) { - Result = CheckDevelopSign(Hash, Info.Sign) + Result = global.CheckDevelopSign(Hash, Info.Sign) } if (Result) { Node.NextConnectDelta = 1000 Node.WaitConnectFromServer = 0 Node.GrayConnect = 0 - AddNodeInfo(Node, "3. SERVER OK CONNECT for client node " + SocketInfo(Socket)) + global.AddNodeInfo(Node, "3. SERVER OK CONNECT for client node " + SocketInfo(Socket)) this.AddNodeToActive(Node) Node.Socket = Socket SetSocketStatus(Socket, 3) @@ -767,39 +790,39 @@ module.exports = class CTransport extends require("./connect") this.AddCheckErrCount(Node, 10, "Error Sign Node") } } - AddNodeInfo(Node, "SERV: ERROR_RECONNECT") + global.AddNodeInfo(Node, "SERV: ERROR_RECONNECT") Socket.end(this.GetBufFromData("POW_CONNEC11", "ERROR_RECONNECT", 2)) - CloseSocket(Socket, "ERROR_RECONNECT") + global.CloseSocket(Socket, "ERROR_RECONNECT") return; } else { - if (power < MIN_POWER_POW_HANDSHAKE) { + if (power < global.MIN_POWER_POW_HANDSHAKE) { global.ToLog("END: MIN_POWER_POW_HANDSHAKE") - AddNodeInfo(Node, "SERV: ERR MIN_POWER_POW_HANDSHAKE") + global.AddNodeInfo(Node, "SERV: ERR MIN_POWER_POW_HANDSHAKE") Socket.end(this.GetBufFromData("POW_CONNECT2", "MIN_POWER_POW_HANDSHAKE", 2)) - CloseSocket(Socket, "MIN_POWER_POW_HANDSHAKE") + global.CloseSocket(Socket, "MIN_POWER_POW_HANDSHAKE") return; } else { if (!Node.BlockProcessCount) Node.BlockProcessCount = 0 - if (this.ActualNodes.size >= MAX_CONNECTIONS_COUNT && Node.BlockProcessCount < global.TRUST_PROCESS_COUNT) { - AddNodeInfo(Node, "SERV: ERROR_MAX_CLIENTS") + if (this.ActualNodes.size >= global.MAX_CONNECTIONS_COUNT && Node.BlockProcessCount < global.TRUST_PROCESS_COUNT) { + global.AddNodeInfo(Node, "SERV: ERROR_MAX_CLIENTS") Socket.end(this.GetBufFromData("POW_CONNECT8", "ERROR_MAX_CLIENTS", 2)) - CloseSocket(Socket, "ERROR_MAX_CLIENTS") + global.CloseSocket(Socket, "ERROR_MAX_CLIENTS") return; } - var Result = false; + let Result = false; if (Info.PubKeyType === 2 || Info.PubKeyType === 3) - Result = secp256k1.verify(Buffer.from(Hash), Buffer.from(Info.Sign), Buffer.from([Info.PubKeyType].concat(Info.addrArr))) + Result = global.secp256k1.verify(Buffer.from(Hash), Buffer.from(Info.Sign), Buffer.from([Info.PubKeyType].concat(Info.addrArr))) if (!Result) { - AddNodeInfo(Node, "SERV: ERROR_SIGN_CLIENT") + global.AddNodeInfo(Node, "SERV: ERROR_SIGN_CLIENT") Socket.end(this.GetBufFromData("POW_CONNECT8", "ERROR_SIGN_CLIENT", 2)) - CloseSocket(Socket, "ERROR_SIGN_CLIENT") + global.CloseSocket(Socket, "ERROR_SIGN_CLIENT") this.AddToBanIP(Socket.remoteAddress, "ERROR_SIGN_CLIENT") return; } - AddNodeInfo(Node, "1. SERVER OK POW for client node " + SocketInfo(Socket)) + global.AddNodeInfo(Node, "1. SERVER OK POW for client node " + SocketInfo(Socket)) Node.FromIP = Info.FromIP Node.FromPort = Info.FromPort Node.SecretForReconnect = crypto.randomBytes(20) @@ -808,7 +831,7 @@ module.exports = class CTransport extends require("./connect") Node.NextConnectDelta = 1000 Node.WaitConnectFromServer = 0 Node.GrayConnect = 1 - AddNodeInfo(Node, "5. CLIENT OK GRAY CONNECT " + SocketInfo(Socket)) + global.AddNodeInfo(Node, "5. CLIENT OK GRAY CONNECT " + SocketInfo(Socket)) this.AddNodeToActive(Node) Node.Socket = Socket SetSocketStatus(Socket, 3) @@ -831,7 +854,7 @@ module.exports = class CTransport extends require("./connect") this.Server.close() } StartServer() { - if (GrayConnect()) { + if (global.GrayConnect()) { this.CanSend++ return; } @@ -839,20 +862,20 @@ module.exports = class CTransport extends require("./connect") this.Server = net.createServer(function(sock) { if (SELF.WasBanIP({ address: sock.remoteAddress })) { sock.ConnectID = "new" - CloseSocket(sock, "WAS BAN", true) + global.CloseSocket(sock, "WAS BAN", true) return; } let SOCKET = sock; - socketInit(SOCKET, "c") + global.socketInit(SOCKET, "c") SetSocketStatus(SOCKET, 0) - AddNodeInfo(SOCKET, "Client *" + SOCKET.ConnectID + " connected from " + SOCKET.remoteAddress + ":" + SOCKET.remotePort, 1) + global.AddNodeInfo(SOCKET, "Client *" + SOCKET.ConnectID + " connected from " + SOCKET.remoteAddress + ":" + SOCKET.remotePort, 1) global.ADD_TO_STAT("ClientConnected") SOCKET.HashRND = crypto.randomBytes(32) var Data = { - addrArr: SELF.addrArr, HashRND: SOCKET.HashRND, MIN_POWER_POW_HANDSHAKE: MIN_POWER_POW_HANDSHAKE, PubKeyType: SELF.PubKeyType, + addrArr: SELF.addrArr, HashRND: SOCKET.HashRND, MIN_POWER_POW_HANDSHAKE: global.MIN_POWER_POW_HANDSHAKE, PubKeyType: SELF.PubKeyType, Sign: SELF.ServerSign, Reserve: [] }; - var BufData = global.BufLib.GetBufferFromObject(Data, FORMAT_POW_TO_CLIENT, 300, {}); + var BufData = global.BufLib.GetBufferFromObject(Data, global.FORMAT_POW_TO_CLIENT, 300, {}); var BufWrite = SELF.GetBufFromData("POW_CONNECT5", BufData, 1); try { SOCKET.write(BufWrite) @@ -873,10 +896,10 @@ module.exports = class CTransport extends require("./connect") SOCKET.ConnectToServer = 0 return; } - CloseSocket(SOCKET, "=SERVER ON DATA=") + global.CloseSocket(SOCKET, "=SERVER ON DATA=") } else { - socketRead(SOCKET, data) + global.socketRead(SOCKET, data) SELF.OnGetFromTCP(SOCKET.Node, SOCKET, data) } }) @@ -885,7 +908,7 @@ module.exports = class CTransport extends require("./connect") var Node = SOCKET.Node; var Status = GetSocketStatus(SOCKET); if (Status) - AddNodeInfo(Node, "Get socket end *" + SOCKET.ConnectID + " from client Stat: " + SocketStatistic(SOCKET)) + global.AddNodeInfo(Node, "Get socket end *" + SOCKET.ConnectID + " from client Stat: " + SocketStatistic(SOCKET)) if (Node && Status === 200) { Node.SwapSockets() SOCKET.WasClose = 1 @@ -894,15 +917,15 @@ module.exports = class CTransport extends require("./connect") SOCKET.on('close', function(err) { global.ADD_TO_STAT("ClientClose") if (SOCKET.ConnectID && GetSocketStatus(SOCKET)) - AddNodeInfo(SOCKET.Node, "Get socket close *" + SOCKET.ConnectID + " from client Stat: " + SocketStatistic(SOCKET)) + global.AddNodeInfo(SOCKET.Node, "Get socket close *" + SOCKET.ConnectID + " from client Stat: " + SocketStatistic(SOCKET)) if (!SOCKET.WasClose && SOCKET.Node) { - CloseSocket(SOCKET, "GET CLOSE") + global.CloseSocket(SOCKET, "GET CLOSE") } SetSocketStatus(SOCKET, 0) }) SOCKET.on('error', function(err) { global.ADD_TO_STAT("ERRORS") - CloseSocket(SOCKET, "ERRORS") + global.CloseSocket(SOCKET, "ERRORS") if (SOCKET.Node) SELF.AddCheckErrCount(SOCKET.Node, 1, "ERR##2 : socket") }) @@ -911,7 +934,7 @@ module.exports = class CTransport extends require("./connect") }) this.Server.on('error', function(err) { if (err.code === 'EADDRINUSE') { - ToLogClient('Port ' + SELF.port + ' in use, retrying...') + global.ToLogClient('Port ' + SELF.port + ' in use, retrying...') if (SELF.Server) SELF.Server.close() setTimeout(function() { @@ -931,21 +954,22 @@ module.exports = class CTransport extends require("./connect") } } RunListenServer() { - if (!START_PORT_NUMBER || START_PORT_NUMBER === "undefined") - START_PORT_NUMBER = 30000 + if (!global.START_PORT_NUMBER || global.START_PORT_NUMBER === "undefined") + global.START_PORT_NUMBER = 30000 let SELF = this; - SELF.port = START_PORT_NUMBER - ToLogClient("Prepare to run TCP server on " + LISTEN_IP + ":" + SELF.port) - this.Server.listen(SELF.port, LISTEN_IP, function() { + SELF.port = global.START_PORT_NUMBER + global.ToLogClient("Prepare to run TCP server on " + global.LISTEN_IP + ":" + SELF.port) + this.Server.listen(SELF.port, global.LISTEN_IP, function() { if (SELF.CanSend < 2) - ToLogClient("Run TCP server on " + SELF.ip + ":" + SELF.port) + global.ToLogClient("Run TCP server on " + SELF.ip + ":" + SELF.port) SELF.CanSend++ var Hash; Hash = global.sha3(SELF.addrStr) - SELF.ServerSign = secp256k1.sign(Buffer.from(Hash), SELF.KeyPair.getPrivateKey('')).signature + SELF.ServerSign = global.secp256k1.sign(Buffer.from(Hash), SELF.KeyPair.getPrivateKey('')).signature }) } FindInternetIP() { + let Stun = global.Stun; let SELF = this; let server = Stun.createServer(); const request = Stun.createMessage(Stun.constants.STUN_BINDING_REQUEST); @@ -958,7 +982,7 @@ module.exports = class CTransport extends require("./connect") SELF.CanSend++ global.INTERNET_IP_FROM_STUN = value.address if (!SELF.ip) - SELF.ip = INTERNET_IP_FROM_STUN + SELF.ip = global.INTERNET_IP_FROM_STUN if (server) server.close() SELF.RunListenServer() @@ -973,11 +997,11 @@ module.exports = class CTransport extends require("./connect") }) } CLOSE_SOCKET(Context, CurTime) { - AddNodeInfo(Context.Socket.Node, "GET CLOSE_SOCKET *" + Context.Socket.ConnectID + ": " + Context.Data.toString()) - CloseSocket(Context.Socket, "CLOSE_SOCKET") + global.AddNodeInfo(Context.Socket.Node, "GET CLOSE_SOCKET *" + Context.Socket.ConnectID + ": " + Context.Data.toString()) + global.CloseSocket(Context.Socket, "CLOSE_SOCKET") } SendCloseSocket(Socket, Str) { - AddNodeInfo(Socket.Node, "CLOSE_SOCKET " + SocketInfo(Socket) + " - " + Str) + global.AddNodeInfo(Socket.Node, "CLOSE_SOCKET " + SocketInfo(Socket) + " - " + Str) if (Socket.WasClose) { return; } @@ -985,12 +1009,12 @@ module.exports = class CTransport extends require("./connect") if (Socket.Node && Socket.Node.BufWrite && Socket.Node.BufWrite.length > 0) { } else { - AddNodeInfo(Socket.Node, "END *" + Socket.ConnectID + ": " + Str) + global.AddNodeInfo(Socket.Node, "END *" + Socket.ConnectID + ": " + Str) Socket.end(this.GetBufFromData("CLOSE_SOCKET", Str, 2)) } - CloseSocket(Socket, Str) + global.CloseSocket(Socket, Str) } - AddCheckErrCount(Node, Count, StrErr) { + AddCheckErrCount(Node, Count, StrErr?) { if (!Node) return; if (!Count) @@ -1016,7 +1040,7 @@ module.exports = class CTransport extends require("./connect") } } }; -global.ContextPackets = new STreeBuffer(10 * 1000, CompareItemHash32, "object"); +global.ContextPackets = new STreeBuffer(10 * 1000, global.CompareItemHash32, "object"); function CalcStatArr(arr, arrAvg, arrNext, Period) { var arrSum = [arr[0]]; diff --git a/src/core/terahashmining.ts b/src/core/terahashmining.ts index 7af8d6e..f6ce5d5 100644 --- a/src/core/terahashmining.ts +++ b/src/core/terahashmining.ts @@ -27,14 +27,14 @@ function CreateHashMinimal(Block, MinerID) { throw "BlockNum < BLOCKNUM_ALGO2"; return false; } - var PrevHashNum = ReadUint32FromArr(Block.PrevHash, 28); - var Ret = GetHash(Block.SeqHash, PrevHashNum, Block.BlockNum, MinerID, 0, 0, 0, 0, 0); + var PrevHashNum = global.ReadUint32FromArr(Block.PrevHash, 28); + var Ret = global.GetHash(Block.SeqHash, PrevHashNum, Block.BlockNum, MinerID, 0, 0, 0, 0, 0); Block.Hash = Ret.Hash; Block.PowHash = Ret.PowHash; - Block.Power = GetPowPower(Block.PowHash); + Block.Power = global.GetPowPower(Block.PowHash); Block.AddrHash = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; - WriteUintToArrOnPos(Block.AddrHash, MinerID, 0); - WriteUint32ToArrOnPos(Block.AddrHash, PrevHashNum, 28); + global.WriteUintToArrOnPos(Block.AddrHash, MinerID, 0); + global.WriteUint32ToArrOnPos(Block.AddrHash, PrevHashNum, 28); return true; }; var MAX_MEMORY3 = 0, SHIFT_MASKA3; @@ -61,8 +61,7 @@ function InitVer3(Block) { try { BufferNonce3 = new Uint32Array(MAX_MEMORY3); BufferBlockNum3 = new Uint32Array(MAX_MEMORY3); - } - catch (e) { + } catch (e) { SHIFT_MASKA3 = SHIFT_MASKA3 + 1; MAX_MEMORY3 = MAX_MEMORY3 / 2; global.ToLog("WAS ALLOC MEMORY ERROR. NEW TRY: " + MAX_MEMORY3); @@ -88,10 +87,13 @@ function CreatePOWVersion3(Block, bHashPump) { if (!Block.MaxLider) { Block.HashCount = 0; Block.MaxLider = { - Nonce0: 0, Nonce1: 0, Nonce2: 0, DeltaNum1: 0, DeltaNum2: 0, Hash1: [255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], Hash2: [255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255], + Nonce0: 0, + Nonce1: 0, + Nonce2: 0, + DeltaNum1: 0, + DeltaNum2: 0, + Hash1: [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], + Hash2: [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], }; } var MaxLider = Block.MaxLider; @@ -99,7 +101,7 @@ function CreatePOWVersion3(Block, bHashPump) { var BlockNum = Block.BlockNum; var Miner = Block.MinerID; var StartNonceRnd = DELTA_NONCE + Block.LastNonce + Math.trunc(3000000000 * Math.random()); - var List = GetNonceHashArr(BlockNum, Miner, StartNonceRnd, RunCount); + var List = global.GetNonceHashArr(BlockNum, Miner, StartNonceRnd, RunCount); for (var n = 0; n < RunCount; n++) { var Nonce = List.ArrNonce[n]; var HashNum = List.ArrHash[n] >>> SHIFT_MASKA3; @@ -110,11 +112,11 @@ function CreatePOWVersion3(Block, bHashPump) { if (bHashPump) return; var Ret = 0; - var PrevHashNum = ReadUint32FromArr(Block.PrevHash, 28); - var HashBase = GetHashFromNum2(BlockNum, PrevHashNum); + var PrevHashNum = global.ReadUint32FromArr(Block.PrevHash, 28); + var HashBase = global.GetHashFromNum2(BlockNum, PrevHashNum); var Value1 = FindHashBuffer3(HashBase, BlockNum, Miner, 1); if (Value1) { - var Hash1 = XORArr(HashBase, Value1.Hash); + var Hash1 = global.XORArr(HashBase, Value1.Hash); if (global.CompareArr(MaxLider.Hash1, Hash1) > 0) { MaxLider.Hash1 = Hash1; MaxLider.Nonce1 = Value1.Nonce; @@ -126,10 +128,10 @@ function CreatePOWVersion3(Block, bHashPump) { var CountEnd = START_NONCE + 50000; var Nonce0; for (Nonce0 = START_NONCE; Nonce0 < CountEnd; Nonce0++) { - var HashCurrent = GetHashFromArrNum2(Block.SeqHash, Miner, Nonce0); + var HashCurrent = global.GetHashFromArrNum2(Block.SeqHash, Miner, Nonce0); var Value2 = FindHashBuffer3(HashCurrent, BlockNum, Miner, 1); if (Value2) { - var Hash2 = XORArr(HashCurrent, Value2.Hash); + var Hash2 = global.XORArr(HashCurrent, Value2.Hash); if (global.CompareArr(MaxLider.Hash2, Hash2) > 0) { MaxLider.Nonce0 = Nonce0; MaxLider.Hash2 = Hash2; @@ -145,13 +147,13 @@ function CreatePOWVersion3(Block, bHashPump) { Block.LastNonce0 = Nonce0; if (Ret) { Block.AddrHash = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; - WriteUintToArrOnPos(Block.AddrHash, Miner, 0); - WriteUintToArrOnPos(Block.AddrHash, MaxLider.Nonce0, 6); - WriteUintToArrOnPos(Block.AddrHash, MaxLider.Nonce1, 12); - WriteUintToArrOnPos(Block.AddrHash, MaxLider.Nonce2, 18); - WriteUint16ToArrOnPos(Block.AddrHash, MaxLider.DeltaNum1, 24); - WriteUint16ToArrOnPos(Block.AddrHash, MaxLider.DeltaNum2, 26); - WriteUint32ToArrOnPos(Block.AddrHash, PrevHashNum, 28); + global.WriteUintToArrOnPos(Block.AddrHash, Miner, 0); + global.WriteUintToArrOnPos(Block.AddrHash, MaxLider.Nonce0, 6); + global.WriteUintToArrOnPos(Block.AddrHash, MaxLider.Nonce1, 12); + global.WriteUintToArrOnPos(Block.AddrHash, MaxLider.Nonce2, 18); + global.WriteUint16ToArrOnPos(Block.AddrHash, MaxLider.DeltaNum1, 24); + global.WriteUint16ToArrOnPos(Block.AddrHash, MaxLider.DeltaNum2, 26); + global.WriteUint32ToArrOnPos(Block.AddrHash, PrevHashNum, 28); Block.Hash = MaxLider.Hash2; if (global.CompareArr(MaxLider.Hash1, MaxLider.Hash2) > 0) { Block.PowHash = MaxLider.Hash1; @@ -160,10 +162,10 @@ function CreatePOWVersion3(Block, bHashPump) { Block.PowHash = MaxLider.Hash2; } if (BlockNum >= global.BLOCKNUM_TICKET_ALGO) - Block.Hash = sha3arr2(MaxLider.Hash1, MaxLider.Hash2); + Block.Hash = global.sha3arr2(MaxLider.Hash1, MaxLider.Hash2); else - Block.Hash = shaarr2(MaxLider.Hash1, MaxLider.Hash2); - var Power = GetPowPower(Block.PowHash); + Block.Hash = global.shaarr2(MaxLider.Hash1, MaxLider.Hash2); + var Power = global.GetPowPower(Block.PowHash); Block.HashCount = (1 << Power) >>> 0; } return Ret; @@ -176,7 +178,7 @@ function FindHashBuffer3(HashFind, BlockNum, Miner, CountFind) { var BlockNum2 = BufferBlockNum3[Index]; if (BlockNum2 && BlockNum2 > BlockNum - DELTA_LONG_MINING) { var Nonce2 = DELTA_NONCE + BufferNonce3[Index]; - var Hash2 = GetHashFromNum3(BlockNum2, Miner, Nonce2); + var Hash2 = global.GetHashFromNum3(BlockNum2, Miner, Nonce2); return { Hash: Hash2, DeltaNum: BlockNum - BlockNum2, Nonce: Nonce2 }; } } @@ -193,7 +195,7 @@ global.GetNonceHashArr = function(BlockNum, Miner, StartNonceRnd, CountNonce) { var ArrHash = []; for (var n = 0; n < CountNonce; n++) { var Nonce = StartNonceRnd + n; - var HashNonce = GetHashFromNum3(BlockNum, Miner, Nonce); + var HashNonce = global.GetHashFromNum3(BlockNum, Miner, Nonce); var HashNum = (HashNonce[0] << 23) * 2 + (HashNonce[1] << 16) + (HashNonce[2] << 8) + HashNonce[3]; ArrNonce[n] = Nonce; ArrHash[n] = HashNum; diff --git a/src/core/transaction-validator.ts b/src/core/transaction-validator.ts index 6004d54..ef407bd 100644 --- a/src/core/transaction-validator.ts +++ b/src/core/transaction-validator.ts @@ -19,9 +19,10 @@ if (global.PROCESS_NAME === "MAIN" || global.PROCESS_NAME === "TX") require("./wallet"); module.exports = class CSmartContract extends require("./block-exchange") { + BufHashTree constructor(SetKeyPair, RunIP, RunPort, UseRNDHeader, bVirtual) { super(SetKeyPair, RunIP, RunPort, UseRNDHeader, bVirtual) - this.BufHashTree = new RBTree(CompareArr) + this.BufHashTree = new RBTree(global.CompareArr) this.BufHashTree.LastAddNum = 0 } AddBlockToHashTree(Block) { @@ -73,8 +74,8 @@ module.exports = class CSmartContract extends require("./block-exchange") } } } - for (var key in DApps) { - DApps[key].OnWriteBlockStart(Block) + for (var key in global.DApps) { + global.DApps[key].OnWriteBlockStart(Block) } var arrContentResult = []; var BlockNum = Block.BlockNum; @@ -86,11 +87,11 @@ module.exports = class CSmartContract extends require("./block-exchange") continue; } var type = arr[i][0]; - var App = DAppByType[type]; + var App = global.DAppByType[type]; if (App) { App.ResultTx = 0 global.DApps.Accounts.BeginTransaction() - var StrHex = global.GetHexFromArr(sha3(arr[i])); + var StrHex = global.GetHexFromArr(global.sha3(arr[i])); var item; global.CurTrItem = undefined if (global.TreeFindTX) { @@ -103,7 +104,7 @@ module.exports = class CSmartContract extends require("./block-exchange") if (Result === true) { if (App.ResultTx) SetResult = App.ResultTx - if (!DApps.Accounts.CommitTransaction(BlockNum, i)) + if (!global.DApps.Accounts.CommitTransaction(BlockNum, i)) SetResult = 0 } else { @@ -137,40 +138,40 @@ module.exports = class CSmartContract extends require("./block-exchange") } if (arrContentResult.length) process.send({ cmd: "WriteBodyResult", BlockNum: Block.BlockNum, arrContentResult: arrContentResult }) - for (var key in DApps) { - DApps[key].OnWriteBlockFinish(Block) + for (var key in global.DApps) { + global.DApps[key].OnWriteBlockFinish(Block) } } BlockDeleteTX(Block) { this.BufHashTree.LastAddNum = 0 - for (var key in DApps) { - DApps[key].OnDeleteBlock(Block) + for (var key in global.DApps) { + global.DApps[key].OnDeleteBlock(Block) } } OnDelete(Block) { } IsValidTicket(Tr, BlockNum) { this.CheckCreateTicketObject(Tr, BlockNum) - if (Tr.power < MIN_POWER_POW_TR) + if (Tr.power < global.MIN_POWER_POW_TR) return - 2; if (Tr.num !== BlockNum) return - 3; return 1; } IsValidTransaction(Tr, BlockNum) { - if (!Tr.body || Tr.body.length < MIN_TRANSACTION_SIZE || Tr.body.length > MAX_TRANSACTION_SIZE) + if (!Tr.body || Tr.body.length < global.MIN_TRANSACTION_SIZE || Tr.body.length > global.MAX_TRANSACTION_SIZE) return - 1; this.CheckCreateTransactionObject(Tr) - if (Tr.power - Math.log2(Tr.body.length / 128) < MIN_POWER_POW_TR) + if (Tr.power - Math.log2(Tr.body.length / 128) < global.MIN_POWER_POW_TR) return - 2; if (Tr.num !== BlockNum) return - 3; - if (Tr.body[0] === TYPE_TRANSACTION_ACC_HASH) + if (Tr.body[0] === global.TYPE_TRANSACTION_ACC_HASH) return - 4; return 1; } ReWriteDAppTransactions(Length) { - if (!TX_PROCESS.Worker) + if (!global.TX_PROCESS.Worker) return 0; if (!Length) return 0; @@ -188,22 +189,22 @@ module.exports = class CSmartContract extends require("./block-exchange") return 1; } AddDAppTransactions(BlockNum, Arr) { - if (BlockNum % PERIOD_ACCOUNT_HASH !== 0) + if (BlockNum % global.PERIOD_ACCOUNT_HASH !== 0) return; - var BlockNumHash = BlockNum - DELTA_BLOCK_ACCOUNT_HASH; + var BlockNumHash = BlockNum - global.DELTA_BLOCK_ACCOUNT_HASH; if (BlockNumHash < 0) return; var Item = global.DApps.Accounts.GetAccountHashItem(BlockNumHash); if (Item) { - var Body = [TYPE_TRANSACTION_ACC_HASH]; - WriteUintToArr(Body, BlockNumHash) - WriteArrToArr(Body, Item.AccHash, 32) - if (BlockNumHash >= START_BLOCK_ACCOUNT_HASH3) { - WriteUintToArr(Body, Item.AccountMax) - WriteArrToArr(Body, Item.SmartHash, 32) - WriteUintToArr(Body, Item.SmartCount) - WriteUintToArr(Body, BlockNum) - WriteUintToArr(Body, 0) + var Body = [global.TYPE_TRANSACTION_ACC_HASH]; + global.WriteUintToArr(Body, BlockNumHash) + global.WriteArrToArr(Body, Item.AccHash, 32) + if (BlockNumHash >= global.START_BLOCK_ACCOUNT_HASH3) { + global.WriteUintToArr(Body, Item.AccountMax) + global.WriteArrToArr(Body, Item.SmartHash, 32) + global.WriteUintToArr(Body, Item.SmartCount) + global.WriteUintToArr(Body, BlockNum) + global.WriteUintToArr(Body, 0) } var Tr = { body: Body }; this.CheckCreateTransactionObject(Tr) @@ -213,7 +214,7 @@ module.exports = class CSmartContract extends require("./block-exchange") AddTransactionOwn(Tr) { if (!global.TX_PROCESS.Worker) return - 6; - var StrHex = global.GetHexFromArr(sha3(Tr.body)); + var StrHex = global.GetHexFromArr(global.sha3(Tr.body)); global.TX_PROCESS.Worker.send({ cmd: "FindTX", TX: StrHex }) return this.AddTransaction(Tr, 1); } diff --git a/src/core/transfer-msg.ts b/src/core/transfer-msg.ts index f4f4dc8..714889b 100644 --- a/src/core/transfer-msg.ts +++ b/src/core/transfer-msg.ts @@ -12,17 +12,19 @@ const MAX_MESSAGE_COUNT = 1000; module.exports = class CMessages extends require("./transaction-validator") { + MemPoolMsg + constructor(SetKeyPair, RunIP, RunPort, UseRNDHeader, bVirtual) { super(SetKeyPair, RunIP, RunPort, UseRNDHeader, bVirtual) this.MemPoolMsg = [] - for (var i = 0; i <= MAX_LEVEL_SPECIALIZATION; i++) - this.MemPoolMsg[i] = new RBTree(CompareItemTimePow) + for (var i = 0; i <= global.MAX_LEVEL_SPECIALIZATION; i++) + this.MemPoolMsg[i] = new RBTree(global.CompareItemTimePow) } AddMsgToQuote(Msg) { var Tree = this.MemPoolMsg[Msg.Level]; if (Tree) { if (Tree.insert(Msg)) { - if (Tree.size > MEM_POOL_MSG_COUNT) { + if (Tree.size > global.MEM_POOL_MSG_COUNT) { var maxitem = Tree.max(); Tree.remove(maxitem) if (maxitem === Msg) @@ -38,7 +40,7 @@ module.exports = class CMessages extends require("./transaction-validator") } IsValidMsg(Msg) { this.CheckCreateMsgHASH(Msg) - if (Msg.power < MIN_POWER_POW_MSG) + if (Msg.power < global.MIN_POWER_POW_MSG) return - 1; if (Msg.time > this.CurrentBlockNum) return - 1; @@ -47,18 +49,18 @@ module.exports = class CMessages extends require("./transaction-validator") CheckCreateMsgHASH(Msg) { if (!Msg.HashPow) { Msg.HASH = global.sha3(Msg.body) - Msg.HashPow = GetHashWithValues(Msg.HASH, Msg.nonce, Msg.time) - Msg.power = GetPowPower(Msg.HashPow) + Msg.HashPow = global.GetHashWithValues(Msg.HASH, Msg.nonce, Msg.time) + Msg.power = global.GetPowPower(Msg.HashPow) Msg.TimePow = Msg.time + Msg.power - Math.log2(Msg.body.length / 128) - Msg.Level = AddrLevelArr(this.addrArr, Msg.addrArr) - if (Msg.Level >= MAX_LEVEL_SPECIALIZATION) - Msg.Level = MAX_LEVEL_SPECIALIZATION + Msg.Level = global.AddrLevelArr(this.addrArr, Msg.addrArr) + if (Msg.Level >= global.MAX_LEVEL_SPECIALIZATION) + Msg.Level = global.MAX_LEVEL_SPECIALIZATION } } CreateMsgFromBody(Body, ToAddr) { var HASH = global.sha3(Body); var Msg = { - HASH: HASH, body: Body, addrArr: ToAddr, nonce: CreateNoncePOWExtern(HASH, this.CurrentBlockNum, 3 * (1 << MIN_POWER_POW_MSG)), + HASH: HASH, body: Body, addrArr: ToAddr, nonce: global.CreateNoncePOWExtern(HASH, this.CurrentBlockNum, 3 * (1 << global.MIN_POWER_POW_MSG)), time: this.CurrentBlockNum, }; this.CheckCreateMsgHASH(Msg) @@ -97,8 +99,9 @@ module.exports = class CMessages extends require("./transaction-validator") var Msg = arr[i]; if (this.IsValidMsg(Msg)) { if (global.CompareArr(this.addrArr, Msg.addrArr) === 0) { - var App = DAppByType[Msg.body[0]]; + var App = global.DAppByType[Msg.body[0]]; if (App) { + //@ts-ignore App.OnMessage(Msg, BlockNum, i) } } @@ -117,7 +120,7 @@ module.exports = class CMessages extends require("./transaction-validator") GETMESSAGE(Info, CurTime) { var arr = []; var BufLength = 300; - var Level = AddrLevelArr(this.addrArr, Info.Node.addrArr); + var Level = global.AddrLevelArr(this.addrArr, Info.Node.addrArr); var Tree = this.MemPoolMsg[Level]; if (Tree) { var it = Tree.iterator(), Item; @@ -145,10 +148,10 @@ module.exports = class CMessages extends require("./transaction-validator") setTimeout(function() { var Res = SELF.AddTransaction(TR, TR.ToAll); if (TR.ToAll) - ToLogClient("#3 Added " + TrName(TR) + " for block: " + TR.num + " on timer Res=" + Res) + global.ToLogClient("#3 Added " + TrName(TR) + " for block: " + TR.num + " on timer Res=" + Res) }, (delta - 3) * 1000) if (Tr.ToAll) - ToLogClient("#2 Added " + TrName(Tr) + " for block: " + Tr.num + " to timer. Send transaction after " + (delta - 3) + " sec") + global.ToLogClient("#2 Added " + TrName(Tr) + " for block: " + Tr.num + " to timer. Send transaction after " + (delta - 3) + " sec") return 4; } return - 3; @@ -170,10 +173,10 @@ module.exports = class CMessages extends require("./transaction-validator") SendTransaction(Tr) { if (!Tr.ToAll) return; - var CurTime = GetCurrentTime(0) - 0; + var CurTime = global.GetCurrentTime(0) - 0; var Count; - if (GrayConnect()) - Count = Math.trunc(MAX_GRAY_CONNECTIONS_TO_SERVER / 2) + if (global.GrayConnect()) + Count = Math.trunc(global.MAX_GRAY_CONNECTIONS_TO_SERVER / 2) else Count = Math.min(this.ActualNodes.size, 16) if (Count < 2) diff --git a/src/core/update.ts b/src/core/update.ts index 89545c9..39d1b6b 100644 --- a/src/core/update.ts +++ b/src/core/update.ts @@ -12,14 +12,14 @@ global.RunOnUpdate = RunOnUpdate; function RunOnUpdate() { var fname = global.GetDataPath("DB/update.lst"); - var UpdateInfo = LoadParams(fname, { UPDATE_NUM_COMPLETE: 1071 }); + var UpdateInfo = global.LoadParams(fname, { UPDATE_NUM_COMPLETE: 1071 }); if (!UpdateInfo.UPDATE_NUM_COMPLETE) UpdateInfo.UPDATE_NUM_COMPLETE = 0; var CurNum = UpdateInfo.UPDATE_NUM_COMPLETE; - if (CurNum !== UPDATE_CODE_VERSION_NUM) { - UpdateInfo.UPDATE_NUM_COMPLETE = UPDATE_CODE_VERSION_NUM; + if (CurNum !== global.UPDATE_CODE_VERSION_NUM) { + UpdateInfo.UPDATE_NUM_COMPLETE = global.UPDATE_CODE_VERSION_NUM; global.ToLog("UPDATER Start"); - SaveParams(fname, UpdateInfo); + global.SaveParams(fname, UpdateInfo); if (global.TEST_NETWORK || global.LOCAL_RUN) { } else { @@ -43,7 +43,7 @@ function CreateHeadersHash100() { if (Num === 0) Hash100 = []; else - Hash100 = sha3arr2(PrevHash100, Block.Hash); + Hash100 = global.sha3arr2(PrevHash100, Block.Hash); DB.Write({ Num: Num / 100, Hash100: Hash100, Hash: Block.Hash }); if (Num % 1000000 === 0) global.ToLog("Create Hash100:" + Num); @@ -54,12 +54,12 @@ function CreateHeadersHash100() { }; function CheckRewriteTr(Num, StrHash, StartRewrite) { - if (SERVER.BlockNumDB < StartRewrite) + if (global.SERVER.BlockNumDB < StartRewrite) return "NO"; var AccountsHash = global.DApps.Accounts.GetHashOrUndefined(Num); if (!AccountsHash || global.GetHexFromArr(AccountsHash) !== StrHash) { global.ToLog("START REWRITE ERR ACTS TRANSACTIONS"); - global.SERVER.ReWriteDAppTransactions(SERVER.BlockNumDB - StartRewrite); + global.SERVER.ReWriteDAppTransactions(global.SERVER.BlockNumDB - StartRewrite); return "Rewrite"; } else { @@ -71,7 +71,7 @@ function CheckRewriteAllTr2(Num, StrHash, Num2, StrHash2) { if (global.LOCAL_RUN || global.TEST_NETWORK) return "NONE"; var MaxNum = global.SERVER.GetMaxNumBlockDB(); - if (MaxNum < START_BLOCK_ACCOUNT_HASH) + if (MaxNum < global.START_BLOCK_ACCOUNT_HASH) return "NONE"; var AccountsHash = global.DApps.Accounts.GetHashOrUndefined(Num); var AccountsHash2 = global.DApps.Accounts.GetHashOrUndefined(Num2); @@ -80,8 +80,8 @@ function CheckRewriteAllTr2(Num, StrHash, Num2, StrHash2) { if (AccountsHash && global.GetHexFromArr(AccountsHash) !== StrHash) { global.ToLog("***************** START REWRITE ALL DAPPS"); global.UpdateMode = 1; - for (var key in DApps) { - DApps[key].ClearDataBase(); + for (var key in global.DApps) { + global.DApps[key].ClearDataBase(); } global.UpdateMode = 0; return "Rewrite"; @@ -95,14 +95,14 @@ function CheckRewriteAllTr(Num, StrHash, Num2, StrHash2) { if (global.LOCAL_RUN || global.TEST_NETWORK) return "NONE"; var MaxNum = global.SERVER.GetMaxNumBlockDB(); - if (MaxNum < START_BLOCK_ACCOUNT_HASH) + if (MaxNum < global.START_BLOCK_ACCOUNT_HASH) return "NONE"; var AccountsHash = global.DApps.Accounts.GetHashOrUndefined(Num); if (AccountsHash && global.GetHexFromArr(AccountsHash) !== StrHash) { global.ToLog("***************** START REWRITE ALL DAPPS"); global.UpdateMode = 1; - for (var key in DApps) { - DApps[key].ClearDataBase(); + for (var key in global.DApps) { + global.DApps[key].ClearDataBase(); } global.UpdateMode = 0; return "Rewrite"; @@ -154,7 +154,7 @@ function ReWriteDBSmartWrite() { var Item = global.DApps.Smart.DBSmart.Read(num); if (!Item) break; - var Body = (global.GetArrFromHex(GetBufferFromObject(Item, global.DApps.Smart.FORMAT_ROW, 20000, {}); + var Body = global.GetArrFromHex(GetBufferFromObject(Item, global.DApps.Smart.FORMAT_ROW, 20000, {})); if (Body.length > 15000) global.ToLog("Smart " + Item.Num + ". " + Item.Name + " length=" + Body.length); global.DApps.Smart.DBSmartWrite(Item); diff --git a/src/core/wallet.ts b/src/core/wallet.ts index e7272dd..640e84d 100644 --- a/src/core/wallet.ts +++ b/src/core/wallet.ts @@ -17,12 +17,18 @@ const WalletPath = "WALLET"; const DBRow = require("./db/db-row"); const CONFIG_NAME = global.GetDataPath(WalletPath + "/config.lst"); class CApp { + Password + WalletOpen + AccountMap + KeyPair + KeyXOR + PubKeyArr constructor() { - CheckCreateDir(global.GetDataPath(WalletPath)) + global.CheckCreateDir(global.GetDataPath(WalletPath)) var bReadOnly = (global.PROCESS_NAME !== "TX"); this.Password = "" this.WalletOpen = undefined - var Params = LoadParams(CONFIG_NAME, undefined); + var Params = global.LoadParams(CONFIG_NAME, undefined); if (!Params) { Params = {} if (global.TEST_NETWORK) { @@ -39,7 +45,7 @@ class CApp { this.AccountMap = Params.AccountMap this.KeyPair = crypto.createECDH('secp256k1') if (Params.Protect) { - ToLogClient("Wallet protect by password") + global.ToLogClient("Wallet protect by password") this.KeyXOR = global.GetArrFromHex(Params.KeyXOR) this.WalletOpen = false this.SetPrivateKey(Params.PubKey) @@ -55,22 +61,22 @@ class CApp { AddTransaction(Tr) { if (!global.TX_PROCESS.Worker) return 0; - var StrHex = global.GetHexFromArr(sha3(Tr.body)); + var StrHex = global.GetHexFromArr(global.sha3(Tr.body)); global.TX_PROCESS.Worker.send({ cmd: "FindTX", TX: StrHex }) return global.SERVER.AddTransaction(Tr, 1); } - SetPrivateKey(KeyStr, bSetNew) { + SetPrivateKey(KeyStr, bSetNew?) { var bGo = 1; if (this.WalletOpen === false) { bGo = 0 } if (KeyStr && KeyStr.length === 64 && bGo) { - this.KeyPair.setPrivateKey(GetArr32FromHex(KeyStr)) + this.KeyPair.setPrivateKey(global.GetArr32FromHex(KeyStr)) this.KeyPair.PubKeyArr = this.KeyPair.getPublicKey('', 'compressed') this.KeyPair.PubKeyStr = global.GetHexFromArr(this.KeyPair.PubKeyArr) this.KeyPair.PrivKeyStr = KeyStr.toUpperCase() this.KeyPair.addrArr = this.KeyPair.PubKeyArr.slice(1) - this.KeyPair.addrStr = GetHexAddresFromPublicKey(this.KeyPair.addrArr) + this.KeyPair.addrStr = global.GetHexAddresFromPublicKey(this.KeyPair.addrArr) this.KeyPair.addr = this.KeyPair.addrArr this.KeyPair.WasInit = 1 this.PubKeyArr = this.KeyPair.PubKeyArr @@ -98,38 +104,38 @@ class CApp { this.Password = "" this.WalletOpen = false this.KeyPair = crypto.createECDH('secp256k1') - this.SetPrivateKey(GetHexFromArr(this.PubKeyArr), false) - ToLogClient("Wallet close") + this.SetPrivateKey(global.GetHexFromArr(this.PubKeyArr), false) + global.ToLogClient("Wallet close") return 1; } OpenWallet(StrPassword) { if (this.WalletOpen !== false) { - ToLogClient("Wallet was open") + global.ToLogClient("Wallet was open") } var Hash = this.HashProtect(StrPassword); var TestPrivKey = this.XORHash(this.KeyXOR, Hash, 32); - if (!IsZeroArr(TestPrivKey)) { + if (!global.IsZeroArr(TestPrivKey)) { this.KeyPair.setPrivateKey(Buffer.from(TestPrivKey)) var TestPubKey = this.KeyPair.getPublicKey('', 'compressed'); if (global.CompareArr(TestPubKey, this.PubKeyArr) !== 0) { - ToLogClient("Wrong password") + global.ToLogClient("Wrong password") return 0; } this.Password = StrPassword this.WalletOpen = true - this.SetPrivateKey(GetHexFromArr(TestPrivKey), false) + this.SetPrivateKey(global.GetHexFromArr(TestPrivKey), false) } else { this.Password = StrPassword this.WalletOpen = true - this.SetPrivateKey(GetHexFromArr(this.PubKeyArr), false) + this.SetPrivateKey(global.GetHexFromArr(this.PubKeyArr), false) } - ToLogClient("Wallet open") + global.ToLogClient("Wallet open") return 1; } SetPasswordNew(StrPassword) { if (this.WalletOpen === false) { - ToLogClient("Wallet is close by password") + global.ToLogClient("Wallet is close by password") return; } this.Password = StrPassword @@ -157,7 +163,7 @@ class CApp { if (this.WalletOpen === false) { return; } - var Params = {}; + var Params: any = {}; if (this.Password) { Params.Protect = true var Hash = this.HashProtect(this.Password); @@ -179,13 +185,13 @@ class CApp { } Params.AccountMap = this.AccountMap Params.MiningAccount = global.GENERATE_BLOCK_ACCOUNT - SaveParams(CONFIG_NAME, Params) + global.SaveParams(CONFIG_NAME, Params) } OnCreateAccount(Data) { this.AccountMap[Data.Num] = 0 } FindMyAccounts(bClean) { - if (IsZeroArr(this.PubKeyArr)) + if (global.IsZeroArr(this.PubKeyArr)) return; if (bClean) this.AccountMap = {} @@ -212,15 +218,15 @@ class CApp { if (!this.KeyPair.WasInit) return "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; var PrivKey = this.GetPrivateKey(Num); - var sigObj = secp256k1.sign(SHA3BUF(Arr), Buffer.from(PrivKey)); - returnglobal.GetHexFromArr(sigObj.signature); + var sigObj = global.secp256k1.sign(global.SHA3BUF(Arr), Buffer.from(PrivKey)); + return global.GetHexFromArr(sigObj.signature); } GetSignTransaction(TR) { if (!this.KeyPair.WasInit) return "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; var PrivKey = this.GetPrivateKey(this.AccountMap[TR.FromID]); var Arr = global.DApps.Accounts.GetSignTransferTx(TR, PrivKey); - returnglobal.GetHexFromArr(Arr); + return global.GetHexFromArr(Arr); } }; global.WALLET = new CApp; diff --git a/src/global.d.ts b/src/global.d.ts index af3169d..9bf8562 100644 --- a/src/global.d.ts +++ b/src/global.d.ts @@ -18,15 +18,25 @@ declare global { HTTP_PORT_NUMBER: number; LOCAL_RUN: number; //#endregion + //#region main-process.ts PROCESS_NAME: string; POWPROCESS: number; DEBUGPROCESS: any; + START_SERVER: number; + SetCalcPOW: Function; + RunStopPOWProcess: Function; + NEW_SERVER_PRIVATE_KEY: number; + //#endregion + + //#region constant.ts UPDATE_CODE_VERSION_NUM: number; MIN_CODE_VERSION_NUM: number; MINING_VERSION_NUM: number; InitParamsArg: Function; CONST_NAME_ARR: string[]; + MAX_LENGTH_SENDER_MAP: number; + DELTA_START_SENDER_MAP: number; NODES_DELTA_CALC_HOUR: number; USE_HARD_API_V2: number; USE_TICKET: number; @@ -49,11 +59,11 @@ declare global { SERVER_PRIVATE_KEY_HEX: string; USE_NET_FOR_SERVER_ADDRES: number; NET_WORK_MODE: { - ip: string; - port: number; - UseDirectIP: boolean; - NodeWhiteList: string; - DoRestartNode: number; + ip?: string; + port?: number | string; + UseDirectIP?: boolean | number; + NodeWhiteList?: string; + DoRestartNode?: number; } STAT_MODE: number; MAX_STAT_PERIOD: number; @@ -140,7 +150,7 @@ declare global { NEW_SIGN_TIME: number; TEST_TRANSACTION_GENERATE: number; TEST_NETWORK: boolean | number; - START_PORT_NUMBER: number; + START_PORT_NUMBER: number | string; GetNetworkName: Function; DEF_VERSION: string; DEF_CLIENT: string; @@ -161,10 +171,6 @@ declare global { NWMODE: number; NOALIVE: number; DEV_MODE: number; - START_SERVER: number; - SetCalcPOW: Function; - RunStopPOWProcess: Function; - NEW_SERVER_PRIVATE_KEY: number; //#endregion //#region startlib.ts @@ -180,8 +186,8 @@ declare global { ToLogClient: Function; glCurNumFindArr: number; - ArrReconnect: []; - ArrConnect: []; + ArrReconnect: any[]; + ArrConnect: any[]; //#region main-process.ts:51 SERVER: any; @@ -192,7 +198,7 @@ declare global { //#region main-process.ts:100 GetCurrentTime: Function; - //#region main-process.ts:100 + //#endregion //#region SpeedSignLib: number; @@ -269,7 +275,8 @@ declare global { //#region run-nw.ts NWVERSION: string; - HTTP_SERVER_START_OK: boolean; + HTTP_SERVER_START_OK: boolean | number; + NO_HISTORY_MODE: boolean; //#endregion //#region crypto-library.ts @@ -367,15 +374,28 @@ declare global { //#region base.ts glStopNode: any; + GetCheckAccHash: Function; + ReadHashFromBufDB: Function; + STreeBuffer: any; + TestCreateTr: Function; //#endregion //#region html-server.ts HTTPCaller: any; DappTemplateFile: Function; DappSmartCodeFile: Function; - DappClientCodeFile - SendBlockFile - + DappClientCodeFile: Function; + SendBlockFile: Function; + SetCheckPointOnBlock: Function; + SendHTMLMap: any; + SendWebFile: Function; + GetFileHTMLWithParsing: Function; + GetFileHTMLFromMarkdown: Function; + GetFileSimple: Function; + SaveFileSimple: Function; SetSafeResponce: Function; + GetUserContext: Function; + EventNum: number; + EventMap: any; AddDappEventToGlobalMap: Function; //#endregion @@ -397,10 +417,13 @@ declare global { //#region block-db.ts BlockDB: any; - BLOCK_HEADER_SIZE - BLOCK_HEADER_SIZE2 - DB_VERSION - + BLOCK_HEADER_SIZE: number; + BLOCK_HEADER_SIZE2: number; + DB_VERSION: number; + AddInfoChain: Function; + AddInfoBlock: Function; + GetNodeStrPort: Function; + NO_CHECK_BLOCKNUM_ONSTART: number; //#endregion //#region db.ts @@ -436,6 +459,7 @@ declare global { //#endregion //#region transaction-validator.ts + CurTrItem: any; //#endregion //#region connect.ts @@ -448,10 +472,28 @@ declare global { MIN_PERIOD_PING: number; MAX_PING_FOR_CONNECT: number; MAX_WAIT_PERIOD_FOR_HOT: number; + GetGrayServerConnections: Function; + SortNodeBlockProcessCount: Function; //#endregion //#region code.ts + RestartNode: Function; + UnpackCodeFile: Function; + //#endregion + //#region node.ts + SocketStatistic: Function; + GetSocketStatus: Function; + SetSocketStatus: Function; + NodeInfo: Function; + NodeName: Function; + SocketInfo: Function; + FindNodeByAddr: Function; + AddNodeInfo: Function; + socketInit: Function; + socketRead: Function; + socketWrite: Function; + CloseSocket: Function; //#endregion //#region terahashlib.js @@ -486,12 +528,125 @@ declare global { shaarrblock2: Function; //#endregion - SendWebFile: Function; + //#region wallet-node.js + CleanChain: Function; + //#endregion + //#region lexer.js + LexerJS: any; + //#endregion + + //#region coinlib.js + ADD: Function; + SUB: Function; + DIV: Function; + ISZERO: Function; + FLOAT_FROM_COIN: Function; + COIN_FROM_FLOAT: Function; + COIN_FROM_STRING: Function; + //#endregion + + //#region block-exchange.ts + CAN_START: boolean; + StrWarn: string; + SUM_LIST_LENGTH: number; + CONSENSUS_TIK_TIME: number; + CONSENSUS_CHECK_TIME: number; + PERIOD_FOR_NEXT_SEND: number; + BLOCK_DELTA_ACTIVATE: number; + TIME_END_EXCHANGE: number; + TIME_START_POW: number; + TIME_START_SAVE: number; + TIME_START_LOAD: number; + TreeBlockBuf: any; + DoTxLog: boolean; + //#endregion + + //#region block-loader.ts + HistoryBlockBuf: any + //#endregion + + //#region block-loader-const.ts + PERIOD_GET_BLOCK: number; + COUNT_HISTORY_BLOCKS_FOR_LOAD: number; + COUNT_BLOCKS_FOR_CHECK_POW: number; + MAX_DELTA_COUNT_SUM_FOR_LOAD: number; + MAX_COUNT_CHAIN_LOAD: number; + PACKET_ALIVE_PERIOD: number; + PACKET_ALIVE_PERIOD_NEXT_NODE: number; + MAX_BLOCK_SEND: number; + COUNT_TASK_FOR_NODE: number; + FORMAT_BLOCK_TRANSFER: string; + WRK_BLOCK_TRANSFER: any; + MAX_ACCOUNTS_TRANSFER: number; + MAX_SMARTS_TRANSFER: number; + FORMAT_REST_TRANSFER: string; + FORMAT_SMART_TRANSFER: string; + //#endregion + + //#region server.ts + BUF_TYPE: number; + STR_TYPE: number; + MAX_STR_BUF_DATA: number; + MAX_CONNECTION_ACTIVE: number; + STAT_PERIOD: number; + FORMAT_POW_TO_CLIENT: string; + FORMAT_POW_TO_SERVER: string; + INTERNET_IP_FROM_STUN: string; + ContextPackets: any; + //#endregion + + //#region terahashmining.ts + CreateHashMinimal: Function; + CreatePOWVersionX: Function; + GetNonceHashArr: Function; + //#endregion + + //#region pow-process.ts + BlockPump: any; + //#endregion + + //#region tx-process.ts + SetStatMode: Function; + TreeFindTX + bShowDetail: number; + ClearDataBase: Function; + RewriteAllTransactions: Function; + ReWriteDAppTransactions: Function; + TXPrepareLoadRest: Function; + TXWriteAccArr: Function; + TXWriteSmartArr: Function; + TXWriteAccHash: Function; + EvalCode: Function; + //#endregion + + //#region messager.ts + MESSAGER: any; + //#endregion + + //#region update.ts + RunOnUpdate: Function; + CheckRewriteTr: Function; + //#endregion + + //#region transfer-msg.ts + TrName: Function; + //#endregion + + //#region rest_tables.ts + DoRest: Function; + GetRestArr: Function; + GetCurrentRestArr: Function; + GetCurrentRestNum: Function; + //#endregion + + nw: any; GlobalRunMap: any; sha3: any; SHA3BUF: any; shaarr: any; + ELECTRON: any; + TestTestWaletMode: any; } interface Process { RunRPC: Function; @@ -507,6 +662,7 @@ declare global { Path: string; OnMessage: Function; PeriodAlive: number; + RunRPC?: Function; } interface Worker { connected: boolean; @@ -542,7 +698,12 @@ declare global { DappTransactionList?: Function; DappStaticCall?: Function; GetHistoryTransactions?: Function; + GetSupply?: Function; GetTotalSupply?: Function; } - + interface Buffer { + Read, + Write, + len + } } \ No newline at end of file diff --git a/src/process/api-exchange.ts b/src/process/api-exchange.ts index 1f4010c..150b206 100644 --- a/src/process/api-exchange.ts +++ b/src/process/api-exchange.ts @@ -26,7 +26,7 @@ WebApi2.CreateAccount = function(Params, response) { Body = Body.slice(0, Body.len + 12); SendTransaction(Body, TR as any, Params.Wait, function(result, text) { var Result = { - result: result, text: text, TxID: global.GetHexFromArr(TR._TxID.slice(0, TR_TICKET_HASH_LENGTH + 6)), BlockNum: TR._BlockNum, + result: result, text: text, TxID: global.GetHexFromArr(TR._TxID.slice(0, global.TR_TICKET_HASH_LENGTH + 6)), BlockNum: TR._BlockNum, Meta: Params.Meta, }; var Str = JSON.stringify(Result); @@ -42,10 +42,10 @@ WebApi2.Send = function(Params, response, A, bJsonRet) { return { result: 0 }; var Coin; if (typeof Params.Amount === "number") - Coin = COIN_FROM_FLOAT(Params.Amount); + Coin = global.COIN_FROM_FLOAT(Params.Amount); else Coin = Params.Amount; - var FromNum = ParseNum(Params.FromID); + var FromNum = global.ParseNum(Params.FromID); if (!Coin) return { result: 0, Meta: Params.Meta, text: "Params.Amount required" }; if (!FromNum) @@ -57,7 +57,7 @@ WebApi2.Send = function(Params, response, A, bJsonRet) { if (typeof Params.ToID === "string" && Params.ToID.length === 66) ToPubKeyArr = global.GetArrFromHex(Params.ToID); else - ToID = ParseNum(Params.ToID); + ToID = global.ParseNum(Params.ToID); var DataFrom = global.DApps.Accounts.ReadState(FromNum); if (!DataFrom) return { result: 0, Meta: Params.Meta, text: "Error read account: " + FromNum }; @@ -68,14 +68,14 @@ WebApi2.Send = function(Params, response, A, bJsonRet) { } else { OperationID = MapSendID[FromNum].OperationID; - if ((new Date() - MapSendID[FromNum].Date) > 8 * 1000) { + if (((new Date() as any) - MapSendID[FromNum].Date) > 8 * 1000) { OperationID += 20; } } OperationID++; MapSendID[FromNum].OperationID = OperationID; MapSendID[FromNum].Date = Date.now(); - var TR = { + var TR: any = { Type: 111, Version: 3, Reserve: 0, FromID: FromNum, OperationID: OperationID, To: [{ PubKey: ToPubKeyArr, ID: ToID, SumCOIN: Coin.SumCOIN, SumCENT: Coin.SumCENT @@ -86,11 +86,11 @@ WebApi2.Send = function(Params, response, A, bJsonRet) { if (!Params.FromPrivKey) return { result: 0, Meta: Params.Meta, text: "Params.FromPrivKey required" }; TR.Sign = global.DApps.Accounts.GetSignTransferTx(TR, global.GetArrFromHex(Params.FromPrivKey)); - var Body = global.BufLib.GetBufferFromObject(TR, FORMAT_MONEY_TRANSFER3, MAX_TRANSACTION_SIZE, {}, 1); + var Body = global.BufLib.GetBufferFromObject(TR, global.FORMAT_MONEY_TRANSFER3, global.MAX_TRANSACTION_SIZE, {}, 1); Body = Body.slice(0, Body.len + 12); SendTransaction(Body, TR, Params.Wait, function(result, text) { var Result = { - result: result, text: text, TxID: global.GetHexFromArr(TR._TxID.slice(0, TR_TICKET_HASH_LENGTH + 6)), BlockNum: TR._BlockNum, + result: result, text: text, TxID: global.GetHexFromArr(TR._TxID.slice(0, global.TR_TICKET_HASH_LENGTH + 6)), BlockNum: TR._BlockNum, Meta: Params.Meta, }; var Str = JSON.stringify(Result); @@ -100,7 +100,7 @@ WebApi2.Send = function(Params, response, A, bJsonRet) { }; WebApi2.GetBalance = function(Params, response) { if (typeof Params === "object") { - var arr = global.DApps.Accounts.GetRowsAccounts(ParseNum(Params.AccountID), 1); + var arr = global.DApps.Accounts.GetRowsAccounts(global.ParseNum(Params.AccountID), 1); if (arr.length) { var Account = arr[0]; var Value = Account.Value; @@ -116,7 +116,7 @@ WebApi2.GetBalance = function(Params, response) { WebApi2.GetTransaction = function(Params) { if (typeof Params === "object" && Params.TxID) { var Arr = global.GetArrFromHex(Params.TxID); - var BlockNum = ReadUintFromArr(Arr, TR_TICKET_HASH_LENGTH); + var BlockNum = global.ReadUintFromArr(Arr, global.TR_TICKET_HASH_LENGTH); var Block = global.SERVER.ReadBlockDB(BlockNum); if (Block && Block.arrContent) { for (var i = 0; i < Block.arrContent.length; i++) { @@ -209,11 +209,11 @@ WebApi2.SendRawTransaction = function(Params, response) { return { result: 0, Meta: Params.Meta, text: "Params.Tx.Sign required" }; var TR = Params.Tx; TxHexToArr(TR); - var Body = global.BufLib.GetBufferFromObject(TR, FORMAT_MONEY_TRANSFER3, MAX_TRANSACTION_SIZE, {}, 1); + var Body = global.BufLib.GetBufferFromObject(TR, global.FORMAT_MONEY_TRANSFER3, global.MAX_TRANSACTION_SIZE, {}, 1); Body = Body.slice(0, Body.len + 12); SendTransaction(Body, TR, Params.Wait, function(result, text) { var Result = { - result: result, text: text, TxID: global.GetHexFromArr(TR._TxID.slice(0, TR_TICKET_HASH_LENGTH + 6)), BlockNum: TR._BlockNum, + result: result, text: text, TxID: global.GetHexFromArr(TR._TxID.slice(0, global.TR_TICKET_HASH_LENGTH + 6)), BlockNum: TR._BlockNum, Meta: Params.Meta, }; var Str = JSON.stringify(Result); @@ -252,9 +252,9 @@ function TxHexToArr(TR) { var DELTA_FOR_TIME_TX = 1; function GetTxID(BlockNum, Body) { - var Nonce = ReadUintFromArr(Body, Body.length - 6); + var Nonce = global.ReadUintFromArr(Body, Body.length - 6); var Arr2 = CreateTxID(Body, BlockNum, Nonce); - return Arr2.slice(0, TR_TICKET_HASH_LENGTH + 6); + return Arr2.slice(0, global.TR_TICKET_HASH_LENGTH + 6); }; function CreateTxID(body, BlockNum, Nonce) { @@ -262,14 +262,14 @@ function CreateTxID(body, BlockNum, Nonce) { body.writeUIntLE(Nonce, body.length - 6, 6); var HASH = global.sha3(body); var FullHashTicket = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; - for (var i = 0; i < TR_TICKET_HASH_LENGTH; i++) + for (var i = 0; i < global.TR_TICKET_HASH_LENGTH; i++) FullHashTicket[i] = HASH[i]; - WriteUintToArrOnPos(FullHashTicket, BlockNum, TR_TICKET_HASH_LENGTH); + global.WriteUintToArrOnPos(FullHashTicket, BlockNum, global.TR_TICKET_HASH_LENGTH); return FullHashTicket; }; function GetBlockNumTr(arr) { - var BlockNum = DELTA_FOR_TIME_TX + GetCurrentBlockNumByTime(); + var BlockNum = DELTA_FOR_TIME_TX + global.GetCurrentBlockNumByTime(); if (arr[0] === global.TYPE_TRANSACTION_CREATE) { var BlockNum2 = Math.floor(BlockNum / 10) * 10; if (BlockNum2 < BlockNum) @@ -282,12 +282,12 @@ function GetBlockNumTr(arr) { function CreateHashBodyPOWInnerMinPower(TR, arr, MinPow, startnonce) { var BlockNum = GetBlockNumTr(arr); if (MinPow === undefined) { - MinPow = MIN_POWER_POW_TR + Math.log2(arr.length / 128); + MinPow = global.MIN_POWER_POW_TR + Math.log2(arr.length / 128); } var nonce = startnonce; while (1) { var TxID = CreateTxID(arr, BlockNum, nonce); - var power = GetPowPower(sha3(TxID)); + var power = global.GetPowPower(global.sha3(TxID)); if (power >= MinPow) { TR._TxID = TxID; TR._BlockNum = BlockNum; @@ -349,7 +349,7 @@ function SendTransaction(Body, TR, Wait, F) { function GetTransactionFromBody(Params, Block, TrNum, Body) { var TR = global.DApps.Accounts.GetObjectTransaction(Body); if (TR) { - ConvertBufferToStr(TR); + global.ConvertBufferToStr(TR); TR.result = 1; TR.Meta = Params.Meta; if (Block.VersionBody === 1 && Block.arrContentResult) { diff --git a/src/process/main-process.ts b/src/process/main-process.ts index 152a8e9..7196014 100644 --- a/src/process/main-process.ts +++ b/src/process/main-process.ts @@ -14,16 +14,9 @@ const fs = require('fs'); const os = require('os'); import * as crypto from 'crypto'; -let { - GetNormalPathString, - sha3, - AddTrMap, - ADD_HASH_RATE -} = global - global.START_SERVER = 1; -global.DATA_PATH = GetNormalPathString(global.DATA_PATH); -global.CODE_PATH = GetNormalPathString(global.CODE_PATH); +global.DATA_PATH = global.GetNormalPathString(global.DATA_PATH); +global.CODE_PATH = global.GetNormalPathString(global.CODE_PATH); console.log("DATA DIR: " + global.DATA_PATH); console.log("PROGRAM DIR: " + global.CODE_PATH); require("../core/library"); @@ -31,7 +24,7 @@ global.ToLog(os.platform() + " (" + os.arch() + ") " + os.release()); var VerArr = process.versions.node.split('.'); global.ToLog("nodejs: " + process.versions.node); if ((VerArr[0] as any as number) < 8) { - global.global.ToError("Error version of NodeJS=" + VerArr[0] + " Pls, download new version from www.nodejs.org and update it. The minimum version must be 8"); + global.ToError("Error version of NodeJS=" + VerArr[0] + " Pls, download new version from www.nodejs.org and update it. The minimum version must be 8"); process.exit(); } var CServer = require("../core/server"); @@ -62,7 +55,7 @@ process.on('uncaughtException' as any, function(err: TeraError) { if (global.PROCESS_NAME !== "MAIN") { process.send({ cmd: "log", message: err }); } - global.global.ToError(err.stack); + global.ToError(err.stack); global.ToLog(err.stack); if (err.code === "ENOTFOUND" || err.code === "ECONNRESET" || err.code === "EPIPE") { } @@ -73,7 +66,7 @@ process.on('uncaughtException' as any, function(err: TeraError) { } }); process.on('error' as any, function(err: TeraError) { - global.global.ToError(err.stack); + global.ToError(err.stack); global.ToLog(err.stack); }); var ArrChildProcess = []; @@ -134,15 +127,15 @@ function OnMessageWeb(msg) { function AddTransactionFromWeb(Params) { var body = global.GetArrFromHex(Params.HexValue); if (global.TX_PROCESS && global.TX_PROCESS.Worker) { - var StrHex = global.GetHexFromArr(sha3(body)); + var StrHex = global.GetHexFromArr(global.sha3(body)); global.TX_PROCESS.Worker.send({ cmd: "FindTX", TX: StrHex, Web: 1, WebID: Params.WebID }); } var Res = global.SERVER.AddTransaction({ body: body }, 1); - var text = AddTrMap[Res]; + var text = global.AddTrMap[Res]; var final = false; if (Res <= 0 && Res !== - 3) final = true; - global.ToLogClient("Send: " + text, global.GetHexFromArr(sha3(body)), final); + global.ToLogClient("Send: " + text, global.GetHexFromArr(global.sha3(body)), final); return text; }; global.AddTransactionFromWeb = AddTransactionFromWeb; @@ -311,7 +304,7 @@ function StartChildProcess(Item) { ITEM.Worker.on('error', function(err) { }); ITEM.Worker.on('close', function(code) { - global.global.ToError("CLOSE " + ITEM.Name); + global.ToError("CLOSE " + ITEM.Name); }); } } @@ -454,7 +447,7 @@ function RunStopPOWProcess(Mode) { return; if (GENERATE_BLOCK_ACCOUNT < 8) return; - var PathMiner = GetCodePath("../miner.js"); + var PathMiner = global.GetCodePath("../miner.js"); if (!fs.existsSync(PathMiner)) PathMiner = "./process/pow-process.js"; if (ArrMiningWrk.length >= GetCountMiningCPU()) @@ -494,13 +487,13 @@ function RunStopPOWProcess(Mode) { } else if (msg.cmd === "HASHRATE") { - ADD_HASH_RATE(msg.CountNonce); + global.ADD_HASH_RATE(msg.CountNonce); } }); Worker.on('error', function(err) { if (!ArrMiningWrk.length) return; - global.global.ToError('ERROR IN PROCESS: ' + err); + global.ToError('ERROR IN PROCESS: ' + err); }); Worker.on('close', function(code) { global.ToLog("STOP PROCESS: " + Worker.Num + " pid:" + Worker.pid); @@ -533,9 +526,7 @@ function SetCalcPOW(Block, cmd) { }; global.SetCalcPOW = SetCalcPOW; global.RunStopPOWProcess = RunStopPOWProcess; -let { - glCurNumFindArr -} = global + function DoGetNodes() { if (!SERVER) return; @@ -543,11 +534,11 @@ function DoGetNodes() { return; if (!SERVER.NodesArrUnSort || !SERVER.NodesArrUnSort.length) return; - var Num = glCurNumFindArr % global.SERVER.NodesArrUnSort.length; + var Num = global.glCurNumFindArr % global.SERVER.NodesArrUnSort.length; var Node = global.SERVER.NodesArrUnSort[Num]; if (Num === 0) - glCurNumFindArr = 0; - glCurNumFindArr++; + global.glCurNumFindArr = 0; + global.glCurNumFindArr++; if (Node.Delete) return; if (SERVER.NodeInBan(Node)) @@ -565,7 +556,7 @@ function DoConnectToNodes(Arr, Mode) { if (!GrayConnect() && global.SERVER.CanSend < 2) { return; } - if (GrayConnect() && global.SERVER.ActualNodes.size > GetGrayServerConnections()) + if (GrayConnect() && global.SERVER.ActualNodes.size > global.GetGrayServerConnections()) return; if (Arr.length) { var MinProcessCount = global.SERVER.BusyLevel - 1; @@ -592,16 +583,14 @@ var idRunOnce; function RunServer() { let { GetNetworkName, - DEF_VERSION, NET_WORK_MODE, SAVE_CONST, - ToLog, START_IP, START_PORT_NUMBER } = global idRunOnce = setInterval(RunOnce, 1000); global.ToLog("NETWORK: " + GetNetworkName()); - global.ToLog("VERSION: " + DEF_VERSION); + global.ToLog("VERSION: " + global.DEF_VERSION); if (global.NET_WORK_MODE) { global.START_IP = NET_WORK_MODE.ip; global.START_PORT_NUMBER = NET_WORK_MODE.port; @@ -666,7 +655,7 @@ function RunOnce() { var Period = (global.random(600) + global.RESTART_PERIOD_SEC); global.ToLog("SET RESTART NODE AFTER: " + Period + " sec"); setInterval(function() { - RestartNode(); + global.RestartNode(); }, Period * 1000); } setTimeout(function() { @@ -713,7 +702,7 @@ function TestSignLib(MaxTime) { for (var Num = 0; Num < 1000; Num++) { var Result = global.secp256k1.verify(hash, Sign, PubKey); if (!Result) { - global.global.ToError("Error test sign"); + global.ToError("Error test sign"); process.exit(0); } var Time = process.hrtime(startTime); diff --git a/src/process/pow-process.ts b/src/process/pow-process.ts index 9346ab2..755ab20 100644 --- a/src/process/pow-process.ts +++ b/src/process/pow-process.ts @@ -37,7 +37,7 @@ function CalcPOWHash() { }); } catch (e) { - global.global.ToError(e); + global.ToError(e); } } }; @@ -52,7 +52,7 @@ PROCESS.on("message", function(e) { }); } catch (e) { - global.global.ToError(e); + global.ToError(e); } } else @@ -80,12 +80,12 @@ function PumpHash() { if (global.BlockPump) { var e = Date.now(); if (EndTime < StartTime) { - if (100 * (e - StartTime) / CONSENSUS_PERIOD_TIME >= BlockPump.Percent) + if (100 * (e - StartTime) / global.CONSENSUS_PERIOD_TIME >= global.BlockPump.Percent) return void (EndTime = e); - CreatePOWVersionX(BlockPump, 1); + global.CreatePOWVersionX(global.BlockPump, 1); } else { - 100 * (e - EndTime) / CONSENSUS_PERIOD_TIME > 100 - BlockPump.Percent && (StartTime = e); + 100 * (e - EndTime) / global.CONSENSUS_PERIOD_TIME > 100 - global.BlockPump.Percent && (StartTime = e); } } }; diff --git a/src/process/static-process.ts b/src/process/static-process.ts index 6d79420..cc4314c 100644 --- a/src/process/static-process.ts +++ b/src/process/static-process.ts @@ -10,15 +10,15 @@ global.PROCESS_NAME = "STATIC"; import * as crypto from 'crypto'; -const fs = require('fs'); -require("../core/constant"); -require('../core/block-loader-const'); -require('../core/rest_tables.js'); -require('../system/accounts.js'); -require('../system/smart.js'); -global.DATA_PATH = GetNormalPathString(global.DATA_PATH); -global.CODE_PATH = GetNormalPathString(global.CODE_PATH); -require("../core/library"); +import * as fs from 'fs' +import "../core/constant" +import '../core/block-loader-const' +import '../core/rest_tables' +import '../system/accounts' +import '../system/smart' +global.DATA_PATH = global.GetNormalPathString(global.DATA_PATH); +global.CODE_PATH = global.GetNormalPathString(global.CODE_PATH); +import "../core/library" global.READ_ONLY_DB = 1; var LastAlive = Date.now(); setTimeout(function() { @@ -74,7 +74,7 @@ function CheckAlive() { if (global.NOALIVE) return; var Delta = Date.now() - LastAlive; - if (Delta > CHECK_STOP_CHILD_PROCESS) { + if (Delta > global.CHECK_STOP_CHILD_PROCESS) { global.ToLog("STATIC-DB: ALIVE TIMEOUT Stop and exit: " + Delta + "/" + global.CHECK_STOP_CHILD_PROCESS); process.exit(0); return; @@ -83,11 +83,11 @@ function CheckAlive() { process.on('uncaughtException', function(err) { global.ToError(err.stack); global.ToLog(err.stack); - TO_ERROR_LOG("STATIC-DB", 777, err); + global.TO_ERROR_LOG("STATIC-DB", 777, err); global.ToLog("-----------------STATIC-DB EXIT------------------"); process.exit(); }); -process.on('error', function(err) { +process.on('error' as any, function(err: TeraError) { global.ToError("STATIC-DB:\n" + err.stack); global.ToLog(err.stack); }); @@ -98,7 +98,7 @@ KeyPair.setPrivateKey(Buffer.from([77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 7 global.SERVER = new CServerDB(KeyPair, undefined, undefined, false, true); global.HTTP_PORT_NUMBER = 0; setInterval(function() { - if (SERVER) + if (global.SERVER) global.SERVER.Close(); global.DApps.Accounts.Close(); global.DApps.Smart.DBSmart.Close(); @@ -116,8 +116,8 @@ function GETBLOCKHEADER100(msg) { var Count = Data.Count; if (!Count || Count < 0 || !EndNum100) return; - if (Count > COUNT_BLOCKS_FOR_LOAD) - Count = COUNT_BLOCKS_FOR_LOAD; + if (Count > global.COUNT_BLOCKS_FOR_LOAD) + Count = global.COUNT_BLOCKS_FOR_LOAD; var Arr = []; var Data100 = global.SERVER.DBHeader100.Read(EndNum100); if (Data100 && global.CompareArr(Data100.Hash100, LoadHash100) === 0) { @@ -131,7 +131,7 @@ function GETBLOCKHEADER100(msg) { Arr.push(Data100.Hash); } } - var BufWrite = global.BufLib.GetBufferFromObject(Arr, "[hash]", MAX_PACKET_LENGTH, {}); + var BufWrite = global.BufLib.GetBufferFromObject(Arr, "[hash]", global.MAX_PACKET_LENGTH, {}); global.ToLog("GETBLOCKHEADER100 Send Arr=" + Arr.length + " - " + BlockNum); process.send({ cmd: "Send", addrStr: msg.addrStr, Method: "RETBLOCKHEADER100", Context: msg.Context, Data: BufWrite }); }; @@ -144,11 +144,11 @@ function GETBLOCKHEADER(msg) { var Foward = Data.Foward; if (Foward) { var BlockDB = global.SERVER.ReadBlockHeaderDB(Data.BlockNum); - if (BlockDB && BlockDB.SumHash && (global.CompareArr(BlockDB.SumHash, LoadHash) === 0 || IsZeroArr(LoadHash))) { + if (BlockDB && BlockDB.SumHash && (global.CompareArr(BlockDB.SumHash, LoadHash) === 0 || global.IsZeroArr(LoadHash))) { StartNum = Data.BlockNum - global.BLOCK_PROCESSING_LENGTH2; if (StartNum < 0) StartNum = 0; - BlockNum = StartNum + COUNT_BLOCKS_FOR_LOAD + global.BLOCK_PROCESSING_LENGTH2; + BlockNum = StartNum + global.COUNT_BLOCKS_FOR_LOAD + global.BLOCK_PROCESSING_LENGTH2; if (BlockNum > global.SERVER.GetMaxNumBlockDB()) BlockNum = global.SERVER.GetMaxNumBlockDB(); } @@ -159,8 +159,8 @@ function GETBLOCKHEADER(msg) { var Count = Data.Count; if (!Count || Count < 0 || BlockNum < 0) return; - if (Count > COUNT_BLOCKS_FOR_LOAD) - Count = COUNT_BLOCKS_FOR_LOAD; + if (Count > global.COUNT_BLOCKS_FOR_LOAD) + Count = global.COUNT_BLOCKS_FOR_LOAD; Count += global.BLOCK_PROCESSING_LENGTH2; var BlockDB = global.SERVER.ReadBlockHeaderDB(BlockNum); if (BlockDB && (BlockDB.Prepared && (!IsSum) && BlockDB.Hash && global.CompareArr(BlockDB.Hash, LoadHash) === 0 || BlockDB.bSave && IsSum && BlockDB.SumHash && global.CompareArr(BlockDB.SumHash, @@ -184,8 +184,8 @@ function GETBLOCK(msg) { var BufWrite; var BlockDB = global.SERVER.ReadBlockDB(BlockNum); var StrSend; - if (BlockDB && (global.CompareArr(BlockDB.TreeHash, TreeHash) === 0 || IsZeroArr(TreeHash))) { - var BufWrite = global.BufLib.GetBufferFromObject(BlockDB, FORMAT_BLOCK_TRANSFER, MAX_PACKET_LENGTH, WRK_BLOCK_TRANSFER); + if (BlockDB && (global.CompareArr(BlockDB.TreeHash, TreeHash) === 0 || global.IsZeroArr(TreeHash))) { + var BufWrite = global.BufLib.GetBufferFromObject(BlockDB, global.FORMAT_BLOCK_TRANSFER, global.MAX_PACKET_LENGTH, global.WRK_BLOCK_TRANSFER); StrSend = "OK"; } if (StrSend === "OK") { @@ -211,7 +211,7 @@ function GETREST(msg) { var Data = msg.Data; if (!Data.BlockNum) return; - if (IsZeroArr(Data.AccHash)) { + if (global.IsZeroArr(Data.AccHash)) { return; } var BlockNumRest = Data.BlockNum; @@ -234,8 +234,8 @@ function GETREST(msg) { var WorkFormatLength = global.DApps.Accounts.SIZE_ACCOUNT_ROW; var Max = global.DApps.Accounts.DBState.GetMaxNum(); var LengthAccount = Data.Count; - if (LengthAccount > MAX_ACCOUNTS_TRANSFER) - LengthAccount = MAX_ACCOUNTS_TRANSFER; + if (LengthAccount > global.MAX_ACCOUNTS_TRANSFER) + LengthAccount = global.MAX_ACCOUNTS_TRANSFER; var StartAccount = Data.AccNum; var EndAccount = StartAccount + LengthAccount - 1; if (EndAccount > Max) @@ -249,7 +249,7 @@ function GETREST(msg) { else { ArrRest = GetArrRest(BlockNumRest, StartAccount, EndAccount); ProofHash = Tree.Root; - var RetProof = GetMerkleProof(Tree.LevelsHash, StartAccount, EndAccount); + var RetProof = global.GetMerkleProof(Tree.LevelsHash, StartAccount, EndAccount); ProofArrL = RetProof.ArrL; ProofArrR = RetProof.ArrR; BufLength = 1000 + ArrRest.length * WorkFormatLength; @@ -257,7 +257,7 @@ function GETREST(msg) { } } var Data2 = { Result: nResult, Arr: ArrRest, Version: 1, ProofHash: ProofHash, ProofArrL: ProofArrL, ProofArrR: ProofArrR }; - var BufWrite = global.BufLib.GetBufferFromObject(Data2, FORMAT_REST_TRANSFER, BufLength, {}); + var BufWrite = global.BufLib.GetBufferFromObject(Data2, global.FORMAT_REST_TRANSFER, BufLength, {}); process.send({ cmd: "Send", addrStr: msg.addrStr, Method: "RETREST", Context: msg.Context, Data: BufWrite }); }; @@ -279,12 +279,12 @@ function GETSMART(msg) { Arr.push(BufSmart); } var Data2 = { Result: Arr.length ? 1 : 0, Arr: Arr }; - var BufWrite = global.BufLib.GetBufferFromObject(Data2, FORMAT_SMART_TRANSFER, BufLength, {}); + var BufWrite = global.BufLib.GetBufferFromObject(Data2, global.FORMAT_SMART_TRANSFER, BufLength, {}); process.send({ cmd: "Send", addrStr: msg.addrStr, Method: "RETSMART", Context: msg.Context, Data: BufWrite }); }; var glMapForHash = {}; -function GetArrRest(BlockNumRest, StartAccount, EndAccount, bHashOnly) { +function GetArrRest(BlockNumRest, StartAccount, EndAccount, bHashOnly?) { var ArrRest = []; var WorkStruct = {}; var WorkFormat = global.DApps.Accounts.FORMAT_ACCOUNT_ROW; @@ -352,7 +352,7 @@ function GetRestMerkleTree(BlockNumRest, RestIndexArr) { for (var Num = 0; Num < ArrHash.length; Num++) { MerkleCalc[Num] = 1; } - UpdateMerklTree(MerkleTree, MerkleCalc, 0); + global.UpdateMerklTree(MerkleTree, MerkleCalc, 0); glMapRest[BlockNumRest] = MerkleTree; var Time2 = process.hrtime(startTime); var deltaTime1 = (Time1[0] * 1000 + Time1[1] / 1e6) / 1000; diff --git a/src/process/tx-process.ts b/src/process/tx-process.ts index 7f70586..eec68ac 100644 --- a/src/process/tx-process.ts +++ b/src/process/tx-process.ts @@ -12,15 +12,15 @@ global.PROCESS_NAME = "TX"; import * as crypto from 'crypto'; const fs = require('fs'); require("../core/constant"); -global.DATA_PATH = GetNormalPathString(global.DATA_PATH); -global.CODE_PATH = GetNormalPathString(global.CODE_PATH); +global.DATA_PATH = global.GetNormalPathString(global.DATA_PATH); +global.CODE_PATH = global.GetNormalPathString(global.CODE_PATH); require("../core/library"); global.READ_ONLY_DB = 0; var LastAlive = Date.now(); setTimeout(function() { setInterval(CheckAlive, 1000); }, 20000); -setInterval(PrepareStatEverySecond, 1000); +setInterval(global.PrepareStatEverySecond, 1000); if (process.send) { setInterval(function() { process.send({ cmd: "Alive" }); @@ -58,7 +58,7 @@ process.on('message', function(msg) { global.TreeFindTX.SaveValue("Smart:" + msg.Smart, 1); break; case "Eval": - EvalCode(msg.Code); + global.EvalCode(msg.Code); break; default: break; @@ -82,11 +82,11 @@ function CheckAlive() { process.on('uncaughtException', function(err) { global.ToError(err.stack); global.ToLog(err.stack); - TO_ERROR_LOG("TX-PROCESS", 777, err); + global.TO_ERROR_LOG("TX-PROCESS", 777, err); global.ToLog("-----------------TX-PROCESS EXIT------------------"); process.exit(); }); -process.on('error', function(err) { +process.on('error' as any, function(err: TeraError) { global.ToError("TX-PROCESS:\n" + err.stack); global.ToLog(err.stack); }); @@ -96,14 +96,14 @@ var KeyPair = crypto.createECDH('secp256k1'); KeyPair.setPrivateKey(Buffer.from([77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77])); global.SERVER = new CServerDB(KeyPair, undefined, undefined, false, true); -global.TreeFindTX = new STreeBuffer(30 * 1000, CompareItemHashSimple, "string"); +global.TreeFindTX = new STreeBuffer(30 * 1000, global.CompareItemHashSimple, "string"); setInterval(function() { - if (SERVER) { + if (global.SERVER) { global.SERVER.Close(); } DoTXProcess(); }, 10); -var BlockTree = new STreeBuffer(30 * 1000, CompareItemHashSimple, "number"); +var BlockTree = new STreeBuffer(30 * 1000, global.CompareItemHashSimple, "number"); global.bShowDetail = 0; var StopTxProcess = 0; var MinimalValidBlock = 0; @@ -116,12 +116,12 @@ function DoTXProcess() { InitTXProcess(); var BlockMin = FindMinimal(); if (!BlockMin) { - if (bShowDetail) + if (global.bShowDetail) global.ToLog("!BlockMin"); return; } var StartTime = Date.now(); - if (bShowDetail) + if (global.bShowDetail) global.ToLog("BlockMin: " + BlockMin.BlockNum + " LastBlockNum=" + LastBlockNum); var CountTX = 0; for (var Num = BlockMin.BlockNum; Num < BlockMin.BlockNum + 200; Num++) { @@ -131,7 +131,7 @@ function DoTXProcess() { break; var Block = global.SERVER.ReadBlockDB(Num); if (!Block) { - if (bShowDetail) + if (global.bShowDetail) global.ToLog("!Block"); break; } @@ -140,7 +140,7 @@ function DoTXProcess() { } var Item = BlockTree.LoadValue(Block.BlockNum, 1); if (Item && global.CompareArr(Item.SumHash, Block.SumHash) === 0) { - if (bShowDetail) + if (global.bShowDetail) global.ToLog("WAS CALC: " + Num + " SumHash: " + global.GetHexFromArr(Block.SumHash).substr(0, 12)); continue; } @@ -157,7 +157,7 @@ function DoTXProcess() { if (Num % 100000 === 0) global.ToLog("CALC: " + Num); CountTX++; - if (bShowDetail) + if (global.bShowDetail) global.ToLog(" CALC: " + Num + " SumHash: " + global.GetHexFromArr(Block.SumHash).substr(0, 12)); BlockTree.SaveValue(Block.BlockNum, { BlockNum: Block.BlockNum, SumHash: Block.SumHash }); LastBlockNum = Block.BlockNum; @@ -167,14 +167,14 @@ function DoTXProcess() { function FindMinimal() { var MaxNumBlockDB = global.SERVER.GetMaxNumBlockDB(); if (MaxNumBlockDB && MaxNumBlockDB < LastBlockNum) { - if (bShowDetail) + if (global.bShowDetail) global.ToLog("MaxNumBlockDB 0) { RewriteAllTransactions(); @@ -212,12 +212,12 @@ function IsValidSumHash(Block) { return 1; if (Block.BlockNum < 16) return 1; - if (IsZeroArr(Block.SumHash)) + if (global.IsZeroArr(Block.SumHash)) return 0; var PrevBlock = global.SERVER.ReadBlockHeaderDB(Block.BlockNum - 1); if (!PrevBlock) return 0; - var SumHash2 = shaarr2(PrevBlock.SumHash, Block.Hash); + var SumHash2 = global.shaarr2(PrevBlock.SumHash, Block.Hash); if (global.CompareArr(SumHash2, Block.SumHash) === 0) return 1; return 0; @@ -240,7 +240,7 @@ function InitTXProcess() { StateTX = global.DApps.Accounts.DBStateTX.Read(0); LastBlockNum = StateTX.BlockNum; MinimalValidBlock = StateTX.BlockNumMin; - LastBlockNum = PERIOD_ACCOUNT_HASH * Math.trunc(LastBlockNum / PERIOD_ACCOUNT_HASH); + LastBlockNum = global.PERIOD_ACCOUNT_HASH * Math.trunc(LastBlockNum / global.PERIOD_ACCOUNT_HASH); if (LastBlockNum > 100) { LastBlockNum = 1 + LastBlockNum - 100; } @@ -254,8 +254,8 @@ global.ClearDataBase = ClearDataBase; function ClearDataBase() { MinimalValidBlock = 0; - for (var key in DApps) { - DApps[key].ClearDataBase(); + for (var key in global.DApps) { + global.DApps[key].ClearDataBase(); } LastBlockNum = 0; BlockTree.Clear(); @@ -268,8 +268,8 @@ function RewriteAllTransactions() { return; } global.ToLog("*************RewriteAllTransactions"); - for (var key in DApps) { - DApps[key].ClearDataBase(); + for (var key in global.DApps) { + global.DApps[key].ClearDataBase(); } LastBlockNum = 0; BlockTree.Clear(); @@ -291,8 +291,8 @@ function TXPrepareLoadRest(BlockNum) { StopTxProcess = 1; MinimalValidBlock = BlockNum; global.ToLog("*************TXPrepareLoadRest:" + BlockNum, 2); - for (var key in DApps) { - DApps[key].ClearDataBase(); + for (var key in global.DApps) { + global.DApps[key].ClearDataBase(); } LastBlockNum = BlockNum; BlockTree.Clear(); @@ -345,7 +345,7 @@ global.EvalCode = function(Code) { var Result; try { var ret = eval(Code); - Result = JSON.stringify(ret, "", 4); + Result = JSON.stringify(ret, undefined, 4); } catch (e) { Result = "" + e; diff --git a/src/process/web-process.ts b/src/process/web-process.ts index 8b496c5..361c472 100644 --- a/src/process/web-process.ts +++ b/src/process/web-process.ts @@ -80,7 +80,7 @@ process.on('message', function(msg) { break; case "DappEvent": { - AddDappEventToGlobalMap(msg.Data); + global.AddDappEventToGlobalMap(msg.Data); break; } case "ToLogClient": @@ -215,7 +215,7 @@ function MainHTTPFunction(request, response) { return; if (!request.socket || !request.socket.remoteAddress) return; - SetSafeResponce(response); + global.SetSafeResponce(response); var DataURL = url.parse(request.url); var Params = querystring.parse(DataURL.query); var Path = querystring.unescape(DataURL.pathname); @@ -350,7 +350,7 @@ function DoCommandNew(response, Type, Path, Params) { response.end(JSON.stringify({ result: 0, text: "You must set const USE_HARD_API_V2:1" })); return; } - Caller = WebApi2; + Caller = global.WebApi2; } Method = ArrPath[2]; } @@ -390,16 +390,16 @@ function DoCommandNew(response, Type, Path, Params) { response.writeHead(301, { "Location": '/' }); return response.end(); case "file": - SendBlockFile(response, ArrPath[1], ArrPath[2]); + global.SendBlockFile(response, ArrPath[1], ArrPath[2]); break; case "DappTemplateFile": - DappTemplateFile(response, ArrPath[1]); + global.DappTemplateFile(response, ArrPath[1]); break; case "smart": - DappSmartCodeFile(response, ArrPath[1]); + global.DappSmartCodeFile(response, ArrPath[1]); break; case "client": - DappClientCodeFile(response, ArrPath[1]); + global.DappClientCodeFile(response, ArrPath[1]); default: { var Name = ArrPath[ArrPath.length - 1]; @@ -466,7 +466,7 @@ function DoCommandNew(response, Type, Path, Params) { Name = PrefixPath + "/" + Name; break; } - SendWebFile(response, Name, "", 1); + global.SendWebFile(response, Name, "", 1); break; } } @@ -506,24 +506,24 @@ HostingCaller.GetAccountList = function(Params) { Params.CountNum = MaxCountViewRows; if (!Params.CountNum) Params.CountNum = 1; - var arr = global.DApps.Accounts.GetRowsAccounts(ParseNum(Params.StartNum), ParseNum(Params.CountNum)); + var arr = global.DApps.Accounts.GetRowsAccounts(global.ParseNum(Params.StartNum), global.ParseNum(Params.CountNum)); return { result: 1, arr: arr }; }; HostingCaller.GetAccount = function(id) { - id = ParseNum(id); + id = global.ParseNum(id); var arr = global.DApps.Accounts.GetRowsAccounts(id, 1); return { Item: arr[0], result: 1 }; }; HostingCaller.GetBlockList = function(Params, response) { if (typeof Params !== "object") return { result: 0 }; - Params.StartNum = ParseNum(Params.StartNum); - Params.CountNum = ParseNum(Params.CountNum); + Params.StartNum = global.ParseNum(Params.StartNum); + Params.CountNum = global.ParseNum(Params.CountNum); if (Params.CountNum > MaxCountViewRows) Params.CountNum = MaxCountViewRows; if (!Params.CountNum) Params.CountNum = 1; - return HTTPCaller.GetBlockList(Params, response); + return global.HTTPCaller.GetBlockList(Params, response); }; HostingCaller.GetTransactionList = function(Params, response) { Params.Param3 = Params.BlockNum; @@ -532,12 +532,12 @@ HostingCaller.GetTransactionList = function(Params, response) { HostingCaller.GetTransactionAll = function(Params, response) { if (typeof Params !== "object") return { result: 0 }; - Params.Param3 = ParseNum(Params.Param3); - Params.StartNum = ParseNum(Params.StartNum); - Params.CountNum = ParseNum(Params.CountNum); + Params.Param3 = global.ParseNum(Params.Param3); + Params.StartNum = global.ParseNum(Params.StartNum); + Params.CountNum = global.ParseNum(Params.CountNum); if (Params.CountNum > MaxCountViewRows) Params.CountNum = MaxCountViewRows; - return HTTPCaller.GetTransactionAll(Params, response); + return global.HTTPCaller.GetTransactionAll(Params, response); }; HostingCaller.GetDappList = function(Params) { if (typeof Params !== "object") @@ -546,7 +546,7 @@ HostingCaller.GetDappList = function(Params) { Params.CountNum = MaxCountViewRows; if (!Params.CountNum) Params.CountNum = 1; - var arr = global.DApps.Smart.GetRows(ParseNum(Params.StartNum), ParseNum(Params.CountNum), undefined, Params.Filter, 1); + var arr = global.DApps.Smart.GetRows(global.ParseNum(Params.StartNum), global.ParseNum(Params.CountNum), undefined, Params.Filter, 1); return { result: 1, arr: arr }; }; HostingCaller.GetNodeList = function(Params) { @@ -640,7 +640,7 @@ HostingCaller.GetAccountListByKey = function(Params, ppp, bRet) { var Ret = { result: 1, arr: arr }; if (bRet) return Ret; - var Context = GetUserContext(Params); + var Context = global.GetUserContext(Params); var StrInfo = JSON.stringify(Ret); if (!Params.AllData && Context.PrevAccountList === StrInfo) { return { result: 0, cache: 1 }; @@ -692,20 +692,20 @@ HostingCaller.SendTransactionHex = function(Params, response) { HostingCaller.DappSmartHTMLFile = function(Params) { if (typeof Params !== "object") return { result: 0 }; - return HTTPCaller.DappSmartHTMLFile(Params); + return global.HTTPCaller.DappSmartHTMLFile(Params); }; HostingCaller.DappBlockFile = function(Params, responce) { if (typeof Params !== "object") return { result: 0 }; - return HTTPCaller.DappBlockFile(Params, responce); + return global.HTTPCaller.DappBlockFile(Params, responce); }; HostingCaller.DappInfo = function(Params) { if (typeof Params !== "object") return { result: 0 }; - var SmartNum = ParseNum(Params.Smart); + var SmartNum = global.ParseNum(Params.Smart); process.send({ cmd: "SetSmartEvent", Smart: SmartNum }); - var Context = GetUserContext(Params); - var Ret = HTTPCaller.DappInfo(Params, undefined, 1); + var Context = global.GetUserContext(Params); + var Ret = global.HTTPCaller.DappInfo(Params, undefined, 1); Ret.PubKey = undefined; var StrInfo = JSON.stringify(Ret); if (!Params.AllData && Context.PrevDappInfo === StrInfo) { @@ -726,7 +726,7 @@ HostingCaller.DappWalletList = function(Params) { if (typeof Params !== "object") return { result: 0 }; var Ret = HostingCaller.GetAccountListByKey(Params, undefined, 1); - var Smart = ParseNum(Params.Smart); + var Smart = global.ParseNum(Params.Smart); var arr = []; for (var i = 0; i < Ret.arr.length; i++) { if (Params.AllAccounts || Ret.arr[i].Value.Smart === Smart) { @@ -736,7 +736,7 @@ HostingCaller.DappWalletList = function(Params) { Ret.arr = arr; return Ret; }; -HTTPCaller.DappWalletList = HostingCaller.DappWalletList; +global.HTTPCaller.DappWalletList = HostingCaller.DappWalletList; HostingCaller.DappAccountList = function(Params) { if (typeof Params !== "object") return { result: 0 }; @@ -744,7 +744,7 @@ HostingCaller.DappAccountList = function(Params) { Params.CountNum = MaxCountViewRows; if (!Params.CountNum) Params.CountNum = 1; - var arr = global.DApps.Accounts.GetRowsAccounts(ParseNum(Params.StartNum), ParseNum(Params.CountNum), undefined, 1); + var arr = global.DApps.Accounts.GetRowsAccounts(global.ParseNum(Params.StartNum), global.ParseNum(Params.CountNum), undefined, 1); return { arr: arr, result: 1 }; }; HostingCaller.DappSmartList = function(Params) { @@ -754,42 +754,42 @@ HostingCaller.DappSmartList = function(Params) { Params.CountNum = MaxCountViewRows; if (!Params.CountNum) Params.CountNum = 1; - var arr = global.DApps.Smart.GetRows(ParseNum(Params.StartNum), ParseNum(Params.CountNum), undefined, undefined, Params.GetAllData, + var arr = global.DApps.Smart.GetRows(global.ParseNum(Params.StartNum), global.ParseNum(Params.CountNum), undefined, undefined, Params.GetAllData, Params.TokenGenerate); return { arr: arr, result: 1 }; }; HostingCaller.DappBlockList = function(Params, response) { if (typeof Params !== "object") return { result: 0 }; - Params.StartNum = ParseNum(Params.StartNum); - Params.CountNum = ParseNum(Params.CountNum); + Params.StartNum = global.ParseNum(Params.StartNum); + Params.CountNum = global.ParseNum(Params.CountNum); if (Params.CountNum > MaxCountViewRows) Params.CountNum = MaxCountViewRows; if (!Params.CountNum) Params.CountNum = 1; - return HTTPCaller.DappBlockList(Params, response); + return global.HTTPCaller.DappBlockList(Params, response); }; HostingCaller.DappTransactionList = function(Params, response) { if (typeof Params !== "object") return { result: 0 }; - Params.BlockNum = ParseNum(Params.BlockNum); - Params.StartNum = ParseNum(Params.StartNum); - Params.CountNum = ParseNum(Params.CountNum); + Params.BlockNum = global.ParseNum(Params.BlockNum); + Params.StartNum = global.ParseNum(Params.StartNum); + Params.CountNum = global.ParseNum(Params.CountNum); if (Params.CountNum > MaxCountViewRows) Params.CountNum = MaxCountViewRows; if (!Params.CountNum) Params.CountNum = 1; - return HTTPCaller.DappTransactionList(Params, response); + return global.HTTPCaller.DappTransactionList(Params, response); }; HostingCaller.DappStaticCall = function(Params, response) { if (typeof Params !== "object") return { result: 0 }; - return HTTPCaller.DappStaticCall(Params, response); + return global.HTTPCaller.DappStaticCall(Params, response); }; HostingCaller.GetHistoryTransactions = function(Params) { if (typeof Params !== "object") return { result: 0 }; - return HTTPCaller.GetHistoryTransactions(Params); + return global.HTTPCaller.GetHistoryTransactions(Params); }; HostingCaller.GetSupply = function(Params) { var Data = global.DApps.Accounts.ReadState(0); @@ -843,7 +843,7 @@ setInterval(function() { var AvgPow = SumPow / Count; ADD_TO_STAT("MAX:HASH_RATE_B", AvgPow); } - var Count = COUNT_BLOCK_PROOF + 16 - 1; + var Count = global.COUNT_BLOCK_PROOF + 16 - 1; if (MaxNumBlockDB > Count) { var StartNum = MaxNumBlockDB - Count; NodeBlockChain = global.SERVER.BlockChainToBuf(StartNum, StartNum, MaxNumBlockDB); diff --git a/src/system/accounts.ts b/src/system/accounts.ts index 85615b5..d369379 100644 --- a/src/system/accounts.ts +++ b/src/system/accounts.ts @@ -74,7 +74,7 @@ global.FORMAT_ACCOUNT_HASH = "{\ BlockNum:uint,\ AccHash:buffer32,\ }"; -global.FORMAT_ACCOUNT_HASH3 = "{\ +global.global.FORMAT_ACCOUNT_HASH3 = "{\ Type:byte,\ BlockNum:uint,\ AccHash:buffer32,\ @@ -144,22 +144,23 @@ class MerkleDBRow extends DBRow { }; class AccountApp extends require("./dapp") { - private CreateTrCount - private FORMAT_ACCOUNT_ROW - private SIZE_ACCOUNT_ROW - private DBState - private FORMAT_ACCOUNT_ROW_REST - private SIZE_ACCOUNT_ROW_REST - private DBRest - private DBAct - private DBActPrev - private FORMAT_STATE_HISTORY - private DBStateHistory - private HistoryFormatArr - private DBStateTX - private DBAccountsHash - private WasCheckRestDB - private ResultTx + CreateTrCount + FORMAT_ACCOUNT_ROW + SIZE_ACCOUNT_ROW + DBState + FORMAT_ACCOUNT_ROW_REST + SIZE_ACCOUNT_ROW_REST + DBRest + DBAct + DBActPrev + FORMAT_STATE_HISTORY + DBStateHistory + HistoryFormatArr + DBStateTX + DBAccountsHash + WasCheckRestDB + ResultTx + DBChanges constructor() { super() var bReadOnly = (global.PROCESS_NAME !== "TX"); @@ -205,7 +206,7 @@ class AccountApp extends require("./dapp") Start(bClean?) { if (global.LOCAL_RUN) bClean = 1 - if (!bClean && this.DBState.GetMaxNum() + 1 >= global.global.BLOCK_PROCESSING_LENGTH2) + if (!bClean && this.DBState.GetMaxNum() + 1 >= global.BLOCK_PROCESSING_LENGTH2) return; this.DBState.MerkleTree = undefined this.DBState.Truncate(- 1) @@ -267,7 +268,7 @@ class AccountApp extends require("./dapp") } global.ToLog("******************************FINISH FillRestDB") } - _DBStateWrite(Data?, BlockNum?) { + _DBStateWrite(Data?, BlockNum?, b?) { this.CheckRestDB() this.DBState.Write(Data) if (Data.Num === undefined) @@ -330,7 +331,7 @@ class AccountApp extends require("./dapp") return Num; } case TYPE_TRANSACTION_TRANSFER: - var Num = ReadUintFromArr(Body, 1 + 1 + 6); + var Num = global.ReadUintFromArr(Body, 1 + 1 + 6); return Num; } } @@ -400,10 +401,13 @@ class AccountApp extends require("./dapp") case global.TYPE_TRANSACTION_ACC_HASH: { Result = 1 - if (global.LOCAL_RUN || global.TEST_NETWORK); - else - if (BlockNum < global.START_BLOCK_ACCOUNT_HASH + 200000) + if (global.LOCAL_RUN || global.TEST_NETWORK) { + + } + else { + if (BlockNum < global.global.START_BLOCK_ACCOUNT_HASH + 200000) break; + } var BlockNumHash = BlockNum - global.DELTA_BLOCK_ACCOUNT_HASH; if (!this.TRCheckAccountHash(Body, BlockNum, TrNum)) { Result = "BAD ACCOUNT HASH" @@ -426,7 +430,7 @@ class AccountApp extends require("./dapp") var SysBalance = SysData.Value.SumCOIN; const REF_PERIOD_START = global.START_MINING; const REF_PERIOD_END = 30 * 1000 * 1000; - var AccountID = ReadUintFromArr(Block.AddrHash, 0); + var AccountID = global.ReadUintFromArr(Block.AddrHash, 0); if (AccountID < 8) return; var Data = this.ReadStateTR(AccountID); @@ -444,29 +448,29 @@ class AccountApp extends require("./dapp") } } else { - var Power = GetPowPower(Block.PowHash); + var Power = global.GetPowPower(Block.PowHash); if (Block.BlockNum >= global.NEW_BLOCK_REWARD1) Power = 43 Sum = Power * Power * SysBalance / global.TOTAL_SUPPLY_TERA / 100 } var CoinTotal = { SumCOIN: 0, SumCENT: 0 }; - var CoinSum = COIN_FROM_FLOAT(Sum); - if (!ISZERO(CoinSum)) { + var CoinSum = global.COIN_FROM_FLOAT(Sum); + if (!global.ISZERO(CoinSum)) { if (Data.Adviser >= 8 && Block.BlockNum < REF_PERIOD_END) { var RefData = this.ReadStateTR(Data.Adviser); - if (RefData && RefData.BlockNumCreate < Block.BlockNum - REF_PERIOD_MINING) { + if (RefData && RefData.BlockNumCreate < Block.BlockNum - global.REF_PERIOD_MINING) { var K = (REF_PERIOD_END - Block.BlockNum) / (REF_PERIOD_END - REF_PERIOD_START); - var CoinAdv = COIN_FROM_FLOAT(Sum * K); + var CoinAdv = global.COIN_FROM_FLOAT(Sum * K); this.SendMoneyTR(Block, 0, Data.Adviser, CoinAdv, Block.BlockNum, 0xFFFF, "", "Adviser coin base [" + AccountID + "]", 1) - ADD(CoinTotal, CoinAdv) - ADD(CoinSum, CoinAdv) + global.ADD(CoinTotal, CoinAdv) + global.ADD(CoinSum, CoinAdv) } } this.SendMoneyTR(Block, 0, AccountID, CoinSum, Block.BlockNum, 0xFFFF, "", "Coin base", 1) - ADD(CoinTotal, CoinSum) - var CoinDevelop = CopyObjValue(CoinTotal); - DIV(CoinDevelop, 100) - if (!ISZERO(CoinDevelop)) + global.ADD(CoinTotal, CoinSum) + var CoinDevelop = global.CopyObjValue(CoinTotal); + global.DIV(CoinDevelop, 100) + if (!global.ISZERO(CoinDevelop)) this.SendMoneyTR(Block, 0, 9, CoinDevelop, Block.BlockNum, 0xFFFF, "", "Developers support", 1) } } @@ -492,22 +496,22 @@ class AccountApp extends require("./dapp") } case TYPE_DEPRECATED_TRANSFER1: { - format = FORMAT_MONEY_TRANSFER + format = global.FORMAT_MONEY_TRANSFER break; } case TYPE_DEPRECATED_TRANSFER2: { - format = FORMAT_MONEY_TRANSFER2 + format = global.FORMAT_MONEY_TRANSFER2 break; } case TYPE_TRANSACTION_TRANSFER: { - format = FORMAT_MONEY_TRANSFER3 + format = global.FORMAT_MONEY_TRANSFER3 break; } - case TYPE_TRANSACTION_ACC_HASH: + case global.TYPE_TRANSACTION_ACC_HASH: { - format = FORMAT_ACCOUNT_HASH3 + format = global.global.FORMAT_ACCOUNT_HASH3 break; } default: @@ -526,30 +530,30 @@ class AccountApp extends require("./dapp") if (!TR) return ""; if (TR.Body && TR.Body.length) { - var App = DAppByType[TR.Body[0]]; + var App = global.DAppByType[TR.Body[0]]; if (App) { TR.Body = JSON.parse(App.GetScriptTransaction(TR.Body)) } } - ConvertBufferToStr(TR) - return JSON.stringify(TR, "", 2); + global.ConvertBufferToStr(TR) + return JSON.stringify(TR, undefined, 2); } TRCheckAccountHash(Body, BlockNum, TrNum) { - if (BlockNum % PERIOD_ACCOUNT_HASH !== 0) + if (BlockNum % global.PERIOD_ACCOUNT_HASH !== 0) return 1; try { - var TR = global.BufLib.GetObjectFromBuffer(Body, FORMAT_ACCOUNT_HASH3, {}); + var TR = global.BufLib.GetObjectFromBuffer(Body, global.FORMAT_ACCOUNT_HASH3, {}); } catch (e) { return 0; } - if (BlockNum < START_BLOCK_ACCOUNT_HASH + 200000) + if (BlockNum < global.START_BLOCK_ACCOUNT_HASH + 200000) return 1; var Item = this.GetAccountHashItem(TR.BlockNum); if (Item && Item.BlockNum === TR.BlockNum) { - if (CompareArr(Item.AccHash, TR.AccHash) === 0) { - if (TR.BlockNum >= START_BLOCK_ACCOUNT_HASH3) { - if (CompareArr(Item.SmartHash, TR.SmartHash) === 0 && Item.AccountMax === TR.AccountMax && Item.SmartCount === TR.SmartCount) { + if (global.CompareArr(Item.AccHash, TR.AccHash) === 0) { + if (TR.BlockNum >= global.START_BLOCK_ACCOUNT_HASH3) { + if (global.CompareArr(Item.SmartHash, TR.SmartHash) === 0 && Item.AccountMax === TR.AccountMax && Item.SmartCount === TR.SmartCount) { return 1; } else @@ -568,7 +572,7 @@ class AccountApp extends require("./dapp") return "Error length transaction"; var CheckMinPower = 1; if (BlockNum >= 7000000 || global.LOCAL_RUN || global.TEST_NETWORK) { - if (ContextFrom && ContextFrom.To.length === 1 && ContextFrom.To[0].ID === 0 && ContextFrom.To[0].SumCOIN >= PRICE_DAO(BlockNum).NewAccount) { + if (ContextFrom && ContextFrom.To.length === 1 && ContextFrom.To[0].ID === 0 && ContextFrom.To[0].SumCOIN >= global.PRICE_DAO(BlockNum).NewAccount) { CheckMinPower = 0 } else { @@ -581,12 +585,12 @@ class AccountApp extends require("./dapp") this.CreateTrCount++ var power; if (BlockNum >= global.BLOCKNUM_TICKET_ALGO) { - var Tr = { body: Body }; + var Tr: any = { body: Body }; global.SERVER.CheckCreateTransactionObject(Tr) power = Tr.power } else { - power = GetPowPower(shaarr(Body)) + power = global.GetPowPower(shaarr(Body)) } if (global.TEST_NETWORK && BlockNum >= 3290000) { CheckMinPower = 0 @@ -604,7 +608,7 @@ class AccountApp extends require("./dapp") return "Error min power POW for create account (update client)"; } try { - var TR = global.BufLib.GetObjectFromBuffer(Body, global.global.FORMAT_CREATE, {}); + var TR = global.BufLib.GetObjectFromBuffer(Body, global.FORMAT_CREATE, {}); } catch (e) { return "Error transaction format"; @@ -620,7 +624,7 @@ class AccountApp extends require("./dapp") Account.Adviser = TR.Adviser Account.Value.Smart = TR.Smart this.WriteStateTR(Account, TrNum) - if (CompareArr(Account.PubKey, global.WALLET.PubKeyArr) === 0) { + if (global.CompareArr(Account.PubKey, global.WALLET.PubKeyArr) === 0) { global.WALLET.OnCreateAccount(Account) } this.ResultTx = Account.Num @@ -677,7 +681,7 @@ class AccountApp extends require("./dapp") MapItem[Item.ID] = 1 } bWas = 1 - ADD(TotalSum, Item) + global.ADD(TotalSum, Item) } if (!bWas && TR.Version < 3) return "No significant recipients"; @@ -711,7 +715,7 @@ class AccountApp extends require("./dapp") return "Error - smart accounts can not be used in a multiple transaction"; } if (TR.Version === 3 && Item.ID === 0 && Item.PubKey && Item.PubKey.length === 33) { - if (Item.SumCOIN < PRICE_DAO(BlockNum).NewAccount) + if (Item.SumCOIN < global.PRICE_DAO(BlockNum).NewAccount) return "Not enough money for create account with index: " + i; var name = TR.Description; var index = name.indexOf("\n"); @@ -725,7 +729,7 @@ class AccountApp extends require("./dapp") Item.ID = Account.Num this.SendMoneyTR(Block, Data.Num, Account.Num, { SumCOIN: Item.SumCOIN, SumCENT: Item.SumCENT }, BlockNum, TrNum, TR.Description, TR.Description, 1) - this.SendMoneyTR(Block, Account.Num, 0, { SumCOIN: PRICE_DAO(BlockNum).NewAccount, SumCENT: 0 }, BlockNum, TrNum, "Fee for create account", + this.SendMoneyTR(Block, Account.Num, 0, { SumCOIN: global.PRICE_DAO(BlockNum).NewAccount, SumCENT: 0 }, BlockNum, TrNum, "Fee for create account", "", 1) } else { @@ -765,11 +769,11 @@ class AccountApp extends require("./dapp") return "Error sign transaction"; } if (TR.Body && TR.Body.length) { - var App = DAppByType[TR.Body[0]]; + var App = global.DAppByType[TR.Body[0]]; if (App) { TR.FromPubKey = Data.PubKey - var Result = App.OnWriteTransaction(Block, TR.Body, BlockNum, TrNum, TR); - if (Result !== true) + Result = App.OnWriteTransaction(Block, TR.Body, BlockNum, TrNum, TR); + if (Result as any !== true) return Result; } } @@ -804,7 +808,7 @@ class AccountApp extends require("./dapp") } this.DeleteActOneDB(this.DBAct, BlockNumFrom) this.DeleteActOneDB(this.DBActPrev, BlockNumFrom) - this.DBAccountsHash.Truncate(Math.trunc(BlockNumFrom / PERIOD_ACCOUNT_HASH)) + this.DBAccountsHash.Truncate(Math.trunc(BlockNumFrom / global.PERIOD_ACCOUNT_HASH)) } DeleteActOneDB(DBAct, BlockNum) { var MaxNum = DBAct.GetMaxNum(); @@ -813,7 +817,7 @@ class AccountApp extends require("./dapp") for (var num = MaxNum; num >= 0; num--) { var ItemCheck = DBAct.Read(num); if (!ItemCheck) { - ToLogTrace("!ItemCheck") + global.ToLogTrace("!ItemCheck") throw "ERRR DeleteActOneDB"; } if (ItemCheck.BlockNum < BlockNum) { @@ -882,7 +886,7 @@ class AccountApp extends require("./dapp") if (!Data) break; for (var i = 0; i < PubKeyArr.length; i++) - if (CompareArr(Data.PubKey, PubKeyArr[i]) === 0) { + if (global.CompareArr(Data.PubKey, PubKeyArr[i]) === 0) { map[Data.Num] = i Count++ } @@ -899,7 +903,7 @@ class AccountApp extends require("./dapp") Data.PubKeyStr = global.GetHexFromArr(Data.PubKey) arr.push(Data) Data.WN = map[key] - Data.Name = NormalizeName(Data.Name) + Data.Name = global.NormalizeName(Data.Name) if (Data.Currency) Data.CurrencyObj = global.DApps.Smart.ReadSimple(Data.Currency) if (Data.Value.Smart) { @@ -925,7 +929,7 @@ class AccountApp extends require("./dapp") if (Filter.substring(0, 1) === "=") { Filter = Filter.substring(1) try { - F = CreateEval(Filter, "Cur,Currency,ID,Operation,Amount,Adviser,Name,PubKey,Smart,BlockNum") + F = global.CreateEval(Filter, "Cur,Currency,ID,Operation,Amount,Adviser,Name,PubKey,Smart,BlockNum") } catch (e) { F = undefined @@ -946,13 +950,13 @@ class AccountApp extends require("./dapp") break; if (!Data.PubKeyStr) Data.PubKeyStr = global.GetHexFromArr(Data.PubKey) - Data.Name = NormalizeName(Data.Name) + Data.Name = global.NormalizeName(Data.Name) if (F) { var Cur = Data.Currency; var Currency = Data.Currency; var ID = Data.Num; var Operation = Data.Value.OperationID; - var Amount = FLOAT_FROM_COIN(Data.Value); + var Amount = global.FLOAT_FROM_COIN(Data.Value); var Adviser = Data.Adviser; var Name = Data.Name; var PubKey = global.GetHexFromArr(Data.PubKey); @@ -969,7 +973,7 @@ class AccountApp extends require("./dapp") } else if (Filter) { - var Amount = FLOAT_FROM_COIN(Data.Value); + var Amount = global.FLOAT_FROM_COIN(Data.Value); var PubKey = global.GetHexFromArr(Data.PubKey); var Str = "" + Data.Num + " " + Data.Value.OperationID + " " + Data.Name.toUpperCase() + " " + Data.Adviser + " " + Amount + " " + PubKey + " " + Smart + " " + Data.BlockNumCreate; if (Str.indexOf(Filter) < 0) @@ -1037,7 +1041,7 @@ class AccountApp extends require("./dapp") return arr; } GetHashOrUndefined(BlockNum) { - if (BlockNum % PERIOD_ACCOUNT_HASH !== 0) + if (BlockNum % global.PERIOD_ACCOUNT_HASH !== 0) return undefined; var Item = this.GetAccountHashItem(BlockNum); if (Item) @@ -1046,7 +1050,7 @@ class AccountApp extends require("./dapp") return undefined; } GetAccountHashItem(BlockNum) { - var Item = this.DBAccountsHash.Read(Math.trunc(BlockNum / PERIOD_ACCOUNT_HASH)); + var Item = this.DBAccountsHash.Read(Math.trunc(BlockNum / global.PERIOD_ACCOUNT_HASH)); return Item; } GetHashedMaxBlockNum() { @@ -1059,7 +1063,7 @@ class AccountApp extends require("./dapp") return 0; } CalcHash(Block, BlockMaxAccount) { - if (Block.BlockNum % PERIOD_ACCOUNT_HASH !== 0) + if (Block.BlockNum % global.PERIOD_ACCOUNT_HASH !== 0) return; if (this.DBState.WasUpdate) { this.CalcMerkleTree() @@ -1075,14 +1079,14 @@ class AccountApp extends require("./dapp") SmartHash = [] } var Data = { - Num: Block.BlockNum / PERIOD_ACCOUNT_HASH, BlockNum: Block.BlockNum, AccHash: Hash, SumHash: Block.SumHash, AccountMax: BlockMaxAccount, + Num: Block.BlockNum / global.PERIOD_ACCOUNT_HASH, BlockNum: Block.BlockNum, AccHash: Hash, SumHash: Block.SumHash, AccountMax: BlockMaxAccount, SmartHash: SmartHash, SmartCount: SmartCount }; this.DBAccountsHash.Write(Data) - this.DBAccountsHash.Truncate(Block.BlockNum / PERIOD_ACCOUNT_HASH) + this.DBAccountsHash.Truncate(Block.BlockNum / global.PERIOD_ACCOUNT_HASH) return Data; } - CalcMerkleTree(bForce) { + CalcMerkleTree(bForce?) { this.DBState.MerkleHash = this.DBState.CalcMerkleTree(bForce) this.DBState.WasUpdate = 0 } @@ -1124,7 +1128,7 @@ class AccountApp extends require("./dapp") } var arr = []; for (var key in DBChanges.BlockMap) { - key = ParseNum(key) + key = global.ParseNum(key) var Data = DBChanges.BlockMap[key]; if (Data.Changed) { arr.push(Data) @@ -1170,7 +1174,7 @@ class AccountApp extends require("./dapp") return false; DBChanges.BlockMaxAccount = DBChanges.TRMaxAccount for (var key in DBChanges.TRMap) { - key = ParseNum(key) + key = global.ParseNum(key) var Data = DBChanges.TRMap[key]; if (Data.Changed) { DBChanges.BlockMap[key] = Data @@ -1213,7 +1217,7 @@ class AccountApp extends require("./dapp") return Data; } ReadStateTR(Num) { - Num = ParseNum(Num) + Num = global.ParseNum(Num) var TRMap = this.DBChanges.TRMap; var Data = TRMap[Num]; if (!Data) { @@ -1239,7 +1243,7 @@ class AccountApp extends require("./dapp") Data = { Num: Num, Currency: BData.Currency, PubKey: BData.PubKey, Name: BData.Name, BlockNumCreate: BData.BlockNumCreate, Adviser: BData.Adviser, Value: { - SumCOIN: Value.SumCOIN, SumCENT: Value.SumCENT, OperationID: Value.OperationID, Smart: Value.Smart, Data: CopyArr(Value.Data), + SumCOIN: Value.SumCOIN, SumCENT: Value.SumCENT, OperationID: Value.OperationID, Smart: Value.Smart, Data: global.CopyArr(Value.Data), NextPos: Value.NextPos }, BackupValue: BData.BackupValue } @@ -1252,8 +1256,8 @@ class AccountApp extends require("./dapp") Data.ChangeTrNum = TrNum } SendMoneyTR(Block, FromID, ToID, CoinSum, BlockNum, TrNum, DescriptionFrom, DescriptionTo, OperationCount) { - FromID = ParseNum(FromID) - ToID = ParseNum(ToID) + FromID = global.ParseNum(FromID) + ToID = global.ParseNum(ToID) if (CoinSum.SumCENT >= 1e9) { throw "ERROR SumCENT>=1e9"; } @@ -1261,7 +1265,7 @@ class AccountApp extends require("./dapp") if (!FromData) { throw "Send: Error account FromNum: " + FromID; } - if (!SUB(FromData.Value, CoinSum)) { + if (!global.SUB(FromData.Value, CoinSum)) { throw "Not enough money on the account ID:" + FromID; } this.WriteStateTR(FromData, TrNum) @@ -1276,7 +1280,7 @@ class AccountApp extends require("./dapp") if (!ToData) { throw "Send: Error account ToNum: " + ToID; } - ADD(ToData.Value, CoinSum) + global.ADD(ToData.Value, CoinSum) this.WriteStateTR(ToData, TrNum) if (ToID > 15) { this.DBChanges.TRHistory.push({ @@ -1288,11 +1292,11 @@ class AccountApp extends require("./dapp") FromData.Value.OperationID += OperationCount if (FromData.Value.Smart) { var Context = { FromID: FromID, ToID: ToID, Description: DescriptionFrom, Value: CoinSum }; - RunSmartMethod(Block, FromData.Value.Smart, FromData, BlockNum, TrNum, Context, "OnSend") + global.RunSmartMethod(Block, FromData.Value.Smart, FromData, BlockNum, TrNum, Context, "OnSend") } if (ToData.Value.Smart) { var Context = { FromID: FromID, ToID: ToID, Description: DescriptionTo, Value: CoinSum }; - RunSmartMethod(Block, ToData.Value.Smart, ToData, BlockNum, TrNum, Context, "OnGet") + global.RunSmartMethod(Block, ToData.Value.Smart, ToData, BlockNum, TrNum, Context, "OnGet") } } GetSignTransferTx(TR, PrivKey) { @@ -1300,9 +1304,9 @@ class AccountApp extends require("./dapp") if (TR.Version === 2 || TR.Version === 3) { var format; if (TR.Version === 2) - format = FORMAT_MONEY_TRANSFER_BODY2 + format = global.FORMAT_MONEY_TRANSFER_BODY2 else - format = FORMAT_MONEY_TRANSFER_BODY3 + format = global.FORMAT_MONEY_TRANSFER_BODY3 Arr = [] for (var i = 0; i < TR.To.length; i++) { var Item = TR.To[i]; @@ -1313,14 +1317,14 @@ class AccountApp extends require("./dapp") for (var j = 0; j < 33; j++) Arr[Arr.length] = DataTo.PubKey[j] } - var Body = global.BufLib.GetBufferFromObject(TR, format, MAX_TRANSACTION_SIZE, {}); + var Body = global.BufLib.GetBufferFromObject(TR, format, global.MAX_TRANSACTION_SIZE, {}); for (var j = 0; j < Body.length; j++) Arr[Arr.length] = Body[j] } else { - Arr = global.BufLib.GetBufferFromObject(TR, FORMAT_MONEY_TRANSFER_BODY, MAX_TRANSACTION_SIZE, {}) + Arr = global.BufLib.GetBufferFromObject(TR, global.FORMAT_MONEY_TRANSFER_BODY, global.MAX_TRANSACTION_SIZE, {}) } - var sigObj = global.secp256k1.sign(SHA3BUF(Arr), Buffer.from(PrivKey)); + var sigObj = global.secp256k1.sign(global.SHA3BUF(Arr), Buffer.from(PrivKey)); return sigObj.signature; } SaveHistory(Data) { @@ -1332,7 +1336,7 @@ class AccountApp extends require("./dapp") var BufWrite = global.BufLib.GetBufferFromObject(Data, this.HistoryFormatArr[Data.Type], 100, WorkStructHistory); var written = fs.writeSync(FD, BufWrite, 0, BufWrite.length, Position); if (written !== BufWrite.length) { - TO_ERROR_LOG("DB-HISTORY", 10, "Error write to file:" + written + " <> " + BufWrite.length) + global.TO_ERROR_LOG("DB-HISTORY", 10, "Error write to file:" + written + " <> " + BufWrite.length) throw "Error write to FILE_NAME_HISTORY"; return false; } @@ -1389,20 +1393,20 @@ class AccountApp extends require("./dapp") if (!Data) break; if (Data.Currency === Currency) { - ADD(SumCoin, Data.Value) + global.ADD(SumCoin, Data.Value) } } - return FLOAT_FROM_COIN(SumCoin); + return global.FLOAT_FROM_COIN(SumCoin); } }; module.exports = AccountApp; var App = new AccountApp; -DApps["Accounts"] = App; -DAppByType[TYPE_TRANSACTION_CREATE] = App; -DAppByType[TYPE_DEPRECATED_TRANSFER1] = App; -DAppByType[TYPE_DEPRECATED_TRANSFER2] = App; -DAppByType[TYPE_TRANSACTION_TRANSFER] = App; -DAppByType[TYPE_TRANSACTION_ACC_HASH] = App; +global.DApps["Accounts"] = App; +global.DAppByType[global.TYPE_TRANSACTION_CREATE] = App; +global.DAppByType[TYPE_DEPRECATED_TRANSFER1] = App; +global.DAppByType[TYPE_DEPRECATED_TRANSFER2] = App; +global.DAppByType[TYPE_TRANSACTION_TRANSFER] = App; +global.DAppByType[global.TYPE_TRANSACTION_ACC_HASH] = App; function TestStateFiles(Size, Format) { return; diff --git a/src/system/file.ts b/src/system/file.ts index 60e1a6c..0a4c732 100644 --- a/src/system/file.ts +++ b/src/system/file.ts @@ -27,7 +27,7 @@ class FileApp extends require("./dapp") } GetScriptTransaction(Body) { var TR = this.GetObjectTransaction(Body); - ConvertBufferToStr(TR) + global.ConvertBufferToStr(TR) return JSON.stringify(TR, undefined, 2); } GetVerifyTransaction(Block, BlockNum, TrNum, Body) { diff --git a/src/system/messager.ts b/src/system/messager.ts index 64f3bbe..861be98 100644 --- a/src/system/messager.ts +++ b/src/system/messager.ts @@ -19,18 +19,20 @@ const MESSAGE_END = MAX_MSG_SIZE - 5; require("./names"); class CApp extends require("./dapp") { + Channels + NamesMap constructor() { super() this.Channels = {} - this.NamesMap = NAMES.KeyValueMap + this.NamesMap = global.NAMES.KeyValueMap global.MESSAGER = this } Decrypt(Body) { for (var key in this.Channels) { var Node = this.Channels[key]; - Decrypt(Body, TempArrayTr, Node.Secret) - if (IsZeroArr(TempArrayTr.slice(MESSAGE_END))) { - var Str = Utf8ArrayToStr(TempArrayTr.slice(MESSAGE_START)); + global.Decrypt(Body, TempArrayTr, Node.Secret) + if (global.IsZeroArr(TempArrayTr.slice(MESSAGE_END))) { + var Str = global.Utf8ArrayToStr(TempArrayTr.slice(MESSAGE_START)); return Str; } } @@ -39,12 +41,11 @@ class CApp extends require("./dapp") Encrypt(StrMessage, StrTo) { var NameArr; if (typeof StrTo === "string") { - NameArr = GetArrFromStr(StrTo, 32) + NameArr = global.GetArrFromStr(StrTo, 32) + } else { + NameArr = StrTo } - else { - NameArr = Str - } - var arrMessage = GetArrFromStr(StrMessage, MESSAGE_END); + var arrMessage = global.GetArrFromStr(StrMessage, MESSAGE_END); var ArrayTr = new Uint8Array(MAX_MSG_SIZE); ArrayTr[0] = MESSAGE_TYPE_TRANSACTION for (var i = 5; i < MAX_MSG_SIZE; i++) { @@ -52,23 +53,23 @@ class CApp extends require("./dapp") } var Body = new Uint8Array(MAX_MSG_SIZE); var Node = this.OpenChannel(NameArr); - Encrypt(ArrayTr, Body, Node.Secret) + global.Encrypt(ArrayTr, Body, Node.Secret) return Body; } OpenChannel(FromNameArr) { var FromArr; - var StrKeyFrom = GetHexFromAddres(FromNameArr); + var StrKeyFrom = global.GetHexFromAddres(FromNameArr); if (this.NamesMap[StrKeyFrom]) { FromArr = this.NamesMap[StrKeyFrom] } else { FromArr = FromNameArr } - var StrKey = GetHexFromAddres(FromArr); + var StrKey = global.GetHexFromAddres(FromArr); var Node = this.Channels[StrKey]; if (!Node) { Node = { addrArr: FromArr } - CheckContextSecret(this.Server, Node) + global.CheckContextSecret(this.Server, Node) this.Channels[StrKey] = Node } return Node; @@ -77,7 +78,7 @@ class CApp extends require("./dapp") var Type = Body[0]; if (Type === OPEN_TYPE_TRANSACTION) { var ToArr = Body.slice(33); - if (global.CompareArr(ToArr, NAMES.CurrentNameArr) === 0 || global.CompareArr(ToArr, this.Server.addrArr) === 0) { + if (global.CompareArr(ToArr, global.NAMES.CurrentNameArr) === 0 || global.CompareArr(ToArr, this.Server.addrArr) === 0) { var FromNameArr = Body.slice(1, 33); this.OpenChannel(FromNameArr) } @@ -105,19 +106,19 @@ class CApp extends require("./dapp") function TestEncryptDecrypt() { const CMessager = module.exports; - var Server = { KeyPair: GetKeyPairTest("Test"), DApp: { Names: { KeyValueMap: {} } }, }; + var Server = { KeyPair: global.GetKeyPairTest("Test"), DApp: { Names: { KeyValueMap: {} } }, }; var Test = new CMessager(Server); - var KeyPair2 = GetKeyPairTest("Test2"); - var StrTest1 = GetArrFromStr("Test2", 32); - var StrKey = GetHexFromAddres(StrTest1); - MESSAGER.NamesMap[StrKey] = KeyPair2.addrArr; - var Body = MESSAGER.Encrypt("This is a test message!", "Test2"); - var Str2 = MESSAGER.Decrypt(Body); + var KeyPair2 = global.GetKeyPairTest("Test2"); + var StrTest1 = global.GetArrFromStr("Test2", 32); + var StrKey = global.GetHexFromAddres(StrTest1); + global.MESSAGER.NamesMap[StrKey] = KeyPair2.addrArr; + var Body = global.MESSAGER.Encrypt("This is a test message!", "Test2"); + var Str2 = global.MESSAGER.Decrypt(Body); console.log("Decrypt:"); console.log(Str2); }; module.exports = CApp; -var App = new CApp; -DApps["Messager"] = App; -DAppByType[OPEN_TYPE_TRANSACTION] = App; -DAppByType[MESSAGE_TYPE_TRANSACTION] = App; +var Messager = new CApp; +global.DApps["Messager"] = Messager; +global.DAppByType[OPEN_TYPE_TRANSACTION] = Messager; +global.DAppByType[MESSAGE_TYPE_TRANSACTION] = Messager; diff --git a/src/system/names.ts b/src/system/names.ts index 02ae542..82151b5 100644 --- a/src/system/names.ts +++ b/src/system/names.ts @@ -26,7 +26,7 @@ class NameApp extends require("./dapp") var StrKey = global.GetHexFromAddres(Body.slice(1, 33)); if (!this.KeyValueMap[StrKey]) { this.KeyValueMap[StrKey] = Body.slice(33) - if (CompareArr(Body.slice(33), this.Server.addrArr) === 0) + if (global.CompareArr(Body.slice(33), this.Server.addrArr) === 0) this.CurrentNameArr = Body.slice(1, 33) } } diff --git a/src/system/smart.ts b/src/system/smart.ts index 72d37a3..607c016 100644 --- a/src/system/smart.ts +++ b/src/system/smart.ts @@ -66,6 +66,7 @@ class SmartApp extends require("./dapp") FORMAT_ROW ROW_SIZE DBSmart + RowHole constructor() { super() var bReadOnly = (global.PROCESS_NAME !== "TX"); @@ -125,10 +126,10 @@ class SmartApp extends require("./dapp") len += 2 + Body[len] + Body[len + 1] * 256 if (len + 64 > Body.length) return 0; - var Num = ReadUintFromArr(Body, len); + var Num = global.ReadUintFromArr(Body, len); return Num; case TYPE_TRANSACTION_SMART_CHANGE: - var Num = ReadUintFromArr(Body, 1); + var Num = global.ReadUintFromArr(Body, 1); return Num; } } @@ -184,7 +185,7 @@ class SmartApp extends require("./dapp") if (!format) return ""; var TR = global.BufLib.GetObjectFromBuffer(Body, format, {}); - ConvertBufferToStr(TR) + global.ConvertBufferToStr(TR) return JSON.stringify(TR, undefined, 2); } GetVerifyTransaction(Block, BlockNum, TrNum, Body) { @@ -199,7 +200,7 @@ class SmartApp extends require("./dapp") return "Error length transaction (max size)"; if (BlockNum < global.SMART_BLOCKNUM_START) return "Error block num"; - var TR = global.BufLib.GetObjectFromBuffer(Body, FORMAT_SMART_CREATE, WorkStructCreate); + var TR = global.BufLib.GetObjectFromBuffer(Body, global.FORMAT_SMART_CREATE, WorkStructCreate); if (!TR.Name.trim()) return "Name required"; if (TR.AccountLength > 50) @@ -209,10 +210,10 @@ class SmartApp extends require("./dapp") var AddAccount = TR.AccountLength - 1; var Price; if (TR.TokenGenerate) - Price = PRICE_DAO(BlockNum).NewTokenSmart + Price = global.PRICE_DAO(BlockNum).NewTokenSmart else - Price = PRICE_DAO(BlockNum).NewSmart - Price += AddAccount * PRICE_DAO(BlockNum).NewAccount + Price = global.PRICE_DAO(BlockNum).NewSmart + Price += AddAccount * global.PRICE_DAO(BlockNum).NewAccount if (!(ContextFrom && ContextFrom.To.length === 1 && ContextFrom.To[0].ID === 0 && ContextFrom.To[0].SumCOIN >= Price)) { return "Not money in the transaction"; } @@ -270,11 +271,11 @@ class SmartApp extends require("./dapp") MaxCountOperationID = 1000000 if (TR.OperationID > AccountFrom.Value.OperationID + MaxCountOperationID) return "Error too much OperationID (expected max: " + (AccountFrom.Value.OperationID + MaxCountOperationID) + " for ID: " + TR.FromNum + ")"; - var hash = SHA3BUF(Body.slice(0, Body.length - 64 - 12), BlockNum); + var hash = global.SHA3BUF(Body.slice(0, Body.length - 64 - 12), BlockNum); var Result = 0; if (AccountFrom.PubKey[0] === 2 || AccountFrom.PubKey[0] === 3) try { - Result = secp256k1.verify(hash, TR.Sign, AccountFrom.PubKey) + Result = global.secp256k1.verify(hash, TR.Sign, AccountFrom.PubKey) } catch (e) { } @@ -297,7 +298,7 @@ class SmartApp extends require("./dapp") return "Error length transaction (min size)"; if (BlockNum < global.SMART_BLOCKNUM_START) return "Error block num"; - var TR = global.BufLib.GetObjectFromBuffer(Body, FORMAT_SMART_RUN, WorkStructRun); + var TR = global.BufLib.GetObjectFromBuffer(Body, global.FORMAT_SMART_RUN, WorkStructRun); var Account = global.DApps.Accounts.ReadStateTR(TR.Account); if (!Account) return "RunSmart: Error account Num: " + TR.Account; @@ -369,7 +370,7 @@ class SmartApp extends require("./dapp") Filter = Filter.toUpperCase() } if (Category) - Category = ParseNum(Category) + Category = global.global.ParseNum(Category) var WasError = 0; var arr = []; var Data; @@ -430,12 +431,12 @@ class SmartApp extends require("./dapp") if (!PrevItem) { throw "!PrevItem of Smart num = " + PrevNum; } - Item.SumHash = sha3arr2(PrevItem.SumHash, Hash) + Item.SumHash = global.sha3arr2(PrevItem.SumHash, Hash) } this.DBSmart.Write(Item) } ReadSmart(Num) { - Num = ParseNum(Num) + Num = global.global.ParseNum(Num) var Smart = this.DBSmart.GetMap("ITEM" + Num); if (!Smart) { Smart = this.DBSmart.Read(Num) @@ -480,12 +481,12 @@ class SmartApp extends require("./dapp") }; function GetParsing(Str) { - LexerJS.ParseCode(Str); - var Code = LexerJS.stream; - for (var key in LexerJS.FunctionMap) { + global.LexerJS.ParseCode(Str); + var Code = global.LexerJS.stream; + for (var key in global.LexerJS.FunctionMap) { Code += ";\nfunclist." + key + "=" + LOC_ADD_NAME + key; } - for (var key in LexerJS.ExternMap) { + for (var key in global.LexerJS.ExternMap) { Code += ";\npublist." + key + "=" + LOC_ADD_NAME + key; } Code += "\n\ @@ -522,7 +523,7 @@ function GetSmartEvalContext(Smart) { var RunContext = undefined; global.RunSmartMethod = RunSmartMethod; -function RunSmartMethod(Block, SmartOrSmartID, Account, BlockNum, TrNum, PayContext, MethodName, Params, bPublic) { +function RunSmartMethod(Block, SmartOrSmartID, Account, BlockNum?, TrNum?, PayContext?, MethodName?, Params?, bPublic?) { var Smart = SmartOrSmartID; if (typeof SmartOrSmartID === "number") { Smart = global.DApps.Smart.ReadSmart(SmartOrSmartID); @@ -540,11 +541,11 @@ function RunSmartMethod(Block, SmartOrSmartID, Account, BlockNum, TrNum, PayCont else return; } - var context = {}; + var context: any = {}; if (PayContext) { context.BlockNum = BlockNum; - context.BlockHash = CopyArr(Block.Hash); - context.BlockAddrHash = CopyArr(Block.AddrHash); + context.BlockHash = global.CopyArr(Block.Hash); + context.BlockAddrHash = global.CopyArr(Block.AddrHash); context.TrNum = TrNum; context.Account = GET_ACCOUNT(Account); context.Smart = GET_SMART(Smart); @@ -584,7 +585,7 @@ function GET_ACCOUNT(Obj) { }, get Currency() { return Data.Currency; }, get PubKey() { - return CopyArr(Data.PubKey); + return global.CopyArr(Data.PubKey); }, get Name() { return Data.Name; }, get BlockNumCreate() { @@ -912,7 +913,7 @@ function DO(Count) { function $SetValue(ID, CoinSum) { DO(3000); - ID = ParseNum(ID); + ID = global.ParseNum(ID); if (!RunContext.Smart.TokenGenerate) { throw "The smart-contract is not token generate, access to change values is denied"; } @@ -924,7 +925,7 @@ function $SetValue(ID, CoinSum) { throw "The account currency does not belong to the smart-contract, access to change values is denied"; } if (typeof CoinSum === "number") { - CoinSum = COIN_FROM_FLOAT(CoinSum); + CoinSum = global.COIN_FROM_FLOAT(CoinSum); } if (CoinSum.SumCENT >= 1e9) { throw "ERROR SumCENT>=1e9"; @@ -940,9 +941,9 @@ function $SetValue(ID, CoinSum) { function $Send(ToID, CoinSum, Description) { DO(3000); - ToID = ParseNum(ToID); + ToID = global.ParseNum(ToID); if (typeof CoinSum === "number") - CoinSum = COIN_FROM_FLOAT(CoinSum); + CoinSum = global.COIN_FROM_FLOAT(CoinSum); if (CoinSum.SumCENT >= 1e9) { throw "ERROR SumCENT>=1e9"; } @@ -959,8 +960,8 @@ function $Send(ToID, CoinSum, Description) { function $Move(FromID, ToID, CoinSum, Description) { DO(3000); - FromID = ParseNum(FromID); - ToID = ParseNum(ToID); + FromID = global.ParseNum(FromID); + ToID = global.ParseNum(ToID); var FromData = global.DApps.Accounts.ReadStateTR(FromID); var ToData = global.DApps.Accounts.ReadStateTR(ToID); if (FromData.Currency !== ToData.Currency) { @@ -970,7 +971,7 @@ function $Move(FromID, ToID, CoinSum, Description) { throw "The account smart does not belong to the smart-contract, access is denied"; } if (typeof CoinSum === "number") { - CoinSum = COIN_FROM_FLOAT(CoinSum); + CoinSum = global.COIN_FROM_FLOAT(CoinSum); } if (CoinSum.SumCENT >= 1e9) { throw "ERROR SumCENT>=1e9"; @@ -999,7 +1000,7 @@ function $Event(Description) { function $ReadAccount(ID) { DO(900); - ID = ParseNum(ID); + ID = global.ParseNum(ID); var Account = global.DApps.Accounts.ReadStateTR(ID); if (!Account) throw "Error read account Num: " + ID; @@ -1008,7 +1009,7 @@ function $ReadAccount(ID) { function $ReadState(ID) { DO(900); - ID = ParseNum(ID); + ID = global.ParseNum(ID); var Account = global.DApps.Accounts.ReadStateTR(ID); if (!Account) throw "Error read state account Num: " + ID; @@ -1037,7 +1038,7 @@ function $WriteState(Obj, ID) { DO(3000); if (ID === undefined) ID = Obj.Num; - ID = ParseNum(ID); + ID = global.ParseNum(ID); var Account = global.DApps.Accounts.ReadStateTR(ID); if (!Account) throw "Error write account Num: " + ID; @@ -1056,12 +1057,12 @@ function $GetMaxAccount() { function $ADD(Coin, Value2) { DO(5); - return ADD(Coin, Value2); + return global.ADD(Coin, Value2); }; function $SUB(Coin, Value2) { DO(5); - return SUB(Coin, Value2); + return global.SUB(Coin, Value2); }; function $ISZERO(Coin) { @@ -1074,22 +1075,22 @@ function $ISZERO(Coin) { function $FLOAT_FROM_COIN(Coin) { DO(5); - return FLOAT_FROM_COIN(Coin); + return global.FLOAT_FROM_COIN(Coin); }; function $COIN_FROM_FLOAT(Sum) { DO(20); - return COIN_FROM_FLOAT(Sum); + return global.COIN_FROM_FLOAT(Sum); }; function $COIN_FROM_STRING(Sum) { DO(20); - return COIN_FROM_STRING(Sum); + return global.COIN_FROM_STRING(Sum); }; function $require(SmartNum) { DO(2000); - SmartNum = ParseNum(SmartNum); + SmartNum = global.ParseNum(SmartNum); var Smart = global.DApps.Smart.ReadSmart(SmartNum); if (!Smart) { throw "Smart does not exist. Error id number: " + SmartNum; @@ -1146,7 +1147,7 @@ function $parseInt(a) { function $parseUint(a) { DO(10); - return ParseNum(a); + return global.ParseNum(a); }; function $String(a) {