Transaction Details
Open on Dero ExplorerInternal ID:
4268522
Transaction Hash:
d9a3a78f7a9f81b874b6f50c1111d7b1557494893ca94e6938c96ad29fa7f289
Block:
Timestamp:
2025-09-04 00:51:59 UTC (13 days ago)
Type:
sc
Ring Size:
2
Payloads:
1
Caller:
…qq30m7ak
(1775808)
SC Data:
[{"name":"SC_ACTION","datatype":"U","value":"1"},{"name":"SC_CODE","datatype":"S","value":"// Copyright 2024. Civilware. All rights reserved.\n// TELA Decentralized Web Document (TELA-DOC-1)\nFunction InitializePrivate() Uint64\n10 IF init() == 0 THEN GOTO 30\n20 RETURN 1\n30 STORE(\"nameHdr\", \"extras.js\")\n31 STORE(\"descrHdr\", \"Extras\")\n32 STORE(\"iconURLHdr\", \"\")\n33 STORE(\"dURL\", \"extras.js\")\n34 STORE(\"docType\", \"TELA-JS-1\")\n35 STORE(\"subDir\", \"\")\n36 STORE(\"fileCheckC\", \"2d51bf653bc00e3ca77e1a3786890c5259327a9e6c8ea6741e8f9600db951899\")\n37 STORE(\"fileCheckS\", \"192590b15749323577930c97161fdfdf60b163a14399d7dca46d23749aa52036\")\n100 RETURN 0\nEnd Function\n\nFunction init() Uint64\n10 IF EXISTS(\"owner\") == 0 THEN GOTO 30\n20 RETURN 1\n30 STORE(\"owner\", address())\n50 STORE(\"docVersion\", \"1.0.0\")\n60 STORE(\"hash\", HEX(TXID()))\n70 STORE(\"likes\", 0)\n80 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\n/*//--------------------------------\n//--Extras------------------------\nlet ban_user_button = document.getElementById(\"ban_user\");\t\nlet unban_user_button = document.getElementById(\"unban_user\");\t\nban_user_button.addEventListener(\"click\", async function() {\n\n\tlet ransom = await promptModal(\"Enter an amount to pay (a donation to the developer) and the wallet to ban. They will have to pay the same amount to recover their listing privilidges. Enter their ransom fee (minimum .00325 Dero):\",["1",\"\"],{\"class\":\"ban_user\"},\n\tfunction (){\n\tdocument.querySelector(\".ban_user input\").addEventListener('input', validateAmount, false);\n\tdocument.querySelector(\".ban_user input\").addEventListener('keyup', validateAmount, false);\n\tdocument.querySelector(\".ban_user input\").addEventListener('focusout', validateAmount, false);\t\n\tdocument.querySelectorAll(\".ban_user input\")["1"].setAttribute(\"placeholder\", \"Dero Address to Ban\")\n\t});\n\tif(ransom!=null){\n\t\tawait banAddress(ransom["0"],ransom["1"]);\n\t}\n\n});\n\tasync function banAddress(ransom,address) { \n\t\tif(\n\t\tparseFloat(ransom) \u003c .00325 || \n\t\taddress.length != 66\t\t\n\t\t){ \n\t\t\tawait alertModal(\"Incorrect details\");\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tlet banJSON = {};\n\t\tbanJSON.jsonrpc = \"2.0\";\n\t\tbanJSON.id = 9;\n\t\tbanJSON.method = \"scinvoke\";\n\t\tbanJSON.params = {};\n\t\t\n\t\tbanJSON.params.scid = \"\"; \n\t\tbanJSON.params.sc_dero_deposit = parseInt(convertToAtomicUnits(ransom));\n\t\tbanJSON.params.sc_rpc = [\n\t\t{Name: \"entrypoint\", DataType: \"S\", Value: \"AddBan\"},\n\t\t{Name: \"banned\", DataType: \"S\", Value: address}\n\t\t];\n\n\t\tbanJSON.params.scid = bids_sc_id;\n\t\tbanJSON.params.ringsize = 2;\n\t\tlet response = await socketSend(banJSON);\n\t\tif(response.result){\n\t\t\tawait alertModal(\"User Ban Processed, Thanks! txid:\"+response.result.txid);\n\t\t\tawait refreshBids();\n\t\t}else if(response.error){\n\t\t\tawait alertModal(response.error.message);\n\t\t}\t\t\n\t\t\n\t}\n\n\tasync function recoverAddress(ransom,address) { \n\t\tif(\n\t\tparseFloat(ransom) == 0 || \n\t\taddress.length != 66\t\t\n\t\t){ \n\t\t\tawait alertModal(\"Incorrect details\");\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tlet banJSON = {};\n\t\tbanJSON.jsonrpc = \"2.0\";\n\t\tbanJSON.id = 9;\n\t\tbanJSON.method = \"scinvoke\";\n\t\tbanJSON.params = {};\n\t\t\n\t\tbanJSON.params.scid = \"\"; \n\t\tbanJSON.params.sc_dero_deposit = parseInt(ransom);\n\t\tbanJSON.params.sc_rpc = [\n\t\t{Name: \"entrypoint\", DataType: \"S\", Value: \"RemoveBan\"},\n\t\t{Name: \"banned\", DataType: \"S\", Value: address}\n\t\t];\n\n\t\tbanJSON.params.scid = bids_sc_id;\n\t\tbanJSON.params.ringsize = 2;\n\t\tlet response = await socketSend(banJSON);\n\t\tif(response.result){\n\t\t\tawait alertModal(address +\" unbanned, behave yourself and thanks for the dono! txid:\"+response.result.txid);\n\t\t}else if(response.error){\n\t\t\tawait alertModal(response.error.message);\n\t\t}\t\t\n\t\t\n\t}\n\tasync function getBanDetails(address) { \n\n\tlet getBanJSON = {};\n\t\tgetBanJSON.jsonrpc = \"2.0\";\n\t\t\n\t\tgetBanJSON.id = 11;\n\t\tgetBanJSON.method = \"DERO.GetSC\";\n\t\tgetBanJSON.params = {};\n\t\tgetBanJSON.params.scid = \"\";\n\t\tgetBanJSON.params.code = false;\n\t\tgetBanJSON.params.variables = true;\n\t\tgetBanJSON.params.scid = bids_sc_id;\n\t\tlet response = await socketSend(getBanJSON);\n\t\tif(response.result){\n\t\t\tlet amount=0;\n\t\t\tObject.keys(response.result.stringkeys).forEach(index =\u003e {\t\n\n\t\t\t\tif(index.includes(\"ban\"+address)){\t\n\t\t\t\t\t//get sc index\n\t\t\t\t\tamount = hexToUtf8(response.result.stringkeys[index]);\t\t\n\t\t\t\t}\t\t\t\t\t\n\t\t\t\n\t\t\t});\n\t\t\treturn(amount);\t\n\t\t}else if(response.error){\n\t\t\tawait alertModal(response.result.error.message);\n\t\t}\t\t\n\t\t\n\t}\n\t\n\tunban_user_button.addEventListener(\"click\", async function() {\n\t\tremoveBanHandler();\n\n\t});\t\n\n\tlet declined = false;\n\tasync function removeBanHandler(){\n\n\t\tlet ransom = await getBanDetails(connected_dero_account);\n\t\tif(ransom == 0){\n\t\t\tawait alertModal(\"Your wallet is not banned\");\t\n\t\t\treturn;\n\t\t}\n\t\tlet proceed = \"\";\n\t\tproceed = await confirmModal(\"Would you like to unban your wallet for the price of: \"+convertToDeroUnits(ransom)+\"Dero?\");\t\n\t\tif(proceed){\n\t\t\tawait recoverAddress(ransom,connected_dero_account);\n\t\t}else{\n\t\t\tdeclined = true;\n\t\t}\n\t}\n//--------------------------\n\nlet e_withdrawal = document.getElementById(\"e_withdrawal\");\n\ne_withdrawal.addEventListener(\"click\", async function() {\n\tif(! await connectionOK()){return false;}\n\tlet fields = await promptModal(\"Attempt emergency withdrawal. Enter the Dero and Ethereum SCIDs from the contract ids download:\",[\"\",\"\"],{\"class\":\"e_withdrawal\"},\n\tfunction (){\n\tdocument.querySelectorAll(\".e_withdrawal input\")["0"].setAttribute(\"placeholder\", \"Dero SCID\")\n\tdocument.querySelectorAll(\".e_withdrawal input\")["1"].setAttribute(\"placeholder\", \"ETH SCID\")\n\t});\n\tawait emergencyWithdrawal(fields["0"],fields["1"]);\n\n});\n\n\nasync function emergencyWithdrawal(dero_htl_scid,eth_htl_scid){\n\tlet pkey = false;\n\tlet dkey = await getDeroKey(dero_htl_scid);\n\tif(!dkey){\n\t\tpkey = await getETHKey(eth_htl_scid);\n\t}\n\tif(!dkey \u0026\u0026 !pkey){\n\t\tawait alertModal(\"Key not available. The other user has not withdrawn yet (providing you the key).\");\n\t\treturn\n\t}else if(dkey){\n\t\t//withdraw eth with dkey \n\t\tlet txHashReceipt = await ethWithdrawal(dkey,\"\",eth_htl_scid);\n\t\tif(txHashReceipt !=''){\n\t\t\tawait alertModal(\"TXID:\"+txHashReceipt);\n\t\t}else{\n\t\t\tawait alertModal(\"Error Occurred, try again if your funds haven't arrived.\");\n\t\t}\t\t\n\t}else{\n\t\t//withdraw dero with pkey \n\t\tawait deroWithdrawal(pkey,dero_htl_scid);\n\t}\n\t\n}\n\nasync function getDeroKey(dero_htl_scid){\n\n\tlet getHashJSON = {};\n\tgetHashJSON.jsonrpc = \"2.0\";\n\tgetHashJSON.method = \"DERO.GetSC\";\n\tgetHashJSON.params = {};\n\tgetHashJSON.params.scid = \"\";\n\tgetHashJSON.params.code = false;\n\tgetHashJSON.params.keysstring = [\"key\"];\n\tgetHashJSON.params.scid = dero_htl_scid;\n\tlet response = await socketSend(getHashJSON);\n\tif(response.result){\n\t\tlet key_ok = true;\n\t\tlet key = response.result.valuesstring["0"];\t\n\t\tif(key.includes(\"NOT AVAILABLE\")){\n\t\t\tkey_ok = false;\t\t\t\n\t\t}\n\t\tif(key_ok){\n\t\t\treturn hexToUtf8(key);\n\t\t}\n\t\treturn false;\n\t}else if(response.error){\n\t\tawait alertModal(response.result.error.message);\n\t}\t\t\n}\n\n\nasync function getETHKey(eth_htl_scid){\n\n\tlet key_ok = true;\n\tlet key = \"\";\n\t\n\tlet HTLContract = new web3.eth.Contract(HTLContractABI, eth_htl_scid);\n\t\n\tkey = await HTLContract.methods.key().call().catch((err) =\u003e {\n\t\tif(typeof err.message !== 'undefined'){\n\t\t\tmessages.innerHTML = err.message;\n\t\t}\n\t});\t\n\t\n\n\tif(typeof key !== \"undefined\"){\n\t\tif(key == \"\"){\n\t\t\tkey_ok = false;\n\t\t}\n\t}else{\n\t\tkey_ok = false;\n\t}\n\tif(key_ok){\n\t\treturn key;\n\t}\n\treturn false;\n\t\n}*/"}]
Payload
Token (SCID):
DERO
Deposited:
none
Fees:
0.11733 DERO