I understand what a function selector is and how it is computed:

The first four bytes of the call data for a function call specifies the function to be called. It is the first (left, high-order in big-endian) four bytes of the Keccak-256 (SHA-3) hash of the signature of the function.

However, I fail to see why knowing the selector is important as far as calling the function is concerned. For a loadable dynamic library (.so on Linux, .dll on Windows), a list of callable symbols are imported which serves as the entry points to external clients. Isn't there anything like that in EVM bytecode? If not, how does the EVM locate the method given the function selector? Don't the functions exist as separate entities in the compiled bytecode?

marked as duplicate by eth Oct 14 at 10:43

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

  • Welcome to the Ethereum Stack Exchange! Functions do not exist as separate entities in the compiled EVM bytecode. This may be a duplicate of some other ABI related questions, please check them out, and if not duplicate, feel free to reopen or edit. Thanks – eth Oct 14 at 10:43