1
0
Fork 0
merge-requests/4/head
progr76@gmail.com 2019-05-14 21:00:28 +03:00
parent a0768062a5
commit c0f093cab2
12 changed files with 263 additions and 19 deletions

Binary file not shown.

Binary file not shown.

View File

@ -1,6 +1,6 @@
## API v1
This API is available if the node is running public http-access. Set the constant HTTP_HOSTING_PORT.
This API is available if the node is running public http-access. Set the constant HTTP_HOSTING_PORT=80
DappStaticCall - call static method
Example (GET)

View File

@ -1,6 +1,6 @@
## API v1
Данный API доступен если на ноде запущен публичный http-доступ. Т.е. задана константа HTTP_HOSTING_PORT
Данный API доступен если на ноде запущен публичный http-доступ. Т.е. задана константа HTTP_HOSTING_PORT=80
DappStaticCall - статический вызов метода смарт-контракта
Example (GET)

View File

@ -60,7 +60,7 @@ function DIV(Coin,Value)
function FLOAT_FROM_COIN(Coin)
{
var Sum = Coin.SumCOIN + Coin.SumCENT / 1e9;
var Sum = Coin.SumCOIN + Coin.SumCENT / MAX_SUM_CENT;
return Sum;
};
@ -75,10 +75,18 @@ function COIN_FROM_FLOAT(Sum)
var SumCOIN = Math.floor(Sum);
var SumCENT = Math.floor((Sum - SumCOIN) * MAX_SUM_CENT);
var Coin = {SumCOIN:SumCOIN, SumCENT:SumCENT};
return Coin;
};
function COIN_FROM_FLOAT2(Sum)
{
var SumCOIN = Math.floor(Sum);
var SumCENT = Math.floor(Sum * MAX_SUM_CENT - SumCOIN * MAX_SUM_CENT);
var Coin = {SumCOIN:SumCOIN, SumCENT:SumCENT};
var Sum2 = FLOAT_FROM_COIN(Coin);
if(Sum2 !== Sum2)
if(Sum2 !== Sum)
{
throw "ERR CHECK COIN_FROM_FLOAT";
throw "ERR CHECK COIN_FROM_FLOAT: " + Sum2 + "/" + Sum;
}
return Coin;
};

View File

@ -600,6 +600,9 @@
$("idHintStyle").disabled = !CONFIG_DATA.USE_HINT;
DrawBlockInfo();
}
function SetVisibleBtOpenWallet()
@ -1082,6 +1085,158 @@
</script>
<script>
var ArrInfo=
[
{Name:"Hashrate from the beginning of the chain", Delta:1000000000, DX:310},
{Name:"month", Delta:30.5*24*3600, DX:200},
{Name:"day", Delta:24*3600, DX:140},
{Name:"hour", Delta:3600, DX:90},
{Name:"minute", Delta:60, DX:60}
];
function DrawBlockInfo()
{
var TimeBlockNum=GetCurrentBlockNumByTime();
var CurBlockNum=TimeBlockNum;
if(CurBlockNum<ServerBlockNumDB+8)
CurBlockNum=ServerBlockNumDB;
var WasArr=0;
var Arr=[];
for(var i=ArrInfo.length-1;i>=0;i--)
{
var Item=ArrInfo[i];
Item.BlockNum2=CurBlockNum;
Item.BlockNum1=Item.BlockNum2-Item.Delta;
if(Item.BlockNum1<0)
Item.BlockNum1=0;
CurBlockNum=Item.BlockNum1;
var MustUpdate=0;
if(Item.PowerArr)
for(var n=0;n<Item.PowerArr.length;n++)
{
if(!Item.PowerArr[n])//есть нули
{
MustUpdate=1;
break;
}
}
if(Item.TimeBlockNum)
{
var DeltaTime=Math.abs(Item.TimeBlockNum-TimeBlockNum);
if(DeltaTime>Item.Delta/20)
{
//ToLog("i="+i+" DeltaTime="+DeltaTime+" > "+(Item.Delta/20))
MustUpdate=1;
}
}
if(!Item.PowerArr || Item.PowerArr.length===0 ||MustUpdate || i===ArrInfo.length-1)
{
WasArr=1;
Arr[i]={BlockNum1:Item.BlockNum1,BlockNum2:Item.BlockNum2};
}
}
if(!WasArr)
return;
//ToLog("GetHashRate: "+JSON.stringify(ArrInfo));
GetData("GetHashRate",Arr, function (Data)
{
//ToLog("GetHashRate: ")
var TimeBlockNum=GetCurrentBlockNumByTime();
if(Data && Data.result)
{
for(var i=0;i<Data.ItervalArr.length;i++)
{
var Item=ArrInfo[i];
if(Data.ItervalArr[i])
{
Item.TimeBlockNum=TimeBlockNum;
Item.PowerArr=Data.ItervalArr[i];
}
}
DrawBlockInfoByArr();
}
});
}
function DrawBlockInfoByArr()
{
var obj = document.getElementById("idBlockInfo");
var ctx = obj.getContext('2d');
var bodystyles = window.getComputedStyle(document.body, null);
ctx.fillStyle = bodystyles.backgroundColor;
ctx.fillRect(0, 0, obj.width, obj.height);
ctx.fillStyle = "#000";
ctx.strokeStyle = "#040";
ctx.lineWidth=2;
var x=0;
var lastx=x;var lastvalue=0;
ctx.beginPath();
var path = new Path2D();
path.moveTo(0,obj.height);
for(var i=0;i<ArrInfo.length;i++)
{
var Item=ArrInfo[i];
var Arr=Item.PowerArr;
var DeltaX=Item.DX/Arr.length;
var x2=0;
for(var n=0;n<Arr.length;n++)
{
if(Arr[n] && Arr[n]>lastvalue/3)
{
if(!lastvalue || lastvalue<Arr[n]/3)
path.moveTo(x+x2,obj.height);
path.lineTo(x+x2,obj.height-Arr[n]/2);
}
else
{
path.lineTo(lastx,obj.height-Arr[n]/2);
}
lastvalue=Arr[n];
lastx=x+x2;
x2+=DeltaX;
}
Item.x=x;
x+=Item.DX;
}
path.lineTo(lastx,obj.height);
path.lineTo(0,obj.height);
ctx.stroke(path);
ctx.fillStyle = "#080";
ctx.fill(path);
ctx.lineWidth=0.5;
ctx.fillStyle = "#ffffff";
ctx.strokeStyle = ctx.fillStyle;
ctx.beginPath();
ctx.moveTo(obj.width,0);
ctx.lineTo(obj.width,obj.height);
for(var i=0;i<ArrInfo.length;i++)
{
var Item=ArrInfo[i];
ctx.moveTo(Item.x,0);
ctx.lineTo(Item.x,obj.height);
ctx.fillText(""+Item.Name,Item.x+Item.DX/2-4*Item.Name.length/2,25);
}
ctx.stroke();
}
</script>
<style type="text/css">
table.password
@ -1221,6 +1376,7 @@
<HR>
</DIV>
</DIV>
<canvas width='800' height='30' id='idBlockInfo'></canvas>
<BR><BR><DIV id="idCurrentBlockNum" style="float: left"></DIV>
<DIV id="wallet_config_tab" style="display: none;float: left">

