Por que a rede ignorou meu bloco assado?
-
-
Eutambémestouinteressado,porquetive omesmo caso!I am interested as well, because I had the same case ones!
- 0
- 2019-02-07
- jdsika
-
3 respostas
- votos
-
- 2019-02-07
Aquiestá comofunciona: Apenasparamanter as coisas simples,digamos que a cadeia (todos osblocosincluídos até agora)tem uma aptidão de 100. Em outraspalavras,100endossostotaisforamincluídosem todos osblocosno corrente. Seu Baker agoratem direitos deprioridade 0para assar opróximobloco (bloco # 5),e vocêtem 30endossosem seumempoolpara obloco anterior (bloco # 4).
Você vaiem frentee asse umblocona altura 5,quetem uma aptidãototal de 130 (ototal de aptidão anterior +todos osnovosendossos que você conseguiuincluir).
Aprioridade 1 Bakertem 32endossospara obloco anteriorem seumempool,talvezporqueelestêmmelhor conectividade depares,outalvez aprendido demais 2endossos do que você.
Aprioridade 1 Baker vê seubloco chegae percebe quetem 130fitness. Em T + 15 segundos (otempo que você assou suaprioridade 0bloco + 15 segundos),o Priority 1 Bakerpercebe quepode construir umbloco quetenha 132 aptidão,incluindo os 2endossos que vocênãofez,entãoeles vêmem frentee injetar obloco.
O resto da rede vê que obloco deprioridade 1tem aptidão de 132,e seubloco deprioridade sótem fitness 130,para que a redemuda a ramificaçãoparafazer aprioridade 1bloquear anova cabeça da cadeia.
Então,para resumir,há algunsequívocos comuns aqui:
- se ospadeirosendossam seubloco determina seele é aceito ounão. Endossosnunca chegam até que seubloco seja assado,e só aumente a aptidão da cadeia que você adicionou seubloco,não oblocoem si.
- Umaprioridade 1 Bakertem queesperarmais 30 segundos antes depoder assar umbloco que setorna onovo chefe da cadeia. Eles realmenteprecisamesperar 15 segundos antes quepossaminjetar umbloco quetenha uma aptidãomais alta do que a sua.
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
Isso significa que se o seubloco assadoincluirmenosendossos do queendosseiros verem seumempool,elesignorarão seublocoe aguardarão oblocoprioritário de 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 é o raciocínioportrás dessa lógica?Meubloco depanificaçãoperfeitamentefino éignoradopor causa do quepode acontecerpara opróximobloco?O quepode serfeitoparaevitarisso/superarisso?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
-
Eunão sei o raciocínio,desculpe.Foiintroduzidoneste compromissono Mainnet https://gitlab.com/tezos/tezos/commit/61314a297E2F75EF8A6715C22CD86B7F296B5DE.Eume pergunto semitiga alguns distúrbiospotenciais umpadeiromaliciosopoderiatentar,maseunão sei ...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
Provavelmentepobre conexão a colegas,oupelomenos as queimportavamnopontonotempo (osendosseirospara o seubloco,e padeiro dopróximo).
Endossadoresendossarão obloco com a aptidãomais alta,maselesnãopodemendossar.Isso significa que,seeles vissem seublocoe endossassem,elesnãopodemmudar deidéia quando obloco P1 veio (mesmo quetivesse umnível de aptidãomaior).
No seu caso,osendossadoresnunca receberam seubloco rápido o suficientepermitindo opotencial deendossar obloco P1.Que obloco P1tinha uma aptidãomaior,então osendossadoresendossavamessebloco.
Por queendossadoresiriam com umbloco deprioridademais alto?Porquetem uma chancemaior de ser obloco canônico,e endossadores só sãopagos se oblocoendossadoforbem sucedido.
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.
-
Isso é ligeiramenteimpreciso.Endossadoresnãoendossam umblocoparticular,elesendossam uma corrente.Osendossosentramnomempoole sãoincluídosnopróximobloco,e cadaendossobasicamente adiciona 1 à aptidão de uma determinada cadeia. Então,a razãopela qual seubloconãofoi selecionadonãofoiporquenão recebiatantosendossos,porque aqueles que acontecempelomenos umminuto depoise não sãoincluídos até o seguintebloco.A razãopela qual seubloconãofoi selecionadofoiporque aprioridade 1padeiro conseguiu construir umbloco queincluíamaisendossos de seumempool.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
-
Eu discordo -eu vi doisblocosem umnível,prioridade 0tendo uma aptidãomais alta do que aprioridade 1,mas oblocoprioritário 1 aindaestábem sucedido.Vamos dizer que onível doblocoem questão é x.Os Endossadores quepodemendossar obloco deprioridade 0nonível X (que sãoincluídosnonível X + 1)podemendossá-lo assim que o virem.Uma vezendossado,elesnãopodemendossar outrobloconomesmonível X setiver umaprioridademais alta (neste caso,oblocoprioritário),poisisso seria umendosso duplo.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
Eutive o slot deprioridade de cozimento 0. Eu assino com sucesso obloco. Euinjetari com sucessomeublocopara a rede (comomostradono log depadeiras abaixo). Noentanto,por algummotivo,opadeironaprioridade 1 realmente assou oblocoe recebeu recompensas. Por quê?
Euentendo quemeublocotem aptidãomenor do que obloco deprioridade 1,mas ainda quer saber comoisso ocorreu. Foi omeuentendimento que aprioridade 1nãopodenem mesmo "tentar"parainjetar seubloco até quemeus 60 anosexpirassem. Issonão é amaneira como oprotocolofunciona? Fazerprioridade 0/1/2/3/n todosinjetar aomesmotempoe é até os Endosseirosparagarantir queelesendossem obloco deprioridade 0primeiro?
Parece que é o que aconteceunomeu caso. Ostroncosmostram claramente queeutinhaprioridade 0,maspor qualquermotivo,osendossadores decidiramendossar oblocoprioritário de 1,não omeu. A questão queeugostaria que umprotocolo devto responder é "por que"? Seeufizer,defato,injetarmeubloco deprioridade 0 dentro do horárioespecificado,por queendossantesescolheu aprioridade 1?