(a)两者之间的(A)技术差别和(b)实际差别是什么,即你何时使用其中一种:
bool result = address(contract).call.value(10)(bytes4(keccak256("buyItem(uint256)", _sku)));
bool result = address(contract).call.value(10)(abi.encodeWithSignature("buyItem(uint256)", _sku));代码指的是我们购买库存物品的练习,由_sku ( uint)以value ( msg.value )的价格表示感谢。
发布于 2018-12-20 07:14:46
根据坚实的文档这里
keccak256()现在只接受一个字节参数。此外,这一论点没有得到支持。对此进行了更改,以便更明确地说明参数是如何连接的。
将每个keccak256(a, b, c)更改为keccak256(abi.encodePacked(a, b, c))。
尽管这不是一个彻底的改变,但建议开发人员将x.call(bytes4(keccak256("f(uint256)"), a, b)更改为x.call(abi.encodeWithSignature("f(uint256)", a, b))。
https://ethereum.stackexchange.com/questions/54646
复制相似问题