La taille de Duniter est d’environ 92 MO en paquet .deb et semble-t-il 280 MO une fois installé.
Si je regarde la taille de duniter.db dans ~/.config/duniter/duniter_default elle apparaît à 25,8 MO pour 25614 blocs et donc 113 membres. Je suppose que c’est la blockchain !?
Si on prend pour référence une WoT cible de 5.10⁶ membres cela ferait proportionnellement 1,142 TO (1142 GO)
Ajouter à cela les tables Source (dont les enregistrements dépendent des DU et transactions) et Peer (réseau).
Donc même si l’approximation linéaire n’est certainement pas suffisante, si l’on se base néanmoins sur elle on peut voir qu’il existe des optimisations possibles comme le non-stockage du format brut qui peut être facilement déduit. On peut donc réduire dun tiers le stockage sans difficulté :
1142 Go × 0,67 = 765 Go
Et puis surtout aujourd’hui on n’a pas de volume de transactions … ce qui représente le plus gros des données.
Coté bitcoin, la solution actuelle est d’avoir 2 types de noeuds :
Les noeuds “full node” : Ils contiendront 100% de la blockchain
Les noeuds en mode “pruning” : Il contiennent juste l’historique le plus récent
Coté Duniter, on pourrait avoir des noeuds en mode “API passive”, notamment les noeuds non-associés à une clé membre :
Ils parcourent toute la blockchain pour indexer l’état des données
Ils appliquent ensuite chaque bloc reçu sur l’état des données mais sans le sauvegarder
Ils peuvent répondre par l’API BMA
Enfin, il y a la technologie des “lightning network” qui permet de réaliser un système de transaction de pair à pair “en dehors de la blockchain”, avec pour référence les données présentes dans la blockchain. Ce qui permettra sur le long terme d’avoir beaucoup de transaction, très rapides, et non-stockées dans la blockchain.
Et pour conclure, à la différence de bitcoin, dans Duniter on créé de la monnaie de manière exponentielle. Ce qui signifie que les blocs trop anciens pourront être réellement oubliés, sans impact économique. Intuituivement, je pense qu’il faut prévoir des blockchains contenant 160 ans de données environ. Au delà de 160 ans, on pourra effacer les anciens blocs.
D’ailleurs peut-être qu’il faut régulièrement sauvegarder les paramètres et l’état de la wot dans des blocks “meta” tout les 40 ans dans la blockchain pour pouvoir oublier les vieux blocs sans oublier les paramètres et l’évolution des membres depuis le bloc 0
C’est parce que Nw.js, le framework qui permet de faire tourner une application HTML comme une application de bureau, n’est pas intégré dans le build ARM, puisque l’application ARM n’a pas vocation a tourner en environnement bureau mais plutôt en ligne de commande.