WTF-Solidity icon indicating copy to clipboard operation
WTF-Solidity copied to clipboard

45讲中获取calldata

Open kewen645 opened this issue 3 years ago • 0 comments

// 获取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吗?

kewen645 avatar Dec 27 '22 19:12 kewen645