{"id":13062,"date":"2026-10-23T08:41:08","date_gmt":"2026-10-23T08:41:08","guid":{"rendered":"https:\/\/leiden365.nl\/blog\/?page_id=13062"},"modified":"2026-10-23T13:13:52","modified_gmt":"2026-10-23T13:13:52","slug":"l365","status":"publish","type":"page","link":"https:\/\/leiden365.nl\/blog\/nl\/l365\/","title":{"rendered":"l365"},"content":{"rendered":"<p>        <div class=\"l365-wrapper\" style=\"max-width: 860px; margin: 0 auto; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; color: #1e293b;\">\n            <div style=\"text-align: center; margin-bottom: 28px;\">\n                <h1 style=\"font-size: 2.2rem; margin-bottom: 6px;\">\ud83e\ude99 $L365 Token Hub<\/h1>\n                <p style=\"color: #64748b; font-size: 1.05rem; margin: 0;\">The official micro-currency of Leiden365. Claim daily, tip creators, and track circulation.<\/p>\n            <\/div>\n\n            <div style=\"display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 12px; margin-bottom: 24px;\">\n                <div style=\"background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px; padding: 14px; text-align: center;\">\n                    <div style=\"font-size: 0.8rem; text-transform: uppercase; color: #64748b; font-weight: 600;\">Total Supply<\/div>\n                    <div style=\"font-size: 1.25rem; font-weight: 700; margin-top: 4px;\">10,000,000<\/div>\n                <\/div>\n                <div style=\"background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px; padding: 14px; text-align: center;\">\n                    <div style=\"font-size: 0.8rem; text-transform: uppercase; color: #64748b; font-weight: 600;\">Total Claimed<\/div>\n                    <div style=\"font-size: 1.25rem; font-weight: 700; margin-top: 4px; color: #0284c7;\">40.00<\/div>\n                <\/div>\n                <div style=\"background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px; padding: 14px; text-align: center;\">\n                    <div style=\"font-size: 0.8rem; text-transform: uppercase; color: #64748b; font-weight: 600;\">Circulating<\/div>\n                    <div style=\"font-size: 1.25rem; font-weight: 700; margin-top: 4px;\">190.00<\/div>\n                <\/div>\n                <div style=\"background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px; padding: 14px; text-align: center;\">\n                    <div style=\"font-size: 0.8rem; text-transform: uppercase; color: #64748b; font-weight: 600;\">Holders<\/div>\n                    <div style=\"font-size: 1.25rem; font-weight: 700; margin-top: 4px;\">3<\/div>\n                <\/div>\n            <\/div>\n\n            <div style=\"margin-bottom: 24px;\">\n                        <div style=\"background: #ffffff; border: 1px solid #e2e8f0; border-radius: 10px; padding: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.05); font-family: sans-serif;\">\n            <h3 style=\"margin-top: 0; font-size: 1.2rem; display: flex; align-items: center; gap: 8px;\">\n                <span>\ud83d\udd0d<\/span> Check Balance\n            <\/h3>\n            <p style=\"color: #64748b; font-size: 0.9rem; margin-bottom: 12px;\">\n                Enter an email to check current coin holdings in real time.\n            <\/p>\n            <div style=\"display: flex; gap: 8px;\">\n                <input type=\"email\" id=\"l365-block-check-email\" placeholder=\"you@example.com\" style=\"flex: 1; padding: 10px; border: 1px solid #cbd5e1; border-radius: 6px;\">\n                <button type=\"button\" id=\"l365-block-check-btn\" style=\"padding: 10px 16px; background: #0f172a; color: #fff; border: none; border-radius: 6px; font-weight: 600; cursor: pointer;\">\n                    Lookup\n                <\/button>\n            <\/div>\n            <div id=\"l365-block-check-res\" style=\"display: none; margin-top: 14px; padding: 12px; background: #f8fafc; border-left: 4px solid #0284c7; border-radius: 4px;\">\n                <div style=\"font-size: 0.8rem; color: #64748b; text-transform: uppercase;\">Holdings:<\/div>\n                <div id=\"l365-block-check-bal\" style=\"font-size: 1.5rem; font-weight: 700; color: #0f172a; margin: 4px 0;\">0.00 $L365<\/div>\n                <div id=\"l365-block-check-status\" style=\"font-size: 0.85rem; color: #64748b;\"><\/div>\n            <\/div>\n        <\/div>\n        <script>\n        document.getElementById('l365-block-check-btn')?.addEventListener('click', function() {\n            const btn = this;\n            const email = document.getElementById('l365-block-check-email').value;\n            const resBox = document.getElementById('l365-block-check-res');\n            const balEl = document.getElementById('l365-block-check-bal');\n            const statusEl = document.getElementById('l365-block-check-status');\n\n            if (!email) return;\n            btn.disabled = true;\n\n            fetch('https:\/\/leiden365.nl\/blog\/wp-admin\/admin-ajax.php', {\n                method: 'POST',\n                headers: { 'Content-Type': 'application\/x-www-form-urlencoded' },\n                body: new URLSearchParams({ action: 'l365_check_balance', email: email, security: '3f0be941c6' })\n            })\n            .then(r => r.json())\n            .then(d => {\n                resBox.style.display = 'block';\n                if (d.success) {\n                    balEl.innerText = d.data.balance + ' $L365';\n                    statusEl.innerText = d.data.can_claim ? '\u2705 Daily faucet is ready!' : '\u23f3 Daily faucet claimed today.';\n                    \n                    const claimIn = document.getElementById('l365-block-claim-email');\n                    const sendIn  = document.getElementById('l365-block-send-from');\n                    if (claimIn) claimIn.value = email;\n                    if (sendIn) sendIn.value = email;\n                } else {\n                    balEl.innerText = 'Error';\n                    statusEl.innerText = d.data.message;\n                }\n            })\n            .finally(() => { btn.disabled = false; });\n        });\n        <\/script>\n                    <\/div>\n\n            <div style=\"display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 20px;\">\n                <div>        <div style=\"background: #ffffff; border: 1px solid #e2e8f0; border-radius: 10px; padding: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.05); font-family: sans-serif;\">\n            <h3 style=\"margin-top: 0; font-size: 1.2rem; display: flex; align-items: center; gap: 8px;\">\n                <span>\ud83d\udeb0<\/span> Daily Faucet (+10 $L365)\n            <\/h3>\n            <p style=\"color: #64748b; font-size: 0.9rem; margin-bottom: 12px;\">\n                Enter your email to claim your free daily allowance.\n            <\/p>\n            <input type=\"email\" id=\"l365-block-claim-email\" placeholder=\"you@example.com\" style=\"width: 100%; padding: 10px; box-sizing: border-box; border: 1px solid #cbd5e1; border-radius: 6px; margin-bottom: 10px;\">\n            <button type=\"button\" id=\"l365-block-claim-btn\" style=\"width: 100%; padding: 10px; background: #0284c7; color: #fff; border: none; border-radius: 6px; font-weight: 600; cursor: pointer;\">\n                Claim Daily Coins\n            <\/button>\n            <div id=\"l365-block-claim-msg\" style=\"margin-top: 10px; font-size: 0.88rem; min-height: 1.2em;\"><\/div>\n        <\/div>\n        <script>\n        document.getElementById('l365-block-claim-btn')?.addEventListener('click', function() {\n            const btn = this;\n            const email = document.getElementById('l365-block-claim-email').value;\n            const msg = document.getElementById('l365-block-claim-msg');\n            btn.disabled = true;\n\n            fetch('https:\/\/leiden365.nl\/blog\/wp-admin\/admin-ajax.php', {\n                method: 'POST',\n                headers: { 'Content-Type': 'application\/x-www-form-urlencoded' },\n                body: new URLSearchParams({ action: 'l365_claim', email: email, security: '3f0be941c6' })\n            })\n            .then(r => r.json())\n            .then(d => {\n                msg.innerText = d.data.message;\n                msg.style.color = d.success ? '#15803d' : '#b91c1c';\n            })\n            .finally(() => { btn.disabled = false; });\n        });\n        <\/script>\n        <\/div>\n                <div>        <div style=\"background: #ffffff; border: 1px solid #e2e8f0; border-radius: 10px; padding: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.05); font-family: sans-serif;\">\n            <h3 style=\"margin-top: 0; font-size: 1.2rem; display: flex; align-items: center; gap: 8px;\">\n                <span>\ud83d\udcb8<\/span> Send \/ Spend $L365\n            <\/h3>\n            <p style=\"color: #64748b; font-size: 0.9rem; margin-bottom: 12px;\">\n                Send coins to any email. You will receive an email to confirm the spend.\n            <\/p>\n            <input type=\"email\" id=\"l365-block-send-from\" placeholder=\"Sender (your email)\" style=\"width: 100%; padding: 10px; box-sizing: border-box; border: 1px solid #cbd5e1; border-radius: 6px; margin-bottom: 8px;\">\n            <input type=\"email\" id=\"l365-block-send-to\" value=\"\" placeholder=\"Recipient's email\" style=\"width: 100%; padding: 10px; box-sizing: border-box; border: 1px solid #cbd5e1; border-radius: 6px; margin-bottom: 8px;\">\n            <input type=\"number\" id=\"l365-block-send-amount\" value=\"\" placeholder=\"Amount ($L365)\" min=\"0.0001\" step=\"any\" style=\"width: 100%; padding: 10px; box-sizing: border-box; border: 1px solid #cbd5e1; border-radius: 6px; margin-bottom: 10px;\">\n            <button type=\"button\" id=\"l365-block-send-btn\" style=\"width: 100%; padding: 10px; background: #0f172a; color: #fff; border: none; border-radius: 6px; font-weight: 600; cursor: pointer;\">\n                Send Confirmation Link\n            <\/button>\n            <div id=\"l365-block-send-msg\" style=\"margin-top: 10px; font-size: 0.88rem; min-height: 1.2em;\"><\/div>\n        <\/div>\n        <script>\n        document.getElementById('l365-block-send-btn')?.addEventListener('click', function() {\n            const btn = this;\n            const from = document.getElementById('l365-block-send-from').value;\n            const to = document.getElementById('l365-block-send-to').value;\n            const amount = document.getElementById('l365-block-send-amount').value;\n            const msg = document.getElementById('l365-block-send-msg');\n            btn.disabled = true;\n\n            fetch('https:\/\/leiden365.nl\/blog\/wp-admin\/admin-ajax.php', {\n                method: 'POST',\n                headers: { 'Content-Type': 'application\/x-www-form-urlencoded' },\n                body: new URLSearchParams({\n                    action: 'l365_request_spend', from_email: from, to_email: to, amount: amount, security: '3f0be941c6'\n                })\n            })\n            .then(r => r.json())\n            .then(d => {\n                msg.innerText = d.data.message;\n                msg.style.color = d.success ? '#15803d' : '#b91c1c';\n            })\n            .finally(() => { btn.disabled = false; });\n        });\n        <\/script>\n        <\/div>\n            <\/div>\n\n            <div style=\"margin-top: 24px;\">\n                        <div style=\"background: #ffffff; border: 1px solid #e2e8f0; border-radius: 10px; padding: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.05); font-family: sans-serif;\">\n            <h3 style=\"margin-top: 0; font-size: 1.2rem; display: flex; align-items: center; gap: 8px;\">\n                <span>\ud83d\udce9<\/span> Request $L365 Coins\n            <\/h3>\n            <p style=\"color: #64748b; font-size: 0.9rem; margin-bottom: 12px;\">\n                Send a payment request to another user with a 1-click payment link.\n            <\/p>\n            <input type=\"email\" id=\"l365-req-my-email\" placeholder=\"Your email (requester)\" style=\"width: 100%; padding: 10px; box-sizing: border-box; border: 1px solid #cbd5e1; border-radius: 6px; margin-bottom: 8px;\">\n            <input type=\"email\" id=\"l365-req-target-email\" placeholder=\"Request from (their email)\" style=\"width: 100%; padding: 10px; box-sizing: border-box; border: 1px solid #cbd5e1; border-radius: 6px; margin-bottom: 8px;\">\n            <input type=\"number\" id=\"l365-req-amount\" placeholder=\"Amount requested ($L365)\" min=\"0.0001\" step=\"any\" style=\"width: 100%; padding: 10px; box-sizing: border-box; border: 1px solid #cbd5e1; border-radius: 6px; margin-bottom: 8px;\">\n            <input type=\"text\" id=\"l365-req-note\" placeholder=\"Note (e.g. coffee, arcade reward)\" style=\"width: 100%; padding: 10px; box-sizing: border-box; border: 1px solid #cbd5e1; border-radius: 6px; margin-bottom: 10px;\">\n            <button type=\"button\" id=\"l365-req-btn\" style=\"width: 100%; padding: 10px; background: #0284c7; color: #fff; border: none; border-radius: 6px; font-weight: 600; cursor: pointer;\">\n                Send Payment Request\n            <\/button>\n            <div id=\"l365-req-msg\" style=\"margin-top: 10px; font-size: 0.88rem; min-height: 1.2em;\"><\/div>\n        <\/div>\n        <script>\n        document.getElementById('l365-req-btn')?.addEventListener('click', function() {\n            const btn = this;\n            const myEmail = document.getElementById('l365-req-my-email').value;\n            const targetEmail = document.getElementById('l365-req-target-email').value;\n            const amount = document.getElementById('l365-req-amount').value;\n            const note = document.getElementById('l365-req-note').value;\n            const msg = document.getElementById('l365-req-msg');\n            btn.disabled = true;\n\n            fetch('https:\/\/leiden365.nl\/blog\/wp-admin\/admin-ajax.php', {\n                method: 'POST',\n                headers: { 'Content-Type': 'application\/x-www-form-urlencoded' },\n                body: new URLSearchParams({\n                    action: 'l365_request_coins',\n                    requester_email: myEmail,\n                    target_email: targetEmail,\n                    amount: amount,\n                    note: note,\n                    security: '3f0be941c6'\n                })\n            })\n            .then(r => r.json())\n            .then(d => {\n                msg.innerText = d.data.message;\n                msg.style.color = d.success ? '#15803d' : '#b91c1c';\n            })\n            .finally(() => { btn.disabled = false; });\n        });\n        <\/script>\n                    <\/div>\n        <\/div>\n        <\/p>\n<p>        <div style=\"max-width: 760px; margin: 0 auto; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; color: #1e293b;\">\n            <div style=\"background: #ffffff; border: 1px solid #e2e8f0; border-radius: 10px; padding: 24px; box-shadow: 0 1px 3px rgba(0,0,0,0.05); margin-bottom: 24px;\">\n                <h2 style=\"margin: 0 0 8px 0; font-size: 1.4rem;\">\ud83d\udd0e $L365 Account Explorer<\/h2>\n                <p style=\"color: #64748b; font-size: 0.95rem; margin-bottom: 16px;\">\n                    Enter any email address to view its holdings, daily faucet eligibility, and full transaction history.\n                <\/p>\n\n                <div style=\"display: flex; gap: 8px; flex-wrap: wrap;\">\n                    <input type=\"email\" id=\"l365-acc-email\" placeholder=\"Enter email address...\" style=\"flex: 1; min-width: 240px; padding: 10px 14px; border: 1px solid #cbd5e1; border-radius: 6px; font-size: 1rem;\">\n                    <button type=\"button\" id=\"l365-acc-btn\" style=\"padding: 10px 20px; background: #0284c7; color: #fff; border: none; border-radius: 6px; font-weight: 600; cursor: pointer; font-size: 0.95rem;\">\n                        View Statement\n                    <\/button>\n                <\/div>\n                <div id=\"l365-acc-error\" style=\"color: #dc2626; font-size: 0.9rem; margin-top: 8px;\"><\/div>\n            <\/div>\n\n            <div id=\"l365-acc-details\" style=\"display: none;\">\n                <div style=\"display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; margin-bottom: 24px;\">\n                    <div style=\"background: #ffffff; border: 1px solid #e2e8f0; border-radius: 8px; padding: 16px;\">\n                        <div style=\"font-size: 0.8rem; text-transform: uppercase; color: #64748b; font-weight: 600;\">Account Balance<\/div>\n                        <div id=\"l365-stat-balance\" style=\"font-size: 1.8rem; font-weight: 800; color: #0284c7; margin-top: 4px;\">0.00 $L365<\/div>\n                    <\/div>\n                    <div style=\"background: #ffffff; border: 1px solid #e2e8f0; border-radius: 8px; padding: 16px;\">\n                        <div style=\"font-size: 0.8rem; text-transform: uppercase; color: #64748b; font-weight: 600;\">Faucet Status<\/div>\n                        <div id=\"l365-stat-claim\" style=\"font-size: 1.1rem; font-weight: 600; margin-top: 8px; color: #16a34a;\">Ready<\/div>\n                    <\/div>\n                <\/div>\n\n                <div style=\"background: #ffffff; border: 1px solid #e2e8f0; border-radius: 10px; padding: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.05);\">\n                    <h3 style=\"margin-top: 0; font-size: 1.15rem; margin-bottom: 16px;\">\ud83d\udcdc Ledger Statement<\/h3>\n                    <div style=\"overflow-x: auto;\">\n                        <table style=\"width: 100%; border-collapse: collapse; font-size: 0.9rem; text-align: left;\">\n                            <thead>\n                                <tr style=\"border-bottom: 2px solid #e2e8f0; color: #64748b; font-size: 0.8rem; text-transform: uppercase;\">\n                                    <th style=\"padding: 10px 6px;\">Action<\/th>\n                                    <th style=\"padding: 10px 6px;\">Counterparty<\/th>\n                                    <th style=\"padding: 10px 6px; text-align: right;\">Amount<\/th>\n                                    <th style=\"padding: 10px 6px; text-align: right;\">Timestamp<\/th>\n                                <\/tr>\n                            <\/thead>\n                            <tbody id=\"l365-history-body\"><\/tbody>\n                        <\/table>\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <script>\n            document.getElementById('l365-acc-btn')?.addEventListener('click', function() {\n                const btn = this;\n                const email = document.getElementById('l365-acc-email').value;\n                const errorBox = document.getElementById('l365-acc-error');\n                const detailsBox = document.getElementById('l365-acc-details');\n                const historyBody = document.getElementById('l365-history-body');\n\n                errorBox.innerText = '';\n                if (!email) {\n                    errorBox.innerText = 'Please enter an email address.';\n                    return;\n                }\n\n                btn.disabled = true;\n                btn.innerText = 'Loading...';\n\n                fetch('https:\/\/leiden365.nl\/blog\/wp-admin\/admin-ajax.php', {\n                    method: 'POST',\n                    headers: { 'Content-Type': 'application\/x-www-form-urlencoded' },\n                    body: new URLSearchParams({\n                        action: 'l365_fetch_account_data',\n                        email: email,\n                        security: '3f0be941c6'\n                    })\n                })\n                .then(r => r.json())\n                .then(d => {\n                    if (!d.success) {\n                        errorBox.innerText = d.data.message;\n                        detailsBox.style.display = 'none';\n                        return;\n                    }\n\n                    document.getElementById('l365-stat-balance').innerText = d.data.balance + ' $L365';\n                    const claimEl = document.getElementById('l365-stat-claim');\n                    claimEl.innerText = d.data.claim_text;\n                    claimEl.style.color = d.data.can_claim ? '#16a34a' : '#d97706';\n\n                    historyBody.innerHTML = '';\n                    if (d.data.history.length === 0) {\n                        historyBody.innerHTML = '<tr><td colspan=\"4\" style=\"text-align:center; padding: 20px; color: #94a3b8;\">No recorded transactions for this email.<\/td><\/tr>';\n                    } else {\n                        d.data.history.forEach(tx => {\n                            const tr = document.createElement('tr');\n                            tr.style.borderBottom = '1px solid #f1f5f9';\n                            const color = tx.is_inbound ? '#16a34a' : '#dc2626';\n                            tr.innerHTML = `\n                                <td style=\"padding: 10px 6px;\">\n                                    <span style=\"background: #f8fafc; border: 1px solid #e2e8f0; padding: 2px 6px; border-radius: 4px; font-size: 0.8rem; font-weight: 600;\">\n                                        ${tx.type}\n                                    <\/span>\n                                <\/td>\n                                <td style=\"padding: 10px 6px; color: #475569;\">${tx.counterpart}<\/td>\n                                <td style=\"padding: 10px 6px; text-align: right; font-weight: 700; color: ${color};\">${tx.amount}<\/td>\n                                <td style=\"padding: 10px 6px; text-align: right; color: #94a3b8; font-size: 0.8rem;\">${tx.date}<\/td>\n                            `;\n                            historyBody.appendChild(tr);\n                        });\n                    }\n\n                    detailsBox.style.display = 'block';\n                })\n                .catch(() => {\n                    errorBox.innerText = 'Failed to load account data. Please try again.';\n                })\n                .finally(() => {\n                    btn.disabled = false;\n                    btn.innerText = 'View Statement';\n                });\n            });\n            <\/script>\n        <\/div>\n        <\/p>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[7],"tags":[185,186],"class_list":["post-13062","page","type-page","status-publish","hentry","category-it","tag-crypto","tag-l365"],"_links":{"self":[{"href":"https:\/\/leiden365.nl\/blog\/nl\/wp-json\/wp\/v2\/pages\/13062","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/leiden365.nl\/blog\/nl\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/leiden365.nl\/blog\/nl\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/leiden365.nl\/blog\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/leiden365.nl\/blog\/nl\/wp-json\/wp\/v2\/comments?post=13062"}],"version-history":[{"count":7,"href":"https:\/\/leiden365.nl\/blog\/nl\/wp-json\/wp\/v2\/pages\/13062\/revisions"}],"predecessor-version":[{"id":13091,"href":"https:\/\/leiden365.nl\/blog\/nl\/wp-json\/wp\/v2\/pages\/13062\/revisions\/13091"}],"wp:attachment":[{"href":"https:\/\/leiden365.nl\/blog\/nl\/wp-json\/wp\/v2\/media?parent=13062"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/leiden365.nl\/blog\/nl\/wp-json\/wp\/v2\/categories?post=13062"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/leiden365.nl\/blog\/nl\/wp-json\/wp\/v2\/tags?post=13062"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}