Transaction Details

Open on Dero Explorer
Internal 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*/"}]