Could you please elaborate on the functionality of ENS? I'm particularly interested in understanding how it operates and what are its core features. Could you break down the process of how a user interacts with ENS and how it translates human-readable names into machine-readable addresses? Additionally, I'm curious to know about its integration with various wallets and dapps, as well as its role in the blockchain ecosystem. Could you also mention any potential challenges or limitations that ENS might face? Thank you for your time and assistance.