Tue Sep 3 09:01:40 CST 2019 Source Update...

This commit is contained in:
2019-09-03 09:01:40 +08:00
parent 48fe258e2e
commit 228076945f
16 changed files with 1262 additions and 697 deletions

View File

@@ -973,7 +973,7 @@ class AccountApp extends require("./dapp")
var Count = 0;
for(var num = 0; true; num++)
{
if(this.IsHole(num) || HiddenMap[num] !== undefined)
if(this.IsHole(num) || (HiddenMap && HiddenMap[num] !== undefined))
continue;
var Data = this.ReadState(num);
if(!Data)
@@ -1002,7 +1002,9 @@ class AccountApp extends require("./dapp")
Data.WN = map[key]
Data.Name = NormalizeName(Data.Name)
if(Data.Currency)
Data.CurrencyObj = DApps.Smart.ReadSimple(Data.Currency)
{
Data.CurrencyObj = DApps.Smart.ReadSimple(Data.Currency, 1)
}
if(Data.Value.Smart)
{
Data.SmartObj = DApps.Smart.ReadSimple(Data.Value.Smart)
@@ -1093,7 +1095,7 @@ class AccountApp extends require("./dapp")
if(bGetState)
{
if(Data.Currency)
Data.CurrencyObj = DApps.Smart.ReadSimple(Data.Currency)
Data.CurrencyObj = DApps.Smart.ReadSimple(Data.Currency, 1)
if(Data.Value.Smart)
{
Data.SmartObj = DApps.Smart.ReadSimple(Data.Value.Smart)

View File

@@ -28,7 +28,9 @@ global.FORMAT_SMART_CREATE = "{\
Category1:byte,\
Category2:byte,\
Category3:byte,\
Reserve:arr20,\
Fixed:byte,\
CentName:str5,\
Reserve:arr14,\
IconBlockNum:uint,\
IconTrNum:uint16,\
ShortName:str5,\
@@ -82,7 +84,9 @@ class SmartApp extends require("./dapp")
Category2:byte,\
Category3:byte,\
Owner:uint,\
Reserve:arr20,\
Fixed:byte,\
CentName:str5,\
Reserve:arr14,\
StateFormat:str,\
Description:str,\
Code:str,\
@@ -238,7 +242,6 @@ class SmartApp extends require("./dapp")
Smart.Zip = 0
Smart.BlockNum = BlockNum
Smart.TrNum = TrNum
Smart.Reserve = []
Smart.Num = undefined
Smart.Owner = ContextFrom.FromID
this.DBSmart.CheckNewNum(Smart)
@@ -275,6 +278,10 @@ class SmartApp extends require("./dapp")
this.DBSmart.DeleteMap("EVAL" + Smart.Num)
return e;
}
if(BlockNum < global.UPDATE_CODE_2)
{
Smart.Reserve = []
}
this.DBSmartWrite(Smart)
return true;
}
@@ -502,7 +509,7 @@ class SmartApp extends require("./dapp")
}
return Smart;
}
ReadSimple(Num)
ReadSimple(Num, bTokenDescription)
{
var Smart = this.DBSmart.GetMap("SIMPLE" + Num);
if(!Smart)
@@ -512,14 +519,70 @@ class SmartApp extends require("./dapp")
{
Smart.CodeLength = Smart.Code.length
Smart.HTMLLength = Smart.HTML.length
Smart.Code = undefined
Smart.HTML = undefined
Smart.Description = undefined
Object.defineProperties(Smart, {Reserve:{configurable:true, enumerable:false}})
Object.defineProperties(Smart, {Code:{configurable:true, enumerable:false}})
Object.defineProperties(Smart, {HTML:{configurable:true, enumerable:false}})
Object.defineProperties(Smart, {Description:{configurable:true, enumerable:false}})
this.DBSmart.SetMap("SIMPLE" + Num, Smart)
}
}
if(bTokenDescription)
this.AddCurrencyTokenDescription(Smart)
return Smart;
}
AddCurrencyTokenDescription(Smart)
{
if(!Smart.Num)
return ;
if(!this.MapTokenDescription)
this.MapTokenDescription = {}
var Item = this.MapTokenDescription[Smart.Num];
var Time = Date.now();
if(!Item)
{
Item = {Time:Time, Description:""}
this.MapTokenDescription[Smart.Num] = Item
}
if(Time - Item.Time > 5 * 1000)
{
Item.Time = Time
var Params = undefined;
var BlockNum = GetCurrentBlockNumByTime();
if(BlockNum < UPDATE_CODE_2)
{
try
{
var Account = DApps.Accounts.ReadState(Smart.Account);
if(Smart.StateFormat)
{
var State = BufLib.GetObjectFromBuffer(Account.Value.Data, Smart.StateFormat, {}, 1);
Params = {State:State, PayCur:GET_SMART(DApps.Smart.ReadSmart(State.PayCurrency)), OpnCur:GET_SMART(DApps.Smart.ReadSmart(State.Currency)),
}
}
}
catch(e)
{
}
}
else
{
Params = {}
}
var Result;
if(Params)
Result = RunStaticSmartMethod(Smart.Account, "GetTokenDescription", Params)
if(Result && Result.result)
{
Item.TokenDescription = Result.RetValue
}
else
{
Item.TokenDescription = ""
Item.Time = Time + 1000 * 1000
}
}
Smart.TokenDescription = Item.TokenDescription
}
InitHole()
{
if(global.LOCAL_RUN || global.TEST_NETWORK)
@@ -628,7 +691,7 @@ function RunSmartMethod(Block,SmartOrSmartID,Account,BlockNum,TrNum,PayContext,M
if(PayContext.Value)
context.Value = {SumCOIN:PayContext.Value.SumCOIN, SumCENT:PayContext.Value.SumCENT};
}
if(BlockNum === 0)
if(Block.BlockNum === 0)
{
context.GetBlockHeader = StaticGetBlockHeader;
context.GetBlockNumDB = StaticGetBlockNumDB;
@@ -653,6 +716,32 @@ function RunSmartMethod(Block,SmartOrSmartID,Account,BlockNum,TrNum,PayContext,M
}
return RetValue;
};
var glBlock0;
global.RunStaticSmartMethod = RunStaticSmartMethod;
function RunStaticSmartMethod(AccountNum,MethodName,Params)
{
DApps.Accounts.BeginBlock();
DApps.Accounts.BeginTransaction();
global.TickCounter = 100000;
var Account = DApps.Accounts.ReadStateTR(AccountNum);
if(!Account)
{
return {result:0, RetValue:"Error account Num: " + AccountNum};
}
if(!glBlock0)
glBlock0 = SERVER.ReadBlockHeaderDB(0);
try
{
var BlockNum = GetCurrentBlockNumByTime();
var RetValue = RunSmartMethod(glBlock0, Account.Value.Smart, Account, BlockNum, 0, undefined, MethodName, Params, 1);
return {result:1, RetValue:RetValue};
}
catch(e)
{
return {result:0, RetValue:"" + e};
}
};
function GET_ACCOUNT(Obj)
{
@@ -739,6 +828,15 @@ function GET_SMART(Obj)
}, get HTML()
{
return Data.HTML;
}, get Fixed()
{
return Data.Fixed;
}, get CoinName()
{
return Data.ShortName;
}, get CentName()
{
return Data.CentName;
}, };
return GET_PROP;
};
@@ -937,6 +1035,7 @@ function InitEval()
Object.freeze($GetHexFromArr);
Object.freeze($GetArrFromHex);
Object.freeze($sha);
Object.freeze($ReadSmart);
Object.freeze($isFinite);
Object.freeze($isNaN);
Object.freeze($parseFloat);
@@ -1083,6 +1182,7 @@ function $SetValue(ID,CoinSum)
{
CoinSum = COIN_FROM_FLOAT(CoinSum);
}
CHECKSUM(CoinSum);
if(CoinSum.SumCENT >= 1e9)
{
throw "ERROR SumCENT>=1e9";
@@ -1119,7 +1219,7 @@ function $Send(ToID,CoinSum,Description)
}
if(RunContext.Account.Currency !== ToData.Currency)
{
throw "Different currencies";
throw "Different currencies. Accounts: " + RunContext.Account.Num + " and " + ToID;
}
DApps.Accounts.SendMoneyTR(RunContext.Block, RunContext.Account.Num, ToID, CoinSum, RunContext.BlockNum, RunContext.TrNum,
Description, Description, 1);
@@ -1142,7 +1242,7 @@ function $Move(FromID,ToID,CoinSum,Description)
}
if(FromData.Currency !== ToData.Currency)
{
throw "Different currencies";
throw "Different currencies. Accounts: " + FromID + " and " + ToID;
}
if(FromData.Value.Smart !== RunContext.Smart.Num)
{
@@ -1190,6 +1290,20 @@ function $ReadAccount(ID)
return GET_ACCOUNT(Account);
};
function $ReadSmart(ID)
{
if(RunContext.BlockNum < global.UPDATE_CODE_2)
{
throw "Method call not available";
}
DO(900);
ID = ParseNum(ID);
var Smart = DApps.Smart.ReadSmart(ID);
if(!Smart)
throw "Error smart ID: " + ID;
return GET_SMART(Smart);
};
function $ReadState(ID)
{
DO(900);