Perché la rete ha ignorato il mio blocco cotto?
-
-
Anche ame interessa,perché avevogli stessi casi!I am interested as well, because I had the same case ones!
- 0
- 2019-02-07
- jdsika
-
3 risposta
- voti
-
- 2019-02-07
Ecco comefunziona:giustopermantenere le cose semplici,diciamo che la catena (tuttii blocchiinclusifino ad ora) ha unaformafisica di 100. In altreparole,100 approvazionitotali sono stateincluse sututtii blocchi catena. Iltuopanettiere ora hai diritti dipriorità 0per cuocereilblocco successivo (bloccon. 5)e hai 30 approvazionineltuomempoolperilbloccoprecedente (bloccon. 4).
Procedie inforna unblocco all'altezza 5 che ha unaformafisicatotale di 130 (iltotale dellaformafisicaprecedente +tutte lenuove conferme che sei riuscito aincludere).
Ilbaker conpriorità 1 ha 32 approvazioniperilbloccoprecedentenelpropriomempool,forseperché ha unamigliore connettivitàtrapari,oforse ha appreso di 2 approvazioniin più dite.
Ilpanettiere conpriorità 1 vede arrivareiltuobloccoe nota che ha 130fitness. A T + 15 secondi (iltempoin cui hai sfornatoiltuoblocco conpriorità 0 + 15 secondi),ilpanettiere conpriorità 1 si rende conto chepuò costruire unblocco che ha 132fitnessincludendo le 2 conferme chenon haifatto,quindi vanno avantiiniettareilblocco.
Il resto della rete vede cheilblocco conpriorità 1 haidoneità 132e ilblocco conpriorità 0 ha soloidoneità 130,quindi la rete cambia ramoper rendereilblocco conpriorità 1ilnuovo capo della catena.
Quindi,per riassumere,ci sono unpaio diidee sbagliate comuni qui:
- Sei fornai appoggianoiltuoblocco determina se viene accettato omeno. Le confermenon arrivanomaifino a quandoilblocconon è stato completatoe aumentano solo l'idoneità della catena a cui hai aggiuntoilblocco,nonilblocco stesso.
- Unpanettiere conpriorità 1 deve attendere altri 30 secondiprima dipoter cuocere unblocco che diventailnuovo capo della catena. Devono davvero aspettare solo 15 secondiprima dipoteriniettare unblocco che ha unaformafisicamaggiore dellatua.
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 shell attualmente ignora unanuovatesta se èmeno adatto dell'ipoteticatesta successiva - sfornata contutte le confermenelmempool.Questaipoteticaformafisica successiva è chiamata
context_fitness
nel codicepresente.Ciò significa che seiltuoblocco cottoincludemeno approvazioni di quantene vedonogliendorsernel loromempool,ignorerannoiltuobloccoe attenderannoilblocco conpriorità 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.
-
Qual èil ragionamento allabase di questa logica?Ilmiobloccoperfettamente cotto vieneignorato a causa di cosapotrebbe accadereperilblocco successivo?Cosa sipuòfareperprevenire/superare questo?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
-
Non conoscoil ragionamento,scusa.È statointrodottoin questo commitnellamainnet https://gitlab.com/tezos/tezos/commit/613e14a297e2f75ef8a6715c22cd86b7f296b5de.Mi chiedo semitiga alcunipotenziali disturbi che unfornaiomaliziosopotrebbeprovare,manon lo so ...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
Moltoprobabilmente scarsa connessione coni colleghi,o almeno quelli che contavanoin quelmomento (i sostenitori deltuobloccoe ilpanettiere delprossimo).
Gliendorser sosterrannoilblocco con laformafisicapiù alta,manonpossono raddoppiare l'approvazione.Ciò significa che se hanno vistoiltuobloccoe l'hanno approvato,nonpossono cambiareidea quando è arrivatoilbloccop1 (anche se aveva un livello diformafisicapiù alto).
Neltuo caso,gliendorsernon hannomai ricevutoiltuoblocco abbastanza velocemente consentendoilpotenziale di approvareilbloccop1.Quelbloccop1 aveva unaformafisicapiù alta,quindii sostenitori hanno approvato quelblocco.
Perchégliendorser dovrebbero scegliere unblocco conprioritàpiù alta?Perché ha unamaggiorepossibilità diessereilblocco canonicoe gliendorser vengonopagati solo seilblocco l'endorse ha successo.
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.
-
Questo è leggermenteimpreciso.Gliendorsernon supportano unbloccoparticolare,ma una catena.Gliendorsemententranonelmempoole vengonoinclusinelblocco successivo,e ogniendorsementfondamentalmente aggiunge 1 all'idoneità di una data catena. Quindi,ilmotivoper cuiiltuoblocconon è stato selezionatonon è statoperchénon ha ottenutoilmaggiornumero di approvazioni,perché quelle si verificano almeno unminuto dopoe non vengonoinclusefino alblocco successivo.Ilmotivoper cuiiltuoblocconon è stato selezionatoeraperchéilpanettiere conpriorità 1 è statoin grado di costruire unblocco cheincludevapiù approvazioni dal loromempool.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
-
Non sono d'accordo: ho visto dueblocchi a un livello,priorità 0 con unaformafisica superiore allapriorità 1,mailblocco conpriorità 1 ha ancora successo.Diciamo cheil livello dibloccoin questione è x.Gliendorser chepossono approvareilblocco dipriorità 0 al livello x (che sonopoiinclusinel livello x + 1)possono approvarlonon appena lo vedono.Una volta approvati,nonpossono quindi approvare un altroblocco allo stesso livello x se ha unaprioritàpiù alta (in questo caso,ilblocco conpriorità 1)poiché sitratterebbe di una doppia approvazione.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
Avevo lo slot dipriorità di cottura 0. Ho cotto con successoilblocco. Hoinserito correttamenteilmioblocconella rete (comemostratonel registro deifornai di seguito). Tuttavia,per qualchemotivo,ilpanettiere conpriorità 1 haeffettivamente cottoilbloccoe ha ricevuto deipremi. Perché?
Comprendo cheilmioblocco ha un'idoneitàinferiore alblocco conpriorità 1,ma voglio comunque sapere come si è verificato. Ho capito che lapriorità 1nonpuònemmeno "tentare" diiniettareil suobloccofino a DOPO chei miei 60 anni sono scaduti. Non è così chefunzionailprotocollo? Lapriorità 0/1/2/3/N vieneiniettata contemporaneamentee spetta agliendorser assicurarsi di approvareprimailblocco conpriorità 0?
Sembra che sia quello che è successonelmio caso. I logmostrano chiaramente che avevopriorità 0,maper qualsiasimotivo,gliendorser hanno deciso di approvareilblocco dipriorità 1,nonilmio. La domanda a cui vorrei che uno sviluppatore diprotocolli rispondesse è "perché"? Sein effetti hoinseritoilmioblocco dipriorità 0entroiltempo specificato,perchégliendorser hanno scelto lapriorità 1?