1430 lines
46 KiB
HTML
1430 lines
46 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<title>TERA Light</title>
|
||
|
||
|
||
<link rel="shortcut icon" href="./tera.ico" type="image/vnd.microsoft.icon">
|
||
|
||
<link rel="stylesheet" type="text/css" href="./CSS/wallet.css">
|
||
|
||
<script type="text/javascript" src="./JS/coinlib.js"></script>
|
||
<script type="text/javascript" src="./JS/client.js"></script>
|
||
<script type="text/javascript" src="./JS/sha3.js"></script>
|
||
<script type="text/javascript" src="./JS/crypto-client.js"></script>
|
||
<script type="text/javascript" src="./JS/terahashlib.js"></script>
|
||
<script type="text/javascript" src="./JS/wallet-web.js"></script>
|
||
<script type="text/javascript" src="./JS/wallet-lib.js"></script>
|
||
<script type="text/javascript" src="./JS/diagram.js"></script>
|
||
<!--<script type="text/javascript" src="./JS/sign-lib-min.js"></script>-->
|
||
|
||
<script>
|
||
// window.WEBWALLET=1;
|
||
|
||
|
||
|
||
var PubKeyStr;
|
||
var NumAccountList=0;
|
||
|
||
//Pagination
|
||
var SaveIdArr=["idAccount","idTo","idSumSend","idDescription","idCurTabName","idPubKey","idPrivKey","idViewBlockNum","idViewAccountNum","idViewDappNum","idLang"];
|
||
|
||
var CONFIG_DATA={PRICE_DAO:{NewAccount:10},MaxNumBlockDB:0,MaxAccID:0,MaxDappsID:0};
|
||
var CountViewRows=20;
|
||
var DefAccounts={BlockName:"idPaginationAccount", NumName:"idViewAccountNum", TabName:"explorer_accounts",APIName:"GetAccountList"};
|
||
var DefBlock={BlockName:"idPaginationBlock", NumName:"idViewBlockNum", TabName:"explorer_blocks",APIName:"GetBlockList"};
|
||
var DefDapps={BlockName:"idPaginationDapps", NumName:"idViewDappNum", TabName:"dapps_list",APIName:"GetDappList",CountViewRows:10};
|
||
function SetImg() {};
|
||
|
||
|
||
|
||
window.onload=function()
|
||
{
|
||
LoadSignLib();
|
||
|
||
DoLangScript();
|
||
|
||
if(Storage.getItem("NETWORK") || IsLocalClient())
|
||
{
|
||
OnLoad();
|
||
}
|
||
else
|
||
{
|
||
GetData("/GetCurrentInfo",{}, function (Data)
|
||
{
|
||
if(Data && Data.result)
|
||
{
|
||
Storage.setItem("NETWORK",Data.NETWORK);
|
||
console.log("Default network: "+Data.NETWORK);
|
||
OnLoad();
|
||
|
||
}
|
||
});
|
||
}
|
||
|
||
}
|
||
|
||
function OnLoad()
|
||
{
|
||
if(Storage.getItem("NETWORK"))
|
||
NETWORK=Storage.getItem("NETWORK");
|
||
|
||
|
||
|
||
LoadValues();
|
||
StartWebWallet();
|
||
|
||
UpdatesExplorerData();
|
||
UpdatesAccountsData();
|
||
setInterval(UpdatesExplorerData,1000);
|
||
setInterval(UpdatesAccountsData,1000);
|
||
|
||
DoStableScroll();
|
||
|
||
setTimeout(SetVisibleItemsKeys,500);
|
||
|
||
//COMMON MOUSE MOVING
|
||
window.onmousemove = function(event)
|
||
{
|
||
SetDiagramMouseX(event);
|
||
}
|
||
|
||
if(window.location.hash)
|
||
{
|
||
var LocationPath=window.location.hash.substr(1);
|
||
if(LocationPath)
|
||
{
|
||
SelectTab(LocationPath);
|
||
}
|
||
}
|
||
}
|
||
|
||
function ChangeNetwork()
|
||
{
|
||
if(NETWORK==="TERA-TEST2")
|
||
{
|
||
NETWORK="TERA-MAIN";
|
||
}
|
||
else
|
||
{
|
||
NETWORK="TERA-TEST2";
|
||
}
|
||
Storage.setItem("NETWORK",NETWORK);
|
||
StartWebWallet();
|
||
|
||
UpdatesExplorerData();
|
||
UpdatesAccountsData();
|
||
}
|
||
|
||
|
||
function OnFindServer()
|
||
{
|
||
if(!MainServer)
|
||
{
|
||
SetStatus("Server not found");
|
||
Storage.setItem("MainServer",undefined);
|
||
return;
|
||
}
|
||
|
||
Storage.setItem("MainServer",JSON.stringify(MainServer));//for use in dapp
|
||
|
||
//currency fill
|
||
FillCurrencyAsync("idAccountCur");
|
||
|
||
}
|
||
|
||
function LoadValues()
|
||
{
|
||
if(LoadValuesByArr(SaveIdArr))
|
||
{
|
||
ChangeLang();
|
||
}
|
||
}
|
||
function SaveValues()
|
||
{
|
||
SaveValuesByArr(SaveIdArr);
|
||
}
|
||
|
||
|
||
|
||
function ViewDapps()
|
||
{
|
||
ViewCurrent(DefDapps);
|
||
}
|
||
|
||
</script>
|
||
|
||
|
||
<script>
|
||
//TAB TAB
|
||
var TabArr=[{name:"TabAccounts"},{name:"TabSend"},{name:"TabDapps"}, {name:"TabExplorer"},{name:"TabLogo"}];
|
||
function SelectTab(name)
|
||
{
|
||
SetStatus("");
|
||
$("idCurTabName").value=name;
|
||
SetVisibleTab();
|
||
SaveValues();
|
||
OnSelectTab(name);
|
||
|
||
if(history.pushState)
|
||
history.pushState(null,null,"#"+name);
|
||
}
|
||
function OnSelectTab(name)
|
||
{
|
||
if(name==="TabDapps")
|
||
{
|
||
ViewDapps();
|
||
}
|
||
}
|
||
|
||
function SetVisibleTab()
|
||
{
|
||
var CurTabName=$("idCurTabName").value;
|
||
if(!CurTabName || CurTabName==="undefined")
|
||
CurTabName=TabArr[0].name;
|
||
|
||
var str;
|
||
for (var i=0;i<TabArr.length;i++)
|
||
{
|
||
var name=TabArr[i].name;
|
||
var Item=$(name);
|
||
if(!Item)
|
||
continue;
|
||
if(CurTabName===name)
|
||
{
|
||
Item.style.display = 'block';
|
||
str="current bttab"
|
||
}
|
||
else
|
||
{
|
||
Item.style.display = 'none';
|
||
str="bttab"
|
||
}
|
||
|
||
var ItemM=$("M"+name);
|
||
if(ItemM)
|
||
{
|
||
ItemM.className=str;
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
|
||
<script>
|
||
//CONFIG
|
||
var FirstAccountsData=1;
|
||
function UpdatesAccountsData()
|
||
{
|
||
GetData("/GetAccountListByKey",{Key:$("idPubKey").value,AllData:FirstAccountsData}, function (Data,responseText)
|
||
{
|
||
if(!Data || !Data.result)
|
||
return;
|
||
|
||
FirstAccountsData=0;
|
||
NumAccountList=Data.NumAccountList;
|
||
SetAccountsData(Data,responseText);
|
||
});
|
||
}
|
||
|
||
function IsPrivateMode()
|
||
{
|
||
var PrivKeyStr=$("idPrivKey").value;
|
||
if(PrivKeyStr && PrivKeyStr.length===64)
|
||
return 1;
|
||
else
|
||
return 0;
|
||
}
|
||
|
||
|
||
function SetVisibleItemsKeys(EditFlag,bOpenEdit)
|
||
{
|
||
if(bOpenEdit)
|
||
{
|
||
$("idPrivKeyEdit").value=$("idPrivKey").value;
|
||
}
|
||
SetPubKey(EditFlag);
|
||
var StrNo="none",StrYes="table-row";
|
||
|
||
SetVisibleBlock("WalRow1",!EditFlag?StrYes:StrNo);
|
||
|
||
SetVisibleBlock("WalRow2",EditFlag?StrYes:StrNo);
|
||
if($("idShowPubKey").checked)
|
||
SetVisibleBlock("WalRow3",EditFlag?StrYes:StrNo);
|
||
else
|
||
SetVisibleBlock("WalRow3","none");
|
||
SetVisibleBlock("WalRow4",EditFlag?StrYes:StrNo);
|
||
|
||
|
||
if(!EditFlag)
|
||
{
|
||
var Str;
|
||
if(!$("idPrivKey").value)
|
||
{
|
||
if($("idPubKey").value)
|
||
Str="Wallet in read mode. Using Public key.";
|
||
else
|
||
Str="Key not set. Pls, press edit and generate key ->";
|
||
}
|
||
else
|
||
{
|
||
Str="OK. Using Private key.";
|
||
}
|
||
$("idPrivKeyButton").innerHTML=toStaticHTML(Str);
|
||
}
|
||
|
||
if(EditFlag)
|
||
{
|
||
$("idPrivKeyEdit").focus();
|
||
}
|
||
}
|
||
function SetPubKey(EditFlag)
|
||
{
|
||
var StrPrivKey;
|
||
if(EditFlag)
|
||
StrPrivKey=$("idPrivKeyEdit").value.trim();
|
||
else
|
||
StrPrivKey=$("idPrivKey").value.trim();
|
||
if(IsHexStr(StrPrivKey))
|
||
{
|
||
if(StrPrivKey.length===64)
|
||
{
|
||
var PrivKey=GetArrFromHex(StrPrivKey);
|
||
$("idPubKey").value=GetHexFromArr(SignLib.publicKeyCreate(PrivKey,1));
|
||
}
|
||
else
|
||
{
|
||
$("idPubKey").value=StrPrivKey;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
$("idPubKey").value="";
|
||
}
|
||
}
|
||
|
||
function OnPrivKeyNew()
|
||
{
|
||
var arr = new Uint8Array(32);
|
||
window.crypto.getRandomValues(arr);
|
||
var Str=GetHexFromArr(sha3(arr));
|
||
$("idPrivKeyEdit").value=Str;
|
||
SetPubKey(1);
|
||
}
|
||
function OnPrivKeyOK()
|
||
{
|
||
$("idPrivKey").value=$("idPrivKeyEdit").value;
|
||
SetVisibleItemsKeys(0);
|
||
SaveValues();
|
||
}
|
||
function OpenWallet()
|
||
{
|
||
if($("idPrivKey").value)
|
||
return;
|
||
|
||
}
|
||
|
||
|
||
//Accounts
|
||
function ViewNewAccount()
|
||
{
|
||
SetVisibleBlock("idAccountEdit",1);
|
||
$("idAccountName").focus();
|
||
}
|
||
function OnSetAccount(FlagOK)
|
||
{
|
||
if(FlagOK)
|
||
{
|
||
if(!$("idPrivKey").value)
|
||
{
|
||
OnPrivKeyNew();
|
||
OnPrivKeyOK();
|
||
}
|
||
|
||
var Name=$("idAccountName").value;
|
||
var Smart=0;
|
||
var Currency=ParseNum($("idAccountCur").value);
|
||
if(!Name)
|
||
{
|
||
SetError("Enter the account name.");
|
||
return;
|
||
}
|
||
SetStatus("Calculate Tx, wait pls ...");
|
||
SendTrCreateAccWait(Currency,$("idPubKey").value,Name,Smart);
|
||
}
|
||
SetVisibleBlock("idAccountEdit",0)
|
||
}
|
||
function CancelCreateAccount()
|
||
{
|
||
SetVisibleBlock("idAccountEdit",0)
|
||
}
|
||
|
||
|
||
|
||
|
||
</script>
|
||
|
||
|
||
<script>
|
||
//EXPLORER
|
||
function UpdatesExplorerData()
|
||
{
|
||
var WasSendTr=0;
|
||
for(var key in MapSendTransaction)
|
||
{
|
||
var Item=MapSendTransaction[key];
|
||
if(!Item.WasProcess && !Item.final)
|
||
{
|
||
WasSendTr=1;
|
||
break;
|
||
}
|
||
}
|
||
|
||
|
||
GetData("GetCurrentInfo",{Diagram:IsVisibleBlock("idStatBlock")?1:0,ArrLog:WasSendTr}, function (Data)
|
||
{
|
||
if(!Data || !Data.result)
|
||
return;
|
||
|
||
SetExplorerData(Data);
|
||
SetBlockChainConstant(Data);
|
||
|
||
var arr=Data.arr;
|
||
for(var i=0;arr && i<arr.length;i++)
|
||
{
|
||
var ItemServer=arr[i];
|
||
var ItemClient=DiagramMap[ItemServer.name];
|
||
if(!ItemClient || ItemClient.Extern)
|
||
continue;
|
||
|
||
|
||
ItemClient.arr=ItemServer.arr;
|
||
ItemClient.AvgValue=ItemServer.AvgValue;
|
||
ItemClient.steptime=ItemServer.steptime;
|
||
ItemClient.fillStyle="white";
|
||
|
||
|
||
|
||
DrawDiagram(ItemClient);
|
||
}
|
||
|
||
});
|
||
}
|
||
var FirstCallDiagram=1;
|
||
function SetExplorerData(Data)
|
||
{
|
||
if(!Data || !Data.result)
|
||
return;
|
||
CONFIG_DATA=Data;
|
||
window.FIRST_TIME_BLOCK=Data.FIRST_TIME_BLOCK;
|
||
if(FirstCallDiagram)
|
||
{
|
||
ViewEnd(DefAccounts,CONFIG_DATA.MaxAccID,1);
|
||
ViewEnd(DefBlock,CONFIG_DATA.MaxNumBlockDB,1);
|
||
InitDiagram();
|
||
}
|
||
FirstCallDiagram=0;
|
||
|
||
var StrVersion=" 0."+Data.VersionNum;
|
||
var Str="Blockchain height: <B>"+Data.MaxNumBlockDB+"</B> Current create: <B>"+Data.CurBlockNum+"</B> Wallet ver:"+"<B>"+StrVersion+"</B>";
|
||
$("idCurrentBlockNum").innerHTML=toStaticHTML(Str);
|
||
|
||
|
||
SetArrLog(Data.ArrLog);
|
||
|
||
}
|
||
|
||
|
||
function SetArrLog(arr)
|
||
{
|
||
if(!arr)
|
||
return;
|
||
|
||
for(var i=0;i<arr.length;i++)
|
||
{
|
||
var Item=arr[i];
|
||
if(!Item.final)
|
||
continue;
|
||
var TR=MapSendTransaction[Item.key];
|
||
if(TR && !TR.WasProcess && Item.final)
|
||
{
|
||
TR.WasProcess=1;
|
||
SetStatus(Item.text);
|
||
|
||
if(Item.text.indexOf("Add to blockchain")>=0)
|
||
{
|
||
if(TR.Run)
|
||
{
|
||
TR.Run(TR);
|
||
TR.Run=undefined;
|
||
}
|
||
}
|
||
|
||
|
||
var Account=MapCheckTransaction[Item.key];
|
||
if(Account)
|
||
{
|
||
delete MapCheckTransaction[Item.key];
|
||
Account.NextSendTime=0;
|
||
}
|
||
|
||
|
||
}
|
||
}
|
||
CheckSending();
|
||
}
|
||
|
||
</script>
|
||
|
||
<script>
|
||
//Diagrams
|
||
var DiagramArr=
|
||
[
|
||
{name:"MAX:ALL_NODES",text:"All nodes count",value:0,red:"#1d506b"},
|
||
{name:"MAX:HASH_RATE_G",text:"HashRate Gh/s",value:0,red:"#286b16"},
|
||
|
||
|
||
];
|
||
|
||
|
||
function InitDiagram()
|
||
{
|
||
InitDiagramByArr(DiagramArr,800);
|
||
}
|
||
|
||
function ViewCounters(This)
|
||
{
|
||
var BlockName="idStatBlock";
|
||
var element=$(BlockName);
|
||
|
||
var bVisible=IsVisibleBlock(BlockName);
|
||
if(!bVisible)
|
||
MoveUp(element);
|
||
SetVisibleBlock(BlockName,!bVisible);
|
||
var ResVisible=IsVisibleBlock(BlockName);
|
||
if(This && This.className)
|
||
{
|
||
This.className=This.className.replace("btpress", "");
|
||
if(ResVisible)
|
||
This.className+=" btpress";
|
||
}
|
||
}
|
||
</script>
|
||
|
||
|
||
<script>
|
||
//SEND
|
||
setInterval(CheckSending,1000);
|
||
|
||
function OpenAddressBook()
|
||
{
|
||
return;
|
||
var bVisible=IsVisibleBlock("idAddressBook");
|
||
SetVisibleBlock("idAddressBook",!bVisible);
|
||
}
|
||
function CloaseAddressBook()
|
||
{
|
||
OpenAddressBook();
|
||
}
|
||
</script>
|
||
|
||
|
||
<script>
|
||
//LANG
|
||
|
||
var LangItems=[];
|
||
function InitLangItems()
|
||
{
|
||
var tags=["TITLE","BUTTON","DIV","INPUT","TH","TD","SPAN"];
|
||
var Map2={};
|
||
for(var n=0;n<tags.length;n++)
|
||
{
|
||
var tagname=tags[n];
|
||
var elems = document.getElementsByTagName(tagname);
|
||
for( var elem, i = 0; elem = elems[ i++ ]; )
|
||
{
|
||
var Text=elem.innerText;
|
||
if(elem.innerHTML !== Text && tagname!=="BUTTON")
|
||
continue;
|
||
if(!Text)
|
||
continue;
|
||
|
||
if(Text.toUpperCase()==Text.toLowerCase())
|
||
continue;
|
||
|
||
LangItems.push({key:Text,elem:elem});
|
||
}
|
||
}
|
||
}
|
||
|
||
function DoLangItems(Map)
|
||
{
|
||
var Map2={};
|
||
for(var n=0;n<LangItems.length;n++)
|
||
{
|
||
var key=LangItems[n].key;
|
||
var elem=LangItems[n].elem;
|
||
if(Map)
|
||
{
|
||
var TextNew=Map[key];
|
||
if(TextNew===undefined)
|
||
{
|
||
ToLog("Not found translate for key: "+key);
|
||
TextNew=key;
|
||
}
|
||
|
||
if(elem.innerText!==TextNew)
|
||
elem.innerText=TextNew;
|
||
}
|
||
else
|
||
{
|
||
Map2[key]=key;
|
||
}
|
||
}
|
||
return Map2;
|
||
}
|
||
|
||
function DoLangScript()
|
||
{
|
||
InitLangItems();
|
||
LangMap["ENG"]=DoLangItems();
|
||
|
||
|
||
FillSelect("idLang",LangMap,"KEY");
|
||
}
|
||
function ChangeLang()
|
||
{
|
||
var key=$("idLang").value;
|
||
if(!key)
|
||
{
|
||
key="ENG";
|
||
$("idLang").value=key;
|
||
}
|
||
DoLangItems(LangMap[key]);
|
||
SaveValues();
|
||
}
|
||
|
||
|
||
</script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<style>
|
||
/*TAB TAB*/
|
||
#TabHeader th
|
||
{
|
||
|
||
color: white;
|
||
background-color: #22547f;
|
||
margin: 0;
|
||
padding: 0;
|
||
height: 24px;
|
||
}
|
||
.bttab
|
||
{
|
||
background-color: #2b372d;
|
||
vertical-align: middle;
|
||
cursor: pointer;
|
||
color: white;
|
||
width: 100%;
|
||
margin: 0;
|
||
padding-top: 7px;
|
||
height: 24px;
|
||
border: 1px solid white;
|
||
}
|
||
.bttab:hover
|
||
{
|
||
color: #ff9749;
|
||
}
|
||
.current
|
||
{
|
||
background-color: #4b5e4d;
|
||
color:#ff9749;
|
||
}
|
||
#TabHeader th
|
||
{
|
||
width: 200px;
|
||
}
|
||
</style>
|
||
|
||
<style>
|
||
body
|
||
{
|
||
background-color: #fffefe;
|
||
font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
|
||
font-size: 13px;
|
||
line-height: 1.42857143;
|
||
}
|
||
|
||
.DIAGRAM
|
||
{
|
||
border-radius: 6px;
|
||
width: 800px;
|
||
}
|
||
table
|
||
{
|
||
border-collapse: collapse;
|
||
width:100%;
|
||
max-width: 800px;
|
||
margin: 10px;
|
||
}
|
||
.grid th, .grid td
|
||
{
|
||
border: 1px solid #777678;
|
||
padding: 4px;
|
||
}
|
||
.grid td
|
||
{
|
||
width: 60px;
|
||
vertical-align:top;
|
||
}
|
||
|
||
button
|
||
{
|
||
font-family: monospace;
|
||
}
|
||
|
||
button:hover
|
||
{
|
||
filter: brightness(120%);
|
||
cursor: pointer;
|
||
}
|
||
.openblock
|
||
{
|
||
padding: 2px;
|
||
filter: brightness(120%);
|
||
}
|
||
.btview
|
||
{
|
||
background-color: #afb0b7;
|
||
border: 1px solid #000;
|
||
height: 120px;
|
||
width: 150px;
|
||
padding-top: 0px;
|
||
cursor: pointer;
|
||
font-size: large;
|
||
}
|
||
.btview:hover
|
||
{
|
||
color: #cb7043;
|
||
filter:none;
|
||
}
|
||
|
||
.btpress, .btpress:hover
|
||
{
|
||
border: 2px solid #000;
|
||
color: #9c5335;
|
||
filter:none;
|
||
}
|
||
|
||
|
||
.btnav
|
||
{
|
||
font-family: monospace;
|
||
height: 32px;
|
||
}
|
||
|
||
.pag_num
|
||
{
|
||
border-radius: 4px;
|
||
height: 26px;
|
||
margin: 2px;
|
||
}
|
||
|
||
td
|
||
{
|
||
font-size: small;
|
||
}
|
||
td.num
|
||
{
|
||
text-align: right;
|
||
width: 50px;
|
||
}
|
||
td.sum
|
||
{
|
||
text-align: right;
|
||
font-family: "courier new", "times new roman", monospace;
|
||
min-width: 150px;
|
||
max-width: 150px;
|
||
}
|
||
td.cur
|
||
{
|
||
min-width: 80px;
|
||
max-width: 80px;
|
||
}
|
||
|
||
td.date
|
||
{
|
||
text-align: left;
|
||
width: 90px;
|
||
min-width: 90px;
|
||
font-size: small;
|
||
}
|
||
td.hash
|
||
{
|
||
max-width: 113px;
|
||
min-width: 113px;
|
||
font-family: "courier new", "times new roman", monospace;
|
||
font-size: 60%;
|
||
align-content: left;
|
||
text-align: left;
|
||
word-break: break-all;
|
||
}
|
||
td.pubkey
|
||
{
|
||
min-width: 195px;
|
||
max-width: 195px;
|
||
}
|
||
|
||
.accname
|
||
{
|
||
width: 180px;
|
||
min-width: 140px;
|
||
align-content: left;
|
||
text-align: left;
|
||
word-break: break-all;
|
||
}
|
||
.dappname
|
||
{
|
||
width: 140px;
|
||
min-width: 140px;
|
||
align-content: left;
|
||
text-align: left;
|
||
word-break: break-all;
|
||
}
|
||
td.dappdesc
|
||
{
|
||
width: 180px;
|
||
min-width: 180px;
|
||
word-break: normal;
|
||
}
|
||
|
||
|
||
#idCurrentBlockNum
|
||
{
|
||
margin: 10px;
|
||
height: 20px;
|
||
}
|
||
|
||
.delete
|
||
{
|
||
position: absolute;
|
||
display: none;
|
||
}
|
||
|
||
#idCategory
|
||
{
|
||
margin: 5px;
|
||
}
|
||
|
||
#idPrivKeyButton, #idPrivKeyEdit, #idPubKey
|
||
{
|
||
width: 100%;
|
||
border: 1px solid #1a2ec1;
|
||
background-color: white;
|
||
font-family: monospace;
|
||
padding: 5px;
|
||
}
|
||
#idPrivKeyEdit
|
||
{
|
||
color: darkgreen;
|
||
font-weight: 600;
|
||
}
|
||
#idKeys td:first-child
|
||
{
|
||
width: 80px;
|
||
}
|
||
#idKeys td:nth-child(2)
|
||
{
|
||
width: 520px;
|
||
}
|
||
#idKeys td:nth-child(3)
|
||
{
|
||
align-content: left;
|
||
text-align: left;
|
||
}
|
||
|
||
|
||
.btkey
|
||
{
|
||
width: 60px;
|
||
padding: 5px;
|
||
}
|
||
.bigs
|
||
{
|
||
padding: 5px;
|
||
}
|
||
|
||
#idStatus
|
||
{
|
||
top:0px;
|
||
left:10px;
|
||
text-align: left;
|
||
width:620px;
|
||
height: 20px;
|
||
color:blue;
|
||
}
|
||
#idNetwork
|
||
{
|
||
top:0px;
|
||
right:10px;
|
||
text-align: center;
|
||
width:100px;
|
||
height: 20px;
|
||
color: #286798;
|
||
padding-right: 5px;
|
||
}
|
||
|
||
|
||
|
||
.logo
|
||
{
|
||
top:0%;
|
||
left:0;
|
||
}
|
||
|
||
.abook
|
||
{
|
||
width: 26px;
|
||
height: 26px;
|
||
padding: 0 0 0 10px;
|
||
margin: 0 0 -10px;
|
||
cursor: pointer;
|
||
}
|
||
|
||
#idAddressBook
|
||
{
|
||
z-index:100;
|
||
position:absolute;
|
||
height:200px;
|
||
width:300px;
|
||
top:150px;
|
||
left:0;
|
||
transform: translateX(50vw) translateX(-320px);
|
||
|
||
background: #f1ffda;
|
||
color: black;
|
||
text-align: left;
|
||
border: 1px solid #782019;
|
||
border-radius: 5px;
|
||
box-shadow: 0 0 0 1px darkgrey;
|
||
}
|
||
|
||
|
||
</style>
|
||
|
||
</head>
|
||
<body>
|
||
<DIV align='center'>
|
||
<DIV align='left' style="min-width:600px;max-width:800px;height: 97vh; border: 0px solid #bfc1c0;">
|
||
|
||
<INPUT id="idCurTabName" value="TabInfo" style="display: none">
|
||
<table id="TabHeader">
|
||
<tr>
|
||
<th><DIV id="MTabAccounts" onclick="SelectTab('TabAccounts')" class="bttab">ACCOUNTS</DIV></th>
|
||
<th><DIV id="MTabSend" onclick="SelectTab('TabSend')" class="bttab">SEND</DIV></th>
|
||
<th><DIV id="MTabDapps" onclick="SelectTab('TabDapps')" class="bttab">DAPPS</DIV></th>
|
||
<th><DIV id="MTabExplorer" onclick="SelectTab('TabExplorer')" class="bttab">EXPLORER</DIV></th>
|
||
</tr>
|
||
</table>
|
||
<table>
|
||
<tr>
|
||
<td><DIV id="idStatus"> </DIV></td>
|
||
<td>
|
||
<select size="1" id="idLang" onchange="ChangeLang()" class="bigs" style="width: 70px;height: 24px;padding: 0">
|
||
<option value="ENG">ENG</option>
|
||
</select>
|
||
</td>
|
||
|
||
<td><button id="idNetwork" style="height: 24px;" onclick="ChangeNetwork()"></button></td>
|
||
</tr>
|
||
</table>
|
||
|
||
|
||
<DIV id="TabLogo" style="display: block;">
|
||
<DIV align='center' style="width: 800px;">
|
||
<svg version = "1.1" class="logo" height = "480px" width = "480px">
|
||
<path transform="scale(2)" d="m116.5,2.58c0,0 114.5,187.5 114.5,187.5c0,0 -52.5,1 -52.5,1c0,0 -28,-44 -28,-44c0,0 -27,44 -27,44c0,0 -53.5,0 -53.5,0c0,0 54,-89 54,-89c0,0 -33.5,-57 -33.5,-57c0,0 26,-42.5 26,-42.5z" fill="rgb(0,0,0)" id="svg_2" stroke="#000000"/>
|
||
<path transform="scale(2)" d="m81.6,60.6c0,0 27,44 27,44c0,0 -53,87 -53,87c0,0 -54,-1 -54,-1c0,0 80,-130 80,-130z" fill="rgb(0,0,0)" id="svg_3" stroke="#000000"/>
|
||
</svg>
|
||
</DIV>
|
||
</DIV>
|
||
|
||
<DIV id="TabAccounts" style="display: none;">
|
||
<BR>
|
||
<table id="idKeys">
|
||
<tr id="WalRow1">
|
||
<td>Wallet:</td>
|
||
<td><button id="idPrivKeyButton" onclick="OpenWallet()">Wallet opened: </button></td>
|
||
<td><button onclick="SetVisibleItemsKeys(1,1)" style="width: 120px" class="btkey bigs">Edit...</button></td>
|
||
</tr>
|
||
<tr id="WalRow2" style="display: none">
|
||
<td>Private key:</td>
|
||
<td><INPUT type="search" id="idPrivKeyEdit" oninput="SetPubKey(1);"></td>
|
||
<td>
|
||
<button onclick="OnPrivKeyOK()" class="btkey bigs">OK</button>
|
||
<button onclick="SetVisibleItemsKeys(0)" class="btkey bigs">Cancel</button>
|
||
</td>
|
||
</tr>
|
||
<tr id="WalRow3" style="display: none">
|
||
<td>Pub key:</td>
|
||
<td><INPUT type="search" id="idPubKey" readonly></td>
|
||
<td></td>
|
||
|
||
</tr>
|
||
<tr id="WalRow4" style="display: none">
|
||
<td></td>
|
||
<td colspan="1"><button class="bigs" onclick="OnPrivKeyNew()">Generate key</button>
|
||
<INPUT type="checkbox" id="idShowPubKey" oninput="SetVisibleItemsKeys(1)"> <span>Show pub key</span>
|
||
<!--Set password:<INPUT class="bigs" type="search" id="idProtKey">-->
|
||
</td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
<INPUT type="hidden" id="idPrivKey">
|
||
|
||
<BR>
|
||
<DIV style="padding: 0 0 0 10px">
|
||
|
||
<table>
|
||
<tr>
|
||
<td style="width: 220px">
|
||
<button class="bigs" onclick="ConnectWebWallet()"> Reconnect</button>
|
||
<button class="bigs" onclick="ViewNewAccount()"> New account...</button>
|
||
</td>
|
||
<td>
|
||
<DIV id="idAccountEdit" style="display: none;">
|
||
<span>Public name</span>:<INPUT class="bigs" style="width: 180px" type="string" id="idAccountName">
|
||
<span>Currency</span>:
|
||
<select size="1" id="idAccountCur" class="bigs" style="width: 80px">
|
||
<option value="0">TERA</option>
|
||
</select>
|
||
|
||
<button onclick="OnSetAccount(1)" class="btkey bigs">OK</button>
|
||
<button onclick="OnSetAccount(0)" class="btkey bigs">Cancel</button>
|
||
</DIV>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
</DIV>
|
||
|
||
<table id="grid_accounts" class="grid">
|
||
<tr>
|
||
<th id="(RetHistoryAccount(Item))" class="num">ID</th>
|
||
<th id="SUM_TO_STRING(Item.Value)" class="sum bold">Amount</th>
|
||
<th id="CurrencyNameItem(Item)" data-name="Currency" class="cur hint">Currency</th>
|
||
<th id="Item.Name" data-name="Account name" class="accname hint">Name</th>
|
||
<th id="(RetChangeSmart(Item))" data-name="Smart contract (DApp)" class="smart hint">Smart</th>
|
||
</tr>
|
||
</table>
|
||
<B><DIV id="idMyTotalSum"></DIV></B>
|
||
</DIV>
|
||
|
||
<DIV id="TabSend" style="display: none;">
|
||
|
||
<DIV id="idSendList"> </DIV>
|
||
<table class="form_input">
|
||
<tr>
|
||
<td style="min-width: 115px">From account</td>
|
||
<td>
|
||
|
||
<select size="1" id="idAccount" oninput="OnEditTransactionFields(); CheckSending();">
|
||
</select>
|
||
|
||
</td>
|
||
</tr>
|
||
<tr><td> </td><td><DIV id="idNameTo" class="smallbold"></DIV></td></tr>
|
||
<tr>
|
||
<td>Pay to<img src="./PIC/address_book.png" onclick="OpenAddressBook()" class="abook"></td>
|
||
<td>
|
||
<INPUT style="float: left" type="string" id="idTo" value="" oninput="OnEditIdTo()" placeholder="Payee (required)" >
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Amount</td>
|
||
<td>
|
||
<INPUT type="number" id="idSumSend" style="color:#1e21cb" value="" step=0 min=0 max=1000000000 oninput="OnEditTransactionFields()">
|
||
<button style="font-family: monospace;" onclick="SetAllSum()">←</button>
|
||
<B id="idCoinName"></B>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Description (optional)</td><td><textarea id="idDescription" rows="4" oninput="CheckLengthAccDesription('idDescription',200);OnEditTransactionFields()"></textarea></td>
|
||
<td><DIV id="idAttach"> </DIV></td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
</td>
|
||
<td>
|
||
<BUTTON onclick="ClearTransaction()" class="bsend bt">Clear</BUTTON>
|
||
<BUTTON onclick="EditJSONTransaction();SetImg(this,'edit_transaction');" class="bsend bt" id="idDown">Edit JSON</BUTTON>
|
||
<BUTTON onclick="SendMoneyBefore()" class="bsend bt" id="idSendButton" >Send</BUTTON>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<DIV id="edit_transaction" style="display: none">
|
||
<textarea id="idTransaction" rows="20" onkeyup="StartEditTransactionJSON()" onchange="StartEditTransactionJSON()"></textarea>
|
||
<BR>
|
||
<BUTTON onclick="SignJSON()" class="btdoit bt" id="idSignJSON">Sign JSON</BUTTON>
|
||
<BUTTON onclick="SendMoneyJSON()" class="btdoit bt">Send from JSON</BUTTON>
|
||
</DIV>
|
||
|
||
<script>
|
||
function SetAllSum()
|
||
{
|
||
var Item=MapAccounts[$("idAccount").value];
|
||
if(Item)
|
||
$("idSumSend").value=FLOAT_FROM_COIN(Item.Value).toStringF();
|
||
}
|
||
</script>
|
||
|
||
</DIV>
|
||
|
||
<DIV id="TabHistory" style="display: none;">
|
||
</DIV>
|
||
|
||
|
||
<DIV id="TabDapps" style="display: none">
|
||
|
||
|
||
<BR>
|
||
<DIV id="idPaginationDapps" style="display: block">
|
||
<!--Category:-->
|
||
<!--<select size="1" id="idCategory" onchange="ViewCurrent(DefDapps)">-->
|
||
<!--</select>-->
|
||
<!--<BR>-->
|
||
|
||
<BUTTON onclick="ViewBegin(DefDapps)" class="btdoitm bt">|<-</BUTTON>
|
||
<BUTTON onclick="ViewPrev(DefDapps)" class="btdoit bt"><< Prev</BUTTON>
|
||
<INPUT type="number" id="idViewDappNum" style="text-align: center" value="0" min=0 max=1000000000 onchange="ViewCurrent(DefDapps)">
|
||
<BUTTON onclick="ViewNext(DefDapps,CONFIG_DATA.MaxDappsID)" class="btdoit bt">Next >></BUTTON>
|
||
<BUTTON onclick="ViewEnd(DefDapps,CONFIG_DATA.MaxDappsID)" class="btdoitm bt">->|</BUTTON>
|
||
|
||
<table id="dapps_list" class="grid">
|
||
<tr>
|
||
<th id="(RetNumDapp(Item))" class="num">ID</th>
|
||
<th id="(RetOpenDapps(Item,0,0))" class="dappname">Name</th>
|
||
<th id="Item.Description" class="code dappdesc">Description</th>
|
||
<th id="(RetCategory(Item))" class="">Category</th>
|
||
|
||
<th id="(RetBaseAccount(Item))" class="num">Base Account</th>
|
||
<th id="Item.Owner" class="num">Owner</th>
|
||
<th id="RetBool(Item.TokenGenerate)" class="bool">Token generate</th>
|
||
<!--<th id="Item.ISIN" class="num">ISIN</th>-->
|
||
<th id="(RetOpenBlock(Item.BlockNum,1))" class="num">Block Num</th>
|
||
|
||
</tr>
|
||
</table>
|
||
|
||
|
||
</DIV>
|
||
|
||
</DIV>
|
||
|
||
<DIV id="TabExplorer" align="center" style="display: none;">
|
||
<!--<iframe src="/explorer.html" style="width: 100%;height: 100vh"></iframe>-->
|
||
<DIV id="idCurrentBlockNum"></DIV>
|
||
|
||
<button onclick="ViewCurrent(DefAccounts,1,this);" class="btview">Accounts</button>
|
||
<button onclick="ViewCurrent(DefBlock,1,this)" class="btview">Blocks & Tr</button>
|
||
<!--<button onclick="ViewCurrent(DefBlock,1,this)" class="btview">DApps</button>-->
|
||
<button onclick="ViewCounters(this)" class="btview">Counters</button>
|
||
|
||
<DIV>
|
||
<DIV id="idPaginationAccount" style="display: none">
|
||
<BR>
|
||
<button onclick="ViewBegin(DefAccounts)" class="btnav">|<-</button>
|
||
<button onclick="ViewPrev(DefAccounts)" class="btnav"><< Prev</button>
|
||
<INPUT type="number" class="pag_num" id="idViewAccountNum" style="text-align: center" value="0" min=0 onchange="ViewCurrent(DefAccounts)">
|
||
<button onclick="ViewNext(DefAccounts,CONFIG_DATA.MaxAccID)" class="btnav">Next >></button>
|
||
<button onclick="ViewEnd(DefAccounts,CONFIG_DATA.MaxAccID)" class="btnav">->|</button>
|
||
|
||
<table id="explorer_accounts" class="grid">
|
||
<tr>
|
||
<th id="(RetHistoryAccount(Item))" class="num">ID</th>
|
||
<th id="SUM_TO_STRING(Item.Value)" class="sum">Amount</th>
|
||
<th id="CurrencyNameItem(Item)" class="cur">Cur</th>
|
||
<th id="Item.Name" class="accname">Name</th>
|
||
<th id="Item.PubKeyStr" class="hash pubkey">PubKey</th>
|
||
<th id="Item.Value.OperationID" class="num">Operation</th>
|
||
<th id="Item.Value.Smart" class="num">Smart</th>
|
||
<th id="(RetOpenBlock(Item.BlockNumCreate,1))" class="num">Block Num</th>
|
||
</tr>
|
||
</table>
|
||
|
||
</DIV>
|
||
|
||
|
||
|
||
<DIV id="idPaginationBlock" style="display: none">
|
||
<BR>
|
||
<DIV><BR></DIV>
|
||
<button onclick="ViewBegin(DefBlock)" class="btnav">|<-</button>
|
||
<button onclick="ViewPrev(DefBlock)" class="btnav"><< Prev</button>
|
||
<INPUT type="number" class="pag_num" id="idViewBlockNum" style="text-align: center" value="0" min=0 onchange="ViewCurrent(DefBlock)">
|
||
<button onclick="ViewNext(DefBlock,CONFIG_DATA.MaxNumBlockDB)" class="btnav">Next >></button>
|
||
<button onclick="ViewEnd(DefBlock,CONFIG_DATA.MaxNumBlockDB)" class="btnav">->|</button>
|
||
|
||
<table id="explorer_blocks" class="grid">
|
||
<tr>
|
||
<th id="(RetOpenBlock(Item.BlockNum,Item.TrDataLen))" class="num">Num</th>
|
||
<th id="(DateFromBlock(Item.BlockNum,1))" class="date">Date</th>
|
||
<th id="GetHexFromArr(Item.TreeHash)" class="hash">Data Hash</th>
|
||
<th id="GetHexFromArr(Item.PowHash)" class="hash">PowHash</th>
|
||
<th id="GetHexFromArr(Item.Hash)" class="hash">Block Hash</th>
|
||
<th id="Item.TrDataLen" class="num">Bytes</th>
|
||
<th id="Item.Power" class="num">Pow</th>
|
||
<th id="Item.Miner" class="num">Miner</th>
|
||
</tr>
|
||
</table>
|
||
</DIV>
|
||
|
||
<DIV id="idStatBlock" style="display: none">
|
||
<BR>
|
||
|
||
<DIV id="diagr_content" align='center'>
|
||
<DIV id="diargams" align='center'>
|
||
</DIV>
|
||
</DIV>
|
||
|
||
</DIV>
|
||
|
||
</DIV>
|
||
<BR>
|
||
|
||
</DIV>
|
||
|
||
|
||
|
||
|
||
</DIV>
|
||
|
||
|
||
|
||
<DIV id="idBlockOnSend" style="display: none">
|
||
<DIV align="center">
|
||
Send <B id="idOnSendText"></B>
|
||
<BR>
|
||
<button onclick="SendMoney2()" id="idBtOnSend" class="radius">Send</button>
|
||
<button onclick='SetVisibleBlock("idBlockOnSend",0);' class="radius">Cancel</button>
|
||
|
||
<DIV align="left">
|
||
<DIV id="idCheckOnSend"><input type="checkbox" id="idWhiteOnSend"/> Add this account to white list</DIV>
|
||
</DIV>
|
||
</DIV>
|
||
</DIV>
|
||
|
||
<DIV id="idAddressBook" style="display: none">
|
||
<DIV align="center">
|
||
<H3>Address book</H3>
|
||
</DIV>
|
||
20 VTOOLS del<BR>
|
||
20 VTOOLS del<BR>
|
||
20 VTOOLS del<BR>
|
||
<!--<BR>-->
|
||
<!--<button class="radius" onclick="CloaseAddressBook()">Close</button>-->
|
||
</DIV>
|
||
|
||
|
||
<DIV id="idStableScroll" align='center'>
|
||
<A href="https://terafoundation.org/">Web</A>
|
||
<A href="https://bitcointalk.org/index.php?topic=4573801.0">ANN</A>
|
||
<A href="https://twitter.com/terafoundation">Twitter</A>
|
||
<A href="https://web.telegram.org/#/im?p=@terafoundation">Telegram</A>
|
||
<A href="https://discord.gg/CvwrbeG">Discord</A>
|
||
<A href="https://jq.qq.com/?_wv=1027&k=5h7cMi4">QQ</A>
|
||
<!--progr76@gmail.com-->
|
||
</DIV>
|
||
|
||
</DIV>
|
||
|
||
</body>
|
||
</html>
|
||
|
||
|
||
<script>
|
||
var LangMap={};
|
||
LangMap["ENG"]={};
|
||
LangMap["RUS"]=
|
||
{
|
||
"TERA Light": "TERA-Лайт",
|
||
"Wallet opened: ": "Кошелек открыт: ",
|
||
"Edit...": "Ред...",
|
||
"OK": "ОК",
|
||
"Cancel": "Отмена",
|
||
"Generate key": "Сгенерировать ключ",
|
||
" Reconnect": " Переконнект",
|
||
" New account...": " Новый счет...",
|
||
"Accounts": "Счета",
|
||
"Counters": "Показатели",
|
||
"Send": "Отправить",
|
||
|
||
"Clear": "Очистить",
|
||
"Edit JSON": "Ред. JSON",
|
||
"Sign JSON": "Подписать JSON",
|
||
"Send from JSON": "Отправить JSON",
|
||
|
||
"ACCOUNTS": "Счета",
|
||
"SEND": "Отправка",
|
||
"DAPPS": "Приложения",
|
||
"EXPLORER": "Эксплорер",
|
||
"ID": "ИД",
|
||
"Amount": "Сумма",
|
||
"Currency": "Валюта",
|
||
"Name": "Имя",
|
||
"Smart": "Смарт",
|
||
"Description": "Описание",
|
||
"Category": "Категория",
|
||
"Base Account": "Базовый счет",
|
||
"Owner": "Владелец",
|
||
"Token generate": "Токеногенерация",
|
||
"Block Num": "Номер блока",
|
||
"Cur": "Вал.",
|
||
"PubKey": "Публ.ключ",
|
||
"Operation": "Операция",
|
||
"Num": "Ном",
|
||
"Date": "Дата",
|
||
"Data Hash": "Хеш данных",
|
||
"PowHash": "Хеш Pow",
|
||
"Block Hash": "Хеш блока",
|
||
"Bytes": "Байты",
|
||
"Pow": "Pow",
|
||
"Miner": "Майнер",
|
||
"Wallet:": "Кошелек:",
|
||
"Private key:": "Приватный ключ:",
|
||
"Pub key:": "Публичный ключ:",
|
||
"From account": "Со счета",
|
||
"Pay to": "На счет",
|
||
"Description (optional)": "Описание (опционально)",
|
||
"Public name":"Публичное имя",
|
||
"Show pub key":"Показать публичный ключ",
|
||
"Blocks & Tr":"Блоки & Транз.",
|
||
"<< Prev":"<< Пред",
|
||
"Next >>":"След >>",
|
||
};
|
||
|
||
LangMap["DEU"]=
|
||
{
|
||
"TERA Light": "TERA Light",
|
||
"Wallet opened: ": "Wallet geöffnet: ",
|
||
"Edit...": "Bearbeiten...",
|
||
"OK": "ОК",
|
||
"Cancel": "Abbr.",
|
||
"Generate key": "Key erzeugen",
|
||
" Reconnect": " Neu verbinden",
|
||
" New account...": " Neuer ID...",
|
||
"Accounts": "Accounts",
|
||
"Counters": "Statistiken",
|
||
"Send": "Senden",
|
||
|
||
"Clear": "Löschen",
|
||
"Edit JSON": "JSON Bearbeten",
|
||
"Sign JSON": "JSON Signieren",
|
||
"Send from JSON": "Von JSON gesendet",
|
||
|
||
"ACCOUNTS": "Accounts",
|
||
"SEND": "Überweisung",
|
||
"DAPPS": "DApps",
|
||
"EXPLORER": "Explorer",
|
||
"ID": "ID",
|
||
"Amount": "Betrag",
|
||
"Currency": "Währung",
|
||
"Name": "Beschreibung",
|
||
"Smart": "DApp ID",
|
||
"Description": "Öffentl. Name",
|
||
"Category": "Kategorie",
|
||
"Base Account": "Standard Account",
|
||
"Owner": "Besitzer",
|
||
"Token generate": "Token generieren",
|
||
"Block Num": "Block",
|
||
"Cur": "Währung",
|
||
"PubKey": "Öffentl. Schlüssel",
|
||
"Operation": "Transaktionen",
|
||
"Num": "Nr",
|
||
"Date": "Datum",
|
||
"Data Hash": "Hashwert",
|
||
"PowHash": "PoW Hash",
|
||
"Block Hash": "Block Hash",
|
||
"Bytes": "Bytes",
|
||
"Pow": "Pow",
|
||
"Miner": "Miner",
|
||
"Wallet:": "Wallet:",
|
||
"Private key:": "Privater Schlüssel:",
|
||
"Pub key:": "Öffentl. Schlüssel:",
|
||
"From account": "Von Account",
|
||
"Pay to": "Empfänger",
|
||
"Description (optional)": "Beschreibung (optional)",
|
||
"Public name":"Öffentl. Name",
|
||
"Show pub key":"Zeige öffentlichen Schlüssel",
|
||
"Blocks & Tr":"Blöcke & Tr",
|
||
"<< Prev":"<< zurück",
|
||
"Next >>":"weiter >>",
|
||
};
|
||
LangMap["中文"]=
|
||
{
|
||
"TERA Light": "TERA轻钱包",
|
||
"Wallet opened: ": "钱包已打开:",
|
||
"Edit...": "编辑...",
|
||
"OK": "ОК",
|
||
"Cancel": "取消",
|
||
"Generate key": "生成私钥",
|
||
" Reconnect": " 重连",
|
||
" New account...": " 新账号...",
|
||
"Accounts": "账号",
|
||
"Counters": "计数",
|
||
"Send": "发送",
|
||
|
||
"Clear": "清除",
|
||
"Edit JSON": "编辑JSON",
|
||
"Sign JSON": "签名JSON",
|
||
"Send from JSON": "从JSON发送",
|
||
|
||
"ACCOUNTS": "账号",
|
||
"SEND": "发送",
|
||
"DAPPS": "去中心化应用",
|
||
"EXPLORER": "浏览器",
|
||
"ID": "ID",
|
||
"Amount": "数量",
|
||
"Currency": "币种",
|
||
"Name": "名称",
|
||
"Smart": "智能合约",
|
||
"Description": "描述",
|
||
"Category": "类别",
|
||
"Base Account": "基本账号",
|
||
"Owner": "拥有者",
|
||
"Token generate": "生成代币",
|
||
"Block Num": "区块编号",
|
||
"Cur": "币种",
|
||
"PubKey": "公钥",
|
||
"Operation": "操作次数",
|
||
"Num": "编号",
|
||
"Date": "日期",
|
||
"Data Hash": "数据哈希",
|
||
"PowHash": "Pow哈希",
|
||
"Block Hash": "区块哈希",
|
||
"Bytes": "字节",
|
||
"Pow": "Pow",
|
||
"Miner": "矿工",
|
||
"Wallet:": "钱包:",
|
||
"Private key:": "私钥:",
|
||
"Pub key:": "公钥:",
|
||
"From account": "从账号",
|
||
"Pay to": "付款到",
|
||
"Description (optional)": "描述 (可选)",
|
||
"Public name":"名称",
|
||
"Show pub key":"显示公钥",
|
||
"Blocks & Tr":"区块&交易编号",
|
||
"<< Prev":"<< 向前",
|
||
"Next >>":"向后>>",
|
||
};
|
||
|
||
LangMap["한글"]=
|
||
{ "TERA Light": "TERA가벼운 지갑", "Wallet opened: ": "열린 지갑:", "Edit...": "편집...", "OK": "ОК", "Cancel": "취소", "Generate key": "개인 키 생성", " Reconnect": " 다시 연결", " New account...": " 새 계정...", "Accounts": "계정", "Counters": "계수", "Send": "발송", "Clear": "제거", "Edit JSON": "JSON편집", "Sign JSON": "JSON 서명", "Send from JSON": "JSON부터 발송", "ACCOUNTS": "계정", "SEND": "발송", "DAPPS": "분산화 응용", "EXPLORER": "브라우저", "ID": "ID", "Amount": "수량", "Currency": "화폐", "Name": "이름", "Smart": "지능 계약", "Description": "설명", "Category": "분류", "Base Account": "기초 계정", "Owner": "소유자", "Token generate": "대폐 생성", "Block Num": "블록 번호", "Cur": "화폐", "PubKey": "공공 키", "Operation": "조작 횟수", "Num": "번호", "Date": "날짜", "Data Hash": "데이터 해시", "PowHash": "Pow해시", "Block Hash": "블록 해시", "Bytes": "바이트", "Pow": "Pow", "Miner": "광부", "Wallet:": "지갑:", "Private key:": "개인 키:", "Pub key:": "공공 키:", "From account": "계정 부터", "Pay to": "계정에게 지불", "Description (optional)": "설명 (선택의)", "Public name":"이름", "Show pub key":"공공 키 보이기", "Blocks & Tr":"블록 & 교역 번호", "<< Prev":"<< 앞으로", "Next >>":"뒤로>>", };
|
||
</script>
|
||
|