View File

@ -1033,6 +1033,8 @@ module.exports = class CConnect extends require("./transfer-msg")
}
CorrectTime()
{
var MaxCorrect = MAX_TIME_CORRECT;
var PerioadAfterCanStart = this.PerioadAfterCanStart;
var ArrNodes = this.GetHotTimeNodes();
var CountNodes = ArrNodes.length;
var DeltaArr = [];
@ -1044,7 +1046,7 @@ module.exports = class CConnect extends require("./transfer-msg")
continue;
if(Node.Times.Count < 2)
continue;
if(this.PerioadAfterCanStart >= PERIOD_FOR_START_CHECK_TIME)
if(PerioadAfterCanStart >= PERIOD_FOR_START_CHECK_TIME)
if(Node.Times.Count < 5)
continue;
NodesSet.add(Node)
@ -1055,9 +1057,14 @@ module.exports = class CConnect extends require("./transfer-msg")
}
if(DeltaArr.length < 1)
return ;
if(this.LoadHistoryMode && CountNodes > 10)
{
PerioadAfterCanStart = 0
CountNodes = 10
}
if(DeltaArr.length < CountNodes / 2)
return ;
if(this.PerioadAfterCanStart >= PERIOD_FOR_START_CHECK_TIME)
if(PerioadAfterCanStart >= PERIOD_FOR_START_CHECK_TIME)
{
if(DeltaArr.length < 3 * CountNodes / 4)
return ;
@ -1085,20 +1092,20 @@ module.exports = class CConnect extends require("./transfer-msg")
Count++
}
var AvgDelta = Sum / Count;
if(this.PerioadAfterCanStart < PERIOD_FOR_START_CHECK_TIME)
if(PerioadAfterCanStart < PERIOD_FOR_START_CHECK_TIME)
{
var KT = (PERIOD_FOR_START_CHECK_TIME - this.PerioadAfterCanStart) / PERIOD_FOR_START_CHECK_TIME;
var KT = (PERIOD_FOR_START_CHECK_TIME - PerioadAfterCanStart) / PERIOD_FOR_START_CHECK_TIME;
AvgDelta = AvgDelta * KT
}
else
{
MAX_TIME_CORRECT = 25
MaxCorrect = 25
}
if(AvgDelta < ( - MAX_TIME_CORRECT))
AvgDelta = - MAX_TIME_CORRECT
if(AvgDelta < ( - MaxCorrect))
AvgDelta = - MaxCorrect
else
if(AvgDelta > MAX_TIME_CORRECT)
AvgDelta = MAX_TIME_CORRECT
if(AvgDelta > MaxCorrect)
AvgDelta = MaxCorrect
AvgDelta = Math.trunc(AvgDelta)
if(Math.abs(AvgDelta) < 15)
{

View File

@ -8,7 +8,7 @@
* Telegram: https://t.me/terafoundation
*/
global.UPDATE_CODE_VERSION_NUM = 1047;
global.UPDATE_CODE_VERSION_NUM = 1049;
global.MIN_CODE_VERSION_NUM = 1020;
global.MINING_VERSION_NUM = 3;
global.InitParamsArg = InitParamsArg;

View File

@ -35,6 +35,8 @@ ContenTypeMap["exe"] = "application/octet-stream";
ContenTypeMap["msi"] = "application/octet-stream";
ContenTypeMap[".js"] = "application/javascript";
ContenTypeMap["tml"] = "text/html";
ContenTypeMap["tml"] = "text/html";
ContenTypeMap["psd"] = "application/octet-stream";
global.HTTPCaller = {};
function DoCommand(response,Type,Path,params,remoteAddress)
@ -1837,3 +1839,66 @@ function GetEventArray(SmartNum,Context)
}
return ArrRet;
};
var BlockTree = new STreeBuffer(300 * 1000, CompareItemHashSimple, "number");
HTTPCaller.GetHashRate = function (ArrParams)
{
var CurBlockNum = GetCurrentBlockNumByTime();
var ResArr = [];
for(var i = 0; i < ArrParams.length; i++)
{
var Item = ArrParams[i];
if(!Item)
{
ResArr[i] = undefined;
continue;
}
if(Item.BlockNum1 < 0)
Item.BlockNum1 = 0;
if(Item.BlockNum2 > CurBlockNum)
Item.BlockNum2 = CurBlockNum;
var Delta = Item.BlockNum2 - Item.BlockNum1;
var Count = Delta;
if(Count > 20)
Count = 20;
else
if(Count <= 0)
Count = 1;
var StepDelta = Math.floor(Delta / Count);
if(StepDelta < 1)
StepDelta = 1;
var CountAvg = 10;
if(i === ArrParams.length - 1)
CountAvg = 3;
var ItervalArr = [];
for(var Num = Item.BlockNum1; Num < Item.BlockNum2; Num += StepDelta)
{
var Power;
var Item2 = BlockTree.LoadValue(Num, 1);
if(Item2 && i !== ArrParams.length - 1)
{
Power = Item2.Power;
}
else
{
var Sum = 0;
var CountSum = 0;
for(var d = 0; d < CountAvg; d++)
{
var Block = SERVER.ReadBlockHeaderDB(Num + d);
if(Block)
{
CountSum++;
Sum += GetPowPower(Block.PowHash);
}
}
if(!CountSum)
CountSum = 1;
Power = Math.floor(Sum / CountSum);
BlockTree.SaveValue(Num, {BlockNum:Num, Power:Power});
}
ItervalArr.push(Power);
}
ResArr[i] = ItervalArr;
}
return {result:1, ItervalArr:ResArr};
};

