猛戳订阅学习专栏🍁🍁 👉 solidity系列合约源码+解析 👈 🍁🍁
1 介绍
函数选择器:
solidity调用函数时,calldata的前4个字节为指定要调用的函数,这4个字节称为函数选择器。
以下面的代码为例。它通过地址addr的调用合约的transfer方法。
addr.call(abi.encodeWithSignature("transfer(address,uint256)", 0xtoaddress, 123))
abi.encodeWithSignature(…)返回的前4个字节是函数选择器。
2 主要功能
计算要调用的方法的函数选择器
3 代码示例
下面是如何计算函数选择器。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;
contract FunctionSelector {
/*
"transfer(address,uint256)"
0xa9059cbb
"transferFrom(address,address,uint256)"
0x23b872dd
*/
function getSelector(string calldata _func) external pure returns (bytes4) {
return bytes4(keccak256(bytes(_func)));
}
}
4 部署测试
先进行编译部署合约
我们首先测试来计算transfer方法的函数选择器
其得到的 0xa9059cbb 即为该方法的函数选择器
使用同样方法可以计算得出transferFrom的方法的函数选择器为:0x23b872dd文章来源:https://www.toymoban.com/news/detail-593879.html
文章来源地址https://www.toymoban.com/news/detail-593879.html
到了这里,关于solidity函数签名的实现-solidity实现智能合约教程(8)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!