forked from circlecloud/tera
sync: sync upstream code
Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
parent
68310f1a3b
commit
8dafeb2cf0
@ -11,6 +11,15 @@
|
|||||||
var MAX_SUM_TER = 1e9;
|
var MAX_SUM_TER = 1e9;
|
||||||
var MAX_SUM_CENT = 1e9;
|
var MAX_SUM_CENT = 1e9;
|
||||||
|
|
||||||
|
function CHECKSUM(Coin)
|
||||||
|
{
|
||||||
|
if(typeof Coin.SumCOIN !== "number")
|
||||||
|
Coin.SumCOIN = 0;
|
||||||
|
if(typeof Coin.SumCENT !== "number")
|
||||||
|
Coin.SumCENT = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
function ADD(Coin,Value2)
|
function ADD(Coin,Value2)
|
||||||
{
|
{
|
||||||
Coin.SumCOIN += Value2.SumCOIN;
|
Coin.SumCOIN += Value2.SumCOIN;
|
||||||
@ -102,6 +111,7 @@ function COIN_FROM_STRING(Str)
|
|||||||
};
|
};
|
||||||
if(typeof global === "object")
|
if(typeof global === "object")
|
||||||
{
|
{
|
||||||
|
global.CHECKSUM = CHECKSUM;
|
||||||
global.ADD = ADD;
|
global.ADD = ADD;
|
||||||
global.SUB = SUB;
|
global.SUB = SUB;
|
||||||
global.DIV = DIV;
|
global.DIV = DIV;
|
||||||
|
@ -135,6 +135,15 @@ window.GetCurrentBlockNumByTime = function ()
|
|||||||
return 0;
|
return 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function SetMinPow()
|
||||||
|
{
|
||||||
|
var item = $("idDeltaPow");
|
||||||
|
if(item)
|
||||||
|
{
|
||||||
|
window.DELTA_POWER_POW_TR = ParseNum(item.value);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
function GetBlockNumTr(arr)
|
function GetBlockNumTr(arr)
|
||||||
{
|
{
|
||||||
var BlockNum = window.DELTA_FOR_TIME_TX + GetCurrentBlockNumByTime();
|
var BlockNum = window.DELTA_FOR_TIME_TX + GetCurrentBlockNumByTime();
|
||||||
@ -153,6 +162,7 @@ var LastCreatePOWHash = [255, 255, 255, 255];
|
|||||||
|
|
||||||
function CreateHashBodyPOWInnerMinPower(arr,MinPow,startnonce)
|
function CreateHashBodyPOWInnerMinPower(arr,MinPow,startnonce)
|
||||||
{
|
{
|
||||||
|
SetMinPow();
|
||||||
var TrType = arr[0];
|
var TrType = arr[0];
|
||||||
var BlockNum = GetBlockNumTr(arr);
|
var BlockNum = GetBlockNumTr(arr);
|
||||||
if(MinPow === undefined)
|
if(MinPow === undefined)
|
||||||
|
@ -63,7 +63,7 @@
|
|||||||
var SaveIdArr=["idAccount","idTo","idSumSend","idDescription","idSelStyle",
|
var SaveIdArr=["idAccount","idTo","idSumSend","idDescription","idSelStyle",
|
||||||
"idViewAccountNum","idViewBlockNum","idViewActNum","idViewHashNum","idViewDappNum",
|
"idViewAccountNum","idViewBlockNum","idViewActNum","idViewHashNum","idViewDappNum",
|
||||||
"idRunText","idViewAccountFilter",
|
"idRunText","idViewAccountFilter",
|
||||||
"idBlockCount","idPeriodAutoCheckPoint"];
|
"idBlockCount","idPeriodAutoCheckPoint","idDeltaPow"];
|
||||||
|
|
||||||
|
|
||||||
var MaxAccID=0;
|
var MaxAccID=0;
|
||||||
@ -1730,6 +1730,7 @@
|
|||||||
<BR>
|
<BR>
|
||||||
<INPUT type="button" onclick="SignJSON()" class="btdoit bt" value="Sign JSON" id="idSignJSON">
|
<INPUT type="button" onclick="SignJSON()" class="btdoit bt" value="Sign JSON" id="idSignJSON">
|
||||||
<INPUT type="button" onclick="SendMoneyJSON()" class="btdoit bt" value="Send from JSON">
|
<INPUT type="button" onclick="SendMoneyJSON()" class="btdoit bt" value="Send from JSON">
|
||||||
|
Pow:<INPUT type="number" id="idDeltaPow" style="width: 60px" value="" onchange="SetMinPow()">
|
||||||
</DIV>
|
</DIV>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
@ -1352,10 +1352,19 @@ export default class CConsensus extends CBlock {
|
|||||||
MiningProcess(msg) {
|
MiningProcess(msg) {
|
||||||
var BlockMining = this.GetBlock(msg.BlockNum);
|
var BlockMining = this.GetBlock(msg.BlockNum);
|
||||||
if (!BlockMining) {
|
if (!BlockMining) {
|
||||||
|
SendToWebClient({
|
||||||
|
msg: msg,
|
||||||
|
errror: '!BlockMining'
|
||||||
|
})
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!BlockMining.StartMining || BlockMining.bSave)
|
if (!BlockMining.StartMining || BlockMining.bSave) {
|
||||||
|
SendToWebClient({
|
||||||
|
msg: msg,
|
||||||
|
errror: `!BlockMining.StartMining ${BlockMining.StartMining} || BlockMining.bSave ${BlockMining.bSave}`
|
||||||
|
})
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
if (BlockMining && BlockMining.Hash && BlockMining.SeqHash && global.CompareArr(BlockMining.SeqHash, msg.SeqHash) === 0) {
|
if (BlockMining && BlockMining.Hash && BlockMining.SeqHash && global.CompareArr(BlockMining.SeqHash, msg.SeqHash) === 0) {
|
||||||
var ValueOld = global.GetHashFromSeqAddr(BlockMining.SeqHash, BlockMining.AddrHash, BlockMining.BlockNum);
|
var ValueOld = global.GetHashFromSeqAddr(BlockMining.SeqHash, BlockMining.AddrHash, BlockMining.BlockNum);
|
||||||
var ValueMsg = global.GetHashFromSeqAddr(msg.SeqHash, msg.AddrHash, BlockMining.BlockNum);
|
var ValueMsg = global.GetHashFromSeqAddr(msg.SeqHash, msg.AddrHash, BlockMining.BlockNum);
|
||||||
@ -1395,12 +1404,12 @@ export default class CConsensus extends CBlock {
|
|||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
let webmsg: any = { BlockNum: msg.BlockNum }
|
let webmsg: any = { BlockNum: msg.BlockNum }
|
||||||
webmsg.Mining = {
|
webmsg.Mining = {
|
||||||
Hash: BlockMining.Hash.toString(),
|
Hash: global.GetHexFromArr(BlockMining.Hash),
|
||||||
SeqHash: BlockMining.Hash.toString()
|
SeqHash: global.GetHexFromArr(BlockMining.Hash)
|
||||||
}
|
}
|
||||||
webmsg.New = {
|
webmsg.New = {
|
||||||
Hash: ValueNew.Hash.toString(),
|
Hash: global.GetHexFromArr(ValueNew.Hash),
|
||||||
PowHash: ValueNew.PowHash.toString()
|
PowHash: global.GetHexFromArr(ValueNew.PowHash)
|
||||||
}
|
}
|
||||||
Object.assign(webmsg, {
|
Object.assign(webmsg, {
|
||||||
HashCount,
|
HashCount,
|
||||||
|
@ -110,7 +110,7 @@ global.HARD_PACKET_PERIOD120 = 160;
|
|||||||
global.MINING_START_TIME = "";
|
global.MINING_START_TIME = "";
|
||||||
global.MINING_PERIOD_TIME = "";
|
global.MINING_PERIOD_TIME = "";
|
||||||
global.CHECK_RUN_MINING = 21 * 1000;
|
global.CHECK_RUN_MINING = 21 * 1000;
|
||||||
global.CHECK_STOP_CHILD_PROCESS = 10 * 1000;
|
global.CHECK_STOP_CHILD_PROCESS = 100 * 1000;
|
||||||
global.COUNT_MINING_CPU = 0;
|
global.COUNT_MINING_CPU = 0;
|
||||||
global.SIZE_MINING_MEMORY = 0;
|
global.SIZE_MINING_MEMORY = 0;
|
||||||
global.HTTP_HOSTING_PORT = 0;
|
global.HTTP_HOSTING_PORT = 0;
|
||||||
@ -123,7 +123,6 @@ global.MIN_POWER_POW_HANDSHAKE = 12;
|
|||||||
global.USE_HINT = 0;
|
global.USE_HINT = 0;
|
||||||
global.ALL_VIEW_ROWS = 0;
|
global.ALL_VIEW_ROWS = 0;
|
||||||
global.COUNT_BLOCK_PROOF = 300;
|
global.COUNT_BLOCK_PROOF = 300;
|
||||||
global.COUNT_NODE_PROOF = 10;
|
|
||||||
global.MIN_POWER_POW_MSG = 2;
|
global.MIN_POWER_POW_MSG = 2;
|
||||||
global.MEM_POOL_MSG_COUNT = 1000;
|
global.MEM_POOL_MSG_COUNT = 1000;
|
||||||
global.MAX_LEVEL_SPECIALIZATION = 24;
|
global.MAX_LEVEL_SPECIALIZATION = 24;
|
||||||
@ -204,7 +203,6 @@ if (global.LOCAL_RUN) {
|
|||||||
global.NEW_FORMULA_TARGET2 = 1;
|
global.NEW_FORMULA_TARGET2 = 1;
|
||||||
global.NETWORK = "LOCAL";
|
global.NETWORK = "LOCAL";
|
||||||
global.ALL_VIEW_ROWS = 1;
|
global.ALL_VIEW_ROWS = 1;
|
||||||
global.COUNT_NODE_PROOF = 1;
|
|
||||||
global.NEW_SIGN_TIME = 0;
|
global.NEW_SIGN_TIME = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -234,7 +232,6 @@ else
|
|||||||
global.NEW_FORMULA_KTERA = 3;
|
global.NEW_FORMULA_KTERA = 3;
|
||||||
global.NEW_FORMULA_TARGET1 = 0;
|
global.NEW_FORMULA_TARGET1 = 0;
|
||||||
global.NEW_FORMULA_TARGET2 = 1;
|
global.NEW_FORMULA_TARGET2 = 1;
|
||||||
global.COUNT_NODE_PROOF = 8;
|
|
||||||
global.NEW_SIGN_TIME = 4859000;
|
global.NEW_SIGN_TIME = 4859000;
|
||||||
global.MAX_LENGTH_SENDER_MAP = 100;
|
global.MAX_LENGTH_SENDER_MAP = 100;
|
||||||
global.DELTA_START_SENDER_MAP = 12;
|
global.DELTA_START_SENDER_MAP = 12;
|
||||||
|
@ -21,8 +21,7 @@ if (global.USE_PARAM_JS) {
|
|||||||
if (fs.existsSync(PathParams))
|
if (fs.existsSync(PathParams))
|
||||||
try {
|
try {
|
||||||
require(PathParams);
|
require(PathParams);
|
||||||
}
|
} catch (e) {
|
||||||
catch (e) {
|
|
||||||
console.log(e);
|
console.log(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -63,8 +62,7 @@ if (global.USE_PARAM_JS) {
|
|||||||
if (fs.existsSync(PathParams))
|
if (fs.existsSync(PathParams))
|
||||||
try {
|
try {
|
||||||
require(PathParams);
|
require(PathParams);
|
||||||
}
|
} catch (e) {
|
||||||
catch (e) {
|
|
||||||
console.log(e);
|
console.log(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -291,6 +289,12 @@ function CheckGlobalTime() {
|
|||||||
global.ToLog("Get global time: " + NetTime);
|
global.ToLog("Get global time: " + NetTime);
|
||||||
global.SAVE_CONST();
|
global.SAVE_CONST();
|
||||||
});
|
});
|
||||||
|
setTimeout(() => {
|
||||||
|
global.DELTA_CURRENT_TIME = global.DELTA_CURRENT_TIME * -1;
|
||||||
|
setTimeout(() => {
|
||||||
|
global.DELTA_CURRENT_TIME = global.DELTA_CURRENT_TIME * -1
|
||||||
|
}, 3000)
|
||||||
|
}, 5000)
|
||||||
global.SAVE_CONST();
|
global.SAVE_CONST();
|
||||||
};
|
};
|
||||||
global.CheckGlobalTime = CheckGlobalTime;
|
global.CheckGlobalTime = CheckGlobalTime;
|
||||||
|
@ -13,8 +13,10 @@ import CDB from './db/block-db'
|
|||||||
import { TYPE_TRANSACTION } from '../constant/account';
|
import { TYPE_TRANSACTION } from '../constant/account';
|
||||||
import { DB_FORMAT } from '../constant/db-format';
|
import { DB_FORMAT } from '../constant/db-format';
|
||||||
var MIN_POW_CHAINS = 2;
|
var MIN_POW_CHAINS = 2;
|
||||||
|
global.COUNT_NODE_PROOF = 6;
|
||||||
if (global.TEST_NETWORK) {
|
if (global.TEST_NETWORK) {
|
||||||
MIN_POW_CHAINS = 1;
|
MIN_POW_CHAINS = 1;
|
||||||
|
global.COUNT_NODE_PROOF = 1;
|
||||||
}
|
}
|
||||||
export default class CRest extends CDB {
|
export default class CRest extends CDB {
|
||||||
LoadRestContext
|
LoadRestContext
|
||||||
@ -67,6 +69,9 @@ export default class CRest extends CDB {
|
|||||||
let Context = this.LoadRestContext;
|
let Context = this.LoadRestContext;
|
||||||
switch (Context.Mode) {
|
switch (Context.Mode) {
|
||||||
case 0:
|
case 0:
|
||||||
|
if (!global.TX_PROCESS) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
var ArrNodes = this.GetActualNodes();
|
var ArrNodes = this.GetActualNodes();
|
||||||
for (var i = 0; i < ArrNodes.length; i++) {
|
for (var i = 0; i < ArrNodes.length; i++) {
|
||||||
var Node = ArrNodes[i];
|
var Node = ArrNodes[i];
|
||||||
@ -74,7 +79,7 @@ export default class CRest extends CDB {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
Node.SendRestGetHeader = 1
|
Node.SendRestGetHeader = 1
|
||||||
global.ToLog("Send rest get headers from " + Context.BlockNumProof + " to " + global.NodeName(Node), 2)
|
global.ToLog("Send rest get header " + Context.BlockNumProof + " to " + global.NodeName(Node), 2)
|
||||||
this.SendF(Node, {
|
this.SendF(Node, {
|
||||||
"Method": "GETBLOCKHEADER", "Data": { Foward: 1, BlockNum: Context.BlockNumProof, Hash: [] }, "Context": { F: this.RETBLOCKHEADER_REST.bind(this) },
|
"Method": "GETBLOCKHEADER", "Data": { Foward: 1, BlockNum: Context.BlockNumProof, Hash: [] }, "Context": { F: this.RETBLOCKHEADER_REST.bind(this) },
|
||||||
})
|
})
|
||||||
|
@ -17,8 +17,9 @@ import "../system/smart"
|
|||||||
import "../system/file"
|
import "../system/file"
|
||||||
import "../system/messager"
|
import "../system/messager"
|
||||||
import "../system/names"
|
import "../system/names"
|
||||||
if (global.PROCESS_NAME === "MAIN" || global.PROCESS_NAME === "TX")
|
if (global.PROCESS_NAME === "MAIN") {
|
||||||
require("./wallet");
|
require("./wallet");
|
||||||
|
}
|
||||||
import CConsensus from './block-exchange'
|
import CConsensus from './block-exchange'
|
||||||
export default class CSmartContract extends CConsensus {
|
export default class CSmartContract extends CConsensus {
|
||||||
BufHashTree
|
BufHashTree
|
||||||
|
@ -24,6 +24,12 @@ function RunOnUpdate() {
|
|||||||
if (CurNum < 1137) {
|
if (CurNum < 1137) {
|
||||||
global.SERVER.ClearDataBase();
|
global.SERVER.ClearDataBase();
|
||||||
}
|
}
|
||||||
|
if (CurNum < 1142) {
|
||||||
|
setTimeout(function() {
|
||||||
|
global.ToLog("UPD: START RewriteAllTransactions");
|
||||||
|
global.SERVER.RewriteAllTransactions();
|
||||||
|
}, 3000);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
}
|
}
|
||||||
global.ToLog("UPDATER Finish");
|
global.ToLog("UPDATER Finish");
|
||||||
|
@ -45,7 +45,7 @@ class CApp {
|
|||||||
this.AccountMap = Params.AccountMap
|
this.AccountMap = Params.AccountMap
|
||||||
this.KeyPair = crypto.createECDH('secp256k1')
|
this.KeyPair = crypto.createECDH('secp256k1')
|
||||||
if (Params.Protect) {
|
if (Params.Protect) {
|
||||||
global.ToLogClient("Wallet protect by password")
|
global.ToLog("Wallet protect by password")
|
||||||
this.KeyXOR = global.GetArrFromHex(Params.KeyXOR)
|
this.KeyXOR = global.GetArrFromHex(Params.KeyXOR)
|
||||||
this.WalletOpen = false
|
this.WalletOpen = false
|
||||||
this.SetPrivateKey(Params.PubKey)
|
this.SetPrivateKey(Params.PubKey)
|
||||||
|
1
src/global.d.ts
vendored
1
src/global.d.ts
vendored
@ -664,6 +664,7 @@ declare global {
|
|||||||
shaarr: any;
|
shaarr: any;
|
||||||
ELECTRON: any;
|
ELECTRON: any;
|
||||||
TestTestWaletMode: any;
|
TestTestWaletMode: any;
|
||||||
|
OnExit: any;
|
||||||
}
|
}
|
||||||
interface Process {
|
interface Process {
|
||||||
RunRPC: Function;
|
RunRPC: Function;
|
||||||
|
120
src/process/child-process.ts
Normal file
120
src/process/child-process.ts
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
/*
|
||||||
|
* @project: TERA
|
||||||
|
* @version: Development (beta)
|
||||||
|
* @license: MIT (not for evil)
|
||||||
|
* @copyright: Yuriy Ivanov (Vtools) 2017-2019 [progr76@gmail.com]
|
||||||
|
* Web: https://terafoundation.org
|
||||||
|
* Twitter: https://twitter.com/terafoundation
|
||||||
|
* Telegram: https://t.me/terafoundation
|
||||||
|
*/
|
||||||
|
|
||||||
|
global.GlobalRunID = 0;
|
||||||
|
global.GlobalRunMap = {};
|
||||||
|
var LastAlive = Date.now();
|
||||||
|
setTimeout(function() {
|
||||||
|
setInterval(CheckAlive, 1000);
|
||||||
|
}, 20000);
|
||||||
|
if (process.send) {
|
||||||
|
setInterval(function() {
|
||||||
|
process.send({ cmd: "Alive" });
|
||||||
|
}, 1000);
|
||||||
|
process.send({ cmd: "online", message: "OK" });
|
||||||
|
setInterval(function() {
|
||||||
|
process.send({ cmd: "Alive" });
|
||||||
|
}, 1000);
|
||||||
|
global.ToLogClient = function(Str, StrKey, bFinal) {
|
||||||
|
process.send({ cmd: "ToLogClient", Str: "" + Str, StrKey: StrKey, bFinal: bFinal });
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function CheckAlive() {
|
||||||
|
if (global.NOALIVE)
|
||||||
|
return;
|
||||||
|
var Delta = Date.now() - LastAlive;
|
||||||
|
if (Delta > global.CHECK_STOP_CHILD_PROCESS) {
|
||||||
|
global.ToLog("ALIVE TIMEOUT. Stop and exit: " + Delta + "/" + global.CHECK_STOP_CHILD_PROCESS);
|
||||||
|
Exit();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
process.on('message', function(msg) {
|
||||||
|
LastAlive = Date.now();
|
||||||
|
switch (msg.cmd) {
|
||||||
|
case "Alive":
|
||||||
|
global.DELTA_CURRENT_TIME = msg.DELTA_CURRENT_TIME;
|
||||||
|
break;
|
||||||
|
case "Exit":
|
||||||
|
Exit();
|
||||||
|
break;
|
||||||
|
case "call":
|
||||||
|
var Err = 0;
|
||||||
|
var Ret;
|
||||||
|
try {
|
||||||
|
Ret = global[msg.Name](msg.Params);
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
Err = 1;
|
||||||
|
Ret = "" + e;
|
||||||
|
}
|
||||||
|
if (msg.id)
|
||||||
|
process.send({ cmd: "retcall", id: msg.id, Err: Err, Params: Ret });
|
||||||
|
break;
|
||||||
|
case "retcall":
|
||||||
|
var F = global.GlobalRunMap[msg.id];
|
||||||
|
if (F) {
|
||||||
|
delete global.GlobalRunMap[msg.id];
|
||||||
|
F(msg.Err, msg.Params);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "ToLogClient":
|
||||||
|
{
|
||||||
|
global.ToLogClient0(msg.Str, msg.StrKey, msg.bFinal);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "Eval":
|
||||||
|
global.EvalCode(msg.Code);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
function Exit() {
|
||||||
|
if (global.OnExit)
|
||||||
|
global.OnExit();
|
||||||
|
process.exit(0);
|
||||||
|
};
|
||||||
|
process.RunRPC = function(Name, Params, F) {
|
||||||
|
if (F) {
|
||||||
|
global.GlobalRunID++;
|
||||||
|
try {
|
||||||
|
process.send({ cmd: "call", id: global.GlobalRunID, Name: Name, Params: Params });
|
||||||
|
global.GlobalRunMap[global.GlobalRunID] = F;
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
process.send({ cmd: "call", id: 0, Name: Name, Params: Params });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
global.EvalCode = function(Code) {
|
||||||
|
var Result;
|
||||||
|
try {
|
||||||
|
var ret = eval(Code);
|
||||||
|
Result = JSON.stringify(ret, undefined, 4);
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
Result = "" + e;
|
||||||
|
}
|
||||||
|
return Result;
|
||||||
|
};
|
||||||
|
process.on('uncaughtException', function(err) {
|
||||||
|
global.ToError(err.stack);
|
||||||
|
global.ToLog(err.stack);
|
||||||
|
global.TO_ERROR_LOG(global.PROCESS_NAME, 777, err);
|
||||||
|
global.ToLog("-----------------" + global.PROCESS_NAME + " EXIT------------------");
|
||||||
|
process.exit();
|
||||||
|
});
|
||||||
|
process.on('error' as any, function(err: TeraError) {
|
||||||
|
global.ToError(global.PROCESS_NAME + ":\n" + err.stack);
|
||||||
|
global.ToLog(err.stack);
|
||||||
|
});
|
@ -390,9 +390,9 @@ if (global.ADDRLIST_MODE) {
|
|||||||
}
|
}
|
||||||
function AllAlive() {
|
function AllAlive() {
|
||||||
for (var i = 0; i < global.ArrMiningWrk.length; i++) {
|
for (var i = 0; i < global.ArrMiningWrk.length; i++) {
|
||||||
global.ArrMiningWrk[i].send({ cmd: "Alive" });
|
global.ArrMiningWrk[i].send({ cmd: "Alive", DELTA_CURRENT_TIME: global.DELTA_CURRENT_TIME });
|
||||||
}
|
}
|
||||||
SendToClient({ cmd: "Alive" })
|
SendToClient({ cmd: "Alive", DELTA_CURRENT_TIME: global.DELTA_CURRENT_TIME })
|
||||||
};
|
};
|
||||||
|
|
||||||
function ClearArrMining() {
|
function ClearArrMining() {
|
||||||
|
@ -19,35 +19,11 @@ import '../system/smart'
|
|||||||
global.DATA_PATH = global.GetNormalPathString(global.DATA_PATH);
|
global.DATA_PATH = global.GetNormalPathString(global.DATA_PATH);
|
||||||
global.CODE_PATH = global.GetNormalPathString(global.CODE_PATH);
|
global.CODE_PATH = global.GetNormalPathString(global.CODE_PATH);
|
||||||
import "../core/library"
|
import "../core/library"
|
||||||
|
import "./child-process"
|
||||||
global.READ_ONLY_DB = 1;
|
global.READ_ONLY_DB = 1;
|
||||||
var LastAlive = Date.now();
|
|
||||||
setTimeout(function() {
|
|
||||||
setInterval(CheckAlive, 1000);
|
|
||||||
}, 20000);
|
|
||||||
setInterval(function() {
|
|
||||||
process.send({ cmd: "Alive" });
|
|
||||||
}, 1000);
|
|
||||||
process.send({ cmd: "online", message: "OK" });
|
|
||||||
process.on('message', function(msg) {
|
process.on('message', function(msg) {
|
||||||
LastAlive = Date.now();
|
|
||||||
switch (msg.cmd) {
|
switch (msg.cmd) {
|
||||||
case "ALive":
|
|
||||||
break;
|
|
||||||
case "Exit":
|
|
||||||
process.exit(0);
|
|
||||||
break;
|
|
||||||
case "call":
|
|
||||||
var Err = 0;
|
|
||||||
var Ret;
|
|
||||||
try {
|
|
||||||
Ret = global[msg.Name](msg.Params);
|
|
||||||
} catch (e) {
|
|
||||||
Err = 1;
|
|
||||||
Ret = "" + e;
|
|
||||||
}
|
|
||||||
if (msg.id)
|
|
||||||
process.send({ cmd: "retcall", id: msg.id, Err: Err, Params: Ret });
|
|
||||||
break;
|
|
||||||
case "GETBLOCKHEADER":
|
case "GETBLOCKHEADER":
|
||||||
GETBLOCKHEADER(msg);
|
GETBLOCKHEADER(msg);
|
||||||
break;
|
break;
|
||||||
@ -69,27 +45,6 @@ process.on('message', function(msg) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
function CheckAlive() {
|
|
||||||
if (global.NOALIVE)
|
|
||||||
return;
|
|
||||||
var Delta = Date.now() - LastAlive;
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
process.on('uncaughtException', function(err) {
|
|
||||||
global.ToError(err.stack);
|
|
||||||
global.ToLog(err.stack);
|
|
||||||
global.TO_ERROR_LOG("STATIC-DB", 777, err);
|
|
||||||
global.ToLog("-----------------STATIC-DB EXIT------------------");
|
|
||||||
process.exit();
|
|
||||||
});
|
|
||||||
process.on('error' as any, function(err: TeraError) {
|
|
||||||
global.ToError("STATIC-DB:\n" + err.stack);
|
|
||||||
global.ToLog(err.stack);
|
|
||||||
});
|
|
||||||
import CServerDB from '../core/db/block-db'
|
import CServerDB from '../core/db/block-db'
|
||||||
import { DB_FORMAT } from '../constant/db-format';
|
import { DB_FORMAT } from '../constant/db-format';
|
||||||
var KeyPair = crypto.createECDH('secp256k1');
|
var KeyPair = crypto.createECDH('secp256k1');
|
||||||
|
@ -15,59 +15,16 @@ global.DATA_PATH = global.GetNormalPathString(global.DATA_PATH);
|
|||||||
global.CODE_PATH = global.GetNormalPathString(global.CODE_PATH);
|
global.CODE_PATH = global.GetNormalPathString(global.CODE_PATH);
|
||||||
import "../core/library"
|
import "../core/library"
|
||||||
global.READ_ONLY_DB = 0;
|
global.READ_ONLY_DB = 0;
|
||||||
var LastAlive = Date.now();
|
require("./child-process");
|
||||||
setTimeout(function() {
|
|
||||||
setInterval(CheckAlive, 1000);
|
|
||||||
}, 20000);
|
|
||||||
setInterval(global.PrepareStatEverySecond, 1000);
|
setInterval(global.PrepareStatEverySecond, 1000);
|
||||||
if (process.send) {
|
|
||||||
setInterval(function() {
|
|
||||||
process.send({ cmd: "Alive" });
|
|
||||||
}, 1000);
|
|
||||||
process.send({ cmd: "online", message: "OK" });
|
|
||||||
global.ToLogClient = function(Str, StrKey, bFinal) {
|
|
||||||
process.send({
|
|
||||||
cmd: "ToLogClient",
|
|
||||||
Str: "" + Str,
|
|
||||||
StrKey: StrKey,
|
|
||||||
bFinal: bFinal
|
|
||||||
});
|
|
||||||
};
|
|
||||||
}
|
|
||||||
process.on('message', function(msg) {
|
process.on('message', function(msg) {
|
||||||
LastAlive = Date.now();
|
|
||||||
switch (msg.cmd) {
|
switch (msg.cmd) {
|
||||||
case "ALive":
|
|
||||||
break;
|
|
||||||
case "Exit":
|
|
||||||
process.exit(0);
|
|
||||||
break;
|
|
||||||
case "call":
|
|
||||||
var Err = 0;
|
|
||||||
var Ret;
|
|
||||||
try {
|
|
||||||
Ret = global[msg.Name](msg.Params);
|
|
||||||
} catch (e) {
|
|
||||||
Err = 1;
|
|
||||||
Ret = "" + e;
|
|
||||||
}
|
|
||||||
if (msg.id)
|
|
||||||
process.send({
|
|
||||||
cmd: "retcall",
|
|
||||||
id: msg.id,
|
|
||||||
Err: Err,
|
|
||||||
Params: Ret
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
case "FindTX":
|
case "FindTX":
|
||||||
global.TreeFindTX.SaveValue(msg.TX, msg);
|
global.TreeFindTX.SaveValue(msg.TX, msg);
|
||||||
break;
|
break;
|
||||||
case "SetSmartEvent":
|
case "SetSmartEvent":
|
||||||
global.TreeFindTX.SaveValue("Smart:" + msg.Smart, 1);
|
global.TreeFindTX.SaveValue("Smart:" + msg.Smart, 1);
|
||||||
break;
|
break;
|
||||||
case "Eval":
|
|
||||||
global.EvalCode(msg.Code);
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -77,27 +34,6 @@ global.SetStatMode = function(Val) {
|
|||||||
return global.STAT_MODE;
|
return global.STAT_MODE;
|
||||||
};
|
};
|
||||||
|
|
||||||
function CheckAlive() {
|
|
||||||
if (global.NOALIVE)
|
|
||||||
return;
|
|
||||||
var Delta = Date.now() - LastAlive;
|
|
||||||
if (Delta > 100 * 1000) {
|
|
||||||
global.ToLog("TX-PROCESS: ALIVE TIMEOUT Stop and exit: " + Delta);
|
|
||||||
process.exit(0);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
process.on('uncaughtException', function(err) {
|
|
||||||
global.ToError(err.stack);
|
|
||||||
global.ToLog(err.stack);
|
|
||||||
global.TO_ERROR_LOG("TX-PROCESS", 777, err);
|
|
||||||
global.ToLog("-----------------TX-PROCESS EXIT------------------");
|
|
||||||
process.exit();
|
|
||||||
});
|
|
||||||
process.on('error' as any, function(err: TeraError) {
|
|
||||||
global.ToError("TX-PROCESS:\n" + err.stack);
|
|
||||||
global.ToLog(err.stack);
|
|
||||||
});
|
|
||||||
global.HTTP_PORT_NUMBER = 0;
|
global.HTTP_PORT_NUMBER = 0;
|
||||||
import CServerDB from '../core/transaction-validator'
|
import CServerDB from '../core/transaction-validator'
|
||||||
import { STreeBuffer } from '../core/base';
|
import { STreeBuffer } from '../core/base';
|
||||||
@ -356,13 +292,3 @@ function TXWriteAccHash() {
|
|||||||
return DataHash;
|
return DataHash;
|
||||||
};
|
};
|
||||||
global.TXWriteAccHash = TXWriteAccHash;
|
global.TXWriteAccHash = TXWriteAccHash;
|
||||||
global.EvalCode = function(Code) {
|
|
||||||
var Result;
|
|
||||||
try {
|
|
||||||
var ret = eval(Code);
|
|
||||||
Result = JSON.stringify(ret, undefined, 4);
|
|
||||||
} catch (e) {
|
|
||||||
Result = "" + e;
|
|
||||||
}
|
|
||||||
return Result;
|
|
||||||
};
|
|
||||||
|
@ -21,39 +21,15 @@ global.DATA_PATH = global.GetNormalPathString(global.DATA_PATH);
|
|||||||
global.CODE_PATH = global.GetNormalPathString(global.CODE_PATH);
|
global.CODE_PATH = global.GetNormalPathString(global.CODE_PATH);
|
||||||
import "../core/library"
|
import "../core/library"
|
||||||
import "../core/geo"
|
import "../core/geo"
|
||||||
|
import "./child-process"
|
||||||
global.READ_ONLY_DB = 1;
|
global.READ_ONLY_DB = 1;
|
||||||
global.MAX_STAT_PERIOD = 600;
|
global.MAX_STAT_PERIOD = 600;
|
||||||
var HostNodeList = [];
|
var HostNodeList = [];
|
||||||
var AllNodeList = [];
|
var AllNodeList = [];
|
||||||
var NodeBlockChain = [];
|
var NodeBlockChain = [];
|
||||||
var LastAlive = Date.now();
|
|
||||||
setTimeout(function() {
|
|
||||||
setInterval(CheckAlive, 1000);
|
|
||||||
}, 20000);
|
|
||||||
setInterval(function() {
|
|
||||||
process.send({ cmd: "Alive" });
|
|
||||||
}, 1000);
|
|
||||||
process.send({ cmd: "online", message: "OK" });
|
|
||||||
process.on('message', function(msg) {
|
process.on('message', function(msg) {
|
||||||
LastAlive = Date.now();
|
|
||||||
switch (msg.cmd) {
|
switch (msg.cmd) {
|
||||||
case "ALive":
|
|
||||||
break;
|
|
||||||
case "Exit":
|
|
||||||
Exit();
|
|
||||||
break;
|
|
||||||
case "call":
|
|
||||||
var Err = 0;
|
|
||||||
var Ret;
|
|
||||||
try {
|
|
||||||
Ret = global[msg.Name](msg.Params);
|
|
||||||
} catch (e) {
|
|
||||||
Err = 1;
|
|
||||||
Ret = "" + e;
|
|
||||||
}
|
|
||||||
if (msg.id)
|
|
||||||
process.send({ cmd: "retcall", id: msg.id, Err: Err, Params: Ret });
|
|
||||||
break;
|
|
||||||
case "retcall":
|
case "retcall":
|
||||||
var F = global.GlobalRunMap[msg.id];
|
var F = global.GlobalRunMap[msg.id];
|
||||||
if (F) {
|
if (F) {
|
||||||
@ -99,38 +75,16 @@ process.on('message', function(msg) {
|
|||||||
var RedirectServer;
|
var RedirectServer;
|
||||||
var HostingServer;
|
var HostingServer;
|
||||||
|
|
||||||
function Exit() {
|
global.OnExit = function() {
|
||||||
global.ToLogWeb("=Exit1=");
|
|
||||||
if (RedirectServer)
|
if (RedirectServer)
|
||||||
RedirectServer.close();
|
RedirectServer.close();
|
||||||
if (HostingServer)
|
if (HostingServer)
|
||||||
HostingServer.close();
|
HostingServer.close();
|
||||||
global.ToLogWeb("=Exit2=");
|
|
||||||
process.exit(0);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
function CheckAlive() {
|
|
||||||
if (global.NOALIVE)
|
|
||||||
return;
|
|
||||||
var Delta = Date.now() - LastAlive;
|
|
||||||
if (Delta > global.CHECK_STOP_CHILD_PROCESS) {
|
|
||||||
Exit();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
process.on('uncaughtException', function(err) {
|
|
||||||
global.ToError(err.stack);
|
|
||||||
global.ToLog(err.stack);
|
|
||||||
global.TO_ERROR_LOG("HOSTING", 777, err);
|
|
||||||
global.ToLog("-----------------HOSTING EXIT------------------", 0);
|
|
||||||
process.exit();
|
|
||||||
});
|
|
||||||
process.on('error' as any, function(err: TeraError) {
|
|
||||||
global.ToError("HOSTING:\n" + err.stack);
|
|
||||||
global.ToLog(err.stack);
|
|
||||||
});
|
|
||||||
if (!global.HTTP_HOSTING_PORT) {
|
if (!global.HTTP_HOSTING_PORT) {
|
||||||
global.ToLogTrace("global.HTTP_HOSTING_PORT=" + global.HTTP_HOSTING_PORT);
|
global.ToLogTrace("global.HTTP_HOSTING_PORT=" + global.HTTP_HOSTING_PORT);
|
||||||
|
global.OnExit();
|
||||||
process.exit();
|
process.exit();
|
||||||
}
|
}
|
||||||
var CServerDB = require("../core/db/block-db");
|
var CServerDB = require("../core/db/block-db");
|
||||||
@ -239,17 +193,18 @@ function RunListenServer() {
|
|||||||
HostingServer.Server.close();
|
HostingServer.Server.close();
|
||||||
if (!bWasRun)
|
if (!bWasRun)
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
RunListenServer();
|
if (!bWasRun)
|
||||||
|
RunListenServer();
|
||||||
}, TimeToRerun);
|
}, TimeToRerun);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
global.ToError("H##6");
|
global.ToError("H##6");
|
||||||
global.ToError(err);
|
global.ToError(err);
|
||||||
});
|
});
|
||||||
global.ToLogClient("Prepare to run WEB-server on port: " + global.HTTP_HOSTING_PORT);
|
global.ToLog("Prepare to run WEB-server on port: " + global.HTTP_HOSTING_PORT);
|
||||||
HostingServer.listen(global.HTTP_HOSTING_PORT, global.LISTEN_IP, function() {
|
HostingServer.listen(global.HTTP_HOSTING_PORT, global.LISTEN_IP, function() {
|
||||||
if (!bWasRun)
|
if (!bWasRun)
|
||||||
global.ToLogClient("Run WEB-server on " + global.LISTEN_IP + ":" + global.HTTP_HOSTING_PORT);
|
global.ToLog("Run WEB-server on " + global.LISTEN_IP + ":" + global.HTTP_HOSTING_PORT);
|
||||||
bWasRun = 1;
|
bWasRun = 1;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@ -776,20 +731,6 @@ HostingCaller.GetSupply = function(Params) {
|
|||||||
HostingCaller.GetTotalSupply = function(Params) {
|
HostingCaller.GetTotalSupply = function(Params) {
|
||||||
return "" + global.TOTAL_SUPPLY_TERA;
|
return "" + global.TOTAL_SUPPLY_TERA;
|
||||||
};
|
};
|
||||||
global.GlobalRunID = 0;
|
|
||||||
global.GlobalRunMap = {};
|
|
||||||
process.RunRPC = function(Name, Params, F) {
|
|
||||||
if (F) {
|
|
||||||
global.GlobalRunID++;
|
|
||||||
try {
|
|
||||||
process.send({ cmd: "call", id: global.GlobalRunID, Name: Name, Params: Params });
|
|
||||||
global.GlobalRunMap[global.GlobalRunID] = F;
|
|
||||||
} catch (e) {
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
process.send({ cmd: "call", id: 0, Name: Name, Params: Params });
|
|
||||||
}
|
|
||||||
};
|
|
||||||
setInterval(function() {
|
setInterval(function() {
|
||||||
if (global.SERVER)
|
if (global.SERVER)
|
||||||
global.SERVER.Close();
|
global.SERVER.Close();
|
||||||
|
@ -551,9 +551,6 @@ export default class AccountApp extends DApp {
|
|||||||
Account.Adviser = TR.Adviser
|
Account.Adviser = TR.Adviser
|
||||||
Account.Value.Smart = TR.Smart
|
Account.Value.Smart = TR.Smart
|
||||||
this.WriteStateTR(Account, TrNum)
|
this.WriteStateTR(Account, TrNum)
|
||||||
if (global.CompareArr(Account.PubKey, global.WALLET.PubKeyArr) === 0) {
|
|
||||||
global.WALLET.OnCreateAccount(Account)
|
|
||||||
}
|
|
||||||
this.ResultTx = Account.Num
|
this.ResultTx = Account.Num
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -860,6 +860,7 @@ function $SetValue(ID, CoinSum) {
|
|||||||
if (typeof CoinSum === "number") {
|
if (typeof CoinSum === "number") {
|
||||||
CoinSum = global.COIN_FROM_FLOAT(CoinSum);
|
CoinSum = global.COIN_FROM_FLOAT(CoinSum);
|
||||||
}
|
}
|
||||||
|
CHECKSUM(CoinSum);
|
||||||
if (CoinSum.SumCENT >= 1e9) {
|
if (CoinSum.SumCENT >= 1e9) {
|
||||||
throw "ERROR SumCENT>=1e9";
|
throw "ERROR SumCENT>=1e9";
|
||||||
}
|
}
|
||||||
@ -906,6 +907,7 @@ function $Move(FromID, ToID, CoinSum, Description) {
|
|||||||
if (typeof CoinSum === "number") {
|
if (typeof CoinSum === "number") {
|
||||||
CoinSum = global.COIN_FROM_FLOAT(CoinSum);
|
CoinSum = global.COIN_FROM_FLOAT(CoinSum);
|
||||||
}
|
}
|
||||||
|
CHECKSUM(CoinSum);
|
||||||
if (CoinSum.SumCENT >= 1e9) {
|
if (CoinSum.SumCENT >= 1e9) {
|
||||||
throw "ERROR SumCENT>=1e9";
|
throw "ERROR SumCENT>=1e9";
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user