État d'avancement de Dunitrust (nouveau nom de DURS)

dunitrust logo

Le projet

Dunitrust est une implémentation du protocole DUBP, le protocole technique actuellement implémenté dans le logiciel Duniter qui fait fonctionner la monnaie Ğ1 et sa monnaie de test associée ğ1-test.

L’objectif, à minima, est que le logiciel Dunitrust assure toutes les fonctionnalités permettant de faire fonctionner la Ğ1, ce qui veut dire qu’il pourrait remplacer totalement Duniter à terme (les 2 logiciels pourront également continuer a faire co-fonctionner la Ğ1 ensemble tant que des développeurs maintiendrons Duniter).

Comme son nom l’indique, Dunitrust est écrit en Rust, un langage moderne, safe by design et aussi performant que le C/C++ tout en étant plus expressifs que ces derniers.

la route est encore très longue avant la sortie d’une v1 de Dunitrust, notamment car nous faisons le choix de prendre le temps de faire les choses biens afin d’avoir un logiciel le plus fiable et optimisé possible.

Si les contributeurs qui ont rejoins le projet ces derniers mois y restent et montent en compétences, alors on peut raisonnablement espérer une v1 pour l’automne 2020 (rml16). Cette estimation n’a rien de contractuelle et pourra être repoussée autant que nécessaire, le temps d’atteindre une version stable incluant toutes les fonctionnalités nécessaires et suffisantes pour faire fonctionner la Ğ1.

L’équipe

Contributeurs actifs les 3 derniers mois :

@elois lead dev & archi technique
@HugoTrentesaux Développeur actif de WS2Pv2
@jsprenger Développeur actif non-spécialisé (en voie de spécialisation sur GVA)
@Lucas Récent contributeur non-spécialisé (vérification des blocs)
@ji_emme Développeur de GVA et de la commande blocks

D’autres contributeurs ont été actifs par le passé et reviendrons peut-être sur le projet quand il le pourront/souhaiteront, notamment @Inso, @tuxmain et d’autres.

L’implication de chaque contributeur est très variable selon ses possibilités et ses envies, ça peut aller de 15h/semaine dans mon cas a quelques heures tout les 3 mois, chacun fait ce qu’il peut et ce qu’il veut, nous sommes avant tout bénévoles :slight_smile:

Envie de contribuer au développement de Dunitrust ?

prérequis

Une fois ses prérequis remplis, je vous propose une formation individuelle sur le projet Dunitrust (en vocal via mumble) au prix de 5DUĞ1 de l’heure, contactez moi en MP si intéressé :slight_smile:

Une autre manière de rentrer dans le projet est de venir est de venir a un Rustkathon (hacakthon dédié à Dunitrust), il y en a 2 par an, le prochain sera les 5 et 6 octobre à Toulouse.

Vous pouvez également faire les deux (c’est même recommandé), dans tout les cas vous ne pouvez pas déroger aux prérequis cités au-dessus.

Envie de contribuer en tant que testeur ?

Pas besoin d’être développeur pour contribuer au projet, nous avons également besoin de testeurs. C’est encore un peu tôt, mais d’ici quelques mois nous publierons un guide pour le testeurs et feront un large appel a testeurs (notamment pour le jalon 0.3 pévu en novembre 2019).

La roadmap

  • Jalon 0.3 [novembre 2019]
    • Requetage pour combler trous de l’arbre des fork
    • Migration de rust-crypto vers ring (pour remplacer openssl par rustls)
    • Sync WS2Pv2 + requetes blocks WS2pv2 (en cours par hugo)
    • Migration de la base de donnée de Rustbreak vers LMDB (en cours par elois)
    • Tests d’indexation de la blockchain pour garantir la compatibilité avec Duniter
    • WS2Pv1 Migration de ws vers actix-web (pour bénéficier de rustls)
  • Jalon 0.4 [mai 2020]
    • Coverage CI + tests pour mieux couvrir l’existant
    • Vérif. globale protocole DUBP + sync cautious
    • module Client Indexer
    • module GVA (API CLient)
    • WS2Pv1 + WS2Pv2: rebond des user documents
    • Vérif. globale protocole DUBP + sync cautious
  • Jalon 1.0 [novembre 2020]
    • module Mempool (+WS2Pv2: sync des mempool)
    • module BlockGenerator
    • module PoW
    • Gestion de l’initialisation d’une monnaie (block genesis)
    • interface graphique d’administration (variante dunitrust-desktop)