View File

@ -35,9 +35,8 @@ setTimeout(function ()
global.glCurNumFindArr = 0;
global.ArrReconnect = [];
global.ArrConnect = [];
var FindList = [{"ip":"91.235.136.81", "port":30005}, {"ip":"149.154.70.158", "port":30000}, {"ip":"69.30.225.26", "port":30000},
{"ip":"185.240.243.182", "port":30000}, {"ip":"212.109.197.205", "port":30000}, {"ip":"212.109.197.209", "port":30000}, {"ip":"80.87.192.24",
"port":30000}, ];
var FindList = [{"ip":"91.235.136.81", "port":30005}, {"ip":"149.154.70.158", "port":30000}, {"ip":"185.240.243.182", "port":30000},
{"ip":"212.109.197.205", "port":30000}, {"ip":"212.109.197.209", "port":30000}, {"ip":"80.87.192.24", "port":30000}, ];
if(global.LOCAL_RUN)
{
FindList = [{"ip":"127.0.0.1", "port":50001}, {"ip":"127.0.0.1", "port":50002}];

View File

@ -173,7 +173,6 @@ function DoTXProcess()
var Item0 = BlockTree.LoadValue(Block0.BlockNum, 1);
if(Item0 && CompareArr(Item0.SumHash, Block0.SumHash) !== 0)
{
ToLog("WAS_CHANGED_PREV_BLOCK = " + Block0.BlockNum);
break;
}
}

View File

@ -793,6 +793,16 @@ HostingCaller.GetHistoryTransactions = function (Params)
return {result:0};
return HTTPCaller.GetHistoryTransactions(Params);
};
HostingCaller.GetSupply = function (Params)
{
var Data = DApps.Accounts.ReadState(0);
if(!Data)
return "";
else
{
return "" + (global.TOTAL_SUPPLY_TERA - Data.Value.SumCOIN);
}
};
global.GlobalRunID = 0;
global.GlobalRunMap = {};
process.RunRPC = function (Name,Params,F)