Block issuance distribution

Personnellement, j’apprĂ©cie le fait que l’on ne soit pas obligĂ© d’avoir une machine de guerre pour miner des block.
j’apprĂ©cie Ă©galement que ce soit le plus Ă©quitable possible entre les membres.
Maintenant je comprends qu’avoir des noeuds exclus du calcul de la POW peut poser des problĂšmes en cas de fork, ou l’une des branches est dans l’impossibilitĂ© de miner d’autre block car la plupart des nƓuds sont exclus.
Mais ce problĂšme sera-t-il toujours prĂ©sent quand plus de nƓuds seront dans le rĂ©seau?

Autre sujet (mais lié):
Pour moi il faut garder en tĂȘte l’impossibilitĂ© de calculer plus de 5 blocs consĂ©cutifs par un mĂȘme membre.
Mais que ce passe-t-il si plusieurs membres (qui n’ont que la POW min car jamais miner de block ) se mettent d’accord pour calculer (par un super calculateur) des blocs consĂ©cutifs afin de supprimer un prĂ©cĂ©dent transfert de la chaine?

Pour cela, ils doivent donner leur clĂ© privĂ©e au super calculateur. Ce qui fait qu’ils prennent le risque de perdre le contrĂŽle total sur leur identitĂ©, leur compte en monnaie, et la production du DU.

Nul doute que cela se produira ne serait-ce que par extorsion du trousseau (via piratage par ex.), ce qui donne beaucoup de pouvoir Ă  ce calculateur, c’est vrai. Mais ce potentiel de calcul est Ă  mettre en balance avec la puissance totale du rĂ©seau, et donc plus y a de nƓuds, plus ce pouvoir est diluĂ©.

Maintenant, c’est aussi pour ce problĂšme de “partage” de clĂ© Ă  un super calculateur que j’avais mis en place le mĂ©canisme de rotation initial, jusqu’à DUP 0.4. Si l’on constate qu’il valait mieux le reprendre, on pourra toujours le faire. Mais plus ça traĂźne, plus ce sera difficile !

Je pense qu’exclure jusqu’à 1/3 du rĂ©seau est raisonnable. En gĂ©nĂ©ral, dans les systĂšmes en haute-dispo, on considĂšre que le quorum votant peut fonctionner tant qu’il reste 2/3 des nodes up. Donc ça me parait ĂȘtre correct. En dessous, on prend le risque que le quorum se bloque ou se split.

avec une complexitĂ© personnalisĂ©e, ce n’est (presque) plus la “puissance totale du rĂ©seau”, mais bien le “nombre total de noeuds” qui permet de diluĂ© ce pouvoir.

Qu’entends-tu par “le mĂ©canisme de rotation initial”?
le faite qu’un membre est vite exclu dĂšs qu’il a minĂ© un bloc ?
Si c’est le cas, c’est ce que j’étais en train de dĂ©crire prĂ©cĂ©demment:

  • Rien n’empĂȘche Ă  un super calculateur de miner dans son coin un premier bloc avec la clef privĂ©e d’un premier membre piratĂ©, puis un 2eme bloc avec la clef d’un autre membre piratĂ©, et ainsi de suite. Afin de garder une complexitĂ© de calcul la plus faible possible. Puis de publier la nouvelle chaine d’un coup.

Oui, mais exclu immédiatement, en fait.

Oui mais cette exclusion continue tant qu’1/3 de tous les membres calculant n’ont pas Ă©crit eux-mĂȘme un bloc. Donc sauf Ă  avoir 1/3 des clĂ©s des membres calculant, la nuisance du super calculateur n’est que partielle.

Ha bien vu :wink:
il me manquait cette info

Alors je vote haut la main pour la version 0.4 !

Dans la version 0.4, quelqu’un qui a calculĂ© est exclu jusqu’à ce qu’1/3 des membres ait calculĂ© un bloc ? Ca me parait Ă©norme


Une des raisons pour laquelle on est partie vers DUP 0.5 Ă©tĂ© le fait que dans le cas du rĂ©seau actuel de Test-net, avec une vingtaine de nƓud membres, en cas de deux fork symĂ©triques, les deux fork Ă©taient bloquĂ©s Ă©tant donnĂ© qu’il arrivait qu’un nƓud se retrouve tous seul a faire avancer la branche.
Ce 2/3 d’exclus n’était pas adaptĂ© aux forks avec cette taille de rĂ©seau monĂ©taire.
Lors d’un fork, 2/3 de la branche principale se transforme en 2/3 sur chaque branche.
identitĂ©s exclus / nombre d’identitĂ©s qui calculent.
Sur une branche, le nombre d’identitĂ©s exclus ne change pas mais le nombre d’identitĂ©s qui calculent est celui du nombre total des deux branches.