Plateformes cibles

L’objectif actuel est que Dunitrust soit livré a minima pour 3 plateformes :

  • linux (64 bit)
  • windows (64bit)
  • armv7 (32bit)

Fiabilité et stratégies de test

Une des exigences du projet est d’assurer à 100% qu’il n’y aura aucune régression pour les utilisateurs de la Ğ1. Cela nécessite toute une stratégie de test qui sera présentée au Rustkathon d’octobre.
Le projet comporte déjà plus d’une centaine de tests automatisés et je compte et écrire encore plusieurs centaines afin de couvrir le plus de comportements possibles.
Désormais, tout nouveau développement s’accompagne nécessairement de tests associés. De plus, je favorise désormais l’approche TDD, que j’ai d’ailleurs appliqué pour le développement de l’algo de résolutiondes forks :slight_smile:

je compte également automatiser le redéploiement de noeuds de test sur la g1-test a chaque modification de la branche dev, pour l’instant je fais cela manuellement.
J’ai notamment un nœud Dunitrust sur la g1-test qui est synchronisé depuis 164h non-stop (c’est actuellement un record car avant il manquais la résolution des fork donc le nœud se désynchronisait au 1er fork réseau, ce qui m’a permis de constater qu’il y en a plusieurs par jour mais on ne les voient pas car ils sont très court).

Licence et propriété

Le projet Dunitrust garanti a ses utilisateurs les 4 libertés logicielles via la licence libre AGPLv3.

Le projet Dunitrust appartient désormais officiellement a l’association Axiom Team co-fondée par @PiNguyen, @poka et d’autres membres de la Ğ1, il s’agit donc d’un projet collectif dont les objectifs sont fixés par les membres de l’association (dont je fais parti).
J’ai décidé de transférer la propriété du projet afin d’être cohérent avec ma volonté d’en faire un projet collectif qui appartiennent a la communauté Ğ1. Comme la communauté Ğ1 n’a pas d’existence juridique, j’ai choisi l’association fondée par Pi dans laquelle tout les membres de la Ğ1 sont les bienvenus :slight_smile:

11 J'aimes

L’équipe de Dunitrust organise désormais des réunions vocales bimensuelles sur un serveur mumble, ces réunions sont occasion de faire le point au sein de l’équipe et de répondre en live aux questions des différents contributeurs et testeurs :grinning:

1ère réunion bimensuelle de la saison Samedi 7 Septembre à 20H sur un serveur Mumble, si vous êtes intéresssés vous pouvez me contacter par MP afin que je vous donne les informations d’accès au serveur mumble :slight_smile:

Ceux qui souhaiterais tester les versions alpha de Dunitrust sont aussi les bienvenues (maîtrise de la ligne de commande linux obligatoire).

Je rappelle que nous avons également un week-end entier dédié au projet les 5 et 6 octobre à Toulouse : Rustkathon (hackathon Dunitrust) les 5 et 6 octobre à Toulouse

Enfin, je propose des formations individuelles sur Dunitrust pour seulement 5DUĞ1 de l’heure ! Contactez moi en MP si intéressé :slight_smile:

2 J'aimes

1ère réunion bimensuelle du projet Dunitrust Demain à 20H sur mumble, si vous êtes intéresssés vous pouvez me contacter par MP afin que je vous donne les informations d’accès au serveur mumble :slight_smile:

2 J'aimes