GRANDPA operates independently of [[BABE Block Production]], providing deterministic finality through a voting process on chains rather than individual blocks. Validators participate in two rounds of voting: **Pre-vote Round:** Validators broadcast pre-votes for the highest block they consider valid: Prevote_i = Sign_{sk_i}(GRANDPA_PREVOTE, BlockHash, RoundNumber) The pre-vote includes the block hash and round number, signed with the validator's private key. Signature verification takes approximately 500 microseconds using SR25519 signatures [110]. **Pre-commit Round:** After collecting pre-votes, validators determine the highest block with 2/3 pre-vote support and broadcast pre-commits: Precommit_i = Sign_{sk_i}(GRANDPA_PRECOMMIT, BlockHash, RoundNumber) When 2/3 of validators pre-commit to a block, it becomes finalized, along with all its ancestors. The protocol tolerates up to f < n/3 Byzantine validators, where n is the total number of validators. BABE continues producing blocks even during network partitions, while GRANDPA ensures finality only when 2/3 of validators can communicate. Network latency is modeled as: Finality_Latency = Voting_Rounds × (Network_Delay + Processing_Time) With typical network delays of 100-200ms and processing time of 2ms, finality is achieved in 1-2 seconds under normal conditions. See also: [[Timeouts and Fault Tolerance]]