Finalement, je commence Ă  ĂȘtre convaincu que ça n’est pas possible qu’il y ait une Ă©quitĂ© entre des identitĂ©s ayant un gros CPU et d’autres ayant un faible CPU. En mĂȘme temps ça serait dommage pour ceux qui mettent a disposition une forte puissance de calcul de se retrouver Ă  calculer le mĂȘme nombre de nƓuds que les autres.
Je pense pas qu’on revient Ă  0.4, car la fenĂȘtre s’adapte mieux en cas de fork ? Pas sĂ»r au final. Je vois pas comment gĂ©rer ce cas.
Dans le cas de 0.5, la fenĂȘtre est plus grande et exclus plus difficilement en cas de fork. Avec cette proposition de 0.6, ça risque, en effet, de ressembler Ă  0.4.

Au final avec 0.5, la difficulté du réseau a beaucoup augmentée.

(DĂ©solĂ©, ce que j’ai Ă©crit est trĂšs brouillon. Mais les idĂ©s sont lĂ  ! :slight_smile:)

Est-il possible de n’exclure qu’1/3 des noeuds tout en amĂ©liorant la distribution des blocs ? (cf mon commentaire plus haut, dans les rĂ©seaux distribuĂ©s, il faut tenter d’avoir toujours 2/3 du rĂ©seau qui peut travailler
)

edit : ma rĂ©ponse Ă©tait pour @inso, mais avec le dĂ©placement de sujet, ça indique que c’est pour Moul.

1/3 des membres qui calculent, c’est-Ă -dire ceux qui ont Ă©mis un bloc dans la fenĂȘtre courante.

Ça paraĂźt beaucoup, mais ça veut aussi dire que les 2/3 restant calculent en permanence. A quelques variations prĂȘt bien sĂ»r, il y en a qui arrĂȘtent et d’autres qui se mettent Ă  participer.

Mais pour résumer, on a 2 visions :

  • une qui consiste Ă  dire que n’importe quel participant devrait avoir la capacitĂ© de poursuivre la blockchain tout seul s’il le souhaite (1)
  • une qui consiste Ă  dire que ce bien est commun et qu’on ne peut pas en prendre le contrĂŽle soi-mĂȘme, mais que des semblables sont nĂ©cessaire Ă  la poursuite de l’aventure (2)

A noter que 1) est en réalité toujours possible, on peut forker la blockchain quand on veut par exemple pour changer la difficulté et faire passer une blockchain du mode 2) vers 1).

J’étais parti pour 2) jusqu’à la 0.4, j’ai voulu tenter 1) depuis la 0.5.

edit 2 : mais en effet, le problĂšme majeur que l’on avait c’était les forks, mais ces forks ont aussi leurs raisons : notamment parce que je propageais la nouvelle version du protocole de façon instantanĂ©e et non coordonnĂ©e, contrairement Ă  la 0.5 qui a Ă©tĂ© planifiĂ©e, oĂč il n’y a eu aucun fork majeur.

Si l’on sait Ă©viter les forks majeurs, alors il n’y a pas vraiment de problĂšme Ă  avoir un algo Ă  la 0.4.

2 Likes

en fait je ne comprends pas :innocent:
Pour moi cela ne corrige pas le problĂšme, imaginons un vol de 6 identitĂ©s membres (clef privĂ©e/publique) qui n’ont jamais minĂ©e (=> pow min et non exclu) il est alors possible de miner 6 blocs consĂ©cutifs grĂące Ă  chacune de ces 6 identitĂ©s.

Avec le system de POW personnalisé (ou exclue) cela réduit drastiquement la complexité moyenne de la blockchain et permet de créer une nouvelle version de la blockchain bien plus facilement.

plus j’y rĂ©flĂ©chis, plus j’ai peur de la POW personnalisĂ©.

Oui, mais ça ne dure que 6 blocs. Sur 200 nƓuds calculant, c’est 3% du temps qu’ils peuvent monopoliser. Et encore, cela suppose que le super calculateur soit largement plus puissant que les 194 nƓuds restants, cela a un coĂ»t non nĂ©gligeable pour une gĂȘne assez infime, tout en sachant que la fonction de hashage reste alĂ©atoire.

Par ailleurs, rien ne nous empĂȘche, nous non plus, de calculer des blocs vides ou des blocs qui ne contiennent que des donnĂ©es qui nous intĂ©ressent personnellement. Nous avons alors un comportement similaire au super calculateur, sans avoir sa capacitĂ© de calcul. Si tout le monde agit en ce sens, la monnaie fonctionnera tout aussi mal, voire trĂšs mal.

Au final donc, ce n’est pas tant le super calculateur le problĂšme (sauf en 0.5, lĂ  oui c’en est un) que la volontĂ© des membres de sĂ©curiser sa monnaie en dĂ©multipliant le nombre de nƓuds pour la faire fonctionner.

