/* ---------------------------------------------------------------- MiCA flag dictionary -> flag name : human-readable violation ----------------------------------------------------------------- */ export const MICA_FLAGS = { receptionTransmissionOfOrders: "Reception & transmission of orders without authorisation", executionOfOrders: "Executes orders on behalf of clients without authorisation", exchangeForFunds: "Exchanges crypto-assets for fiat funds without authorisation", exchangeForCrypto: "Exchanges crypto-assets for other crypto-assets without authorisation", operatingTradingPlatform: "Operates a trading platform without authorisation", custody: "Custody & administration of crypto-assets without authorisation", placing: "Placing of crypto-assets without authorisation", advice: "Provides advice on crypto-assets without authorisation", portfolioManagement: "Portfolio management of crypto-assets without authorisation", transferServices: "Provides transfer services without authorisation", noCaspAuthorisation: "Not authorised as a CASP by an EU national competent authority", noKyc: "No KYC / customer due diligence (AML obligation)", noTravelRule: "Does not comply with the Travel Rule (Reg. (EU) 2023/1113)", regulatorActionAml: "Under regulator enforcement action over AML/CTF compliance failures" }; /* Build a flags object: everything false by default, then override. */ export function flags(violations = []){ const o = {}; for (const k in MICA_FLAGS) o[k] = false; for (const v of violations) o[v] = true; return o; } export function isCompliant(site){ return Object.keys(MICA_FLAGS).every(k => !site.flags[k]); } /* Re-usable flag profiles */ const SWAPPER = ["receptionTransmissionOfOrders","executionOfOrders","exchangeForCrypto","exchangeForFunds","noKyc","noTravelRule","noCaspAuthorisation"]; const AGGREGATOR = ["receptionTransmissionOfOrders","exchangeForCrypto","exchangeForFunds","noKyc","noTravelRule","noCaspAuthorisation"]; const CUSTODIAL_UNLICENSED = ["custody","transferServices","noCaspAuthorisation"]; /* ---------------------------------------------------------------- The data set. `type` drives the category filters. type: directory | aggregator | atomic | swapper | wallet | p2p | broker | exchange | project | infra | payments | giftcards | gaming ----------------------------------------------------------------- */ export const SITES = [ /* ----- Directories & review sites ----- */ { domain:"orangefren.com", type:"directory", category:"aggregator / directory", ref:"https://orangefren.com/?ref=B3A95D4", description:"Non-custodial directory comparing instant exchanges, atomic swaps, P2P and OTC brokers. Lists rates only and never touches user funds.", flags: flags([]) }, { domain:"kycnot.me", type:"directory", category:"directory", ref:"#", description:"Community directory and review platform listing no-KYC cryptocurrency services with a privacy trust score.", flags: flags([]) }, { domain:"monerica.com", type:"directory", category:"directory", ref:"#", description:"A directory of merchants, services and communities that accept or support Monero.", flags: flags([]) }, { domain:"xmrbazaar.com", type:"p2p", category:"directory / marketplace", ref:"#", description:"Peer-to-peer classifieds marketplace for buying, selling and trading goods for Monero. Connects people directly; holds no funds.", flags: flags([]) }, /* ----- Aggregators that route / transmit orders ----- */ { domain:"trocador.app", type:"aggregator", category:"aggregator / swapper", ref:"#", description:"Non-custodial exchange aggregator that receives a user's order and routes it to partner exchanges for execution, without accounts or KYC.", flags: flags(AGGREGATOR) }, { domain:"cyphergoat.com", type:"aggregator", category:"aggregator / swapper", ref:"#", description:"Non-custodial swap aggregator that finds the best rate across instant exchanges and routes the order. No account, no KYC.", flags: flags(AGGREGATOR) }, /* ----- Atomic swaps (non-custodial protocols, out of scope) ----- */ { domain:"boltz.exchange", type:"atomic", category:"atomic swap", ref:"#", description:"Non-custodial swap service for Bitcoin, Lightning and Liquid using submarine swaps. Users keep custody throughout.", flags: flags([]) }, { domain:"eigenwallet.org", type:"atomic", category:"atomic swap / wallet", ref:"#", description:"Open-source, non-custodial wallet performing trustless BTC\u2013XMR atomic swaps directly between peers.", flags: flags([]) }, { domain:"sideswap.io", type:"atomic", category:"atomic swap / wallet", ref:"#", description:"Non-custodial wallet and swap service for assets on the Liquid Network. Keys remain with the user.", flags: flags([]) }, /* ----- No-KYC instant exchanges / swappers ----- */ { domain:"bitania.io", type:"swapper", category:"exchange / swapper", ref:"#", description:"No-KYC instant cryptocurrency exchange.", flags: flags(SWAPPER) }, { domain:"bitcoinvn.io", type:"swapper", category:"exchange / swapper", ref:"#", description:"Vietnam-based exchange and instant swap service.", flags: flags(SWAPPER) }, { domain:"bitxchange.io", type:"swapper", category:"exchange / swapper", ref:"#", description:"No-account instant cryptocurrency exchange.", flags: flags(SWAPPER) }, { domain:"cce.cash", type:"swapper", category:"exchange / swapper", ref:"#", description:"No-KYC instant exchange focused on privacy coins.", flags: flags(SWAPPER) }, { domain:"changehero.io", type:"swapper", category:"exchange / swapper", ref:"#", description:"Instant exchange supporting hundreds of assets without registration.", flags: flags(SWAPPER) }, { domain:"changenow.io", type:"swapper", category:"exchange / swapper", ref:"#", description:"Custody-light instant exchange swapping 900+ assets without an account.", flags: flags(SWAPPER) }, { domain:"etzswap.com", type:"swapper", category:"exchange / swapper", ref:"#", description:"No-KYC instant cryptocurrency swap service.", flags: flags(SWAPPER) }, { domain:"explace.io", type:"swapper", category:"exchange / swapper", ref:"#", description:"Registration-free instant exchange.", flags: flags(SWAPPER) }, { domain:"exolix.com", type:"swapper", category:"exchange / swapper", ref:"#", description:"Instant exchange supporting hundreds of pairs without an account.", flags: flags(SWAPPER) }, { domain:"fixedfloat.com", type:"swapper", category:"exchange / swapper", ref:"#", description:"Instant exchange on Bitcoin and Lightning with no registration.", flags: flags(SWAPPER) }, { domain:"ghostswap.io", type:"swapper", category:"exchange / swapper", ref:"#", description:"Privacy-focused no-KYC instant swap service.", flags: flags(SWAPPER) }, { domain:"letsexchange.io",type:"swapper", category:"exchange / swapper", ref:"#", description:"Instant exchange across 3,000+ assets without registration.", flags: flags(SWAPPER) }, { domain:"nanswap.com", type:"swapper", category:"exchange / swapper", ref:"#", description:"Instant low-fee exchange with no account required.", flags: flags(SWAPPER) }, { domain:"neverkyc.io", type:"swapper", category:"exchange / swapper", ref:"#", description:"No-KYC instant cryptocurrency exchange.", flags: flags(SWAPPER) }, { domain:"mixed.to", type:"swapper", category:"exchange / swapper", ref:"#", description:"Privacy-oriented no-KYC instant exchange.", flags: flags(SWAPPER) }, { domain:"octoswap.io", type:"swapper", category:"exchange / swapper", ref:"#", description:"No-account instant cryptocurrency swap service.", flags: flags(SWAPPER) }, { domain:"quickex.io", type:"swapper", category:"exchange / swapper", ref:"#", description:"Registration-free instant exchange.", flags: flags(SWAPPER) }, { domain:"pegasusswap.com",type:"swapper", category:"exchange / swapper", ref:"#", description:"Fully non-custodial, no-account, no-KYC crypto swaps across 500+ coins.", flags: flags(SWAPPER) }, { domain:"simpleswap.io", type:"swapper", category:"exchange / swapper", ref:"#", description:"Instant cryptocurrency exchange with no registration required.", flags: flags(SWAPPER) }, { domain:"stealthex.io", type:"swapper", category:"exchange / swapper", ref:"#", description:"Registration-free instant crypto exchange.", flags: flags(SWAPPER) }, { domain:"stereoswap.com", type:"swapper", category:"exchange / swapper", ref:"#", description:"No-KYC instant cryptocurrency swap service.", flags: flags(SWAPPER) }, { domain:"swapgate.io", type:"swapper", category:"exchange / swapper", ref:"#", description:"Instant exchange aggregating rates without an account.", flags: flags(SWAPPER) }, { domain:"swapuz.com", type:"swapper", category:"exchange / swapper", ref:"#", description:"Instant exchange with its own liquidity and no registration.", flags: flags(SWAPPER) }, { domain:"wizardswap.io", type:"swapper", category:"exchange / swapper", ref:"#", description:"Privacy-focused no-KYC instant exchange.", flags: flags(SWAPPER) }, { domain:"xchange.me", type:"swapper", category:"exchange / swapper", ref:"#", description:"No-KYC instant exchange with a Tor mirror and CLI client.", flags: flags(SWAPPER) }, { domain:"xmr2cex.com", type:"swapper", category:"exchange / swapper", ref:"#", description:"No-KYC service for swapping Monero to and from exchange-listed assets.", flags: flags(SWAPPER) }, { domain:"sageswap.io", type:"swapper", category:"exchange / swapper", ref:"#", description:"No-KYC instant cryptocurrency swap service.", flags: flags(SWAPPER) }, { domain:"silent.exchange",type:"swapper", category:"exchange / swapper", ref:"#", description:"Privacy-focused no-KYC instant exchange.", flags: flags(SWAPPER) }, { domain:"wagyu.xyz", type:"swapper", category:"exchange / swapper", ref:"#", description:"No-KYC instant exchange and crypto spending service.", flags: flags(SWAPPER) }, /* ----- Non-custodial wallets (out of scope) ----- */ { domain:"cakewallet.com", type:"wallet", category:"wallet", ref:"#", description:"Open-source, non-custodial wallet for Monero, Bitcoin and other assets. Keys remain with the user.", flags: flags([]) }, { domain:"monerujo.app", type:"wallet", category:"wallet", ref:"#", description:"Open-source, non-custodial Android wallet for Monero. The user holds their own keys.", flags: flags([]) }, { domain:"edge.app", type:"wallet", category:"wallet", ref:"#", description:"Open-source, non-custodial multi-currency wallet with client-side encryption.", flags: flags([]) }, { domain:"zeusln.com", type:"wallet", category:"wallet", ref:"#", description:"Open-source, non-custodial Bitcoin and Lightning wallet that connects to your own node.", flags: flags([]) }, { domain:"blink.sv", type:"wallet", category:"wallet (custodial)", ref:"#", description:"Custodial Bitcoin and Lightning wallet. Because it holds funds on behalf of users, it falls within MiCA's custody scope and lacks EU CASP authorisation.", flags: flags(CUSTODIAL_UNLICENSED) }, /* ----- Peer-to-peer / decentralised (out of scope) ----- */ { domain:"bisq.network", type:"p2p", category:"P2P exchange", ref:"#", description:"Decentralised, non-custodial peer-to-peer exchange. Trades settle via multisig escrow with no operating company holding funds.", flags: flags([]) }, { domain:"vexl.it", type:"p2p", category:"P2P exchange", ref:"#", description:"Peer-to-peer Bitcoin trading app built on personal contacts. No accounts, no custody, no intermediary holding funds.", flags: flags([]) }, { domain:"robosats.org", type:"p2p", category:"P2P exchange", ref:"#", description:"Non-custodial peer-to-peer Bitcoin exchange over Lightning using a hold-invoice escrow. No registration.", flags: flags([]) }, /* ----- Gift cards / merchant / gaming (out of scope) ----- */ { domain:"coincards.com", type:"giftcards", category:"gift cards", ref:"#", description:"Buy gift cards and top-ups with cryptocurrency. A merchant, not a crypto-asset service provider.", flags: flags([]) }, { domain:"monerodice.net", type:"gaming", category:"gaming", ref:"#", description:"Monero-based provably-fair dice game. Gambling activity sits outside MiCA's crypto-asset service scope.", flags: flags([]) }, /* ----- Cryptocurrency projects (decentralised, no issuer) ----- */ { domain:"firo.org", type:"project", category:"project", ref:"#", description:"Privacy-focused cryptocurrency implementing the Lelantus Spark protocol.", flags: flags([]) }, { domain:"beldex.io", type:"project", category:"project", ref:"#", description:"Privacy coin and ecosystem of decentralised privacy applications.", flags: flags([]) }, /* ----- Infrastructure / advisory (out of scope) ----- */ { domain:"digilol.net", type:"infra", category:"infrastructure", ref:"#", description:"Privacy-respecting hosting and infrastructure provider.", flags: flags([]) }, { domain:"sweetwater.consulting", type:"infra", category:"advisory", ref:"#", description:"Digital-asset consulting and advisory services.", flags: flags([]) }, { domain:"vostoemisio.com", type:"infra", category:"infrastructure", ref:"#", description:"Privacy-oriented infrastructure and services provider.", flags: flags([]) }, /* ----- Major centralised exchanges / brokers — AUTHORISED CASPs ----- */ { domain:"kraken.com", type:"exchange", category:"exchange (CASP)", ref:"#", description:"Major exchange authorised as a CASP under MiCA via the Central Bank of Ireland, listed in the ESMA register and passporting across the EEA.", flags: flags([]) }, { domain:"coinbase.com", type:"exchange", category:"exchange (CASP)", ref:"#", description:"Major exchange authorised as a CASP under MiCA via Luxembourg's CSSF / Ireland's CBI, listed in the ESMA register.", flags: flags([]) }, { domain:"bybit.eu", type:"exchange", category:"exchange (CASP)", ref:"#", description:"Bybit's EU entity authorised as a CASP under MiCA via the Austrian FMA, passporting across the EEA.", flags: flags([]) }, { domain:"relai.app", type:"broker", category:"bitcoin broker (CASP)", ref:"#", description:"Bitcoin-only, self-custodial app authorised as a CASP under MiCA via France's AMF. Users keep custody of their keys.", flags: flags([]) }, /* ----- Major centralised exchanges — NOT compliant ----- */ { domain:"binance.com", type:"exchange", category:"exchange", ref:"#", description:"Withdrew its EU CASP application and is winding down EU services. After 1 July 2026 it may not legally serve EU clients.", flags: flags(["operatingTradingPlatform","custody","exchangeForFunds","exchangeForCrypto","executionOfOrders","receptionTransmissionOfOrders","noCaspAuthorisation"]) }, { domain:"kucoin.com", type:"exchange", category:"exchange (CASP, suspended)", ref:"#", description:"Holds an Austrian FMA CASP licence, but the FMA banned new-customer onboarding in 2026 over anti-money-laundering key-function failures.", flags: flags(["regulatorActionAml"]) }, /* ----- Brokers / payments ----- */ { domain:"getbittr.com", type:"broker", category:"bitcoin broker", ref:"#", description:"Swiss non-custodial Bitcoin recurring-buy service that sends BTC straight to your own wallet. EU CASP authorisation status unverified.", flags: flags(["exchangeForFunds","noCaspAuthorisation"]) }, { domain:"strike.me", type:"payments", category:"payments (custodial)", ref:"#", description:"Custodial Bitcoin and Lightning payments app. No confirmed EU CASP authorisation for its custody and transfer services.", flags: flags(["custody","transferServices","noCaspAuthorisation"]) } ];