I was looking through allot of the details with the hidden services. One answer was done very well and explained allot, which I have linked below. I wasn't sure on exactly how the intro can correlate a hidden service to their ip however. If the hidden service gives the public key then isn't it possible for the intro to also know the hidden service domain at some point and correlate the 2?
In other words:
1. hidden service gives public key to intro.
2. intro saves public key as variable name for the ip.
3. months later the intro comes across a blank.onion which they get a public key from.
4. they correlate that with the public keys they have and suddenly have the ip of blank.onion