According to the Wikipedia and Philippe Oechslin's Making a Faster Cryptanalytic Time-Memory Trade-Off (pdf), both starting points and endpoints are keys. Here is an example from Wikipedia:
As you can see, key kiebgt
is the endpoint of this chain.
However, according to this site, it is hash values, rather than keys, that are stored in a rainbow table. That is to say, in the example above, hash value 920ECF10
should be shored as an endpoint.
So which one is the correct approach? The second one seems better to me, because we can skip one calculation(the first step) of reduction function R when looking up.