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) {