WTF-Solidity
WTF-Solidity copied to clipboard
45讲中获取calldata
// 获取call data
bytes memory callData;
if (bytes(signature).length == 0) {
callData = data;
} else {
callData = abi.encodePacked(bytes4(keccak256(bytes(signature))), data);
}
bytes4(keccak256(bytes(signature))) 获取function selector这个我能理解,但是这里为什么可以使用abi.encodePacked编码? 以下择取自27讲的原文: abi.encodePacked 将给定参数根据其所需最低空间编码。它类似 abi.encode,但是会把其中填充的很多0省略。比如,只用1字节来编码uint类型。当你想省空间,并且不与合约交互的时候,可以使用abi.encodePacked,例如算一些数据的hash时。
获取calldata不就是相对timeLock合约交互从而修改admin吗?