forked from circlecloud/tera
@@ -1,42 +0,0 @@
|
||||
/*
|
||||
* @project: TERA
|
||||
* @version: Development (beta)
|
||||
* @license: MIT (not for evil)
|
||||
* @copyright: Yuriy Ivanov 2017-2019 [progr76@gmail.com]
|
||||
* Web: https://terafoundation.org
|
||||
* Twitter: https://twitter.com/terafoundation
|
||||
* Telegram: https://web.telegram.org/#/im?p=@terafoundation
|
||||
*/
|
||||
import * as crypto from 'crypto'
|
||||
global.HTTPCaller.CreateAccount = function(Params, response) {
|
||||
if (typeof Params === "object" && Params.Name && Params.PubKey) {
|
||||
var TYPE_TRANSACTION_CREATE = 100;
|
||||
var TR = {
|
||||
Type: global.TYPE_TRANSACTION_CREATE,
|
||||
Currency: Params.Currency,
|
||||
PubKey: global.GetArrFromHex(Params.PubKey), Description: Params.Name,
|
||||
Smart: Params.Smart, Adviser: 0,
|
||||
};
|
||||
global.BufLib.GetBufferFromObject(TR, global.FORMAT_CREATE, 1000, {});
|
||||
return { result: 1 };
|
||||
}
|
||||
return { result: 0 };
|
||||
};
|
||||
var MaxCountViewRows = global.HTTP_MAX_COUNT_ROWS;
|
||||
global.HTTPCaller.GetBalance = function(Params) {
|
||||
if (typeof Params === "object") {
|
||||
var arr = global.DApps.Accounts.GetRowsAccounts(global.ParseNum(Params.AccountID), 1);
|
||||
if (arr.length) {
|
||||
arr[0].result = 1;
|
||||
return arr[0];
|
||||
}
|
||||
}
|
||||
return { result: 0 };
|
||||
};
|
||||
global.HTTPCaller.GenerateKeys = function(Params) {
|
||||
var KeyPair = crypto.createECDH('secp256k1');
|
||||
var PrivKey = global.sha3(crypto.randomBytes(32));
|
||||
KeyPair.setPrivateKey(Buffer.from(PrivKey));
|
||||
var PubKey = KeyPair.getPublicKey('' as any, 'compressed');
|
||||
return { result: 1, PrivKey: global.GetHexFromArr(PrivKey), PubKey: global.GetHexFromArr(PubKey) };
|
||||
};
|
||||
@@ -1,10 +0,0 @@
|
||||
/*
|
||||
* @project: TERA
|
||||
* @version: Development (beta)
|
||||
* @license: MIT (not for evil)
|
||||
* @copyright: Yuriy Ivanov 2017-2019 [progr76@gmail.com]
|
||||
* Web: https://terafoundation.org
|
||||
* Twitter: https://twitter.com/terafoundation
|
||||
* Telegram: https://web.telegram.org/#/im?p=@terafoundation
|
||||
*/
|
||||
|
||||
@@ -279,7 +279,7 @@ class SMemBuffer {
|
||||
this.MetaMap1 = {}
|
||||
}
|
||||
};
|
||||
class STreeBuffer {
|
||||
export class STreeBuffer {
|
||||
KeyType
|
||||
MetaTree1
|
||||
MetaTree2
|
||||
|
||||
@@ -10,6 +10,8 @@
|
||||
|
||||
"use strict";
|
||||
import CBlock from './block-loader'
|
||||
import { RBTree } from './library'
|
||||
import { STreeBuffer } from './base';
|
||||
require('./library');
|
||||
require('./crypto-library');
|
||||
const TX_PROCESS_TIME = 100;
|
||||
@@ -52,7 +54,7 @@ export default class CConsensus extends CBlock {
|
||||
this.CurrentBlockNum = 0
|
||||
this.SendBlockID = 0
|
||||
this.RelayMode = false
|
||||
this.TreeSendPacket = new global.RBTree(global.CompareItemHash)
|
||||
this.TreeSendPacket = new RBTree(global.CompareItemHash)
|
||||
if (!global.ADDRLIST_MODE && !this.VirtualMode) {
|
||||
this.idBlockChainTimer = setInterval(this.StartBlockChain.bind(this), global.CONSENSUS_PERIOD_TIME - 5)
|
||||
setInterval(this.DoTransfer.bind(this), global.CONSENSUS_CHECK_TIME)
|
||||
@@ -86,8 +88,8 @@ export default class CConsensus extends CBlock {
|
||||
Context.TransferFromAddr = {}
|
||||
Context.LevelsTransfer = []
|
||||
Context.ErrRun = ""
|
||||
Context.PowTxTree = new global.RBTree(global.CompareItemTimePow)
|
||||
Context.PowTicketTree = new global.RBTree(global.CompareItemTimePow)
|
||||
Context.PowTxTree = new RBTree(global.CompareItemTimePow)
|
||||
Context.PowTicketTree = new RBTree(global.CompareItemTimePow)
|
||||
Context.bSave = false
|
||||
Context.PrevHash = undefined
|
||||
Context.TreeHash = undefined
|
||||
@@ -127,7 +129,7 @@ export default class CConsensus extends CBlock {
|
||||
return Context;
|
||||
}
|
||||
StartConsensus() {
|
||||
if (!global.global.CAN_START)
|
||||
if (!global.CAN_START)
|
||||
return;
|
||||
var StartBlockNum = global.GetCurrentBlockNumByTime();
|
||||
if (StartBlockNum < global.BLOCK_PROCESSING_LENGTH2)
|
||||
@@ -137,8 +139,7 @@ export default class CConsensus extends CBlock {
|
||||
if (!Block0.Active) {
|
||||
global.AddInfoBlock(Block0, "Activate")
|
||||
this.StartBlock(Block0)
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
global.AddInfoBlock(Block0, "Was Active")
|
||||
}
|
||||
}
|
||||
@@ -368,12 +369,10 @@ export default class CConsensus extends CBlock {
|
||||
this.AddTrToBlockQuote(Block, Data.Array[i], 1)
|
||||
}
|
||||
}
|
||||
static
|
||||
TRANSFERTX_F() {
|
||||
static TRANSFERTX_F() {
|
||||
return "{BlockNum:uint, Array:[{body:tr}]}";
|
||||
}
|
||||
static
|
||||
GETTRANSFERTX_F() {
|
||||
static GETTRANSFERTX_F() {
|
||||
return "{BlockNum:uint, TicketArray:[{HashTicket:arr10}]}";
|
||||
}
|
||||
GETTRANSFERTX(Info, CurTime) {
|
||||
@@ -696,7 +695,7 @@ export default class CConsensus extends CBlock {
|
||||
}
|
||||
AddPOWToMaxTree(POW, item) {
|
||||
if (!POW.MaxTree) {
|
||||
POW.MaxTree = new global.RBTree(function(a, b) {
|
||||
POW.MaxTree = new RBTree(function(a: any, b: any) {
|
||||
return global.CompareArr(a.PowHash, b.PowHash);
|
||||
})
|
||||
}
|
||||
@@ -1396,7 +1395,7 @@ export default class CConsensus extends CBlock {
|
||||
}
|
||||
}
|
||||
};
|
||||
global.TreeBlockBuf = new global.STreeBuffer(50 * 1000, global.CompareItemHashSimple, "string");
|
||||
global.TreeBlockBuf = new STreeBuffer(50 * 1000, global.CompareItemHashSimple, "string");
|
||||
var PrevTimeIdle = 0;
|
||||
OnTimeIdle();
|
||||
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
"use strict";
|
||||
import * as fs from 'fs'
|
||||
import CRest from './rest-loader'
|
||||
import { TYPE_TRANSACTION } from '../constant/account';
|
||||
import { STreeBuffer } from './base';
|
||||
//import * as crypto from 'crypto';
|
||||
require('./block-loader-const');
|
||||
const STAT_BLOCK_LOAD_PERIOD = global.CONSENSUS_PERIOD_TIME / 5;
|
||||
@@ -356,7 +358,7 @@ export default class CBlock extends CRest {
|
||||
Node = arr[this.TaskNodeIndex % arr.length]
|
||||
}
|
||||
if (Node.Active) {
|
||||
if (!Node.INFO || !Node.INFO.WasPing || Node.StopGetBlock || (Node.INFO.CheckPointHashDB && global.global.CHECK_POINT.BlockNum && global.CompareArr(global.global.CHECK_POINT.Hash,
|
||||
if (!Node.INFO || !Node.INFO.WasPing || Node.StopGetBlock || (Node.INFO.CheckPointHashDB && global.CHECK_POINT.BlockNum && global.CompareArr(global.CHECK_POINT.Hash,
|
||||
Node.INFO.CheckPointHashDB) !== 0)) {
|
||||
timewait = true
|
||||
continue;
|
||||
@@ -415,8 +417,7 @@ export default class CBlock extends CRest {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
static
|
||||
GETBLOCKHEADER_F() {
|
||||
static GETBLOCKHEADER_F() {
|
||||
return "{\
|
||||
Foward:byte,\
|
||||
BlockNum:uint,\
|
||||
@@ -425,8 +426,7 @@ export default class CBlock extends CRest {
|
||||
IsSum:byte\
|
||||
}";
|
||||
}
|
||||
static
|
||||
GETBLOCKHEADER100_F() {
|
||||
static GETBLOCKHEADER100_F() {
|
||||
return "{\
|
||||
BlockNum:uint,\
|
||||
Hash:hash,\
|
||||
@@ -773,8 +773,7 @@ export default class CBlock extends CRest {
|
||||
else {
|
||||
if (global.IsZeroArr(Block.TreeHash)) {
|
||||
Res = this.WriteBlockDB(Block)
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
global.ToLogTrace("global.IsZeroArr(Block.TreeHash)")
|
||||
throw "global.IsZeroArr(Block.TreeHash)";
|
||||
}
|
||||
@@ -987,7 +986,7 @@ export default class CBlock extends CRest {
|
||||
}
|
||||
if (arrContent.length > 0 && Data.BlockNum % global.PERIOD_ACCOUNT_HASH === 0) {
|
||||
var TR = arrContent[0];
|
||||
if (TR[0] === global.TYPE_TRANSACTION_ACC_HASH) {
|
||||
if (TR[0] === TYPE_TRANSACTION.TYPE_TRANSACTION_ACC_HASH) {
|
||||
if (!global.DApps.Accounts.TRCheckAccountHash(TR, Data.BlockNum)) {
|
||||
global.ToLog(`global.DApps.Accounts.TRCheckAccountHash(TR, Data.BlockNum) ${JSON.stringify(TR)}, ${Data.BlockNum}`)
|
||||
if (!this.BADHashCount)
|
||||
@@ -1295,8 +1294,7 @@ global.LoadBlockFromNetwork = function(Params, F) {
|
||||
var ResError;
|
||||
if (!Block.arrContent || Block.arrContent.length === 0) {
|
||||
ResError = 1;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
ResError = 0;
|
||||
global.SERVER.WriteBlockDB(Block);
|
||||
}
|
||||
@@ -1310,4 +1308,4 @@ global.LoadBlockFromNetwork = function(Params, F) {
|
||||
F(1);
|
||||
}
|
||||
};
|
||||
global.HistoryBlockBuf = new global.STreeBuffer(global.HISTORY_BLOCK_COUNT * 1000, global.CompareItemHashSimple, "string");
|
||||
global.HistoryBlockBuf = new STreeBuffer(global.HISTORY_BLOCK_COUNT * 1000, global.CompareItemHashSimple, "string");
|
||||
|
||||
@@ -28,6 +28,7 @@ const MAX_PERIOD_GETNODES = 120 * 1000;
|
||||
global.MIN_PERIOD_PING = 4 * 1000;
|
||||
const MAX_PERIOD_PING = 120 * 1000;
|
||||
global.MAX_PING_FOR_CONNECT = 400;
|
||||
const CAN_START_TIME_AVG = 200;
|
||||
var MAX_TIME_CORRECT = 3 * 3600 * 1000;
|
||||
global.MAX_WAIT_PERIOD_FOR_HOT = 4 * global.CONSENSUS_PERIOD_TIME;
|
||||
const PERIOD_FOR_START_CHECK_TIME = 300;
|
||||
@@ -347,7 +348,7 @@ export default class CConnect extends CMessages {
|
||||
}
|
||||
global.ADD_TO_STAT("MAX:PING_TIME", DeltaTime)
|
||||
if (!global.CAN_START)
|
||||
if (Times && Times.Count >= 1 && Times.AvgDelta <= 200) {
|
||||
if (Times && Times.Count >= 1 && Times.AvgDelta <= CAN_START_TIME_AVG) {
|
||||
global.ToLog("****************************************** CAN_START")
|
||||
global.CAN_START = true
|
||||
}
|
||||
@@ -369,8 +370,7 @@ export default class CConnect extends CMessages {
|
||||
this.TruncateBlockDB(this.BlockNumDB)
|
||||
this.StartSyncBlockchain(Node, 0, 1)
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
Node.NextConnectDelta = 60 * 1000
|
||||
global.ToLog("Error Sign CheckPoint=" + Data.CheckPoint.BlockNum + " from " + global.NodeInfo(Node))
|
||||
this.AddCheckErrCount(Node, 10, "Error Sign CheckPoint")
|
||||
@@ -1280,8 +1280,7 @@ export default class CConnect extends CMessages {
|
||||
global.AddNodeInfo(Node, "DeleteFromActive")
|
||||
this.DeleteNodeFromActive(Node)
|
||||
}
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
this.DetectGrayMode()
|
||||
for (var Level = 0; Level < ArrTree.length; Level++) {
|
||||
var arr = ArrTree[Level];
|
||||
|
||||
@@ -72,8 +72,8 @@ global.GetPublicKeyFromAddres = function(Arr) {
|
||||
};
|
||||
global.CheckDevelopSign = function(SignArr, Sign) {
|
||||
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]);
|
||||
for (var i = 0; i < global.DEVELOP_PUB_KEY_ARR.length; i++) {
|
||||
var Result = secp256k1.verify(hash, Buffer.from(Sign), global.DEVELOP_PUB_KEY_ARR[i]);
|
||||
if (Result)
|
||||
return 1;
|
||||
}
|
||||
@@ -963,13 +963,12 @@ global.IsDeveloperAccount = function(Key) {
|
||||
global.DEVELOP_PUB_KEY_ARR = ["0222263942b11f7a78e11c43903094f870a2bf728bc8be085023b4eaf4e6228cd9", "02250c8c8f7f7e1468cdc5e9b9203841ba14250e2f480f77ebcd502f3e691506d8",
|
||||
"027c0caec4e6f8f08d220f6dab24bb6f53d3f1d7b95231216805d9fac85d34a95f", "025defd5b884cc02f6948cd0d62b03d7b7445bf942206ab935158b6be8f0f7a2ce",
|
||||
"024a97d69cd81c965f162b4b8b7b506263bc8aec8dbcea9eec59f73b5b470a0be1",];
|
||||
let DEVELOP_PUB_KEY_ARR: any = global.DEVELOP_PUB_KEY_ARR;
|
||||
for (var i = 0; i < DEVELOP_PUB_KEY_ARR.length; i++)
|
||||
DEVELOP_PUB_KEY_ARR[i] = Buffer.from(global.GetArrFromHex(DEVELOP_PUB_KEY_ARR[i]));
|
||||
global.DEVELOP_PUB_KEY = DEVELOP_PUB_KEY_ARR[0];
|
||||
for (var i = 0; i < global.DEVELOP_PUB_KEY_ARR.length; i++)
|
||||
global.DEVELOP_PUB_KEY_ARR[i] = Buffer.from(global.GetArrFromHex(global.DEVELOP_PUB_KEY_ARR[i]));
|
||||
global.DEVELOP_PUB_KEY = global.DEVELOP_PUB_KEY_ARR[0];
|
||||
global.DEVELOP_PUB_KEY0 = Buffer.from(global.GetArrFromHex("022e80aa78bc07c72781fac12488096f0bfa7b4f48fbab0f2a92e208d1ee3654df"));
|
||||
if (global.LOCAL_RUN) {
|
||||
global.DEVELOP_PUB_KEY0 = Buffer.from(global.GetArrFromHex("026A04AB98D9E4774AD806E302DDDEB63BEA16B5CB5F223EE77478E861BB583EB3"));
|
||||
global.DEVELOP_PUB_KEY0 = Buffer.from(global.GetArrFromHex("03047E3BB0F0C1C46F478BDFA7DDAF908F5AEA0B303F33EB53ACC4F0FD14475A90"));
|
||||
global.DEVELOP_PUB_KEY = global.DEVELOP_PUB_KEY0;
|
||||
}
|
||||
global.ARR_PUB_KEY = ["027ae0dce92d8be1f893525b226695ddf0fe6ad756349a76777ff51f3b59067d70", "02769165a6f9950d023a415ee668b80bb96b5c9ae2035d97bdfb44f356175a44ff",
|
||||
@@ -977,12 +976,11 @@ global.ARR_PUB_KEY = ["027ae0dce92d8be1f893525b226695ddf0fe6ad756349a76777ff51f3
|
||||
"0270e0c5acb8eefe7faddac45503da4885e02fb554975d12907f6c33ac6c6bdba5", "0202f2aad628f46d433faf70ba6bf12ab9ed96a46923b592a72508dc43af36cb80",
|
||||
"0254f373fc44ac4a3e80ec8cb8cc3693a856caa82e0493067bdead78ce8ec354b8", "027617f9511b0b0cdbda8f3e17907732731296321846f3fd6fd19460f7227d9482",
|
||||
];
|
||||
// let GetHexFromArr = global.GetHexFromArr;
|
||||
if (global.TEST_NETWORK || global.LOCAL_RUN) {
|
||||
for (var i = 0; i < 100; i++)
|
||||
global.ARR_PUB_KEY[i] = global.GetHexFromArr(global.DEVELOP_PUB_KEY0);
|
||||
global.DEVELOP_PUB_KEY_ARR = [global.DEVELOP_PUB_KEY0];
|
||||
global.DEVELOP_PUB_KEY = DEVELOP_PUB_KEY_ARR[0];
|
||||
global.DEVELOP_PUB_KEY = global.DEVELOP_PUB_KEY_ARR[0];
|
||||
}
|
||||
declare global {
|
||||
namespace NodeJS {
|
||||
@@ -1030,7 +1028,7 @@ declare global {
|
||||
Utf8ArrayToStr: Function;
|
||||
GetArrFromStr: Function;
|
||||
IsDeveloperAccount: Function;
|
||||
DEVELOP_PUB_KEY_ARR: Buffer[] | string[];
|
||||
DEVELOP_PUB_KEY_ARR: any[];
|
||||
DEVELOP_PUB_KEY: any;
|
||||
DEVELOP_PUB_KEY0: Buffer;
|
||||
ARR_PUB_KEY: any;
|
||||
|
||||
@@ -668,11 +668,12 @@ export default class CDB extends CCode {
|
||||
if (Block.BlockNum < 16 || Block.Miner > MaxAccount)
|
||||
Block.Miner = 0
|
||||
if (bMinerName && Block.Miner) {
|
||||
var Item = global.DApps.Accounts.ReadState(Block.Miner);
|
||||
if (Item && Item.Name)
|
||||
Block.MinerName = Item.Name.substr(0, 8)
|
||||
else
|
||||
Block.MinerName = ""
|
||||
Block.MinerName = ""
|
||||
if (Block.Miner) {
|
||||
var Item = global.DApps.Accounts.ReadState(Block.Miner);
|
||||
if (Item && Item.Name)
|
||||
Block.MinerName = Item.Name.substr(0, 8)
|
||||
}
|
||||
}
|
||||
var Value = global.GetHashFromSeqAddr(Block.SeqHash, Block.AddrHash, Block.BlockNum, Block.PrevHash);
|
||||
Block.Hash1 = Value.Hash1
|
||||
@@ -687,8 +688,7 @@ export default class CDB extends CCode {
|
||||
try {
|
||||
if (!eval(Filter))
|
||||
continue;
|
||||
}
|
||||
catch (e) {
|
||||
} catch (e) {
|
||||
if (!WasError)
|
||||
global.ToLog(e)
|
||||
WasError = 1
|
||||
@@ -844,7 +844,7 @@ export default class CDB extends CCode {
|
||||
var StartNumStat = this.StatMap.StartBlockNum;
|
||||
var FinishNumStat = this.StatMap.StartBlockNum + this.StatMap.Length - 1;
|
||||
var CountReadDB = 0;
|
||||
var arr = new Array(MinLength);
|
||||
let arr = new Array(MinLength);
|
||||
var arrmy = new Array(MinLength);
|
||||
for (var num = start; num < finish; num++) {
|
||||
var i = num - start;
|
||||
@@ -884,7 +884,7 @@ export default class CDB extends CCode {
|
||||
this.StatMap["POWER_BLOCKCHAIN"] = arr
|
||||
this.StatMap["POWER_MY_WIN"] = arrmy
|
||||
}
|
||||
arr = this.StatMap[name];
|
||||
var arr = this.StatMap[name];
|
||||
if (!arr)
|
||||
arr = []
|
||||
var arrT = this.StatMap["POWER_BLOCKCHAIN"];
|
||||
@@ -940,11 +940,9 @@ export default class CDB extends CCode {
|
||||
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, global.BlockDB.SumHash) !== 0) {
|
||||
if (!BlockDB || global.CompareArr(Block.SumHash, BlockDB.SumHash) !== 0) {
|
||||
arr0 = undefined
|
||||
}
|
||||
else {
|
||||
}
|
||||
}
|
||||
}
|
||||
var i0 = 0;
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
import * as fs from 'fs'
|
||||
import Db from './db'
|
||||
|
||||
class DBRow extends Db {
|
||||
export default class DBRow extends Db {
|
||||
FileName;
|
||||
DataSize;
|
||||
Format;
|
||||
@@ -227,5 +227,3 @@ class DBRow extends Db {
|
||||
this.CloseDBFile(this.FileName)
|
||||
}
|
||||
};
|
||||
|
||||
export default DBRow
|
||||
@@ -11,7 +11,7 @@
|
||||
"use strict";
|
||||
import * as fs from 'fs'
|
||||
|
||||
class Db {
|
||||
export default class Db {
|
||||
DBMap;
|
||||
LastHash;
|
||||
WasUpdate;
|
||||
@@ -112,5 +112,3 @@ declare global {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default Db;
|
||||
@@ -12,10 +12,10 @@
|
||||
import './crypto-library'
|
||||
import './log'
|
||||
import { secp256k1 } from '../core/library'
|
||||
import http = require('http');
|
||||
import url = require('url');
|
||||
import fs = require('fs');
|
||||
import querystring = require('querystring');
|
||||
import * as http from 'http'
|
||||
import * as url from 'url'
|
||||
import * as fs from 'fs'
|
||||
import * as querystring from 'querystring'
|
||||
import * as crypto from 'crypto';
|
||||
|
||||
var BlockTree = new global.STreeBuffer(300 * 1000, global.CompareItemHashSimple, "number");
|
||||
@@ -529,7 +529,7 @@ HTTPCaller.GetWalletInfo = function(Params) {
|
||||
CurTime: Date.now(),
|
||||
IsDevelopAccount: global.IsDeveloperAccount(global.WALLET.PubKeyArr),
|
||||
AccountMap: global.WALLET.AccountMap,
|
||||
ArrLog: global.global.ArrLogClient,
|
||||
ArrLog: global.ArrLogClient,
|
||||
MaxAccID: global.DApps.Accounts.GetMaxAccount(),
|
||||
MaxActNum: global.DApps.Accounts.GetActsMaxNum(),
|
||||
MaxDappsID: global.DApps.Smart.GetMaxNum(),
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
"use strict";
|
||||
import CDB from './db/block-db'
|
||||
import { TYPE_TRANSACTION } from '../constant/account';
|
||||
export default class CRest extends CDB {
|
||||
LoadRestContext
|
||||
BlockNumDB
|
||||
@@ -164,7 +165,7 @@ export default class CRest extends CDB {
|
||||
var FindTx = undefined;
|
||||
for (var n = 0; n < Data.arrContent.length; n++) {
|
||||
var Body = Data.arrContent[n];
|
||||
if (Body[0] === global.TYPE_TRANSACTION_ACC_HASH) {
|
||||
if (Body[0] === TYPE_TRANSACTION.TYPE_TRANSACTION_ACC_HASH) {
|
||||
try {
|
||||
FindTx = global.BufLib.GetObjectFromBuffer(Body, global.FORMAT_ACCOUNT_HASH3, {})
|
||||
}
|
||||
@@ -371,7 +372,7 @@ export default class CRest extends CDB {
|
||||
}
|
||||
}
|
||||
GetBlockArrFromBuffer_Load(BufRead, Info?): any {
|
||||
|
||||
//defiend in block-loader.ts(CBlock)
|
||||
}
|
||||
RETBLOCKHEADER_REST(Info, CurTime) {
|
||||
if (Info.Node.SendRestGetHeader === 2)
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
import net = require("net");
|
||||
import * as net from 'net'
|
||||
// import dgram = require("dgram");
|
||||
import * as crypto from 'crypto';
|
||||
import "./library"
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
"use strict";
|
||||
import CConsensus from './block-exchange'
|
||||
import { TYPE_TRANSACTION } from '../constant/account';
|
||||
require("../system/dapp");
|
||||
require("../system/accounts");
|
||||
require("../system/smart");
|
||||
@@ -175,7 +176,7 @@ export default class CSmartContract extends CConsensus {
|
||||
return - 2;
|
||||
if (Tr.num !== BlockNum)
|
||||
return - 3;
|
||||
if (Tr.body[0] === global.TYPE_TRANSACTION_ACC_HASH)
|
||||
if (Tr.body[0] === TYPE_TRANSACTION.TYPE_TRANSACTION_ACC_HASH)
|
||||
return - 4;
|
||||
return 1;
|
||||
}
|
||||
@@ -205,7 +206,7 @@ export default class CSmartContract extends CConsensus {
|
||||
return;
|
||||
var Item = global.DApps.Accounts.GetAccountHashItem(BlockNumHash);
|
||||
if (Item) {
|
||||
var Body = [global.TYPE_TRANSACTION_ACC_HASH];
|
||||
var Body = [TYPE_TRANSACTION.TYPE_TRANSACTION_ACC_HASH];
|
||||
global.WriteUintToArr(Body, BlockNumHash)
|
||||
global.WriteArrToArr(Body, Item.AccHash, 32)
|
||||
if (BlockNumHash >= global.START_BLOCK_ACCOUNT_HASH3) {
|
||||
|
||||
@@ -132,7 +132,7 @@ export default class CMessages extends CSmartContract {
|
||||
}
|
||||
this.SendF(Info.Node, { "Method": "MESSAGE", "Context": Info.Context, "Data": { Arr: arr } }, BufLength)
|
||||
}
|
||||
AddTransaction(Tr, ToAll) {
|
||||
AddTransaction(Tr, ToAll?) {
|
||||
Tr.ToAll = ToAll
|
||||
var Res = this.IsValidTransaction(Tr, this.CurrentBlockNum);
|
||||
if (Res <= 0 && Res !== - 3)
|
||||
|
||||
Reference in New Issue
Block a user