C’est une fausse peur, car quand tu regardes Bitcoin ou les altcoins Ă  base de PoW, lĂ  c’est clairement la voie royale pour avoir un contrĂŽle centralisĂ©. D’ailleurs c’est dĂ©jĂ  le cas, il y a des “pools”. Et l’inquiĂ©tude grandit chaque jour, car l’intĂ©rĂȘt pour le minage baisse (moins de coins Ă  miner) ce qui va Ă  terme signifie la mort de la monnaie (voir le cas de Auroracoin qui est mort justement par manque de puissance de calcul faisant balance Ă  un attaquant).

D’ailleurs Bitcoin peut dores et dĂ©jĂ  ĂȘtre tuĂ© : il suffit de voir qu’il y une puissance globale au rĂ©seau et que celui qui le veut peut investir un gros paquet de blĂ© dans un super-calculateur et s’amuser Ă  crĂ©er des blocs vides. Et avec les banques qui peuvent crĂ©er de la monnaie Ă  volontĂ©, c’est tout Ă  fait faisable. Bitcoin est laissĂ© vivant, il faut bien en avoir conscience.

Alors que dans un systĂšme qui rĂ©duit les possibilitĂ©s d’écritures Ă  des membres identifiĂ©s, avec un algorithme s’assurant d’une certaine rotation, lĂ  ça pose beaucoup plus de difficultĂ©s.

A mon humble avis.

1 Like

Je ne parle pas d’un dĂ©ni de service, qui lui reste effectivement tout Ă  fait limitĂ© (et peu d’intĂ©rĂȘt a mon sens, sauf peut ĂȘtre pour les banques en place) mais je parle plus dans le cas d’une place de marchĂ© qui Ă©change la monnaie libre contre d’autres monnaies. OĂč le but de l’attaquant est de supprimer de la blockchain le transfert de monnaie envoyĂ© Ă  la place de marchĂ© qu’il a effectuĂ© prĂ©cĂ©demment. (possibilitĂ© de dĂ©pensĂ© plusieurs fois la monnaie de l’attaquant)

un ti exemple ici:
http://www.gldcoin.com/documents/GoldCoin_0.7_51percent_defense_october_11_2013.pdf

Ah oui, mais non, pour plusieurs raisons :

  • dĂ©jĂ  le principe des crypto-monnaies des 6 blocs d’assurance du transfert : on considĂšre un bloc comme entĂ©rinĂ© Ă  partir de 6 autres blocs au-dessus. Si dans Duniter c’est plus, hĂ© bien il suffira de dire que c’est plutĂŽt 8, 15 ou 30. C’est moins bon que dans Bitcoin, mais ce n’est pas le plus important.
  • dans Duniter, pour que le rĂ©seau suive un fork, il faut 6 blocs au-dessus de la branche actuelle, donc lĂ  il faudrait au minimum 12 blocs consĂ©cutifs Ă  l’attaquant pour annuler la transaction (en rĂ©alitĂ©, il y a aussi une contrainte de 30 minutes d’avance, mais l’attaquant peut donner une accĂ©lĂ©ration momentanĂ©e pour y palier). [1]

[1] A noter qu’aujourd’hui ce “6 blocs + 30 minutes d’avance” est une valeur en dur, totalement arbitraire et qui n’a rien Ă  voir avec le protocole. On pourrait tout Ă  fait la changer pour dire “suis la branche qui a plus de [1/3 x nombre de calculateurs] de blocs supplĂ©mentaires”. Le suivi d’un fork est alors conditionnĂ© Ă  ce que cette branche soit rĂ©ellement suivie par plus d’un tiers des calculateurs.

Pour supprimer une transaction de la blockchain aujourd’hui il faut 6 bloc (+30 min) pour qu’elle soit acceptĂ©e par le rĂ©seau.
Les blocs supplĂ©mentaires ne sont que la contrainte que le vendeur impose. Donc oui ça peut ĂȘtre 6 blocs de plus ou 8, 15 ou 30 mais c’est un choix du vendeur, je doute que la boulangerie du coin me demande d’attendre 30bloc avant de partir avec ma baguette ^^.

oui, c’est peu ĂȘtre dans ce sens qu’il faut rĂ©flĂ©chir,
mais si on cherche à avoir [1/3 x nombre de calculateurs] de blocs supplémentaires
les fork risques de durée vraiment longtemps du coup


Je ne suis pas lĂ  pour critiquer, mais juste que l’on rĂ©flĂ©chies ensemble au risque potentiel et les moyens d’y remĂ©dier (si risque il y a). Car c’est la premiĂšre fois qu’une POW personnalisĂ©e est mise en place, il faut faire attention.

Pas plus qu’il ne veut bien attendre 6 blocs Bitcoin non plus :slight_smile:

