@@ -74,7 +74,7 @@ global.FORMAT_ACCOUNT_HASH = "{\
|
||||
BlockNum:uint,\
|
||||
AccHash:buffer32,\
|
||||
}";
|
||||
global.FORMAT_ACCOUNT_HASH3 = "{\
|
||||
global.global.FORMAT_ACCOUNT_HASH3 = "{\
|
||||
Type:byte,\
|
||||
BlockNum:uint,\
|
||||
AccHash:buffer32,\
|
||||
@@ -144,22 +144,23 @@ class MerkleDBRow extends DBRow {
|
||||
};
|
||||
class AccountApp extends require("./dapp")
|
||||
{
|
||||
private CreateTrCount
|
||||
private FORMAT_ACCOUNT_ROW
|
||||
private SIZE_ACCOUNT_ROW
|
||||
private DBState
|
||||
private FORMAT_ACCOUNT_ROW_REST
|
||||
private SIZE_ACCOUNT_ROW_REST
|
||||
private DBRest
|
||||
private DBAct
|
||||
private DBActPrev
|
||||
private FORMAT_STATE_HISTORY
|
||||
private DBStateHistory
|
||||
private HistoryFormatArr
|
||||
private DBStateTX
|
||||
private DBAccountsHash
|
||||
private WasCheckRestDB
|
||||
private ResultTx
|
||||
CreateTrCount
|
||||
FORMAT_ACCOUNT_ROW
|
||||
SIZE_ACCOUNT_ROW
|
||||
DBState
|
||||
FORMAT_ACCOUNT_ROW_REST
|
||||
SIZE_ACCOUNT_ROW_REST
|
||||
DBRest
|
||||
DBAct
|
||||
DBActPrev
|
||||
FORMAT_STATE_HISTORY
|
||||
DBStateHistory
|
||||
HistoryFormatArr
|
||||
DBStateTX
|
||||
DBAccountsHash
|
||||
WasCheckRestDB
|
||||
ResultTx
|
||||
DBChanges
|
||||
constructor() {
|
||||
super()
|
||||
var bReadOnly = (global.PROCESS_NAME !== "TX");
|
||||
@@ -205,7 +206,7 @@ class AccountApp extends require("./dapp")
|
||||
Start(bClean?) {
|
||||
if (global.LOCAL_RUN)
|
||||
bClean = 1
|
||||
if (!bClean && this.DBState.GetMaxNum() + 1 >= global.global.BLOCK_PROCESSING_LENGTH2)
|
||||
if (!bClean && this.DBState.GetMaxNum() + 1 >= global.BLOCK_PROCESSING_LENGTH2)
|
||||
return;
|
||||
this.DBState.MerkleTree = undefined
|
||||
this.DBState.Truncate(- 1)
|
||||
@@ -267,7 +268,7 @@ class AccountApp extends require("./dapp")
|
||||
}
|
||||
global.ToLog("******************************FINISH FillRestDB")
|
||||
}
|
||||
_DBStateWrite(Data?, BlockNum?) {
|
||||
_DBStateWrite(Data?, BlockNum?, b?) {
|
||||
this.CheckRestDB()
|
||||
this.DBState.Write(Data)
|
||||
if (Data.Num === undefined)
|
||||
@@ -330,7 +331,7 @@ class AccountApp extends require("./dapp")
|
||||
return Num;
|
||||
}
|
||||
case TYPE_TRANSACTION_TRANSFER:
|
||||
var Num = ReadUintFromArr(Body, 1 + 1 + 6);
|
||||
var Num = global.ReadUintFromArr(Body, 1 + 1 + 6);
|
||||
return Num;
|
||||
}
|
||||
}
|
||||
@@ -400,10 +401,13 @@ class AccountApp extends require("./dapp")
|
||||
case global.TYPE_TRANSACTION_ACC_HASH:
|
||||
{
|
||||
Result = 1
|
||||
if (global.LOCAL_RUN || global.TEST_NETWORK);
|
||||
else
|
||||
if (BlockNum < global.START_BLOCK_ACCOUNT_HASH + 200000)
|
||||
if (global.LOCAL_RUN || global.TEST_NETWORK) {
|
||||
|
||||
}
|
||||
else {
|
||||
if (BlockNum < global.global.START_BLOCK_ACCOUNT_HASH + 200000)
|
||||
break;
|
||||
}
|
||||
var BlockNumHash = BlockNum - global.DELTA_BLOCK_ACCOUNT_HASH;
|
||||
if (!this.TRCheckAccountHash(Body, BlockNum, TrNum)) {
|
||||
Result = "BAD ACCOUNT HASH"
|
||||
@@ -426,7 +430,7 @@ class AccountApp extends require("./dapp")
|
||||
var SysBalance = SysData.Value.SumCOIN;
|
||||
const REF_PERIOD_START = global.START_MINING;
|
||||
const REF_PERIOD_END = 30 * 1000 * 1000;
|
||||
var AccountID = ReadUintFromArr(Block.AddrHash, 0);
|
||||
var AccountID = global.ReadUintFromArr(Block.AddrHash, 0);
|
||||
if (AccountID < 8)
|
||||
return;
|
||||
var Data = this.ReadStateTR(AccountID);
|
||||
@@ -444,29 +448,29 @@ class AccountApp extends require("./dapp")
|
||||
}
|
||||
}
|
||||
else {
|
||||
var Power = GetPowPower(Block.PowHash);
|
||||
var Power = global.GetPowPower(Block.PowHash);
|
||||
if (Block.BlockNum >= global.NEW_BLOCK_REWARD1)
|
||||
Power = 43
|
||||
Sum = Power * Power * SysBalance / global.TOTAL_SUPPLY_TERA / 100
|
||||
}
|
||||
var CoinTotal = { SumCOIN: 0, SumCENT: 0 };
|
||||
var CoinSum = COIN_FROM_FLOAT(Sum);
|
||||
if (!ISZERO(CoinSum)) {
|
||||
var CoinSum = global.COIN_FROM_FLOAT(Sum);
|
||||
if (!global.ISZERO(CoinSum)) {
|
||||
if (Data.Adviser >= 8 && Block.BlockNum < REF_PERIOD_END) {
|
||||
var RefData = this.ReadStateTR(Data.Adviser);
|
||||
if (RefData && RefData.BlockNumCreate < Block.BlockNum - REF_PERIOD_MINING) {
|
||||
if (RefData && RefData.BlockNumCreate < Block.BlockNum - global.REF_PERIOD_MINING) {
|
||||
var K = (REF_PERIOD_END - Block.BlockNum) / (REF_PERIOD_END - REF_PERIOD_START);
|
||||
var CoinAdv = COIN_FROM_FLOAT(Sum * K);
|
||||
var CoinAdv = global.COIN_FROM_FLOAT(Sum * K);
|
||||
this.SendMoneyTR(Block, 0, Data.Adviser, CoinAdv, Block.BlockNum, 0xFFFF, "", "Adviser coin base [" + AccountID + "]", 1)
|
||||
ADD(CoinTotal, CoinAdv)
|
||||
ADD(CoinSum, CoinAdv)
|
||||
global.ADD(CoinTotal, CoinAdv)
|
||||
global.ADD(CoinSum, CoinAdv)
|
||||
}
|
||||
}
|
||||
this.SendMoneyTR(Block, 0, AccountID, CoinSum, Block.BlockNum, 0xFFFF, "", "Coin base", 1)
|
||||
ADD(CoinTotal, CoinSum)
|
||||
var CoinDevelop = CopyObjValue(CoinTotal);
|
||||
DIV(CoinDevelop, 100)
|
||||
if (!ISZERO(CoinDevelop))
|
||||
global.ADD(CoinTotal, CoinSum)
|
||||
var CoinDevelop = global.CopyObjValue(CoinTotal);
|
||||
global.DIV(CoinDevelop, 100)
|
||||
if (!global.ISZERO(CoinDevelop))
|
||||
this.SendMoneyTR(Block, 0, 9, CoinDevelop, Block.BlockNum, 0xFFFF, "", "Developers support", 1)
|
||||
}
|
||||
}
|
||||
@@ -492,22 +496,22 @@ class AccountApp extends require("./dapp")
|
||||
}
|
||||
case TYPE_DEPRECATED_TRANSFER1:
|
||||
{
|
||||
format = FORMAT_MONEY_TRANSFER
|
||||
format = global.FORMAT_MONEY_TRANSFER
|
||||
break;
|
||||
}
|
||||
case TYPE_DEPRECATED_TRANSFER2:
|
||||
{
|
||||
format = FORMAT_MONEY_TRANSFER2
|
||||
format = global.FORMAT_MONEY_TRANSFER2
|
||||
break;
|
||||
}
|
||||
case TYPE_TRANSACTION_TRANSFER:
|
||||
{
|
||||
format = FORMAT_MONEY_TRANSFER3
|
||||
format = global.FORMAT_MONEY_TRANSFER3
|
||||
break;
|
||||
}
|
||||
case TYPE_TRANSACTION_ACC_HASH:
|
||||
case global.TYPE_TRANSACTION_ACC_HASH:
|
||||
{
|
||||
format = FORMAT_ACCOUNT_HASH3
|
||||
format = global.global.FORMAT_ACCOUNT_HASH3
|
||||
break;
|
||||
}
|
||||
default:
|
||||
@@ -526,30 +530,30 @@ class AccountApp extends require("./dapp")
|
||||
if (!TR)
|
||||
return "";
|
||||
if (TR.Body && TR.Body.length) {
|
||||
var App = DAppByType[TR.Body[0]];
|
||||
var App = global.DAppByType[TR.Body[0]];
|
||||
if (App) {
|
||||
TR.Body = JSON.parse(App.GetScriptTransaction(TR.Body))
|
||||
}
|
||||
}
|
||||
ConvertBufferToStr(TR)
|
||||
return JSON.stringify(TR, "", 2);
|
||||
global.ConvertBufferToStr(TR)
|
||||
return JSON.stringify(TR, undefined, 2);
|
||||
}
|
||||
TRCheckAccountHash(Body, BlockNum, TrNum) {
|
||||
if (BlockNum % PERIOD_ACCOUNT_HASH !== 0)
|
||||
if (BlockNum % global.PERIOD_ACCOUNT_HASH !== 0)
|
||||
return 1;
|
||||
try {
|
||||
var TR = global.BufLib.GetObjectFromBuffer(Body, FORMAT_ACCOUNT_HASH3, {});
|
||||
var TR = global.BufLib.GetObjectFromBuffer(Body, global.FORMAT_ACCOUNT_HASH3, {});
|
||||
}
|
||||
catch (e) {
|
||||
return 0;
|
||||
}
|
||||
if (BlockNum < START_BLOCK_ACCOUNT_HASH + 200000)
|
||||
if (BlockNum < global.START_BLOCK_ACCOUNT_HASH + 200000)
|
||||
return 1;
|
||||
var Item = this.GetAccountHashItem(TR.BlockNum);
|
||||
if (Item && Item.BlockNum === TR.BlockNum) {
|
||||
if (CompareArr(Item.AccHash, TR.AccHash) === 0) {
|
||||
if (TR.BlockNum >= START_BLOCK_ACCOUNT_HASH3) {
|
||||
if (CompareArr(Item.SmartHash, TR.SmartHash) === 0 && Item.AccountMax === TR.AccountMax && Item.SmartCount === TR.SmartCount) {
|
||||
if (global.CompareArr(Item.AccHash, TR.AccHash) === 0) {
|
||||
if (TR.BlockNum >= global.START_BLOCK_ACCOUNT_HASH3) {
|
||||
if (global.CompareArr(Item.SmartHash, TR.SmartHash) === 0 && Item.AccountMax === TR.AccountMax && Item.SmartCount === TR.SmartCount) {
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
@@ -568,7 +572,7 @@ class AccountApp extends require("./dapp")
|
||||
return "Error length transaction";
|
||||
var CheckMinPower = 1;
|
||||
if (BlockNum >= 7000000 || global.LOCAL_RUN || global.TEST_NETWORK) {
|
||||
if (ContextFrom && ContextFrom.To.length === 1 && ContextFrom.To[0].ID === 0 && ContextFrom.To[0].SumCOIN >= PRICE_DAO(BlockNum).NewAccount) {
|
||||
if (ContextFrom && ContextFrom.To.length === 1 && ContextFrom.To[0].ID === 0 && ContextFrom.To[0].SumCOIN >= global.PRICE_DAO(BlockNum).NewAccount) {
|
||||
CheckMinPower = 0
|
||||
}
|
||||
else {
|
||||
@@ -581,12 +585,12 @@ class AccountApp extends require("./dapp")
|
||||
this.CreateTrCount++
|
||||
var power;
|
||||
if (BlockNum >= global.BLOCKNUM_TICKET_ALGO) {
|
||||
var Tr = { body: Body };
|
||||
var Tr: any = { body: Body };
|
||||
global.SERVER.CheckCreateTransactionObject(Tr)
|
||||
power = Tr.power
|
||||
}
|
||||
else {
|
||||
power = GetPowPower(shaarr(Body))
|
||||
power = global.GetPowPower(shaarr(Body))
|
||||
}
|
||||
if (global.TEST_NETWORK && BlockNum >= 3290000) {
|
||||
CheckMinPower = 0
|
||||
@@ -604,7 +608,7 @@ class AccountApp extends require("./dapp")
|
||||
return "Error min power POW for create account (update client)";
|
||||
}
|
||||
try {
|
||||
var TR = global.BufLib.GetObjectFromBuffer(Body, global.global.FORMAT_CREATE, {});
|
||||
var TR = global.BufLib.GetObjectFromBuffer(Body, global.FORMAT_CREATE, {});
|
||||
}
|
||||
catch (e) {
|
||||
return "Error transaction format";
|
||||
@@ -620,7 +624,7 @@ class AccountApp extends require("./dapp")
|
||||
Account.Adviser = TR.Adviser
|
||||
Account.Value.Smart = TR.Smart
|
||||
this.WriteStateTR(Account, TrNum)
|
||||
if (CompareArr(Account.PubKey, global.WALLET.PubKeyArr) === 0) {
|
||||
if (global.CompareArr(Account.PubKey, global.WALLET.PubKeyArr) === 0) {
|
||||
global.WALLET.OnCreateAccount(Account)
|
||||
}
|
||||
this.ResultTx = Account.Num
|
||||
@@ -677,7 +681,7 @@ class AccountApp extends require("./dapp")
|
||||
MapItem[Item.ID] = 1
|
||||
}
|
||||
bWas = 1
|
||||
ADD(TotalSum, Item)
|
||||
global.ADD(TotalSum, Item)
|
||||
}
|
||||
if (!bWas && TR.Version < 3)
|
||||
return "No significant recipients";
|
||||
@@ -711,7 +715,7 @@ class AccountApp extends require("./dapp")
|
||||
return "Error - smart accounts can not be used in a multiple transaction";
|
||||
}
|
||||
if (TR.Version === 3 && Item.ID === 0 && Item.PubKey && Item.PubKey.length === 33) {
|
||||
if (Item.SumCOIN < PRICE_DAO(BlockNum).NewAccount)
|
||||
if (Item.SumCOIN < global.PRICE_DAO(BlockNum).NewAccount)
|
||||
return "Not enough money for create account with index: " + i;
|
||||
var name = TR.Description;
|
||||
var index = name.indexOf("\n");
|
||||
@@ -725,7 +729,7 @@ class AccountApp extends require("./dapp")
|
||||
Item.ID = Account.Num
|
||||
this.SendMoneyTR(Block, Data.Num, Account.Num, { SumCOIN: Item.SumCOIN, SumCENT: Item.SumCENT }, BlockNum, TrNum, TR.Description,
|
||||
TR.Description, 1)
|
||||
this.SendMoneyTR(Block, Account.Num, 0, { SumCOIN: PRICE_DAO(BlockNum).NewAccount, SumCENT: 0 }, BlockNum, TrNum, "Fee for create account",
|
||||
this.SendMoneyTR(Block, Account.Num, 0, { SumCOIN: global.PRICE_DAO(BlockNum).NewAccount, SumCENT: 0 }, BlockNum, TrNum, "Fee for create account",
|
||||
"", 1)
|
||||
}
|
||||
else {
|
||||
@@ -765,11 +769,11 @@ class AccountApp extends require("./dapp")
|
||||
return "Error sign transaction";
|
||||
}
|
||||
if (TR.Body && TR.Body.length) {
|
||||
var App = DAppByType[TR.Body[0]];
|
||||
var App = global.DAppByType[TR.Body[0]];
|
||||
if (App) {
|
||||
TR.FromPubKey = Data.PubKey
|
||||
var Result = App.OnWriteTransaction(Block, TR.Body, BlockNum, TrNum, TR);
|
||||
if (Result !== true)
|
||||
Result = App.OnWriteTransaction(Block, TR.Body, BlockNum, TrNum, TR);
|
||||
if (Result as any !== true)
|
||||
return Result;
|
||||
}
|
||||
}
|
||||
@@ -804,7 +808,7 @@ class AccountApp extends require("./dapp")
|
||||
}
|
||||
this.DeleteActOneDB(this.DBAct, BlockNumFrom)
|
||||
this.DeleteActOneDB(this.DBActPrev, BlockNumFrom)
|
||||
this.DBAccountsHash.Truncate(Math.trunc(BlockNumFrom / PERIOD_ACCOUNT_HASH))
|
||||
this.DBAccountsHash.Truncate(Math.trunc(BlockNumFrom / global.PERIOD_ACCOUNT_HASH))
|
||||
}
|
||||
DeleteActOneDB(DBAct, BlockNum) {
|
||||
var MaxNum = DBAct.GetMaxNum();
|
||||
@@ -813,7 +817,7 @@ class AccountApp extends require("./dapp")
|
||||
for (var num = MaxNum; num >= 0; num--) {
|
||||
var ItemCheck = DBAct.Read(num);
|
||||
if (!ItemCheck) {
|
||||
ToLogTrace("!ItemCheck")
|
||||
global.ToLogTrace("!ItemCheck")
|
||||
throw "ERRR DeleteActOneDB";
|
||||
}
|
||||
if (ItemCheck.BlockNum < BlockNum) {
|
||||
@@ -882,7 +886,7 @@ class AccountApp extends require("./dapp")
|
||||
if (!Data)
|
||||
break;
|
||||
for (var i = 0; i < PubKeyArr.length; i++)
|
||||
if (CompareArr(Data.PubKey, PubKeyArr[i]) === 0) {
|
||||
if (global.CompareArr(Data.PubKey, PubKeyArr[i]) === 0) {
|
||||
map[Data.Num] = i
|
||||
Count++
|
||||
}
|
||||
@@ -899,7 +903,7 @@ class AccountApp extends require("./dapp")
|
||||
Data.PubKeyStr = global.GetHexFromArr(Data.PubKey)
|
||||
arr.push(Data)
|
||||
Data.WN = map[key]
|
||||
Data.Name = NormalizeName(Data.Name)
|
||||
Data.Name = global.NormalizeName(Data.Name)
|
||||
if (Data.Currency)
|
||||
Data.CurrencyObj = global.DApps.Smart.ReadSimple(Data.Currency)
|
||||
if (Data.Value.Smart) {
|
||||
@@ -925,7 +929,7 @@ class AccountApp extends require("./dapp")
|
||||
if (Filter.substring(0, 1) === "=") {
|
||||
Filter = Filter.substring(1)
|
||||
try {
|
||||
F = CreateEval(Filter, "Cur,Currency,ID,Operation,Amount,Adviser,Name,PubKey,Smart,BlockNum")
|
||||
F = global.CreateEval(Filter, "Cur,Currency,ID,Operation,Amount,Adviser,Name,PubKey,Smart,BlockNum")
|
||||
}
|
||||
catch (e) {
|
||||
F = undefined
|
||||
@@ -946,13 +950,13 @@ class AccountApp extends require("./dapp")
|
||||
break;
|
||||
if (!Data.PubKeyStr)
|
||||
Data.PubKeyStr = global.GetHexFromArr(Data.PubKey)
|
||||
Data.Name = NormalizeName(Data.Name)
|
||||
Data.Name = global.NormalizeName(Data.Name)
|
||||
if (F) {
|
||||
var Cur = Data.Currency;
|
||||
var Currency = Data.Currency;
|
||||
var ID = Data.Num;
|
||||
var Operation = Data.Value.OperationID;
|
||||
var Amount = FLOAT_FROM_COIN(Data.Value);
|
||||
var Amount = global.FLOAT_FROM_COIN(Data.Value);
|
||||
var Adviser = Data.Adviser;
|
||||
var Name = Data.Name;
|
||||
var PubKey = global.GetHexFromArr(Data.PubKey);
|
||||
@@ -969,7 +973,7 @@ class AccountApp extends require("./dapp")
|
||||
}
|
||||
else
|
||||
if (Filter) {
|
||||
var Amount = FLOAT_FROM_COIN(Data.Value);
|
||||
var Amount = global.FLOAT_FROM_COIN(Data.Value);
|
||||
var PubKey = global.GetHexFromArr(Data.PubKey);
|
||||
var Str = "" + Data.Num + " " + Data.Value.OperationID + " " + Data.Name.toUpperCase() + " " + Data.Adviser + " " + Amount + " " + PubKey + " " + Smart + " " + Data.BlockNumCreate;
|
||||
if (Str.indexOf(Filter) < 0)
|
||||
@@ -1037,7 +1041,7 @@ class AccountApp extends require("./dapp")
|
||||
return arr;
|
||||
}
|
||||
GetHashOrUndefined(BlockNum) {
|
||||
if (BlockNum % PERIOD_ACCOUNT_HASH !== 0)
|
||||
if (BlockNum % global.PERIOD_ACCOUNT_HASH !== 0)
|
||||
return undefined;
|
||||
var Item = this.GetAccountHashItem(BlockNum);
|
||||
if (Item)
|
||||
@@ -1046,7 +1050,7 @@ class AccountApp extends require("./dapp")
|
||||
return undefined;
|
||||
}
|
||||
GetAccountHashItem(BlockNum) {
|
||||
var Item = this.DBAccountsHash.Read(Math.trunc(BlockNum / PERIOD_ACCOUNT_HASH));
|
||||
var Item = this.DBAccountsHash.Read(Math.trunc(BlockNum / global.PERIOD_ACCOUNT_HASH));
|
||||
return Item;
|
||||
}
|
||||
GetHashedMaxBlockNum() {
|
||||
@@ -1059,7 +1063,7 @@ class AccountApp extends require("./dapp")
|
||||
return 0;
|
||||
}
|
||||
CalcHash(Block, BlockMaxAccount) {
|
||||
if (Block.BlockNum % PERIOD_ACCOUNT_HASH !== 0)
|
||||
if (Block.BlockNum % global.PERIOD_ACCOUNT_HASH !== 0)
|
||||
return;
|
||||
if (this.DBState.WasUpdate) {
|
||||
this.CalcMerkleTree()
|
||||
@@ -1075,14 +1079,14 @@ class AccountApp extends require("./dapp")
|
||||
SmartHash = []
|
||||
}
|
||||
var Data = {
|
||||
Num: Block.BlockNum / PERIOD_ACCOUNT_HASH, BlockNum: Block.BlockNum, AccHash: Hash, SumHash: Block.SumHash, AccountMax: BlockMaxAccount,
|
||||
Num: Block.BlockNum / global.PERIOD_ACCOUNT_HASH, BlockNum: Block.BlockNum, AccHash: Hash, SumHash: Block.SumHash, AccountMax: BlockMaxAccount,
|
||||
SmartHash: SmartHash, SmartCount: SmartCount
|
||||
};
|
||||
this.DBAccountsHash.Write(Data)
|
||||
this.DBAccountsHash.Truncate(Block.BlockNum / PERIOD_ACCOUNT_HASH)
|
||||
this.DBAccountsHash.Truncate(Block.BlockNum / global.PERIOD_ACCOUNT_HASH)
|
||||
return Data;
|
||||
}
|
||||
CalcMerkleTree(bForce) {
|
||||
CalcMerkleTree(bForce?) {
|
||||
this.DBState.MerkleHash = this.DBState.CalcMerkleTree(bForce)
|
||||
this.DBState.WasUpdate = 0
|
||||
}
|
||||
@@ -1124,7 +1128,7 @@ class AccountApp extends require("./dapp")
|
||||
}
|
||||
var arr = [];
|
||||
for (var key in DBChanges.BlockMap) {
|
||||
key = ParseNum(key)
|
||||
key = global.ParseNum(key)
|
||||
var Data = DBChanges.BlockMap[key];
|
||||
if (Data.Changed) {
|
||||
arr.push(Data)
|
||||
@@ -1170,7 +1174,7 @@ class AccountApp extends require("./dapp")
|
||||
return false;
|
||||
DBChanges.BlockMaxAccount = DBChanges.TRMaxAccount
|
||||
for (var key in DBChanges.TRMap) {
|
||||
key = ParseNum(key)
|
||||
key = global.ParseNum(key)
|
||||
var Data = DBChanges.TRMap[key];
|
||||
if (Data.Changed) {
|
||||
DBChanges.BlockMap[key] = Data
|
||||
@@ -1213,7 +1217,7 @@ class AccountApp extends require("./dapp")
|
||||
return Data;
|
||||
}
|
||||
ReadStateTR(Num) {
|
||||
Num = ParseNum(Num)
|
||||
Num = global.ParseNum(Num)
|
||||
var TRMap = this.DBChanges.TRMap;
|
||||
var Data = TRMap[Num];
|
||||
if (!Data) {
|
||||
@@ -1239,7 +1243,7 @@ class AccountApp extends require("./dapp")
|
||||
Data = {
|
||||
Num: Num, Currency: BData.Currency, PubKey: BData.PubKey, Name: BData.Name, BlockNumCreate: BData.BlockNumCreate, Adviser: BData.Adviser,
|
||||
Value: {
|
||||
SumCOIN: Value.SumCOIN, SumCENT: Value.SumCENT, OperationID: Value.OperationID, Smart: Value.Smart, Data: CopyArr(Value.Data),
|
||||
SumCOIN: Value.SumCOIN, SumCENT: Value.SumCENT, OperationID: Value.OperationID, Smart: Value.Smart, Data: global.CopyArr(Value.Data),
|
||||
NextPos: Value.NextPos
|
||||
}, BackupValue: BData.BackupValue
|
||||
}
|
||||
@@ -1252,8 +1256,8 @@ class AccountApp extends require("./dapp")
|
||||
Data.ChangeTrNum = TrNum
|
||||
}
|
||||
SendMoneyTR(Block, FromID, ToID, CoinSum, BlockNum, TrNum, DescriptionFrom, DescriptionTo, OperationCount) {
|
||||
FromID = ParseNum(FromID)
|
||||
ToID = ParseNum(ToID)
|
||||
FromID = global.ParseNum(FromID)
|
||||
ToID = global.ParseNum(ToID)
|
||||
if (CoinSum.SumCENT >= 1e9) {
|
||||
throw "ERROR SumCENT>=1e9";
|
||||
}
|
||||
@@ -1261,7 +1265,7 @@ class AccountApp extends require("./dapp")
|
||||
if (!FromData) {
|
||||
throw "Send: Error account FromNum: " + FromID;
|
||||
}
|
||||
if (!SUB(FromData.Value, CoinSum)) {
|
||||
if (!global.SUB(FromData.Value, CoinSum)) {
|
||||
throw "Not enough money on the account ID:" + FromID;
|
||||
}
|
||||
this.WriteStateTR(FromData, TrNum)
|
||||
@@ -1276,7 +1280,7 @@ class AccountApp extends require("./dapp")
|
||||
if (!ToData) {
|
||||
throw "Send: Error account ToNum: " + ToID;
|
||||
}
|
||||
ADD(ToData.Value, CoinSum)
|
||||
global.ADD(ToData.Value, CoinSum)
|
||||
this.WriteStateTR(ToData, TrNum)
|
||||
if (ToID > 15) {
|
||||
this.DBChanges.TRHistory.push({
|
||||
@@ -1288,11 +1292,11 @@ class AccountApp extends require("./dapp")
|
||||
FromData.Value.OperationID += OperationCount
|
||||
if (FromData.Value.Smart) {
|
||||
var Context = { FromID: FromID, ToID: ToID, Description: DescriptionFrom, Value: CoinSum };
|
||||
RunSmartMethod(Block, FromData.Value.Smart, FromData, BlockNum, TrNum, Context, "OnSend")
|
||||
global.RunSmartMethod(Block, FromData.Value.Smart, FromData, BlockNum, TrNum, Context, "OnSend")
|
||||
}
|
||||
if (ToData.Value.Smart) {
|
||||
var Context = { FromID: FromID, ToID: ToID, Description: DescriptionTo, Value: CoinSum };
|
||||
RunSmartMethod(Block, ToData.Value.Smart, ToData, BlockNum, TrNum, Context, "OnGet")
|
||||
global.RunSmartMethod(Block, ToData.Value.Smart, ToData, BlockNum, TrNum, Context, "OnGet")
|
||||
}
|
||||
}
|
||||
GetSignTransferTx(TR, PrivKey) {
|
||||
@@ -1300,9 +1304,9 @@ class AccountApp extends require("./dapp")
|
||||
if (TR.Version === 2 || TR.Version === 3) {
|
||||
var format;
|
||||
if (TR.Version === 2)
|
||||
format = FORMAT_MONEY_TRANSFER_BODY2
|
||||
format = global.FORMAT_MONEY_TRANSFER_BODY2
|
||||
else
|
||||
format = FORMAT_MONEY_TRANSFER_BODY3
|
||||
format = global.FORMAT_MONEY_TRANSFER_BODY3
|
||||
Arr = []
|
||||
for (var i = 0; i < TR.To.length; i++) {
|
||||
var Item = TR.To[i];
|
||||
@@ -1313,14 +1317,14 @@ class AccountApp extends require("./dapp")
|
||||
for (var j = 0; j < 33; j++)
|
||||
Arr[Arr.length] = DataTo.PubKey[j]
|
||||
}
|
||||
var Body = global.BufLib.GetBufferFromObject(TR, format, MAX_TRANSACTION_SIZE, {});
|
||||
var Body = global.BufLib.GetBufferFromObject(TR, format, global.MAX_TRANSACTION_SIZE, {});
|
||||
for (var j = 0; j < Body.length; j++)
|
||||
Arr[Arr.length] = Body[j]
|
||||
}
|
||||
else {
|
||||
Arr = global.BufLib.GetBufferFromObject(TR, FORMAT_MONEY_TRANSFER_BODY, MAX_TRANSACTION_SIZE, {})
|
||||
Arr = global.BufLib.GetBufferFromObject(TR, global.FORMAT_MONEY_TRANSFER_BODY, global.MAX_TRANSACTION_SIZE, {})
|
||||
}
|
||||
var sigObj = global.secp256k1.sign(SHA3BUF(Arr), Buffer.from(PrivKey));
|
||||
var sigObj = global.secp256k1.sign(global.SHA3BUF(Arr), Buffer.from(PrivKey));
|
||||
return sigObj.signature;
|
||||
}
|
||||
SaveHistory(Data) {
|
||||
@@ -1332,7 +1336,7 @@ class AccountApp extends require("./dapp")
|
||||
var BufWrite = global.BufLib.GetBufferFromObject(Data, this.HistoryFormatArr[Data.Type], 100, WorkStructHistory);
|
||||
var written = fs.writeSync(FD, BufWrite, 0, BufWrite.length, Position);
|
||||
if (written !== BufWrite.length) {
|
||||
TO_ERROR_LOG("DB-HISTORY", 10, "Error write to file:" + written + " <> " + BufWrite.length)
|
||||
global.TO_ERROR_LOG("DB-HISTORY", 10, "Error write to file:" + written + " <> " + BufWrite.length)
|
||||
throw "Error write to FILE_NAME_HISTORY";
|
||||
return false;
|
||||
}
|
||||
@@ -1389,20 +1393,20 @@ class AccountApp extends require("./dapp")
|
||||
if (!Data)
|
||||
break;
|
||||
if (Data.Currency === Currency) {
|
||||
ADD(SumCoin, Data.Value)
|
||||
global.ADD(SumCoin, Data.Value)
|
||||
}
|
||||
}
|
||||
return FLOAT_FROM_COIN(SumCoin);
|
||||
return global.FLOAT_FROM_COIN(SumCoin);
|
||||
}
|
||||
};
|
||||
module.exports = AccountApp;
|
||||
var App = new AccountApp;
|
||||
DApps["Accounts"] = App;
|
||||
DAppByType[TYPE_TRANSACTION_CREATE] = App;
|
||||
DAppByType[TYPE_DEPRECATED_TRANSFER1] = App;
|
||||
DAppByType[TYPE_DEPRECATED_TRANSFER2] = App;
|
||||
DAppByType[TYPE_TRANSACTION_TRANSFER] = App;
|
||||
DAppByType[TYPE_TRANSACTION_ACC_HASH] = App;
|
||||
global.DApps["Accounts"] = App;
|
||||
global.DAppByType[global.TYPE_TRANSACTION_CREATE] = App;
|
||||
global.DAppByType[TYPE_DEPRECATED_TRANSFER1] = App;
|
||||
global.DAppByType[TYPE_DEPRECATED_TRANSFER2] = App;
|
||||
global.DAppByType[TYPE_TRANSACTION_TRANSFER] = App;
|
||||
global.DAppByType[global.TYPE_TRANSACTION_ACC_HASH] = App;
|
||||
|
||||
function TestStateFiles(Size, Format) {
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user