Transaction Details
Open on Dero ExplorerInternal ID:
4276182
Transaction Hash:
ed61fe19cb6c63a8a54c48fdb2f0e227b54352729550d2ce040e10ce44f776d2
Block:
Timestamp:
2025-10-02 04:28:30 UTC (3 weeks ago)
Type:
sc
Ring Size:
16
Payloads:
1
Caller:
unknown (3 possible)
SC Data:
[{"name":"SC_ACTION","datatype":"U","value":"1"},{"name":"SC_CODE","datatype":"S","value":"Function InitializePrivate() Uint64\n10 IF init() == 0 THEN GOTO 30\n20 RETURN 1\n30 STORE(\"nameHdr\", \"explorer-transactions.js\")\n31 STORE(\"descrHdr\", \"Transaction explorer page loader\")\n32 STORE(\"iconURLHdr\", \"\")\n33 STORE(\"dURL\", \"explorer.tela\")\n34 STORE(\"docType\", \"TELA-JS-1\")\n35 STORE(\"subDir\", \"\")\n36 STORE(\"fileCheckC\", \"23c1b275d1822dfeb46a889bd732fbdb5b36e3fe38e504e548c8f193046bc17f\")\n37 STORE(\"fileCheckS\", \"22fe8533d8a2f00ee2547fdfa6a5e9d5f0b603053e835bedb267e491c5411007\")\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// TELA Explorer - Transaction Functions Module (\u003c 18KB)\n\nasync function loadTransactions() {\n currentRoute = 'transactions';\n const c = document.getElementById('main-content');\n c.innerHTML = '\u003cdiv class=\"loading-progress\"\u003eLoading transaction explorer...\u003cdiv class=\"progress-bar\"\u003e\u003c/div\u003e\u003c/div\u003e';\n\n if (!xswdCore?.isConnected) {\n c.innerHTML = '\u003cdiv class=\"enhanced-card\"\u003e\u003ch3\u003eTELA connection required\u003c/h3\u003e\u003c/div\u003e';\n return;\n }\n\n try {\n\n \n // Get comprehensive transaction data\n const [poolData, networkInfo, recentBlocks] = await Promise.all([\n getPoolData(),\n xswdCore.call('DERO.GetInfo'),\n getRecentBlocks(5) // Get last 5 blocks for recent transactions\n ]);\n \n\n\n \n // Load render module and render\n const renderModule = await lm('explorer-render');\n if (!renderModule) throw new Error('Failed to load render module');\n \n c.innerHTML = renderModule.renderTransactionExplorer(poolData, networkInfo, recentBlocks);\n \n } catch (error) {\n console.error('Transaction explorer loading failed:', error);\n c.innerHTML = `\u003cdiv class=\"enhanced-card\"\u003e\n \u003ch3\u003eTransaction Explorer Loading Failed\u003c/h3\u003e\n \u003cp style=\"color:#888;margin-top:1rem\"\u003e${error.message}\u003c/p\u003e\n \u003cbutton onclick=\"loadTransactions()\" style=\"margin-top:1rem;padding:0.5rem 1rem;background:#52c8db;color:#000;border:none;border-radius:4px;cursor:pointer;\"\u003eRetry\u003c/button\u003e\n \u003c/div\u003e`;\n }\n}\n\nasync function loadTransaction(txid) {\n currentRoute = 'tx';\n const c = document.getElementById('main-content');\n c.innerHTML = '\u003cdiv class=\"loading-progress\"\u003eLoading transaction details...\u003cdiv class=\"progress-bar\"\u003e\u003c/div\u003e\u003c/div\u003e';\n\n if (!xswdCore?.isConnected) {\n c.innerHTML = '\u003cdiv class=\"enhanced-card\"\u003e\u003ch3\u003eTELA connection required\u003c/h3\u003e\u003c/div\u003e';\n return;\n }\n\n try {\n const core = await lm('transactions-core');\n if (!core) throw new Error('Failed to load transactions-core module');\n\n const result = await core.renderEnhancedTransaction(txid, xswdCore.call.bind(xswdCore));\n c.innerHTML = result;\n } catch (error) {\n console.error('Transaction details failed:', error);\n c.innerHTML = `\u003cdiv class=\"enhanced-card\"\u003e\u003ch3\u003eError Loading Transaction\u003c/h3\u003e\u003cp\u003e${error.message}\u003c/p\u003e\u003c/div\u003e`;\n }\n}\n\n\n\nasync function getPoolData() {\n try {\n const enhancedPool = await window.xswd?.getTxPoolWithStats?.();\n return enhancedPool;\n } catch(e) {\n const rawPool = await xswdCore.call('DERO.GetTxPool');\n if (rawPool?.txs) {\n const processedPool = {\n txs: rawPool.txs,\n stats: {\n total_count: rawPool.txs.length,\n total_size: rawPool.txs.reduce((acc,tx) =\u003e acc + (tx.size||0), 0),\n avg_fee: rawPool.txs.length \u003e 0 ? rawPool.txs.reduce((acc,tx) =\u003e acc + (tx.fee||0), 0) / rawPool.txs.length : 0\n }\n };\n return processedPool;\n }\n return null;\n }\n}\n\nasync function getRecentBlocks(count = 5) {\n try {\n const info = await xswdCore.call('DERO.GetInfo');\n const currentHeight = info.height;\n const blocks = [];\n \n for (let i = 0; i \u003c count; i++) {\n const height = currentHeight - i;\n if (height \u003e 0) {\n try {\n const block = await xswdCore.call('DERO.GetBlock', { height: height });\n if (block) {\n // Parse the JSON field to get the actual block structure\n let parsedBlock = block;\n if (block.json) {\n try {\n const blockData = JSON.parse(block.json);\n parsedBlock = { ...block, ...blockData, height: height };\n } catch (e) {\n console.warn(`Failed to parse JSON for block ${height}:`, e);\n parsedBlock = { ...block, height: height };\n }\n }\n blocks.push(parsedBlock);\n }\n } catch (e) {\n console.warn(`Failed to get block ${height}:`, e);\n }\n }\n }\n \n return blocks;\n } catch (error) {\n console.error('Failed to get recent blocks:', error);\n return [];\n }\n}\n\n// Export for module loading\nwindow.explorerTransactions = { \n loadTransactions, \n loadTransaction, \n\n getPoolData, \n getRecentBlocks \n};\n*/"}]
Payload
Token (SCID):
DERO
Deposited:
none
Fees:
0.06314 DERO