Effectivement, la gestion des données hors chaîne ressort comme une priorité. Voici rapidement mes conclusions sur le sujet :
- pour des raisons de droit à l’oubli, les données en tant que telles doivent plutôt être stockées hors chaîne (ça vaut aussi pour les commentaires de transaction pour qu’on puisse permettre leur suppression / désindexation en cas de propos diffamatoires par exemple)
- par contre, l’annonce de leur hash peut être fait onchain car on a souvent besoin de consensus pour cet aspect
- pour l’instant nous ne sommes pas prêts à gérer l’annonce en blockchain des données hors chaîne, ça mérite qu’on établisse un protocole commun bien pensé
- mais on a besoin au plus vite possible de savoir quelle donnée est légitime pour indexation, pour permettre de trouve un portefeuille par son nom via une recherche par exemple, et sans tomber sur une avalanche de résultats frauduleux (cf la recherche “numéro 2” qui donnait des dizaines de croix gammées)
Donc pour l’instant je propose d’utiliser la toile de confiance et un mécanisme de Duniter : le lien d’un compte avec une identité. Un compte portefeuille peut être lié à une identité via identity.link_account. Si un compte est lié, on indexe ses données, on ne les affiche pas en réponse à une recherche.
Pour les comptes collectifs ou d’associations, ça implique de lier un compte à une identité du groupe, ce qui n’est pas souhaitable à long terme, on préférerait un concept de groupe, mais qui peut répondre dans un premier temps au problème de l’indexation des pages de groupe (par ex la caisse des devs).
À terme il faudrait peut-être plutôt envisager l’utilisation de multisig ou introduire un nouveau concept.
Par contre, cela ne couvre pas le cas d’un compte d’individu non membre ou souhaitant être anonyme. Pour cela, il faut introduire un autre mécanisme de confiance. On peut très rapidement se mettre d’accord avec un format de remark dédié à ça contenant
- un “magic bits” défini hors chaîne pour éviter de traiter des commentaires de transaction
- l’adresse de destination
- optionnellement le hash d’une donnée hors chaîne au format CID, pour associer une information à cet acte à des fins de traçabilité et d’audit
par exemple
# pour déclarer une confiance positive
/TRUST <ss58> <CID>
# pour déclarer une problème
/REPORT <ss58> <CID>
et indexer ces remark spécifiquement dans Squid, ce qui permet d’avoir :
- les identités ou compte ayant attribué une confiance/défiance
- la date
- d’éventuelles informations additionnelles (plus probablement pour le report)
Squid maintiendrait quatre compteurs :
- A le compteur d’identités ayant fait confiance
- B le compteur d’identités ayant fait défiance
- C le compteur de comptes ayant fait confiance
- D le compteur de comptes ayant fait défiance
Un information n’est indexée que si A - B >= 0 et C - D > 0.
L’avantage de cette solution est que ça répond à la demande urgente d’avoir un mécanisme de modération au consensus. Et ça nous laisse du temps pour répondre aux point suivants :
- comment déposer une donnée (pour l’instant via Cesium+)
- gérer l’indexation sélective côté serveur (pour l’instant il va falloir filtrer côté client)
- mettre au propre le fonctionnement de système de stockage offchain
- mettre en place un système de modération sans consensus à l’échelle du contenu et non à l’échelle du compte
Discutons.