# Tortoise - prevent voting on future blocks
## Background
Part of the PoET ticks spec is to prevent ballots from affecting the consensus wrt blocks that are "in their future" (meaning that the block has a greater tick height than the ballot's ATX). This doc describes how to do that.
## General Approach
All nodes should have an opinion about every block, regardless of its height.
### Median Height
Nodes should use the median ATX base height to decide which blocks should be applied.
Smeshers should compare their ATX base height with the median. If there are blocks whose height falls between the median and their own height, the verifying tortoise cannot be used and they must **fall back to the Full Tortoise**.
## Full Tortoise
In the Full Tortoise each ballot is assigned a weight and that weight is applied to each individual past block separately. The weight of ballots that specify a beacon value that differs from what the local node considers correct is withheld for a certain number of layers, and only then applied.
When a ballot votes for / against a block with a greater tick height, its weight should not be applied. This is equivalent to saying that the ballot's voting weight for that block is zero.
## Verifying Tortoise
In the Verifying Tortoise each ballot is compared to the local opinion to determine if it's "good". The weight from "good" ballots is aggregated and applied together to historical blocks to determine if the "good" votes have enough weight (compared to the uncounted weight) or not. If a decision about a layer can't be reached using this method for a certain number of layers, the node falls back to the Full Tortoise.
When evaluating if ballots are "good" we will also consider their tick height. The threshold to be considered valid is that the same set of blocks are "votable" by that ballot and the median ballot height (which should be in the same range as the local smesher's height - or we'd need to fall back to the Full Tortoise).
We determine the range of "good" heights by using the greatest height of all "votable" blocks as a minimum, and the least height of all "non votable" blocks as the maximum.