Pourquoi le réseau a-t-il ignoré mon bloc de cuit?
-
-
Je suis aussiintéressé,carj'avais lemême cas!I am interested as well, because I had the same case ones!
- 0
- 2019-02-07
- jdsika
-
3 réponses
- votes
-
- 2019-02-07
Voici comment celafonctionne: Justepourgarder les choses simples,disons que la chaîne (tous lesblocsinclusesjusqu'àprésent) a uneformephysique de 100. En d'autrestermes,100endossementstotaux ont étéinclus surtous lesblocs de la chaîne. Votreboulanger amaintenant lapriorité 0 droits de cuisson dubloc suivant (blocn ° 5)et vous avez 30 recommandations de votremémoirepour leblocprécédent (blocn ° 4).
Vous allez de l'avantet faites cuire unbloc à la hauteur 5 qui a uneformephysiquetotale de 130 (letotal de la conditionphysiqueprécédente +tous lesnouveaux appels que vous avezpuinclure).
Lapriorité 1 Baker a 32 recommandationspour leblocprécédent dans leurmémoire MEMPOOL,peut-êtreparce qu'elles ont unemeilleure connectivité despairs,oupeut-être apprises de 2 autres recommandations que vous lefaites.
Lapriorité 1 Baker voit votrebloc arriveet lesnotifications qu'il a 130fitness. À T + 15 secondes (letemps que vous avez cuit votrepriorité 0block + 15 secondes),lapriorité 1 Baker se rend compte qu'ilpeut construire unbloc qui a 132 conditionnementphysiqueen incluant les 2 recommandations que vousn'avezpas,alorselles vont donc de l'avantet injecter lebloc.
Le reste du réseau voit que lebloc depriorité 1 a laformephysique de 132,et votrebloc depriorité 0n'a que Fitness 130,de sorte que le réseau change debranchepour rendre lapriorité 1bloquer lanouvelletête de la chaîne.
Donc,pour résumer,il y a quelquesidéesfausses courantesici:
- Si lesboulangers approuvent votrebloc détermine s'ilest accepté ounon. Les recommandationsn'arriventjamais qu'après la cuve de votrebloc,et n'augmentez que laformephysique de la chaîne que vous avez ajoutée votrebloc,et non lebloc lui-même.
- Unepriorité 1 Baker doit attendre 30 secondes supplémentaires avant depouvoir cuire unbloc qui devient lanouvelletête de la chaîne. Ils ont vraimentbesoin d'attendre 15 secondes avant depouvoirinjecter unbloc qui a unefitnessplus élevée que la vôtre.
Here is how it works: Just to keep things simple, let's say that the chain (all the blocks included up to now) has a fitness of 100. In other words, 100 total endorsements were included on all the blocks in the chain. Your baker now has priority 0 rights to bake the next block (block #5), and you have 30 endorsements in your mempool for the previous block (block #4).
You go ahead and bake a block at height 5 which has a total fitness of 130 (the total of previous fitness + all new endorsements you were able to include).
The priority 1 baker has 32 endorsements for the previous block in their mempool, maybe because they have better peer connectivity, or perhaps learned of 2 more endorsements than you did.
The priority 1 baker sees your block arrive and notices it has 130 fitness. At T+15 seconds (the time you baked your priority 0 block + 15 seconds), the priority 1 baker realizes that it can construct a block that has 132 fitness by including the 2 endorsements that you didn't, so they go ahead and inject the block.
The rest of the network sees that the priority 1 block has fitness of 132, and your priority 0 block only has fitness 130, so the network changes branch to make the priority 1 block the new head of the chain.
So, to summarize, there are a couple common misconceptions here:
- Whether bakers endorse your block determines whether it gets accepted or not. Endorsements never arrive until after your block is baked, and only increase the fitness of the chain you added your block to, not the block itself.
- A priority 1 baker has to wait an additional 30 seconds before they can bake a block that becomes the new head of the chain. They really only need to wait 15 seconds before they can inject a block that has a higher fitness than yours.
-
- 2019-02-07
La coque Actuellement ignore unenouvelletête S'ilestmoins adapté à latête suivante hypothétique - cuit aufour avectoutes les recommandations de lamémoire commémorative.Cetteprochaine conditionphysique hypothétique s'appelle
context_fitness
dans le code là-bas.Cela signifie que si votrebloc cuit aufour comprendmoins de recommandations que lesendosseurs voient dans leurmémoire MEMPOOL,ilsignoreront votreblocet attendront lebloc depriorité 1.
The shell currently ignores a new head if it is less fit than the hypothetical next head -- baked with all the endorsements in the mempool. This hypothetical next fitness is called
context_fitness
in the code there.This means that if your baked block includes fewer endorsements than endorsers see in their mempool, they will ignore your block and wait for the priority 1 block.
-
Quelest le raisonnement derrière cette logique?Monblocparfaitementfine-cuitestignoré à cause de ce quipourrait arriverpour leprochainbloc?Quepeut-onfairepour éviter cela/surmonter cela?What is the reasoning behind this logic? My perfectly-fine-baked block is ignored because of what might happen for the next block? What can be done to prevent this/overcome this?
- 0
- 2019-02-09
- utdrmac
-
Jene connaispas le raisonnement,désolé.Il a étéintroduit dans cette validation dans Mainnet HTTPS://gitlab.com/TEZOS/TEZOS/COMMIT/613E14A297E2F75EF8A6715C22CD86B7F296B5DE.Jeme demande s'il atténue desperturbationspotentielles,unboulangermalveillantpourraitessayer,maisje ne saispas ...I don't know the reasoning, sorry. It was introduced in this commit in mainnet https://gitlab.com/tezos/tezos/commit/613e14a297e2f75ef8a6715c22cd86b7f296b5de . I wonder if it mitigates some potential disturbances a malicious baker could try, but I don't know...
- 1
- 2019-02-10
- Tom
-
- 2019-02-07
Connexion laplusprobablemédiocre auxpairs,ou aumoins ceux quiimportaient aumoment dutemps (lesendosseurs de votreblocet Baker de la suivante).
Lesendosseurs approuveront lebloc avec laformephysique supérieure,maisilsne peuventpas doubler l'endossement.Cela signifie s'ils voyaient votreblocet l'ont approuvé,ilsne peuventpas changer leuresprit lorsque lebloc P1est venu (même s'il avait unniveau defitnessplus élevé).
Dans votre cas,lesendosseursn'ontjamais reçu votrebloc assez rapidepermettant lepotentiel de l'endossement dubloc P1.Que lebloc P1 avait uneformephysiqueplus élevée,lesendosseurs ont donc approuvé cebloc.
Pourquoi lesendosseurs seront-ils accompagnés d'unbloc deprioritéplus élevé?Parce qu'il a uneplusgrande chance d'être lebloc canoniqueet que lesendosseursne sontpayés que si lebloc L'endordeur réussit.
Most likely poor connection to peers, or at least the ones that mattered at the point in time (the endorsers for your block, and baker of the next).
Endorsers will endorse the block with the higher fitness, but they can't double endorse. That means if they saw your block and endorsed it, they can't change their mind when the p1 block came along (even if it had a higher fitness level).
In your case, the endorsers never received your block fast enough allowing the potential of endorsing the p1 block. That p1 block had a higher fitness, so the endorsers endorsed that block.
Why would endorsers go with a higher priority block? Because it has a higher chance of being the canonical block, and endorsers only get paid if the block the endorse succeeds.
-
Ceciest légèrementinexact.Lesendosseursn'approuventpas unblocparticulier,ils souscrivent une chaîne.Les recommandationsentrent dans lamémoire MEMPOOLet sontincluses sur lebloc suivantet chaqueendossement ajouteessentiellement 1 à laformephysique d'une chaîne donnée. Donc,la raisonpour laquelle votreblocn'apas été sélectionnén'étaitpasparce qu'iln'apaseu autant de chansons,car ceux-ci seproduisent aumoins uneminuteplustardet ne sontpasinclus avant lebloc suivant.La raisonpour laquelle votreblocn'apas été sélectionné étaitparce que lapriorité 1 Baker a été capable de construire unbloc quiincluaitplus de recommandations de leurmémoire MemPool.This is slightly inaccurate. Endorsers don't endorse a particular block, they endorse a chain. Endorsements go into the mempool and get included on the next block, and each endorsement basically adds 1 to the fitness of a given chain. So, the reason your block wasn't selected wasn't because it didn't get as many endorsements, because those happen at least a minute later and don't get included until the following block. The reason your block wasn't selected was because the priority 1 baker was able to construct a block that included more endorsements from their mempool.
- 0
- 2019-02-07
- Luke Youngblood
-
Jene suispas d'accord - J'ai vu deuxblocs à unniveau,lapriorité 0 ayant uneformephysiqueplus élevée que lapriorité 1,mais lebloc depriorité 1 réussittoujours.Disons que leniveau deblocen questionest x.Lesendosseurs quipeuventendosser lebloc depriorité 0 auniveau x (qui sontensuiteinclus dans leniveau X + 1)peuvent l'endormir dès qu'ils le voient.Unefois approuvé,ilsne peuventpasensuite souscrire un autrebloc aumêmeniveau X s'il a uneprioritéplus élevée (dans ce cas,lebloc depriorité 1) car ce serait une double approbation.I disagree - I've seen two blocks at one level, priority 0 having a higher fitness than priority 1, but the priority 1 block still succeeding. Lets say the block level in question is x. The endorsers who can endorse the priority 0 block at level x (which are then included in level x + 1) can endorse it as soon as they see it. Once endorsed, they can't then endorse another block at the same level x if it has a higher priority (in this case, the priority 1 block) as this would be a double endorsement.
- 0
- 2019-02-07
- Stephen Andrews
J'aieu lafente prioritaire de cuisson 0. J'ai cuit avec succès lebloc. J'ai réussi àinjectémonbloc au réseau (commeindiqué dans lejournal des Bakers ci-dessous). Pourtant,pour une raison quelconque,leboulanger à lapriorité 1 aeffectivement cuit leblocet a reçu des récompenses. Pourquoi?
Je comprends quemonbloc a uneformephysiqueplusfaible que lebloc depriorité 1,maisje veuxtoujours savoir comment cela s'estproduit. Je crois comprendre que lapriorité 1ne peutmêmepas "tenter" d'injecter sonbloc qu'après avoirexpirémes années 60. N'est-cepas lafaçon dont leprotocolefonctionne? Lapriorité 0/1/2/3/3/Ninjectez-la simultanémentet il appartient auxendosseurs de vous assurer qu'ilsendossez lapriorité 0bloc de lapriorité?
Il semble que c'est ce qui s'estpassé dansmon cas. Lesjournauxmontrent clairement quej'avais lapriorité 0,maispour une raison quelconque,lesendosseurs ont décidé d'approuver lebloc de lapriorité 1,pas de lamienne. La question quej'aimerais qu'unprotocole devait répondreest "pourquoi"? Sij'aifaiten faitinjectermonbloc depriorité 0 dans l'heure spécifiée,pourquoi lesendosseurs ont-ils choisi lapriorité 1?