@@ -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)
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user