BlockLucky Documentation officielle GitHub

Points à valider

Cette page rassemble les questions que l'équipe projet ne peut pas trancher seule. Elles sont adressées à un juriste, au délégué à la protection des données (DPO) de la Ville ou à la DSI, selon leur nature. Chaque point renvoie à la page qui l'explique et indique ce que le code fait aujourd'hui, pour que la réponse puisse être traduite directement en action. Aucune des analyses de cette documentation ne constitue un avis juridique.

Comment utiliser cette liste

  1. Le destinataire répond point par point, en précisant le texte applicable.
  2. L'équipe met à jour la page concernée, le registre des traitements ou le registre des risques.
  3. Si la réponse impose un changement de code, une tâche est ouverte et le point reste « en cours » jusqu'à sa livraison.

Pour un juriste

Jeux d'argent

N° Question Situation actuelle Page
JUR-1 Un dispositif sans mise réelle, dont la dotation en ethers fictifs est financée par la commune, sort-il bien de la définition de la loterie de l'article L322-2 du code de la sécurité intérieure ? Aucune vente, aucune conversion, réseau de test Veille juridique
JUR-2 Quels sont les articles exacts du CSI applicables aux exceptions, et quelle autorité serait compétente pour une variante associative ? Numérotation divergente selon les sources secondaires Veille juridique
JUR-3 Les EtherPoints, échangeables contre des offres de commerçants, sont-ils un avantage en nature ou relèvent-ils d'un autre régime (fidélité, promotion) ? Points gagnés par la participation, sans hasard Crypto-actifs et MiCA
JUR-4 Le ticket à gratter, acheté 50 ou 100 EtherPoints et qui attribue au hasard une offre de commerçant (POST /api/marketplace/scratch), est-il un jeu de hasard ? Les points, gagnés gratuitement mais aussi par l'achat de tickets, constituent-ils une mise ? Tirage par crypto.randomInt parmi les offres en stock ; l'échange direct d'une offre choisie existe toujours Veille juridique
JUR-5 Quel contenu minimal pour un règlement de jeu : durée, dotation, absence de valeur, remboursement, litiges ? Faut-il un dépôt ? Traité : règlement publié sur /reglement et dans l'application, reproduit dans Règlement de participation ; dépôt éventuel à confirmer Règlement de participation

Crypto-actifs

N° Question Situation actuelle Page
JUR-6 La conservation de clés pour des ethers de réseau de test, sans valeur, échappe-t-elle bien à l'agrément de prestataire de services sur crypto-actifs de MiCA ? Portefeuille custodial Crypto-actifs et MiCA
JUR-7 Le badge POAP non transférable relève-t-il de l'exclusion des jetons non fongibles uniques ? Un badge par participant et par tour Crypto-actifs et MiCA
JUR-8 Le paquet @chainlink/contracts est sous BUSL-1.1, mais chaque fichier compilé porte un en-tête MIT. Cette lecture fichier par fichier est-elle opposable ? Bytecode issu de fichiers MIT Licences

Information du public et propriété intellectuelle

N° Question Situation actuelle Page
JUR-9 Quelles mentions légales (LCEN) pour le web, le mobile et le site de l'Office de Tourisme : éditeur, directeur de la publication, hébergeur ? Traité pour le web (/mentions-legales) et le mobile (écran Informations légales) avec les valeurs du scénario fictif ; site de l'Office de Tourisme inchangé Cookies, mentions et CGU
JUR-10 Le chat en direct, qui diffuse des messages de participants sans modération, entre-t-il dans le champ du règlement sur les services numériques (point de contact, signalement) ? Messages tronqués à 280 caractères, ni stockés ni modérés Veille juridique
JUR-11 Qui détient les droits sur le code d'un projet pédagogique réalisé pour une ville fictive, et quelle licence publier ? Traité : fichier LICENSE MIT à la racine, champ license à MIT dans les package.json des six sous-projets ; titularité des droits à confirmer Licences
JUR-12 L'engagement de ne pas poursuivre un chercheur de bonne foi, écrit dans SECURITY.md, engage-t-il valablement la Ville ? Engagement publié Signaler une vulnérabilité
JUR-13 Quelles obligations d'accessibilité s'appliquent concrètement (déclaration, schéma pluriannuel, sanctions) ? Aucune déclaration publiée Accessibilité numérique
JUR-14 Le contrôle de l'âge par une photo de pièce d'identité examinée par un agent est-il suffisant et proportionné pour ce dispositif ? Faut-il un contrôle de correspondance avec la personne, ou au contraire une solution qui ne transmet pas l'identité ? Vérification humaine sur photo, images effacées à la décision RGPD

Pour le DPO

N° Question Situation actuelle Page
DPO-1 Pour un service communal, la base légale du compte doit-elle être l'exécution du contrat ou la mission d'intérêt public ? Exécution du contrat RGPD
DPO-2 Quelle base légale pour la création d'un compte au nom du bénéficiaire d'un cadeau, qui n'a fait aucune démarche ni fait vérifier sa majorité ? Faut-il l'informer, et comment ? Compte créé avec portefeuille, rattaché à l'expéditeur comme filleul, sans email d'information dans le mode sur chaîne Registre des traitements
DPO-3 La mesure d'audience, qui porte l'identifiant du compte connecté et la source UTM, peut-elle bénéficier de l'exemption de consentement ? À défaut, un bandeau est nécessaire sur le web. Traité côté web : bandeau de consentement (ConsentBanner.tsx, lib/consent.ts), aucune mesure ni origine de visite avant accord ; événements de connexion du serveur hors bandeau Cookies, mentions et CGU
DPO-4 Quelles durées de conservation retenir pour les comptes inactifs, les événements d'audience, le journal d'administration et les journaux techniques ? Durées annoncées, aucune purge implémentée RGPD
DPO-5 L'anonymisation actuelle suffit-elle, alors que Ticket.payerWallet et transactionHash conservent le lien vers l'ancienne adresse ? Faut-il effacer ces colonnes ? Email et clé supprimés, tickets conservés Blockchain et données personnelles
DPO-6 La publication d'adresses pseudonymes sur une blockchain répliquée mondialement constitue-t-elle un transfert hors UE, et comment le documenter ? Seules des adresses et des montants sont publiés Blockchain et données personnelles
DPO-7 Une analyse d'impact (AIPD) est-elle nécessaire (technologie innovante, données publiques et immuables, copies de pièces d'identité, public potentiellement large) ? Traité : version de travail dans AIPD, avis du DPO à recueillir AIPD
DPO-8 Le contenu de la politique de confidentialité est-il complet et exact : cadeau de ticket, vérification d'âge, caractère définitif des transactions, perte du solde de test à la fermeture, mesure d'audience reliée au compte ? Traité : politique réécrite dans content/legal.ts, publiée sur /confidentialite et dans l'application ; validation du DPO à recueillir Cookies, mentions et CGU
DPO-9 L'export doit-il inclure les préférences, les quêtes et le lien de parrainage ? Absents de l'export RGPD
DPO-10 Les deux adresses de contact dpo@etherbay.fr et dpo@destination-etherbay.fr désignent-elles la même personne ? Adresses différentes selon le site Cookies, mentions et CGU
DPO-11 Quelles clauses dans les contrats de sous-traitance (hébergeur, SMTP, S3, fournisseur RPC) ? Prestataires non désignés Registre des traitements
DPO-12 Quelle base légale et quelles durées pour la vérification d'âge : délai maximal d'une pièce jamais traitée, conservation du motif de refus dans le journal d'administration, agents habilités à consulter les pièces ? Images effacées à la décision ; aucune limite pour une demande en attente ; tout ADMIN peut consulter Registre des traitements

Pour la DSI

Ces points ne sont pas juridiques mais conditionnent la conformité ou la sécurité.

N° Décision attendue Page
DSI-1 Transférer la propriété VRF du contrat à un multisig de la Mairie après chaque déploiement. Implémenté dans les scripts : deploy-sepolia.ts appelle transferOwnership(VRF_OWNER_ADDRESS), le multisig doit ensuite appeler acceptOwnership() ; reste à l'exécuter sur Sepolia avec le multisig de l'équipe, aucun déploiement n'existant encore Clés et garde des portefeuilles
DSI-2 Séparer les comptes administrateur, trésorerie et opérateur, et adapter le reversement de commission en conséquence. Implémenté dans smart-contract/scripts/lib/roles.ts : MAIRIE_ADMIN_ADDRESS, MAIRIE_TREASURY_ADDRESS, OPERATOR_ADDRESS distincts, renonciation du déployeur ; reste à exécuter sur Sepolia. Le reversement appelle toujours setTreasury si l'adresse saisie diffère : sur Sepolia, saisir la trésorerie en place Clés et garde des portefeuilles
DSI-3 Écrire un outil de re-chiffrement avant toute rotation de ENCRYPTION_KEY, et organiser la sauvegarde de ce secret Cryptographie et secrets
DSI-4 Décider si la 2FA des administrateurs doit être renforcée (WebAuthn, interdiction de la 2FA par email pour l'ADMIN). Le refus d'un code TOTP sans premier facteur est fait : /2fa/verify exige un loginTicket ou une session du même compte Authentification
DSI-5 Restreindre cancelRound à l'état Open lors du prochain redéploiement du contrat Modèle de menaces
DSI-6 Créer la page web de confirmation de suppression, ou retirer le lien de l'email RGPD
DSI-7 Planifier un audit d'accessibilité et terminer la mise en accessibilité de l'application mobile Accessibilité numérique
DSI-8 Désigner les agents habilités à consulter les pièces d'identité et décider s'il faut un rôle dédié plutôt que le rôle ADMIN Autorisations

Suivi

N° Destinataire Réponse Date Action
JUR-1 à JUR-14 Juriste En attente
DPO-1 à DPO-12 DPO En attente
DSI-1, DSI-2 DSI En cours : implémentés dans les scripts de déploiement Exécution sur Sepolia avec les clés et les fonds de l'équipe
DSI-3 à DSI-8 DSI En attente

Ce tableau est à tenir à jour au fil des réponses. Une réponse qui modifie une qualification (par exemple JUR-1 ou JUR-6) impose de relire la veille juridique et le registre des risques.