Les places de change, tout comme le boulanger, peuvent utiliser d’autres mĂ©canismes pour rĂ©aliser des opĂ©rations rapides. La blockchain n’est que l’endroit oĂč l’on consigne finalement les opĂ©rations rĂ©sultantes, un peu comme les banques ne rĂ©alisent pas systĂ©matiquement des transferts de monnaie interbancaires, mais plutĂŽt le rĂ©sultat de fin de journĂ©e.

Ça dĂ©pend du niveau de fork et de sa nature (en 0.4 j’entends).

Imaginons 100 calculateurs : si 2 d’entre eux forkent, pour les 98 autres c’est comme si rien ne s’était passĂ©. Si 20 forkent, cela devient plus long. Mais on peut imaginer d’autres cas extrĂȘmes :

  • 33% forkent, mais ces 33% sont aussi le 1/3 exclu de la preuve de travail, ils sont alors bloquĂ©s, et finiront par rejoindre les 2/3 non exclus.
  • 50% forkent, dont le 1/3 exclu. Il reste alors 17% des nƓuds capable de calculer la suite, face au 50% de nƓuds n’ayant pas forkĂ©.
  • 66% forkent, dont le 1/3 exclu. Il reste alors 33% de nƓuds sur la branche “principale” face au fork. C’est du 33% face Ă  du 33%, c’est le pire des cas.

Alors c’est vrai, il est possible d’attaquer la blockchain, ce d’autant plus que le nombre d’attaquants est proche ou supĂ©rieur Ă  1/3 des calculateurs.

Donc parmi les solutions possible Ă  ce problĂšme en 0.4 : augmenter le nombre de nƓuds pacifiques, de façon Ă  Ă©loigner le plus possible l’attaquant d’une prise de contrĂŽle par 1/3 bloquant.

Je n’en doute pas :slight_smile: au contraire j’apprĂ©cie de ne pas ĂȘtre le seul Ă  me pencher sur ce problĂšme, j’ai aussi besoin d’aide pour orienter le projet vers ce qui nous conviendra le mieux.

Juste pour confirmer si j’ai bien compris ce que tu proposes,
imaginons qu’il y a 5000 noeuds qui calcule les blocs (comme actuellement pour le bitcoin, mĂȘme si ce n’est pas demain que l’on aura autant de noeuds)
imaginons qu’il n’y a que 1 seul noeud qui fork
celui-ci devra attendre 1667 blocs (5000/3) avant de rejoindre la branche principale?

Si l’on ne met pas d’autre condition, oui.

1667 blocs * 5 minutes par bloc = 8335 / (60 * 24) = 5,78 jours

Un nƓud qui forke tout seul, ou mĂȘme un gros groupe aurait besoin de 5-6 jours pour rĂ©sorber le fork. Pour une monnaie importante (5000 nƓuds), cela ne me choque pas, l’inertie est grande.

AprĂšs, il est toujours possible d’intĂ©grer d’autres conditions :

  • dĂ©jĂ  en ajoutant des capteurs “je suis bloquĂ©â€ et “les autres avancent”
  • en choisissant tel fork plutĂŽt que tel autre, par exemple en sĂ©lectionnant celui qui a le moins d’émetteurs (pour contrer une attaque de nouveaux calculateurs)
  • 


Mais ce qui est bien, c’est qu’on n’a pas besoin de changer le protocole pour ça.

Oui cela fait 5-6 jours dans le cas oĂč il n’y a qu’un nƓud qui fork, mais si c’est un gros split, la complexitĂ© moyenne de la blockchain va faire ralentir chacune des branches

AprÚs je ne sais pas sur combien de blocs précédant tu te bases pour faire la moyenne de la complexité.
Mais à premiÚre vu je trouve ça super long pour trouver un consensus.

Et du coup les commerçants ne devraient-ils pas attendre cette mĂȘme rĂšgle avant de valider une transaction? Afin d’ĂȘtre sĂ»r que la branche oĂč a Ă©tĂ© Ă©crite la transaction soit validĂ©e par consensus?

Pour l’instant en tout cas, on reste sur la formule “6 blocs + 30 minutes d’avance”. C’est un problĂšme qu’on pourra rĂ©soudre plus tard, hors protocole, on a le temps d’y repenser.

J’ai dĂ©jĂ  rĂ©pondu :

Par exemple, tu peux avoir un compte dans une banque en monnaie libre qui peut servir pour les paiements instantanĂ©s, ou encore en utilisant une version papier de la monnaie. Il y a plein de façons de faire, et la blockchain n’a non seulement pas Ă  rĂ©pondre Ă  toutes ces problĂ©matiques, mais en plus n’est pas la meilleure pour toutes les situations.

Cela viendra au fur et Ă  mesure. En attendant, tu peux demander Ă  ton boulanger de te faire une ardoise ! :slight_smile: