Transaction Details

Open on Dero Explorer
Internal ID:
4268616
Transaction Hash:
267f367511289ccceeafd7147bf05527bcac28c03ba14e9e63f450b402f6641f
Block:
Timestamp:
2025-09-04 12:23:17 UTC (2 weeks ago)
Type:
sc
Ring Size:
2
Payloads:
1
Caller:
…qq30m7ak (1775808)
SC Data:
[{"name":"SC_ACTION","datatype":"U","value":"0"},{"name":"SC_ID","datatype":"H","value":"f66747b4fcb0423e889added204ca5c0fac89eb4a775ad035881ea7d42bc9beb"},{"name":"content","datatype":"S","value":"//Install Doc function\nasync function installDoc(){\n\tlet response = await socketSend(getInstallJSON(smartcontract.value));\n\tif(response.result){\n\t\tlet installed = await confirmation(response.result.txid)\n\t\tif (!installed) {\n\t\t\talert(\"Problem Installing Doc, try again. TXID:\"+response.result.txid);\n\t\t\treturn false;\n\t\t}\n\t\tinstalled_docs.push({\"subdir\":docSubDir.value.replace(/^\\/|\\/|\\/$/g, ''),\"filename\":filename,\"scid\":response.result.txid});\n\t\tdocNameHdr.value = \"\";\n\t\tfilename=\"\";\n\t\tsigned_filename=\"\";\n\t\tfileContents.value = \"\";\n\t\tfileCheck.value = \"\";\n\t\tlet outputText =\"\";\n\t\tfor (let x in installed_docs) {\n\t\t\toutputText += (installed_docs[x].subdir !=\"\"? installed_docs[x].subdir + \"/\" :\"\") + installed_docs[x].filename  + \":\" + installed_docs[x].scid +\"\u003cbr\u003e\";\n\t\t}\n\t\tgbid(\"output\").innerHTML = outputText;\n\t\tdocEdit('');\n\t}else if(response.error){\n\t\talert(response.error.message);\n\t}\t\t\n}\n\n//Install Index function\nfunction installIndex(){\n\tlet response = await socketSend(getInstallJSON(indexSCCode.value));\n\tif(response.result){\n\t\tlet installed = await confirmation(response.result.txid)\n\t\tif (!installed) {\n\t\t\talert(\"Problem Installing Index, try again. TXID:\"+response.result.txid);\n\t\t\treturn false;\n\t\t}\n\t\tgbid(\"indexscid\").innerHTML = \"Tela Site Index SCID:\" + response.result.txid;\n\t\talert(\"Congrats, you're all done! This is your Tela Site SCID:\" + response.result.txid);\n\t}else if(response.error){\n\t\talert(response.error.message);\n\t}\t\t\n\t\n}\n\n\nvar indexNameHdr = gbid('indexNameHdr');\nvar indexDescrHdr = gbid('indexDescrHdr');\nvar indexIconURLHdr = gbid('indexIconURLHdr');\nvar indexDURL = gbid('indexDURL');\n\nvar deployIndexButton = gbid('deployIndex');\nvar generateIndexButton = gbid('generateIndex');\n\n\nvar indexinputs = [indexNameHdr,indexDescrHdr,indexIconURLHdr,indexDURL];\nindexinputs.forEach((input) =\u003e {\n\tinput.addEventListener(\"keyup\", indexEdit);\n\tinput.addEventListener(\"change\", indexEdit);\n\tinput.addEventListener(\"blur\", indexEdit);\n});\n\nfunction indexEdit(event) {\n\n\tlet docs =\"\";\n\tlet line_no = 40;\n\tfor (let x in installed_docs) {\n\t\tdocs += (line_no++) + ` STORE(\"DOC`+(parseFloat(x) + 1) + `\", \"` +installed_docs[x].scid + `\")`+\"\\n\";\n\t}\n\tindexSCCode.value = getIndexSC(docs);\n\n\tlet ok = checkIndexInputs();\n    if(ok.ok){\n\t\tdeployIndexButton.removeAttribute(\"disabled\");\n\t}else{\n\t\tdeployIndexButton.setAttribute(\"disabled\", true);\n\t}\n\tif(ok.errors.length != 0){\n\t\tlet errorsText = \"\";\n\t\tfor (const error of ok.errors) {\n\t\t\terrorsText = error + errorsText + \"\\n\";\n\t\t}\n\t\talert(errorsText);\n\t}\n}\n\n\ndeployIndexButton.addEventListener('click', function(event) {\n\tlet quoteJSON = getQuoteJSON(indexSCCode.value);\n\tlet result = confirm(\"Estimated Cost: \"+(niceRound(quoteJSON.params.sc.length * 2 * .00001))  +\" DERO, Install Tela-Index?\");\n\tif (result) {\n\t\tinstallIndex(indexSCCode.value);\n\t} else {\n\t\tconsole.log(\"Action canceled.\");\n\t}\n});\n\n\nfunction checkIndexInputs(){\n\tlet ok = true;\n\tlet ierrors = [];\n\tblob = new Blob([indexSCCode.value]);\n\tif(blob.size \u003e 20000){\n\t\tierrors.push(\"Doc too large.\");\n\t\tok = false;\n\t}\n\tif(\n\tindexNameHdr.value==\"\"||\n\tindexDescrHdr.value==\"\"||\n\tindexDURL.value==\"\"||\n\tindexSCCode.value==\"\"||\n\tinstalled_docs.length == 0\n\t){\n\t\tok = false;\n\t}\n\treturn {\"ok\":ok,\"errors\":ierrors};\n}\n\n\n//Index\nvar indexSCCode = gbid('indexSCCode');\n\nfunction getIndexSC(docs){\nlet indexInit = `//  Copyright 2024. Civilware. All rights reserved.\n//  TELA Decentralized Web Standard (TELA-INDEX-1)\nFunction InitializePrivate() Uint64\n10 IF init() == 0 THEN GOTO 30\n20 RETURN 1\n30 STORE(\"nameHdr\", \"`+indexNameHdr.value+`\")\n31 STORE(\"descrHdr\", \"`+indexDescrHdr.value+`\")\n32 STORE(\"iconURLHdr\", \"`+indexIconURLHdr.value+`\")\n33 STORE(\"dURL\", \"`+indexDURL.value+`\")\n` + docs + `\n1000 RETURN 0\nEnd Function\n\n`;\n//Maybe Trim the \"\\n\" off of docs here...\nlet indexTheRest = `Function init() Uint64\n10 IF EXISTS(\"owner\") == 0 THEN GOTO 30\n20 RETURN 1\n30 STORE(\"owner\", address())\n50 STORE(\"telaVersion\", \"1.0.0\") // TELA SC version\n60 STORE(\"commit\", 0) // The initial commit\n70 STORE(0, HEX(TXID())) // SCID commit hash\n80 STORE(\"hash\", HEX(TXID()))\n85 STORE(\"likes\", 0)\n90 STORE(\"dislikes\", 0)\n100 RETURN 0\nEnd Function\n\nFunction address() String\n10 DIM s as String\n20 LET s = SIGNER()\n30 IF IS_ADDRESS_VALID(s) THEN GOTO 50\n40 RETURN \"anon\"\n50 RETURN ADDRESS_STRING(s) \nEnd Function\n\nFunction Rate(r Uint64) Uint64\n10 DIM addr as String\n15 LET addr = address()\n16 IF r \u003c 100 \u0026\u0026 EXISTS(addr) == 0 \u0026\u0026 addr != \"anon\" THEN GOTO 30\n20 RETURN 1\n30 STORE(addr, \"\"+r+\"_\"+BLOCK_HEIGHT())\n40 IF r \u003c 50 THEN GOTO 70\n50 STORE(\"likes\", LOAD(\"likes\")+1)\n60 RETURN 0\n70 STORE(\"dislikes\", LOAD(\"dislikes\")+1)\n100 RETURN 0\nEnd Function\n\nFunction UpdateCode(code String) Uint64\n10 IF LOAD(\"owner\") == \"anon\" THEN GOTO 20\n15 IF code == \"\" THEN GOTO 20\n16 IF LOAD(\"owner\") == address() THEN GOTO 30\n20 RETURN 1\n30 UPDATE_SC_CODE(code)\n40 STORE(\"commit\", LOAD(\"commit\")+1) // New commit\n50 STORE(LOAD(\"commit\"), HEX(TXID())) // New hash\n60 STORE(\"hash\", HEX(TXID()))\n100 RETURN 0\nEnd Function\n`;\n\nreturn indexInit + indexTheRest;\n}\n\nfunction niceRound(number){\n\treturn Math.round(number*100000000)/100000000;\n}\n\nasync function getHeight(){   \n\tlet JSONR = {};\n\tJSONR.jsonrpc = \"2.0\";\n\tJSONR.method = \"DERO.GetHeight\";\n\tresponse = await socketSend(JSONR);\n\tif(response.result){\n\t\treturn response.result.height;\n\t}else if(response.error){\n\t\tawait alert(response.error.message);\n\t}\t\t\n}\n\nasync function getTxStatus(txid){\n\tlet JSONR = {};\n\tJSONR.jsonrpc = \"2.0\";\n\tJSONR.id = 0;\n\tJSONR.method = \"DERO.GetTransaction\";\n\tJSONR.params = {};\n\tJSONR.params.txs_hashes = [txid];\n\n\tresponse = await socketSend(JSONR);\n\tif(response.result){\n\t\tif(response.result.status){\n\t\t\tif(response.result.status == \"OK\"){\n\t\t\t\tif(response.result.txs != null){\n\t\t\t\t\tlet tx = response.result.txs["0"];\n\t\t\t\t\tif ((!tx.in_pool \u0026\u0026 tx.valid_block==\"\")||tx.ignored) {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}else if(tx.in_pool){\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}else{\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\t\t\t\n\t\t\t\t}\t\t\t\t\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}else if(response.error){\n\t\talert(response.error.message);\n\t\treturn false\n\t}\n}\n\nvar confirm_height=0;\nasync function confirmation(txid) {\n\tconfirm_height = await getHeight();\n\treturn new Promise(function (resolve) {\t\t\n\t\tlet attempts = 0;\t\t\n\t\t\t\n\t\tconst attempt = async() =\u003e {\t\n\t\t\tattempts++;\n\t\t\tlet this_height = await getHeight();\t\t\t\n\t\t\tif(this_height \u003e confirm_height){\n\t\t\t\tif(attempts \u003e 27){\n\t\t\t\t\tclearInterval(retryTimer);\n\t\t\t\t\tresolve(false)\n\t\t\t\t}\t\t\n\t\t\t\tlet status_ok = await getTxStatus(txid)\n\t\t\t\tif(status_ok){\n\t\t\t\t\tclearTimeout(retryTimer);\n\t\t\t\t\tresolve(true)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tlet retryTimer = setInterval(attempt, 2000)\t\t\t\n\t})   \n}"},{"name":"entrypoint","datatype":"S","value":"StoreItem"},{"name":"name","datatype":"S","value":"siteinstaller2.js"}]

Payload

Token (SCID):
DERO
Deposited:
none
Fees:
0.13374 DERO