What exactly happens (low level) when pool that was supposed to be leader is offline

This is just hypothetical question for better understanding of how protocol works - suppose there is a network of 10 pools with 10 producing nodes. Pool A is supposed to be a leader at specific time / slot. It’s however offline. What happens next:

  • Is the block completely skipped? (nobody gets the reward, block is not minted, transactions are postponed to next slot leader / block - does this impact network performance? are transactions delayed?)
  • Is another node selected out of these 9 remaining pools to be a slot leader instead? Which one and based on what algorithm and how long does the selection takes and who performs it?
  • Something else?

Thanks

yes, the problem is that every block producing node is active if running… so all 10 nodes will produce the block which was scheduled for your “pool”.

that doesn’t exactly answer the question, I am talking about 10 hypothetical pools, each having only 1 producer node.

nobody knows this? I’d expect this to be a common question :slight_smile:

the block moves to another node, however i don’t know how the new node is selected

so nobody knows this? I am running a pool on testnet where about half (or more) of all pools, including heavily saturated ones, are offline or broken and I haven’t got a single block that wasn’t assigned to me via leader logs, so I am actually doubting that someone else gets the block of pool that is offline - it seems such block is just not minted and perhaps transactions postponed to later block? That would explain why testnet is slower than mainnet.

So I am running a testnet pool node that regularly mint blocks for quite a while - there are thousands of blocks missed on testnet every day due to about 50% of all testnet pools being defunct or offline and I haven’t mint a single extra block that wouldn’t be predicted by a leaderlog.

Therefore I consider this “if you miss a block someone else is going to get it” a misunderstood myth, that isn’t really happening. It seems that when your pool misses a block, nobody gets it instead of you, the block just isn’t produced and transactions in mempool are processed in next block.

Which IMHO has some negative effect on network performance (all transaction from missed blocks that have to wait to be processed as blocks are being skipped will take longer to process) - might explain why testnet transactions are randomly taking significantly longer than mainnet.

So that’s from my testnet observations, it’s unfortunate nobody proficient enough with the cardano algorithms, inner workings or codebase could join this thread and explain this in depth.

Did cardano_node_metrics_slotsMissedNum_int metric used to show number of missed blocks you are talking about?

I am not talking about MY missed blocks, I am talking about blocks missed by other pools in the network, that I “would take over” according to popular theory that when a pool misses a block, someone else takes that block (which I believe is a myth).

1 Like