В целом, подписи функций учитывают расположение данных? - PullRequest
0 голосов
/ 03 октября 2019

ex: если моя функция в солидности:

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

, будет ли сигнатура функции первыми четырьмя байтами хеша: someFunction(uint256,bytes) или это будут первые четыре байта хеша: someFunction(uint256,bytes calldata)? или даже someFunction(uint256,bytescalldata) (без пробелов между байтами и calldata)

1 Ответ

1 голос
/ 03 октября 2019

Нет, данные о местоположении не учитываются. С https://solidity.readthedocs.io/en/v0.5.11/abi-spec.html#function-selector (мой акцент):

Первые четыре байта данных вызова для вызова функции определяют вызываемую функцию. Это первые (слева, старшие в старшем порядке) четыре байта хеша Keccak-256 (SHA-3) сигнатуры функции. Сигнатура определяется как каноническое выражение базового прототипа без спецификатора расположения данных , то есть имя функции со списком типов параметров в скобках. Типы параметров разделяются одной запятой - пробелы не используются.

...