在 solidity 中,函数签名是否考虑了数据位置?

In solidity, do function signatures take data location into account?

例如:如果我的 solidity 函数是:

function someFunction(uint256 a, bytes calldata _data) external { 
//some stuff 
}

函数签名是 someFunction(uint256,bytes) 散列的前四个字节还是 someFunction(uint256,bytes calldata) 散列的前四个字节?甚至 someFunction(uint256,bytescalldata)(字节和调用数据之间没有 space)

不,不考虑数据位置。来自https://solidity.readthedocs.io/en/v0.5.11/abi-spec.html#function-selector(我强调):

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. The signature is defined as the canonical expression of the basic prototype without data location specifier, i.e. the function name with the parenthesised list of parameter types. Parameter types are split by a single comma - no spaces are used.