Salut,
J’ai jeté un oeil aux détails techniques de Duniter.
D’abord félicitations, vous avez créé à ma connaissance la première blockchain en Proof-of-Identity grâce à votre toile de confiance : être identifié (identité physique) donne droit à créer des blocks, tous autant que les autres.
Mais du coup je me demande pourquoi vous avez rajouté une sous-couche de Proof-of-Work dans votre Proof-of-Identity.
On dirait que vous n’avez pas voulu tirer au sort ceux qui auront le droit de créer un block, comme c’est fait dans pas mal de blockchains Proof-of-Stake et qui marche très bien (par exemple Tezos).
Du coup, vous avez ajouté un PoW avec une difficulté personnelle.
Sauf si vous avez ajouté des garde-fous que je n’ai pas vu, ça n’est pas sécurisé du tout, c’est presque équivalent à ce que chaque noeud choisisse tout simplement le moment où il va créer son prochain block.
Par exemple, si je veux attaquer le réseau, avec mes 10 amis malhonnetes et qui font tourner un noeud, on se coordonne pour qu’au même moment on ait tous exFact=1
et handicap=0
, et à ce moment là on loue un peu de puissance de calcul pour pouvoir créer à peu près 10 blocks en 30 minutes pour réaliser un double-spend.
La PoW personnalisée n’y peut rien, et ne sert à rien. En laissant simplement les noeuds choisir quand ils créent les blocks, ça serait sujet aux mêmes attaques mais ne gaspillerait pas de l’énergie dans la PoW.
Ce qu’il vous faut c’est un algorithme de tirage au sort inclu dans le protocole, qui spécifie quelle identité a le droit de créer un block et quand. J’imagine que vous n’avez pas besoin de deposits, vu que vous pouvez bannir l’identité qui a fauté (double-baking dans Tezos).
Un petit détail sur le vocabulaire: selon moi, PoW, PoS ou Poi ne sont pas des algorithmes de consensus, mais des algorithmes de tirage au sort temporisé Sybil-résistant: c’est le mécanisme qui décide qui va avoir le droit de créer un block et quand. Le consensus c’est en général Nakamoto (heaviest chain rule) comme sur Bitcoin, mais ça peut être aussi plein d’autres algorithmes. C’est le mécanisme que chaque noeud va lancer pour savoir quel branche suivre dans les forks. Je n’ai pas trouvé le votre en regardant rapidement mais j’imagine que c’est Nakamoto aussi ? Il y a donc des blockchains PoW avec consensus de Nakamoto, comme Bitcoin, ou PoS et Nakamoto comme Tezos etc.
Je n’ai pas trouvé non plus d’infos sur la taille maximale des blocks ? Quelle est le nombre de transactions par seconde maximum que vous pouvez atteindre ?
Est-ce que vous avez publié ou vous comptez publier scientifiquement votre idée ? Ou est-ce que vous avez au moins un pdf en anglais qui détaille le projet, tous les paramètres, la WoT et les premières stats d’utilisation, histoire de pouvoir le citer ?
J’en ai pas trouvé mais j’ai pas cherché longtemps non plus.
Merci!