Zwei
Legendary

Activity: 2114
Merit: 1351
Trêvoid █ No KYC-AML Crypto Swaps
|
And also, “Latest Swaps” section on their homepage shows record is fake.
not only that, their "Liquidity on hand" is also fake. the vibe coding is so bad, they didn't even try to hide it in the code. they even have it commented that both the "Latest Swaps" and "Liquidity on hand" are only cosmetic, and they display random different data based on each device. all done locally via javascript. // ---- Latest swaps (per-device, cosmetic) ---- // A rolling feed of 10 conversions kept in device memory. A new one is appended // every 5-20 minutes; sizes are drawn so the typical swap lands around $3-5k and // never runs past $100k. (function () { const list = document.getElementById("swapsList"); if (!list) return;
const KEY = "1xmr.swaps"; const COUNT = 10; const GAP_LO = 5 * 60 * 1000; const GAP_HI = 20 * 60 * 1000; const USD_MIN = 120; const USD_MAX = 100000;
// Reference USD prices; stablecoins are pegged at 1. const COINS = [ { label: "BTC", price: 64737, decimals: 5, weight: 5 }, { label: "ETH", price: 1917, decimals: 5, weight: 5 }, { label: "LTC", price: 44.69, decimals: 3, weight: 3 }, { label: "SOL", price: 71.2, decimals: 3, weight: 4 }, { label: "TRX", price: 0.3262, decimals: 0, weight: 2 }, { label: "USDT-TRC20", price: 1, decimals: 2, weight: 6 }, { label: "USDT-ERC20", price: 1, decimals: 2, weight: 4 }, { label: "USDT-SOL", price: 1, decimals: 2, weight: 3 }, { label: "USDC-ERC20", price: 1, decimals: 2, weight: 3 }, { label: "USDC-SOL", price: 1, decimals: 2, weight: 3 }, { label: "DAI-ERC20", price: 1, decimals: 2, weight: 1 } ]; const WEIGHT_TOTAL = COINS.reduce((sum, c) => sum + c.weight, 0);
function rand(lo, hi) { return lo + Math.random() * (hi - lo); }
function pickCoin() { let r = Math.random() * WEIGHT_TOTAL; for (const c of COINS) { r -= c.weight; if (r <= 0) return c; } return COINS[0]; }
// Log-normal sizing: median ~$2.6k, mean ~$4k, clamped to [120, 100000]. function pickUsd() { const u = Math.max(1e-9, Math.random()); const v = Math.max(1e-9, Math.random()); const gauss = Math.sqrt(-2 * Math.log(u)) * Math.cos(2 * Math.PI * v); const usd = Math.exp(Math.log(2600) + 0.85 * gauss); return Math.min(USD_MAX, Math.max(USD_MIN, usd)); }
function trim(n, decimals) { const s = n.toFixed(decimals); return decimals > 0 ? s.replace(/\.?0+$/, "") : s; }
// Most people send round-ish figures (5000 USDT, 0.25 BTC) rather than // eight decimals, so snap to a nice step most of the time. function humanize(amount) { if (Math.random() > 0.65) return amount; const mag = Math.pow(10, Math.floor(Math.log10(amount))); const step = mag / [1, 2, 4][Math.floor(Math.random() * 3)]; return Math.max(step, Math.round(amount / step) * step); }
function makeSwap(at) { const coin = pickCoin(); const amount = humanize(pickUsd() / coin.price); return { coin: coin.label, amount: trim(amount, coin.decimals), at }; }
function ago(ts) { const mins = Math.max(1, Math.round((Date.now() - ts) / 60000)); if (mins < 60) return mins + (mins === 1 ? " minute ago" : " minutes ago"); const hrs = Math.round(mins / 60); return hrs + (hrs === 1 ? " hour ago" : " hours ago"); }
function load() { try { const state = JSON.parse(localStorage.getItem(KEY)); if (state && Array.isArray(state.items) && state.items.length) return state; } catch (_) { /* fall through to a fresh feed */ } return null; } function save(state) { try { localStorage.setItem(KEY, JSON.stringify(state)); } catch (_) {} }
function seed() { const items = []; let at = Date.now() - rand(60 * 1000, GAP_LO); for (let i = 0; i < COUNT; i++) { items.push(makeSwap(at)); at -= rand(GAP_LO, GAP_HI); } return { items, next: Date.now() + rand(GAP_LO, GAP_HI) }; }
let state = load() || seed();
function render(freshFirst) { list.innerHTML = ""; for (const s of state.items) { const li = document.createElement("li"); if (freshFirst && s === state.items[0]) li.className = "fresh"; const pair = document.createElement("span"); pair.className = "pair"; pair.innerHTML = '<span class="from"></span><span class="arrow">→</span><span class="to"></span>'; pair.querySelector(".from").textContent = s.amount + " " + s.coin; pair.querySelector(".to").textContent = "XMR"; const when = document.createElement("span"); when.className = "ago"; when.textContent = ago(s.at); li.appendChild(pair); li.appendChild(when); list.appendChild(li); } }
function tick() { const now = Date.now(); let added = false; while (now >= state.next) { state.items.unshift(makeSwap(state.next)); state.items = state.items.slice(0, COUNT); state.next += rand(GAP_LO, GAP_HI); added = true; } save(state); render(added); }
tick(); setInterval(tick, 30000); })();
// ---- Liquidity display (per-device, cosmetic) ---- (function () { const el = document.querySelector(".reserves .amount"); if (!el) return; const KEY = "1xmr.liq"; const MIN_FLOOR = 750; const MAX_FLOOR = 850; const RESET_LO = 1900; const RESET_HI = 2800; const DROP_LO = 5; const DROP_HI = 150; const INTERVAL_LO = 15 * 60 * 1000; const INTERVAL_HI = 20 * 60 * 1000;
function rand(lo, hi) { return lo + Math.random() * (hi - lo); }
function load() { try { return JSON.parse(localStorage.getItem(KEY)); } catch (_) { return null; } } function save(state) { try { localStorage.setItem(KEY, JSON.stringify(state)); } catch (_) {} }
let state = load(); if (!state || typeof state.amount !== "number") { state = { amount: rand(RESET_LO, RESET_HI), next: Date.now() + rand(INTERVAL_LO, INTERVAL_HI), floor: rand(MIN_FLOOR, MAX_FLOOR) }; save(state); }
function tick() { const now = Date.now(); while (now >= state.next) { state.amount -= rand(DROP_LO, DROP_HI); state.next += rand(INTERVAL_LO, INTERVAL_HI); if (state.amount <= state.floor) { state.amount = rand(RESET_LO, RESET_HI); state.floor = rand(MIN_FLOOR, MAX_FLOOR); } } state.amount = Math.round(state.amount * 100000) / 100000; save(state); el.textContent = state.amount.toFixed(5) + " XMR"; }
tick(); setInterval(tick, 60000); })();  safe to say this is a 100% scam exchange.
|