Salut à tous,
comme j’ai une grande sympathie pour le projet duniter je reviens à la charge parce que je ne suis toujours pas bien satisfait de l’architecture technique de ce bazar (cf mon post sur la toile de confiance). Ce qui me tracasse, c’est que duniter utilise la blockchain et qui plus est la preuve par le travail alors que ces deux choses, bien qu’elles aient pas mal fait avancer les bases de données distribuées, sont du point de vue théorique très mauvaises. Pour rappel, le seul avantage d’un système blockchain, c’est qu’il est très bien distribué mais il ne fournit pas:
- de la consistence forte, c’est à dire la garantie que tout le monde voit la même chose au même moment et donc de fait la certitude qu’une transaction est bien enregistrée
- des temps d’attente et une consommation de puissance de calcul raisonnables (quelle que soit la manière dont l’utilise duniter, je sais comment ça marche)
- le fait de pouvoir décider nous même en qui ont a confiance
Il y a peu de temps je suis tombé sur stellar qui est un nouveau protocol de consensus (SCP). Il y a une chose que j’aime bien au premier abord: contrairement à quasiment toutes les dérivées de blockchain, ce protocol est développé en lien étroit avec le milieu académique, qui se penche sur ces questions de consensus byzantins depuis très longtemps (~1980 avec paxos) (David Mazières est plutôt une pointure de l’informatique théorique). J’ai pas mal potassé le whitepaper, s’il y en a que ça motive, c’est lisible, même si ça aide beaucoup de connaître un peu le fonctionnement de paxos (ou de raft, plus simple).
Concrètement, Stellar est un système de cryptomonnaie, mais il est basé sur SCP, qui est un protocol de consensus générique, qui pourrait donc servir à décentraliser n’importe quelle base de donnée (les DNS ou encore les CA racines!). SCP n’utilise absolument pas les même concepts que la blockchain et ne dépend donc pas de la preuve par le travail (ou de n’importe quelle preuve d’ailleurs) et permet de gérer efficacement une vraie base de donnée (pas juste une suite de blocs, on doit pouvoir faire nativement une key-value store ou une base de donnée SQL). La principale idée qui permet de se passer de PoW et de couper l’herbe sous le pieds d’une attaque genre Sybil c’est que chaque noeud décide en qui il a confiance (le quorum-slice), c’est-à-dire l’ensemble des noeuds qui vont le convaincre si ils sont tous d’accord sur quelque chose. Ainsi, le liveness (est-ce qu’on peut progresser dans le consensus) et la sécurité (est-ce que on est bien d’accord avec le consensus) est une caractéristique de chaque noeud et non du réseau entier. Donc le fait que beaucoup de noeuds fassent n’importe quoi ne gène absolument pas les autres si ils ne dépendent pas d’eux pour se convaincre et faire progresser le consensus.
En fait SCP est je trouve vraiment une très belle généralisation des protocols classique style paxos, car chaque noeud peut décider lui-même du compromis entre sécurité (on ne croit pas n’importe quoi) et liveness (on ne reste pas bloqué si on arrive à parler à personne) et de fait le système ne peut jamais vraiment crasher. Le protocol passe sans marche d’une architecture centralisée à complètement décentralisée en passant par un système de tier (des tops tier comme des banques ou des ONGs, des middle tier comme les états, puis les autres), ce sont les noeuds qui décident à qui ils font confiance.
Pour l’instant, SCP n’a été implémenté que par Stellar pour leur système de cryptomonnaie. Ce qui m’intéresse personnellement, c’est SCP pour distribuer une base de donnée quelconque et pour ça il faudrait réécrire une librairie qui fait uniquement SCP sans toutes les histoires de comptes/transactions etc, mais pour duniter, ça serait probablement juste une histoire de plugger le dividende universel et le WoT (qui du coup pourrait d’ailleurs être directement intégré au protocol de consensus).
Qu’en dites-vous?