¿Por qué la red ignoró mi bloqueo horneado?
-
-
¡Yotambiénestoyinteresado,porquetuve losmismos casos!I am interested as well, because I had the same case ones!
- 0
- 2019-02-07
- jdsika
-
3 respuestas
- votos
-
- 2019-02-07
Asíes comofunciona:para simplificar las cosas,digamos que la cadena (todos losbloquesincluidos hasta ahora)tiene una aptitud de 100. En otraspalabras,seincluyeron 100 respaldostotalesen todos losbloques de la cadena. Tupanadero ahoratiene derechos deprioridad 0para hornearel siguientebloque (bloque # 5),ytienes 30 respaldosen tumempoolparaelbloque anterior (bloque # 4).
Continúa y hornea unbloque a la altura 5 quetiene unestadofísicototal de 130 (eltotal delestadofísico anterior +todos los respaldosnuevos quepudisteincluir).
Elpanadero deprioridad 1tiene 32 respaldosparaelbloque anterioren sumempool,tal vezporquetienen unamejor conectividadentrepares,otal vez seenteró de 2 respaldosmás quetú.
Elpanadero deprioridad 1 ve llegartubloque y se da cuenta de quetiene 130fitness. En T + 15 segundos (elmomentoen que horneó subloque deprioridad 0 + 15 segundos),elpanadero deprioridad 1 se da cuenta de quepuede construir unbloque quetenga 132 aptitud alincluir los 2 respaldos queno hizo,por lo que sigue adelante yinyectarelbloque.
El resto de la red ve queelbloque deprioridad 1tiene una aptitud de 132,y subloque deprioridad 0 solotiene la aptitud de 130,por lo que la red cambia de ramapara hacer queelbloque deprioridad 1 seaelnuevojefe de la cadena.
Entonces,para resumir,hay unpar de conceptoserróneos comunes aquí:
- El hecho de que lospanaderos respalden subloque determina si se acepta ono. Losendososnunca llegan hasta después de que se hornea subloque,y solo aumentan la aptitud de la cadena a la que agregó subloque,noelbloqueen sí.
- Unpanadero deprioridad 1tiene queesperar 30 segundos adicionales antes depoder hornear unbloque que se convierteen elnuevojefe de la cadena. Realmente solonecesitanesperar 15 segundos antes depoderinyectar unbloque quetenga una aptitudmás alta que la suya.
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
El shell actualmente ignora unnuevoencabezado siestámenosen forma que lapróxima cabeza hipotética - horneada contodos losendososen elmempool.Esta siguiente aptitud hipotética se llama
context_fitness
en el código.Esto significa que si subloque horneadoincluyemenos respaldos de los que lospatrocinadores venen sumempool,ignorarán subloqueo yesperaránelbloque deprioridad 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.
-
¿Cuálesel razonamiento detrás deesta lógica?Mibloqueperfectamente horneado seignora debido a lo quepodría sucederen el siguientebloque.¿Qué sepuede hacerparapreveniresto/superarlo?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
-
No conozcoel razonamiento,lo siento.Seintrodujoen este compromisoen mainnet https://gitlab.com/tezos/tezos/commit/613e14a297e2f75ef8a6715c22cd86b7f296b5de.Mepregunto simitiga algunos disturbiospotenciales que unpanaderomaliciosopodríaintentar,perono lo sé ...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
Lomásprobablees que haya unamala conexión con sus compañeros,o almenos con los queimportabanen esemomento (lospatrocinadores de subloque yelpanadero del siguiente).
Lospatrocinadores respaldaránelbloque conmayor aptitud,peronopueden respaldarpor duplicado.Eso significa que si vieron subloqueo y lo aprobaron,nopueden cambiar de opinión cuando aparecióelbloqueop1 (incluso sitenía unnivel de aptitudmás alto).
En su caso,lospatrocinadoresnunca recibieron subloqueo lo suficientemente rápido,lo quepermite laposibilidad de respaldarelbloqueop1.Esebloquep1tenía unamayor aptitud,por lo que lospatrocinadores respaldaronesebloque.
¿Por qué lospatrocinadores optaríanpor unbloque demayorprioridad?Porquetiene unamayorprobabilidad de serelbloque canónico,y lospatrocinadores solo cobran sielbloqueotiene éxito.
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.
-
Estoes unpocoinexacto.Lospatrocinadoresno respaldan unbloqueen particular,respaldan una cadena.Losendososentranen elmempool y seincluyenen el siguientebloque,y cada respaldobásicamente agrega 1 a la aptitud de una cadena determinada. Por lotanto,la razónpor la que subloquenofue seleccionadonofueporqueno recibiótantos respaldos,porqueesos suceden almenos unminuto después yno seincluyen hastael siguientebloque.La razónpor la que subloquenofue seleccionadofueporqueelpanadero deprioridad 1pudo construir unbloque queincluíamás respaldos de sumempool.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
-
Noestoy de acuerdo: he visto dosbloquesen unnivel,laprioridad 0tiene una aptitudmás alta que laprioridad 1,peroelbloque deprioridad 1 sigueteniendo éxito.Digamos queelnivel debloqueen cuestiónes x.Losendosantes quepueden respaldarelbloque deprioridad 0en elnivel x (que luego seincluyenen elnivel x + 1)pueden respaldarlotanpronto como lo vean.Una vez respaldado,nopuede respaldar otrobloque delmismonivel x sitiene unaprioridadmás alta (eneste caso,elbloque deprioridad 1),ya queesto sería un respaldo doble.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
Tenía la ranura deprioridad de horneado 0. Horneé con éxitoelbloque. Inyecté con éxitomi bloque a la red (como semuestraen el registro depanaderos a continuación). Sinembargo,por alguna razón,elpanadero conprioridad 1 realmente horneóelbloque y recibió recompensas. ¿Por qué?
Entiendo quemi bloqueotiene una aptitudmenor queelbloque deprioridad 1,pero aún quiero saber cómo ocurrió. Teníaentendido que laprioridad 1ni siquierapuede "intentar"inyectar subloqueo hasta DESPUÉS de quemis 60 años hayanexpirado. ¿Noes así comofuncionaelprotocolo? ¿Laprioridad 0/1/2/3/N seinyectatodo almismotiempo y depende de lospatrocinadores asegurarse de que respaldenelbloque deprioridad 0primero?
Parece queesoes lo quepasóen mi caso. Los registrosmuestran claramente queteníaprioridad 0,peropor alguna razón,lospatrocinadores decidieron respaldarelbloque deprioridad 1,noelmío. Lapregunta queme gustaría que respondiera un desarrollador deprotocoloses "¿por qué"? Si de hechoinyectémi bloque deprioridad 0 dentro deltiempoespecificado,¿por qué lospatrocinadoreseligieron laprioridad 1?