【问题标题】:In solidity, do function signatures take data location into account?在solidity中,函数签名是否考虑了数据位置?
【发布时间】:2019-10-03 00:48:47
【问题描述】:

例如:如果我在solidity中的功能是:

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

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

【问题讨论】:

    标签: solidity evm


    【解决方案1】:

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

    函数调用的调用数据的前四个字节指定要调用的函数。它是函数签名的 Keccak-256 (SHA-3) 散列的第一个(左,大端高位)四个字节。签名被定义为基本原型的规范表达式没有数据位置说明符,即带括号的参数类型列表的函数名称。参数类型由一个逗号分隔 - 不使用空格。

    【讨论】:

      猜你喜欢
      • 2017-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-05
      • 1970-01-01
      • 2021-05-06
      • 2018-05-19
      相关资源
      最近更新 更多