Discret

Une librairie Rust pour créer des applications pair à pair (P2P) en utilisant une syntaxe inspirée de GraphQL


Elle fournit les fonctionnalités suivantes:

Discret synchronisera automatiquement vos données avec les autres pairs, en fonction des droits d'accès que vous aurez accordé.

Créez votre modèle de données

{
    Personne {
        nom: String,
        enfants: [Personne],
        bestioles: [Bestiole],
    }

    Bestiole {
        name: String,
    }
}

Gérez les droits d'accès

mutate {
    sys.Room {
        admin: [{
            verif_key: $peer_key
        }]

        authorisations: [{
            name: "maison"
            rights:[{
                entity: "Personne"
                mutate_self: true
                mutate_all: true
            },{
                entity: "Bestiole"
                mutate_self: true
                mutate_all: false
            }]
        }]
    }
}

Insérez vos données

mutate {
    p1: Personne { 
        room_id: $room_id
        nom: "Alice" 
        bestioles: [{nom: "Truffe"}] 
    }
    
    p2: Personne { 
        room_id: $room_id
        nom: "Bob" 
        enfants: [
            {nom: "Neela"}, 
            {nom: "Assa"}
        ]
    }
} 

Interrogez les données

query {
    q1: Personne(room_id=$room_id) { 
        id
        nom 
        bestioles(nom="Truffe") {
            nom
        } 
    }
    
    q2: Personne(search("bob")) { 
        id
        nom 
        enfants(order_by(nom DESC)){
            id
            nom
        }
    }
} 

Et laissez Discret synchroniser vos données avec les pairs que vous avez invités.

Commencer avec Rust Commencer avec Flutter Apprendre Github

  • Commencer en suivant les Tutoriels.

  • Un binding Flutter est disponible pour créer des applications sans avoir à écrire une seule ligne de Rust. Commencer avec Flutter fournit toutes les étapes pour développer avec Flutter.

  • Approfondissez vos connaissances dans la section Apprendre.

  • Et toute contribution est bienvenue sur Github!

Ce site est aussi disponible en anglais.

Avantages

Simplicité

Discret cache la complexité des applications pair à pair, en la réduisant à un problème de gestion de droit d'accès aux données.

L'API se résume à:

  • gérer ses données en utilisant une API GraphQL,
  • associer des droits d'accès à ces données(toujours en GraphQL)
  • créer et accepter des invitations d'autres Pairs

la librairie s'occupe de synchroniser les données avec les different Pairs, en fonction des droits d'accès que vous leur avez accordé.

Vie Privée Renforcée

Vos données ne sont pas stockées sur le "cloud", ni par une société tierce. C'est à vous de décider avec qui vous partagez vos données.

Il n'y a aucun service de découverte d'utilisateurs. Vous invitez manuellement des personnes, et elles seules peuvent savoir que vous utilisez cette application.

Sécurité Renforcée

Discret propose de fortes garanties de sécurité:

  • les données sont cryptées sur le disque dur en utilisant la base de données SQLCipher.
  • les communications sont cryptées en utilisant le protocole QUIC.
  • les données sont signées par les clé de signature des pairs, rendant très difficile la synchronisation de données corrompues.
  • une gestion fine des droits d'accès est proposée par le concept de Room.

Connexion Facilitées

En réseau local, aucun équipement n'est requis pour établir des connexions. Cela simplifie grandement le déploiement et l'utilisation de logiciels basés sur Discret

Limitations

Comme vos données sont stockées sur votre appareil, Discret n'est pas conçu pour gérer de larges applications à l'échelle d'internet.

Il ne devrait être utilisé que pour des applications générant un volume raisonnable de données, en se synchronisant avec quelques centaines de pairs au plus.

Pour les connexions à travers internet, un serveur est requis pour permettre aux pairs de se trouver. Discret fournit une implementation ce serveur nommée Beacon.

Néanmoins, il n'est pas garanti que cela fonctionne à 100%, car certain types de "firewall" d'entreprise peuvent bloquer les tentatives de connexions pair à pair. Pour gérer le problème, il faudrait développer un serveur relai, mais ce n'est pas planifié pour le moment.

Les connexions pair à pair révèlent votre adresse IP. Cela peut vous exposer aux risques suivants:

  • découverte de votre adresse réelle par l'utilisation de services de géolocalisation.
  • attaque par dénis de service (DOS).
  • surveillance gouvernementale. Un gouvernement surveillant le réseau pourrait déterminer avec qui vous vous connectez, lui donnant des informations sur votre réseau social.

Il est donc conseillé de ne vous connecter qu'avec des personnes de confiance.