尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證ESP8266 pull-based display network — Next.js server + ESP nodes
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Un réseau artistique distribué où des écrans e-ink ESP8266 valident collectivement des dessins via consensus, gravant chaque œuvre dans une chaîne légère. Proof of Draw est un réseau artistique embarqué qui relie des artistes, des ESP8266, et des écrans physiques e-ink/OLED. Un dessin est soumis depuis une interface web Next.js, propagé à une pool d'ESP du même type d'écran, validé localement selon des métriques simples de complexité visuelle, puis affiché et archivé dans une chaîne légère stockée dans Redis.檢視完整 README ↗
Un réseau artistique expérimental dans lequel des dessins numériques deviennent des œuvres physiques, vérifiables et rejouables sur des écrans embarqués.
État technique courant :
docs/ETAT_ACTUEL_CANONIQUE.md· familles matérielles · matrice de compatibilité · index documentaire
Application · Créer · Galerie · Réseau · Documentation interactive
Proof of Draw is an experimental art network connecting a web drawing studio, a serverless coordination layer and physical ESP8266 / Arduino UNO R4 WiFi displays. Artworks can be drawn or animated in the browser, converted into deterministic screen payloads, proposed to a pool of devices, signed and acknowledged by embedded clients, then rendered on e-paper, OLED or TFT screens.
The project explores verifiable digital-to-physical art, constrained rendering, embedded signatures, device consensus, local SD archives and environmental measurements. It is active research software: display, acknowledgement, real multi-device voting and signed Internet OTA have been validated on selected hardware profiles, but none of those proofs automatically extends to every composition or release.
This repository is public for transparency and research. No software licence has been granted yet; see Licence and reuse before reusing the code.
Une image envoyée vers un écran connecté est généralement traitée comme un simple fichier à afficher. Proof of Draw expérimente une autre approche : conserver la relation entre le geste, sa représentation binaire, les appareils qui l’observent et l’objet physique qui l’affiche.
Le projet associe ainsi :
Proof of Draw n’est pas, à ce stade, une blockchain autonome. Le serveur coordonne encore le réseau et Redis conserve son état opérationnel. La recherche porte précisément sur ce qui peut être vérifié, calculé, affiché ou archivé par les appareils eux-mêmes.
/draw) : choisir un de ses écrans ou un écran partagé, puis le studio. Le choix Animer n'apparaît que pour une cible déclarée capable. Depuis la galerie : remix d'un bloc miné ou reprise d'un rejet, sans modifier l'original./circles) : cercles restreints entre artistes, invitation puis acceptation, messages texte ; aucun média pour l'instant (stockage objet privé à choisir).Le dépôt évolue par petits lots audités, compilés sur l’hôte, puis validés par des canaris matériels. Une fonctionnalité présente dans le code n’est donc pas automatiquement considérée comme validée sur toutes les cartes.
| Installation | Réception et affichage | ACK | Stabilité observée | Vote réel |
|---|---|---|---|---|
| UNO R4 WiFi + e-ink 2,9″ BWR | oui | oui | canari mémoire et TLS validé | vote v2 accepté sur la carte (25/10/2026) |
| ESP8266 + e-ink 2,9″ BWR | oui | oui | rendu v1 validé, marge TLS mesurée | vote v2 observé (par exemple bloc #114) |
| ESP8266 + e-ink 2,7″ BW + OLED | oui | oui | coexistence e-ink/OLED et pulls répétés validés | vote v2 observé (bloc #103) |
| UNO R4 WiFi + TFT 2,8″ tactile + SD | image fixe et animation observées | oui | cache SD et lecture d’animation observés | vote v2 observé (blocs #100, #103, #118) |
| UNO R4 WiFi + DHT22 | mesure et envoi validés | n/a | lecture toutes les 30 min, envoi horaire | n/a |
UNO R4 WiFi + TFT 1,8″ + DHT22 + SGP40 + microSD (station r4tft18-2.3, expérimentale) | intégrée et compilée, non observée (aucune œuvre reçue) | non observé | DHT22, SGP40 (brut), SD, register et pull observés ; indice COV Sensirion et historique intégrés | un refus signé « blank » observé, aucune acceptation encore |
Les autres firmwares présents dans le dépôt ont des niveaux de maturité différents : certains sont compilés seulement, d’autres attendent une carte de test.
tft18-2.7 → 2.8, eink29bwr-2.4 → 2.5, multiscreen-2.6 → 2.7). Pour l'UNO R4, le dépôt prouve le client et les canaris de laboratoire ; le porteur rapporte en plus deux OTA Internet réussies suivies du portail, de la reconnexion et du vote. Les commits, releases et journaux de ces deux essais doivent encore être indexés dans la matrice avant de les présenter comme une preuve reproductible complète.docs/MATRICE_COMPATIBILITE_MATERIELLE.md.Artiste
│
│ dessin ou animation
▼
Application Next.js
│
│ conversion déterministe + candidat
▼
Coordination Vercel / Redis
│ ▲
│ metadata, payload │ vote signé, observation, ACK
▼ │
Pool d’appareils ESP8266 / UNO R4 WiFi
│
│ rendu vérifié
▼
Écrans e-ink / OLED / TFT et archives SD
Le trafic est initié par les appareils vers le serveur : le serveur n’essaie jamais de joindre une adresse IP locale. Cette architecture évite l’ancien modèle de commande directe et les risques de SSRF associés.
Le vote v2 (recalcul du contenu, signature Ed25519) a été observé sur plusieurs familles de cartes. La généralisation « toutes les cartes votent tous les formats », le quorum vivant et le vote des animations (aujourd’hui un écho v1 transitoire, ANIM_V1_VOTE) restent en chantier : voir le plan du 28/10/2026.
| Couche | Technologies et rôle |
|---|---|
| Web | Next.js 16, React 19, TypeScript, Tailwind CSS 4 |
| API | Route Handlers Next.js déployables sur Vercel |
| État | Upstash Redis : appareils, pools, candidats, votes, blocs, frames, locks et TTL |
| Firmware | Arduino C++ pour ESP8266 et Arduino UNO R4 WiFi |
| Crypto | Ed25519 pour l’identité et les signatures, SHA-256 pour les contenus et blocs |
| Affichage | e-ink BWR/BW, OLED SSD1306, TFT ST7735/ILI9341, stockage microSD selon la cible |
| Tests | node:test, harnais C++ extraits du firmware, tests de mutation et compilations Arduino |
| Route | Rôle |
|---|---|
POST /api/register | enregistrement idempotent et appairage d’un appareil |
GET /api/pull | état léger : bloc, frame et candidat éventuel |
GET /api/pull-frame | payload binaire adapté au profil d’écran |
GET /api/validate-candidate | métadonnées nécessaires au contrôle d’un candidat |
POST /api/validation-result | résultat signé, quorum et finalisation éventuelle |
POST /api/ack-frame | confirmation d’un affichage réussi |
POST /api/send-to-screen | envoi personnel vers un écran précis |
GET /api/block-clip | clip d’animation associé à un bloc |
POST /api/sensor | ingestion de mesures issues des appareils |
Le dépôt contient davantage de routes pour les artistes, galeries, appareils, animations, preuves, transferts et outils de diagnostic.
app/ interface web et routes API Next.js
lib/ consensus, chaîne, rendu, sécurité et accès Redis
consensus-pod/ noyau partagé et harnais hôte
arduino_uno_r4/ firmwares Arduino UNO R4 WiFi
esp8266/ firmwares ESP8266
docs/ architecture, audits, protocoles et mesures
tests/ tests TypeScript, structurels et harnais C++
scripts/ outils de compilation, inventaire et analyse
public/ ressources statiques de l’application
| Profil | Format | Taille logique | État général |
|---|---|---|---|
| e-ink 2,9″ BWR | noir, blanc, rouge | 296 × 128 | chemins d’affichage validés sur ESP8266 et UNO R4 |
| e-ink 2,7″ BW | monochrome | 264 × 176 | validé avec OLED sur ESP8266 ; R4 en attente de matériel |
| OLED 0,96″ | monochrome | 128 × 64 | écran auxiliaire et animation testés avec l’e-ink 2,7″ |
| TFT 1,8″ | couleur | 160 × 128 | ESP8266 : vote, frame et ACK observés (bloc #111), montage archivé mais toujours pris en charge ; UNO R4 (station r4tft18-2.3) : intégré, partiellement observé |
| TFT 2,8″ tactile + SD | RGB565 | 240 × 320 | image, cache SD et animation validés sur branche de recherche |
| DHT22 sur UNO R4 | température / humidité | — | acquisition matérielle validée |
Consulter docs/COMPATIBILITE_ECRANS.md pour les brochages et contraintes connues. Les verdicts récents restent volontairement isolés sur leurs branches tant que leur intégration dans main n’a pas été auditée.
package-lock.json avec npm ci sur un clone propre.Le dépôt contient .nvmrc. La version 22.12.0 déclenche déjà un avertissement d'incompatibilité sur une dépendance ESLint récente ; ne pas l'utiliser comme version de référence pour un nouveau poste.
arduino-cli uniquement si vous compilez les firmwares.git clone https://github.com/Rescoe/proof-of-draw.git
cd proof-of-draw
npm ci
Créer ensuite .env.local sans jamais le commiter :
KV_REST_API_URL=
KV_REST_API_TOKEN=
SESSION_SECRET=
INTERNAL_API_SECRET=
NEXT_PUBLIC_BASE_URL=http://localhost:3000
Puis lancer :
npm run dev
L’application est disponible sur http://localhost:3000.
npm test
npx tsc --noEmit
npx eslint .
npm run build
Certains harnais firmware nécessitent également un compilateur C++ récent et les bibliothèques Arduino indiquées par leurs lots de documentation.
secrets.h.example en secrets.h dans ce même dossier.secrets.h, un binaire de canari ou des identifiants de production.Exemple de point de départ validé sur main :
arduino_uno_r4/pod_uno_r4_eink29/
Les drapeaux POD_RENDER_V1 et POD_CANARY restent désactivés dans les sources commitées. Les protocoles de canari décrivent explicitement quand et comment les activer dans une copie locale.
Les microcontrôleurs visés ont peu de RAM et les bibliothèques TLS, JSON, crypto, SD et graphiques ont parfois des pics importants. Le projet applique notamment :
Ces protections sont spécifiques aux chemins et aux cibles. Une réussite sur un firmware ne valide pas automatiquement les autres.
Le projet est expérimental et n’a pas fait l’objet d’un audit de sécurité indépendant complet. Ne l’utilisez pas comme infrastructure critique ou comme preuve juridique sans analyse adaptée.
Quelques points d’entrée :
Les documents datés conservent l’historique de la recherche. Ils peuvent décrire une étape dépassée ; les verdicts les plus récents et le code de main priment.
Le projet est en phase de recherche active. Avant de proposer un changement :
Les contributions ne doivent contenir aucun secret, dump privé, clé, .env, secrets.h ou binaire configuré.
Aucune licence logicielle n’est actuellement accordée par ce dépôt. Le code est visible publiquement pour documenter la recherche et permettre son examen, mais cette visibilité ne constitue pas une autorisation générale de copier, modifier, distribuer ou exploiter commercialement le projet.
Sauf mention contraire applicable à un composant tiers, tous les droits sur le code et les contenus propres à Proof of Draw sont réservés. Pour une expérimentation, une contribution, une intégration ou une licence commerciale, ouvrez une issue afin de discuter du périmètre et des conditions.
Les dépendances et bibliothèques tierces conservent leurs licences respectives.
Proof of Draw combine logiciel web, cryptographie expérimentale, firmwares et matériel physique. Les canaris peuvent volontairement arrêter une carte lorsqu’une marge de sécurité est franchie. Sauvegardez vos données, vérifiez le firmware correspondant exactement à votre matériel et ne flashez pas un build expérimental sans lire son protocole.
Proof of Draw est autant une œuvre en construction qu’un laboratoire : le réseau, ses écrans et ses mesures deviennent une partie visible du processus artistique.