Mise à jour du développement du réseau SAFE - 11 juin 2020

Coffres Phase 2

Project plan

Nous vous avions promis un nouveau jouet, et aujourd’hui il vient d’être publié :tada:

Nous avons testé et répété furieusement toute la semaine pour couronner le travail des mois précédents par la production d’un réseau de test qui supporte les coffres à la maison . Tous les détails de cette publication, avec les instructions pour participer, se trouvent sur ce post .

Ce nouveau réseau de test inclut des fonctionnalités excitantes sur lesquelles nous avons travaillé, nous vous invitons à y jeter un coup d’oeil et à tester, soit en tant que membre en créant un coffre personnel, soit en tant que client, en créant des données et en initiant des transactions que nous pourrons voir depuis nos coffres.

Maintenant nous allons nous concentrer sur les étapes suivantes, qui incluent principalement les divisions de sections, l’organisation des données, et le process des requètes clients à travers des sections multiples.

Encore une étape majeure franchie :rocket:

SAFE API

Project plan

Le travail continue sur les liens syboliques. L’étape finale est de rendre possible la résolution de liens symboliques en chemins SafeUrl . La plupart des langages de programmation ont une fonction realpath() ( ou équivalent ) , qui coupe ./ et qui remplace ../ et chaque lien symbolique dans le chemin de manière appropriée pour générer un chemin final réel , dit aussi canonique . Cette semaine nous avons écrit une fonction realpath() qui comprend les métadonnées dans un FileContainer et est appelée depuis l’API Safe::fetch() , de telle sorte que cela fonctionnera pour tous les demandes de résolution SafeUrl . Il reste des améliorations et des tests à faire, mais on peut espérer qu’un PR soit prêt la semaine prochaine avec support complet pour les liens symboliques.

CRDT

La semaine dernière nous nous sommes concentrés sur le coté client de la séquence CRDT, tout d’abord en créant des tests E2E initiaux sur la caisse safe-api, et en les faisant tourner sur une section Baby Fleming. nous avons pu faire fonctionner des scénarios très basiques pour créer du contenu de Séquence, y accoler des données, et y récupérer des données. Nous avons aussi modifié les FilesContainers et les NRS Containers pour qu’ils fassent usage des Sequence CRDT ( au lieu du type AppendOnlyData ) et tous les tests E2E ont aussi été passés sur une section Baby Fleming.

Nous avons aussi travaillé pour ajouter un cache LRU ( Least Recently Used : Utilisé le Moins Récemment ) du coté client, là où la réplique CRDT locale est stockée. Nous allons devoir faire plus de recherches pour savoir quelle stratégies nous pourrions utiliser pour mettre à jour le contenu en cache; par exemple si une application utilise du contenu partagé avec d’autres clients, elle pourrait vouloir le rafraichir de temps en temps, même si ses propres mutations seront toujours fusionnées sur le réseau, mais nous ferons de plus amples recherches sur ces possibilités après que nous aurons finalisé des scénarii basiques complètement fonctionnels pour un client actif isolé.

Enfin, nous avons commencé à convertir les autres parties du type Sequence , pour qu’elles deviennent aussi CRDT , c’est à dire la liste de permissions et des propriétaires qui est gardée dans chaque instance de Sequence.
Cela nous permettra de tester des scénarii plus complexes, comme deux clients autorisés différents, qui font des mutations sur le même contenu: toute la magie CRDT a lieu quand des ajouts/mutations simultanées sont fusionnées sur le réseau sans conflits.

Transfers

SAFE Transfers Project plan
SAFE Client Libs Project plan
SAFE Vault Project plan

L’intégration des Libraries Safe Client a bien progressé la semaine dernière. Nous avons mis à jour la librairie core pour le nouveau style de transactions AT2 et avons commencé l’intégration basique d’un TransferActor . Ca sera une structure engloblante , qui abstraira beaucoup de la logique de requètes et de management qui jusque là était prise en charge par les APIs de la couche client, ce qui nous apporte un peu plus de modularité. Nous avons commencé à tester cela, et nous progressons dans la mise à jour des tests sur la totalité de la librairie core .

Ca a été une semaine ‘papier et crayon’ pour AT2 safe-vault et safe-transfers . Maintenant nous mettons au point un mécanisme ( SectionActor ) qui prend la responsabilité pour l’ “Argent” qui est payé par les clients pour les données qu’ils uploadent. Une sectoin dans le Réseau SAFE aurait sont propre compte , maintenu par ce SectionActor distribué, situé chez les Anciens ( ‘Elders’ ) de dette section. Lorsqu’un client patye pour uploader des données, l’argent est crédité au compte de la section de stockage de données, et les instances du SectionActor sont dès lors responsables de la redistribution des recompenses aux noeuds qui ont fait le travail ( de stockage ). Ce travail est lié avec le ‘farming’ , pour lequel nous somme en train de tester des récompenses granulaires avec paiement par lots. Nous améliorons et rafinnons ce travail au fur et à mesure de notre avancement dans l’implémentation, simultanément dans tous les domaines.

Routage

Project Plan

Le travail de suppression de PARSEC avance à pleine vitesse. La semaine précédente nous avons mentionné que nous signions toutes les données de l’état partagé avec la signature BLS, afin qu’elles soient auto validables. Ce travail a eu des complications innatendues en début de semaine, et du coup cela prend plus de temps que prévu. Mais les problèmes les plus difficiles semblent être résolus maintenant, ce ce qui reste devrait être relativement trivial. Prévoyez un PR bientôt.

Nous somme aussi presque prêts à remplacer le module DKG (distributed key generation : génération de clefs distribuées ) par la caisse BLS-DKG. Au départ DKG ne devait pas faire partie de Parsec ( il n’en est pas fait mention dans le whitepaper) mais il y avait été collé parce qu’à ce moment c’était la façon la plus simple de l’implémenter. Il y avait cependant de sérieuses limitations, donc ce remplacement est vraiment une grande amélioration, quoi qu’il en soit de l’abandon de PARSEC. Le PR est en train d’être relu et il reste des bugs mineurs à dégager, mais nous pensons qu’il sera mergé bientôt.

Liens utiles

N’hésitez pas à nous envoyer des tradutions de cette Mise à Jour de Dev, et nous les listerons ici.

En tant que projet open source, nous sommes toujours preneurs de retours, commentaires et de contributions de la communauté, alors ne soyez pas timide, rejoigniez nous, et créons le Reseau SAFE ensemble :tada: