Une idée : prouver la réponse, garder le dossier.
Trois pièces : votre coffre, une preuve et un contrat de consentement.
Les trois pièces
Le coffre
Chiffré sur votre appareil avec une clé tirée de votre portefeuille. Cura l’héberge sans le lire.
La preuve
Critères en entrée publique, vos valeurs en entrée privée. Sortie : un bit et un nullificateur.
Le contrat de consentement
Consigne qui lit quels champs jusqu’à quand, verse les récompenses et applique la révocation.
Une étude, un dossier, un bit
Ce que voit le circuit. La colonne du milieu ne quitte jamais l’appareil.
| Critère (entrée publique) | Votre valeur (entrée privée) | Circuit |
|---|---|---|
| Âge entre 40 et 70 ans52 | 52 | respecté |
| Diagnostic : diabète de type 2Oui, depuis 2019 | Oui, depuis 2019 | respecté |
| HbA1c entre 6,5 et 9,0 %7,1 % | 7,1 % | respecté |
| Tension systolique ≥ 130138 mmHg | 138 mmHg | respecté |
Sorties publiques
admissible = 1
nullificateur = hash(clé du coffre, id de l’étude)
Un critère non respecté ne produit aucune preuve, et rien n’est envoyé.
La vie d’un consentement
- Accordé
Signé avec la preuve. Le labo reçoit une clé pour les champs nommés.
- Actif
Les récompenses s’accumulent depuis le séquestre. Chaque lecture est consignée.
- Restreint
Décochez un champ : la clé du labo l’exclut au bloc suivant.
- Révoqué ou expiré
L’accès et les récompenses prennent fin. Les agrégats demeurent.
Ce qui garde l’échange honnête
Nullificateurs
Bloquent une deuxième inscription sans savoir qui vous êtes. Deux études ne peuvent pas vous relier.
Taille minimale de cohorte
Effectifs arrondis à la dizaine et masqués sous le seuil du conseil.
Piste d’audit
Chaque preuve, consentement, lecture et paiement est consigné avec son bloc.
Le conseil
Les contributeurs votent les règles de façon anonyme : une personne, un vote.
Fidèle aux principes, sans prétendre au certificat
- Minimisation
- L’admissibilité tient en un bit ; seuls les champs nommés sont partagés.
- Consentement précis
- Un bon par étude, avec la liste des champs et une date de fin.
- Retrait
- La révocation tient en une signature et s’applique sur la chaîne.
- Responsabilité
- Une piste d’audit en ajout seul, lisible par toutes les parties.
Cette démo n’est certifiée ni HIPAA, ni RGPD, ni Loi 25, et n’est pas un avis juridique.
L’interface des contrats, et ce que la démo simule
La couche simulée de src/lib/demo reproduit les appels d’un déploiement réel.
Afficher l’interface du contrat
interface ICuraConsent {
/// Verify an eligibility proof and record a consent slip.
function enrol(
bytes32 studyId,
bytes calldata proof, // 256 bytes, Groth16
bytes32 nullifier, // hash(vaultKey, studyId)
uint16 fieldMask, // fields the slip covers
uint64 expiresAt
) external returns (bytes32 consentId);
function narrow(bytes32 consentId, uint16 fieldMask) external;
function revoke(bytes32 consentId) external;
function claim(bytes32[] calldata consentIds) external;
event Enrolled(bytes32 indexed studyId, bytes32 consentId, bytes32 nullifier);
event Revoked(bytes32 indexed consentId, uint64 atBlock);
}Module de la démo → équivalent réel
prover.tsCircuit compilé en WASM, preuve dans un Web Worker
chain.tswriteContract + waitForTransactionReceipt de wagmi
store.tsÉvénements des contrats indexés par un subgraph
population.tsEffectifs de cohorte agrégés et bruités