{"id":182,"date":"2025-12-27T00:43:47","date_gmt":"2025-12-27T00:43:47","guid":{"rendered":"https:\/\/parentsdacote.fr\/?page_id=182"},"modified":"2025-12-27T10:57:37","modified_gmt":"2025-12-27T10:57:37","slug":"burn","status":"publish","type":"page","link":"https:\/\/parentsdacote.fr\/index.php\/burn\/","title":{"rendered":"\ud83d\udd25 PAGE BURN \ud83d\udd25"},"content":{"rendered":"\n<div style=\"max-width:820px;margin:20px auto;padding:16px;border:1px solid #ddd;border-radius:14px;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial;\">\n  <h2 style=\"margin:0 0 10px;\">\ud83d\udd0c Connexion MetaMask + \ud83d\udd25 Burn $BABY<\/h2>\n\n  <div style=\"font-size:13px;opacity:.85;line-height:1.5;margin-bottom:10px;\">\n    Token: <code>0x8bD315b7c0A40e8E957Cf16C02Bc76ae40dF1c75<\/code><br>\n    Burn address: <code>0x0000000000000000000000000000000000000001<\/code><br>\n    R\u00e9seau requis: <b>BNB Smart Chain<\/b> (chainId 56)\n  <\/div>\n\n  <div id=\"mmDetected\" style=\"padding:10px;border:1px solid #eee;border-radius:12px;margin-bottom:12px;font-weight:800;\">\n    \u2026\n  <\/div>\n\n  <div style=\"display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:10px;\">\n    <button id=\"btnConnect\" type=\"button\" style=\"padding:10px 14px;border-radius:12px;border:1px solid #ddd;background:#fff;cursor:pointer;font-weight:900;\">\n      Connect Wallet\n    <\/button>\n\n    <button id=\"btnReset\" type=\"button\" style=\"padding:10px 14px;border-radius:12px;border:1px solid #ddd;background:#f6f6f6;cursor:pointer;font-weight:800;\">\n      Reset\n    <\/button>\n\n    <input id=\"amount\" type=\"text\" inputmode=\"decimal\" placeholder=\"Montant (ex: 1000)\"\n      style=\"flex:1;min-width:220px;padding:10px 12px;border-radius:12px;border:1px solid #ddd;\">\n      \n    <button id=\"btnBurn\" type=\"button\" disabled\n      style=\"padding:10px 14px;border-radius:12px;border:0;cursor:not-allowed;opacity:.6;font-weight:900;color:#fff;background:linear-gradient(135deg,#ff512f,#dd2476);\">\n      \ud83d\udd25 Burn\n    <\/button>\n  <\/div>\n\n  <div style=\"margin:8px 0;font-size:14px;\">\n    Wallet: <span id=\"wallet\" style=\"font-family:ui-monospace,Menlo,monospace;\">\u2014<\/span><br>\n    Balance: <span id=\"balance\" style=\"font-family:ui-monospace,Menlo,monospace;\">\u2014<\/span> $BABY\n  <\/div>\n\n  <pre id=\"log\" style=\"white-space:pre-wrap;padding:12px;border:1px solid #eee;border-radius:12px;background:#fafafa;margin-top:10px;\"><\/pre>\n<\/div>\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/ethers@5.7.2\/dist\/ethers.umd.min.js\"><\/script>\n\n<script>\n(() => {\n  \/\/ ===== CONFIG =====\n  const TOKEN = \"0x8bD315b7c0A40e8E957Cf16C02Bc76ae40dF1c75\";\n  const BURN  = \"0x0000000000000000000000000000000000000001\";\n  const DECIMALS = 18;\n\n  const CHAIN_ID_HEX = \"0x38\"; \/\/ 56\n  const RPC_URL = \"https:\/\/bsc-dataseed.binance.org\/\";\n  const BSC_PARAMS = {\n    chainId: CHAIN_ID_HEX,\n    chainName: \"BNB Smart Chain\",\n    nativeCurrency: { name: \"BNB\", symbol: \"BNB\", decimals: 18 },\n    rpcUrls: [RPC_URL],\n    blockExplorerUrls: [\"https:\/\/bscscan.com\/\"]\n  };\n\n  const ABI = [\n    \"function balanceOf(address) view returns (uint256)\",\n    \"function transfer(address to, uint256 amount) returns (bool)\"\n  ];\n\n  \/\/ ===== UI =====\n  const $ = (id) => document.getElementById(id);\n  const logEl = $(\"log\");\n  const mmEl = $(\"mmDetected\");\n  const btnConnect = $(\"btnConnect\");\n  const btnBurn = $(\"btnBurn\");\n  const btnReset = $(\"btnReset\");\n  const amountEl = $(\"amount\");\n  const walletEl = $(\"wallet\");\n  const balEl = $(\"balance\");\n\n  function log(msg) {\n    logEl.textContent = (logEl.textContent ? (logEl.textContent + \"\\n\") : \"\") + msg;\n  }\n  function logError(e) {\n    const code = e?.code;\n    const msg = e?.message || String(e);\n    log(\"\u274c ERREUR\");\n    log(\"code: \" + code);\n    log(\"message: \" + msg);\n    if (e?.data) log(\"data: \" + JSON.stringify(e.data).slice(0, 500));\n  }\n\n  \/\/ ===== STATE =====\n  let provider = null;\n  let signer = null;\n  let token = null;\n  let user = null;\n\n  \/\/ Detect MetaMask\n  const hasMM = !!window.ethereum;\n  mmEl.textContent = hasMM ? \"\u2705 MetaMask d\u00e9tect\u00e9 (window.ethereum OK)\" : \"\u274c MetaMask non d\u00e9tect\u00e9\";\n  if (!hasMM) return;\n\n  \/\/ IMPORTANT: \u00e9viter que WP casse le clic \/ reload\n  btnConnect.addEventListener(\"click\", async (ev) => {\n    ev.preventDefault();\n    ev.stopPropagation();\n    await connect();\n  }, { passive: false });\n\n  btnBurn.addEventListener(\"click\", async (ev) => {\n    ev.preventDefault();\n    ev.stopPropagation();\n    await burn();\n  }, { passive: false });\n\n  btnReset.addEventListener(\"click\", (ev) => {\n    ev.preventDefault();\n    ev.stopPropagation();\n    reset();\n  }, { passive: false });\n\n  async function ensureBSC() {\n    const chainId = await window.ethereum.request({ method: \"eth_chainId\" });\n    log(\"chainId actuel: \" + chainId);\n    if (chainId === CHAIN_ID_HEX) return;\n\n    try {\n      log(\"Tentative switch BSC\u2026\");\n      await window.ethereum.request({\n        method: \"wallet_switchEthereumChain\",\n        params: [{ chainId: CHAIN_ID_HEX }]\n      });\n    } catch (e) {\n      if (e?.code === 4902) {\n        log(\"BSC non ajout\u00e9, ajout\u2026\");\n        await window.ethereum.request({\n          method: \"wallet_addEthereumChain\",\n          params: [BSC_PARAMS]\n        });\n      } else {\n        throw e;\n      }\n    }\n  }\n\n  async function connect() {\n    try {\n      logEl.textContent = \"\";\n      log(\"\ud83d\udc49 Click CONNECT re\u00e7u\");\n\n      await ensureBSC();\n\n      log(\"Demande comptes (eth_requestAccounts) \u2026\");\n      const accounts = await window.ethereum.request({ method: \"eth_requestAccounts\" });\n      log(\"accounts: \" + JSON.stringify(accounts));\n\n      provider = new ethers.providers.Web3Provider(window.ethereum, \"any\");\n      signer = provider.getSigner();\n      user = await signer.getAddress();\n      token = new ethers.Contract(TOKEN, ABI, signer);\n\n      walletEl.textContent = user;\n\n      btnBurn.disabled = false;\n      btnBurn.style.cursor = \"pointer\";\n      btnBurn.style.opacity = \"1\";\n\n      await refreshBalance();\n      log(\"\u2705 CONNECT OK\");\n    } catch (e) {\n      logError(e);\n    }\n  }\n\n  async function refreshBalance() {\n    try {\n      const bal = await token.balanceOf(user);\n      balEl.textContent = ethers.utils.formatUnits(bal, DECIMALS);\n    } catch (e) {\n      logError(e);\n    }\n  }\n\n  async function burn() {\n    try {\n      if (!token || !user) {\n        log(\"Pas connect\u00e9 \u2192 connect d\u2019abord.\");\n        await connect();\n        if (!token || !user) return;\n      }\n\n      const raw = (amountEl.value || \"\").trim().replace(\",\", \".\");\n      if (!raw || Number(raw) <= 0) {\n        log(\"\u274c Montant invalide\");\n        return;\n      }\n\n      const amountWei = ethers.utils.parseUnits(raw, DECIMALS);\n      log(\"Burn vers \" + BURN);\n      log(\"Montant: \" + raw + \" ($BABY)\");\n\n      const tx = await token.transfer(BURN, amountWei);\n      log(\"Tx envoy\u00e9e: \" + tx.hash);\n      log(\"Attente confirmation\u2026\");\n      await tx.wait(1);\n      log(\"\u2705 Confirm\u00e9: \" + tx.hash);\n      await refreshBalance();\n    } catch (e) {\n      logError(e);\n    }\n  }\n\n  function reset() {\n    provider = null; signer = null; token = null; user = null;\n    walletEl.textContent = \"\u2014\";\n    balEl.textContent = \"\u2014\";\n    btnBurn.disabled = true;\n    btnBurn.style.cursor = \"not-allowed\";\n    btnBurn.style.opacity = \".6\";\n    logEl.textContent = \"Reset \u2705\";\n  }\n\n  \/\/ bonus: si le compte change\n  window.ethereum.on?.(\"accountsChanged\", (acc) => {\n    log(\"accountsChanged: \" + JSON.stringify(acc));\n    reset();\n  });\n  window.ethereum.on?.(\"chainChanged\", (c) => {\n    log(\"chainChanged: \" + c);\n    \/\/ reload est souvent plus stable\n    location.reload();\n  });\n\n})();\n<\/script>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ud83d\udd0c Connexion MetaMask + \ud83d\udd25 Burn $BABY Token: 0x8bD315b7c0A40e8E957Cf16C02Bc76ae40dF1c75 Burn address: 0x0000000000000000000000000000000000000001 R\u00e9seau requis: BNB Smart Chain (chainId 56) \u2026 Connect Wallet Reset \ud83d\udd25 Burn Wallet: \u2014 Balance: \u2014 $BABY<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-182","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/parentsdacote.fr\/index.php\/wp-json\/wp\/v2\/pages\/182","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/parentsdacote.fr\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/parentsdacote.fr\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/parentsdacote.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/parentsdacote.fr\/index.php\/wp-json\/wp\/v2\/comments?post=182"}],"version-history":[{"count":20,"href":"https:\/\/parentsdacote.fr\/index.php\/wp-json\/wp\/v2\/pages\/182\/revisions"}],"predecessor-version":[{"id":229,"href":"https:\/\/parentsdacote.fr\/index.php\/wp-json\/wp\/v2\/pages\/182\/revisions\/229"}],"wp:attachment":[{"href":"https:\/\/parentsdacote.fr\/index.php\/wp-json\/wp\/v2\/media?parent=182"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}