0.886
This commit is contained in:
45
Source/core/api/api-exchange.js
Normal file
45
Source/core/api/api-exchange.js
Normal file
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* @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
|
||||
*/
|
||||
|
||||
const crypto = require('crypto');
|
||||
HTTPCaller.CreateAccount = function (Params,response)
|
||||
{
|
||||
if(typeof Params === "object" && Params.Name && Params.PubKey)
|
||||
{
|
||||
var TYPE_TRANSACTION_CREATE = 100;
|
||||
var TR = {Type:TYPE_TRANSACTION_CREATE, Currency:Params.Currency, PubKey:GetArrFromHex(Params.PubKey), Description:Params.Name,
|
||||
Smart:Params.Smart, Adviser:0, };
|
||||
var Body = BufLib.GetBufferFromObject(TR, FORMAT_CREATE, 1000, {});
|
||||
return {result:1};
|
||||
}
|
||||
return {result:0};
|
||||
};
|
||||
var MaxCountViewRows = global.HTTP_MAX_COUNT_ROWS;
|
||||
HTTPCaller.GetBalance = function (Params)
|
||||
{
|
||||
if(typeof Params === "object")
|
||||
{
|
||||
var arr = DApps.Accounts.GetRowsAccounts(ParseNum(Params.AccountID), 1);
|
||||
if(arr.length)
|
||||
{
|
||||
arr[0].result = 1;
|
||||
return arr[0];
|
||||
}
|
||||
}
|
||||
return {result:0};
|
||||
};
|
||||
HTTPCaller.GenerateKeys = function (Params)
|
||||
{
|
||||
var KeyPair = crypto.createECDH('secp256k1');
|
||||
var PrivKey = sha3(crypto.randomBytes(32));
|
||||
KeyPair.setPrivateKey(Buffer.from(PrivKey));
|
||||
var PubKey = KeyPair.getPublicKey('', 'compressed');
|
||||
return {result:1, PrivKey:GetHexFromArr(PrivKey), PubKey:GetHexFromArr(PubKey)};
|
||||
};
|
||||
10
Source/core/api/api-wallet.js
Normal file
10
Source/core/api/api-wallet.js
Normal file
@@ -0,0 +1,10 @@
|
||||
/*
|
||||
* @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
|
||||
*/
|
||||
|
||||
@@ -163,7 +163,6 @@ function UpdateCodeFiles(StartNum)
|
||||
}
|
||||
else
|
||||
{
|
||||
global.UPDATE_CODE_VERSION_NUM = Num;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -8,17 +8,18 @@
|
||||
* Telegram: https://web.telegram.org/#/im?p=@terafoundation
|
||||
*/
|
||||
|
||||
global.UPDATE_CODE_VERSION_NUM = 884;
|
||||
global.MIN_CODE_VERSION_NUM = 874;
|
||||
global.MINING_VERSION_NUM = 2;
|
||||
global.UPDATE_CODE_VERSION_NUM = 886;
|
||||
global.MIN_CODE_VERSION_NUM = 884;
|
||||
global.MINING_VERSION_NUM = 3;
|
||||
global.InitParamsArg = InitParamsArg;
|
||||
global.CONST_NAME_ARR = ["AUTO_COORECT_TIME", "DELTA_CURRENT_TIME", "COMMON_KEY", "NODES_NAME", "SERVER_PRIVATE_KEY_HEX", "USE_NET_FOR_SERVER_ADDRES",
|
||||
"NET_WORK_MODE", "STAT_MODE", "MAX_STAT_PERIOD", "HTTP_PORT_NUMBER", "HTTP_PORT_PASSWORD", "HTTP_IP_CONNECT", "WALLET_NAME",
|
||||
"WALLET_DESCRIPTION", "COUNT_VIEW_ROWS", "USE_HINT", "ALL_VIEW_ROWS", "ALL_LOG_TO_CLIENT", "USE_MINING", "MINING_START_TIME",
|
||||
"MINING_PERIOD_TIME", "POW_MAX_PERCENT", "COUNT_MINING_CPU", "SIZE_MINING_MEMORY", "POW_RUN_COUNT", "POW_RUN_COUNT_FIND", "USE_AUTO_UPDATE",
|
||||
"RESTART_PERIOD_SEC", "MAX_GRAY_CONNECTIONS_TO_SERVER", "TRANSACTION_PROOF_COUNT", "UPDATE_NUM_COMPLETE", "LIMIT_SEND_TRAFIC",
|
||||
"WATCHDOG_DEV", "ADDRLIST_MODE", "CheckPointDelta", "MIN_VER_STAT", "DEBUG_WALLET", "HTTP_HOSTING_PORT", "HTTPS_HOSTING_DOMAIN",
|
||||
"HTTP_MAX_COUNT_ROWS", "WATCHDOG_BADACCOUNT", "COREY_WATCH_DOG", "MAX_CONNECTIONS_COUNT", ];
|
||||
"WALLET_DESCRIPTION", "USE_HARD_API_V2", "COUNT_VIEW_ROWS", "USE_HINT", "ALL_VIEW_ROWS", "ALL_LOG_TO_CLIENT", "USE_MINING",
|
||||
"MINING_START_TIME", "MINING_PERIOD_TIME", "POW_MAX_PERCENT", "COUNT_MINING_CPU", "SIZE_MINING_MEMORY", "POW_RUN_COUNT", "POW_RUN_COUNT_FIND",
|
||||
"USE_AUTO_UPDATE", "RESTART_PERIOD_SEC", "MAX_GRAY_CONNECTIONS_TO_SERVER", "TRANSACTION_PROOF_COUNT", "UPDATE_NUM_COMPLETE",
|
||||
"LIMIT_SEND_TRAFIC", "WATCHDOG_DEV", "ADDRLIST_MODE", "CheckPointDelta", "MIN_VER_STAT", "DEBUG_WALLET", "HTTP_HOSTING_PORT",
|
||||
"HTTPS_HOSTING_DOMAIN", "HTTP_MAX_COUNT_ROWS", "WATCHDOG_BADACCOUNT", "COREY_WATCH_DOG", "MAX_CONNECTIONS_COUNT", ];
|
||||
global.USE_HARD_API_V2 = 0;
|
||||
global.USE_TICKET = 0;
|
||||
global.USE_CHECK_SENDING = 1;
|
||||
global.USE_LEVEL_WAY = 0;
|
||||
@@ -96,6 +97,7 @@ global.GENERATE_BLOCK_ACCOUNT = 0;
|
||||
global.TOTAL_TER_MONEY = 1e9;
|
||||
global.TRANSACTION_PROOF_COUNT = 1000 * 1000;
|
||||
global.MIN_POWER_POW_ACC_CREATE = 16;
|
||||
global.MIN_POWER_POW_ACC_CREATE_LAST = MIN_POWER_POW_ACC_CREATE + 3;
|
||||
global.START_MINING = 2 * 1000 * 1000;
|
||||
global.REF_PERIOD_MINING = 1 * 1000 * 1000;
|
||||
global.DELTA_BLOCK_ACCOUNT_HASH = 1000;
|
||||
@@ -132,6 +134,7 @@ if(global.LOCAL_RUN)
|
||||
global.TEST_TRANSACTION_GENERATE = 0;
|
||||
global.MIN_POWER_POW_TR = 8;
|
||||
global.MIN_POWER_POW_ACC_CREATE = 8;
|
||||
global.MIN_POWER_POW_ACC_CREATE_LAST = 8;
|
||||
NETWORK = "LOCAL";
|
||||
global.ALL_VIEW_ROWS = 1;
|
||||
}
|
||||
@@ -146,6 +149,7 @@ else
|
||||
global.REF_PERIOD_MINING = 1000;
|
||||
global.MIN_POWER_POW_TR = 8;
|
||||
global.MIN_POWER_POW_ACC_CREATE = 8;
|
||||
global.MIN_POWER_POW_ACC_CREATE_LAST = 8;
|
||||
global.TRANSACTION_PROOF_COUNT = 200 * 1000;
|
||||
global.MAX_SIZE_LOG = 20 * 1024 * 1024;
|
||||
global.DELTA_BLOCK_ACCOUNT_HASH = 1000;
|
||||
|
||||
@@ -302,7 +302,7 @@ HTTPCaller.DappInfo = function (Params,responce,ObjectOnly)
|
||||
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, MIN_POWER_POW_ACC_CREATE:MIN_POWER_POW_ACC_CREATE, PRICE_DAO:PRICE_DAO(SERVER.BlockNumDB),
|
||||
CONSENSUS_PERIOD_TIME:CONSENSUS_PERIOD_TIME, MIN_POWER_POW_ACC_CREATE:MIN_POWER_POW_ACC_CREATE_LAST, PRICE_DAO:PRICE_DAO(SERVER.BlockNumDB),
|
||||
Smart:Smart, Account:Account, ArrWallet:WLData.arr, ArrEvent:EArr, ArrLog:ArrLog, };
|
||||
if(global.WALLET)
|
||||
{
|
||||
@@ -429,7 +429,7 @@ HTTPCaller.GetHistoryAct = function (Params)
|
||||
var LastTimeGetHashRate = 0;
|
||||
var LastHashRate = 0;
|
||||
var HashRateOneSec = 0;
|
||||
HTTPCaller.GetWalletInfo = function ()
|
||||
HTTPCaller.GetWalletInfo = function (Params)
|
||||
{
|
||||
var Constants = {};
|
||||
for(var i = 0; i < global.CONST_NAME_ARR.length; i++)
|
||||
@@ -456,13 +456,16 @@ HTTPCaller.GetWalletInfo = function ()
|
||||
ArrLog:ArrLogClient, MaxAccID:DApps.Accounts.GetMaxAccount(), MaxActNum:DApps.Accounts.GetActsMaxNum(), MaxDappsID:DApps.Smart.GetMaxNum(),
|
||||
NeedRestart:global.NeedRestart, ip:SERVER.ip, port: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,
|
||||
MIN_POWER_POW_ACC_CREATE:MIN_POWER_POW_ACC_CREATE, DATA_PATH:(DATA_PATH.substr(1, 1) === ":" ? DATA_PATH : GetNormalPathString(process.cwd() + "/" + DATA_PATH)),
|
||||
MIN_POWER_POW_ACC_CREATE:MIN_POWER_POW_ACC_CREATE_LAST, DATA_PATH:(DATA_PATH.substr(1, 1) === ":" ? DATA_PATH : GetNormalPathString(process.cwd() + "/" + DATA_PATH)),
|
||||
NodeAddrStr: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:DApps.Accounts.DBAccountsHash.GetMaxNum(),
|
||||
TXBlockNum:TXBlockNum, };
|
||||
Ret.PrivateKey = WALLET.KeyPair.PrivKeyStr;
|
||||
if(Params.Account)
|
||||
Ret.PrivateKey = GetHexFromArr(WALLET.GetPrivateKey(WALLET.AccountMap[Params.Account]));
|
||||
else
|
||||
Ret.PrivateKey = GetHexFromArr(WALLET.GetPrivateKey());
|
||||
Ret.PublicKey = WALLET.KeyPair.PubKeyStr;
|
||||
return Ret;
|
||||
};
|
||||
@@ -512,7 +515,7 @@ HTTPCaller.SendTransactionHex = function (Params)
|
||||
{
|
||||
var body = GetArrFromHex(Params.Hex);
|
||||
var Result = {result:1};
|
||||
var Res = WALLET.AddTransaction({body:body, ToAll:1});
|
||||
var Res = SERVER.AddTransactionOwn({body:body, ToAll:1});
|
||||
Result.sessionid = sessionid;
|
||||
Result.text = AddTrMap[Res];
|
||||
var final = false;
|
||||
@@ -1339,10 +1342,12 @@ if(global.HTTP_PORT_NUMBER)
|
||||
var remoteAddress = request.socket.remoteAddress.replace(/^.*:/, '');
|
||||
if(remoteAddress === "1")
|
||||
remoteAddress = "127.0.0.1";
|
||||
var CheckPassword;
|
||||
if(!global.HTTP_PORT_PASSWORD && remoteAddress.indexOf("127.0.0.1") < 0)
|
||||
return ;
|
||||
if(global.HTTP_IP_CONNECT && remoteAddress.indexOf("127.0.0.1") < 0 && global.HTTP_IP_CONNECT.indexOf(remoteAddress) < 0)
|
||||
return ;
|
||||
CheckPassword = 1;
|
||||
SetSafeResponce(response);
|
||||
if(!global.SERVER)
|
||||
{
|
||||
@@ -1358,7 +1363,7 @@ if(global.HTTP_PORT_NUMBER)
|
||||
ToLog("CONNECT TO HTTP ACCESS FROM: " + remoteAddress);
|
||||
ToLog("Path: " + Path);
|
||||
}
|
||||
if(global.HTTP_PORT_PASSWORD)
|
||||
if(CheckPassword && global.HTTP_PORT_PASSWORD)
|
||||
{
|
||||
var StrPort = "";
|
||||
if(global.HTTP_PORT_NUMBER !== 80)
|
||||
|
||||
@@ -214,4 +214,12 @@ module.exports = class CSmartContract extends require("./block-exchange")
|
||||
{
|
||||
}
|
||||
}
|
||||
AddTransactionOwn(Tr)
|
||||
{
|
||||
if(!global.TX_PROCESS.Worker)
|
||||
return 0;
|
||||
var StrHex = GetHexFromArr(sha3(Tr.body));
|
||||
global.TX_PROCESS.Worker.send({cmd:"FindTX", TX:StrHex})
|
||||
return this.AddTransaction(Tr, 1);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -243,10 +243,10 @@ class CApp
|
||||
}
|
||||
return this.KeyPair;
|
||||
}
|
||||
GetSignFromArr(Arr, Num)
|
||||
GetPrivateKey(Num)
|
||||
{
|
||||
if(!this.KeyPair.WasInit)
|
||||
return "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";
|
||||
return [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 KeyPair;
|
||||
if(Num)
|
||||
{
|
||||
@@ -256,39 +256,24 @@ class CApp
|
||||
{
|
||||
KeyPair = this.KeyPair
|
||||
}
|
||||
return KeyPair.getPrivateKey();
|
||||
}
|
||||
GetSignFromArr(Arr, Num)
|
||||
{
|
||||
if(!this.KeyPair.WasInit)
|
||||
return "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";
|
||||
var PrivKey = this.GetPrivateKey(Num);
|
||||
var hash = shabuf(Arr);
|
||||
var sigObj = secp256k1.sign(hash, KeyPair.getPrivateKey());
|
||||
var sigObj = secp256k1.sign(hash, Buffer.from(PrivKey));
|
||||
return GetHexFromArr(sigObj.signature);
|
||||
}
|
||||
GetSignTransaction(TR)
|
||||
{
|
||||
var Arr;
|
||||
if(TR.Version === 2 || TR.Version === 3)
|
||||
{
|
||||
var format;
|
||||
if(TR.Version === 2)
|
||||
format = FORMAT_MONEY_TRANSFER_BODY2
|
||||
else
|
||||
format = FORMAT_MONEY_TRANSFER_BODY3
|
||||
Arr = []
|
||||
for(var i = 0; i < TR.To.length; i++)
|
||||
{
|
||||
var Item = TR.To[i];
|
||||
var DataTo = DApps.Accounts.ReadState(Item.ID);
|
||||
if(!DataTo)
|
||||
return "";
|
||||
for(var j = 0; j < 33; j++)
|
||||
Arr[Arr.length] = DataTo.PubKey[j]
|
||||
}
|
||||
var Body = BufLib.GetBufferFromObject(TR, format, MAX_TRANSACTION_SIZE, {});
|
||||
for(var j = 0; j < Body.length; j++)
|
||||
Arr[Arr.length] = Body[j]
|
||||
}
|
||||
else
|
||||
{
|
||||
Arr = BufLib.GetBufferFromObject(TR, FORMAT_MONEY_TRANSFER_BODY, MAX_TRANSACTION_SIZE, {})
|
||||
}
|
||||
return this.GetSignFromArr(Arr, this.AccountMap[TR.FromID]);
|
||||
if(!this.KeyPair.WasInit)
|
||||
return "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";
|
||||
var PrivKey = this.GetPrivateKey(this.AccountMap[TR.FromID]);
|
||||
var Arr = DApps.Accounts.GetSignTransferTx(TR, PrivKey);
|
||||
return GetHexFromArr(Arr);
|
||||
}
|
||||
GetHistoryMaxNum()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user