首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bytes4(keccak256(“function(Uint256)”) vs. (abi.encodeWithSignature(buyItem(Uint256)

Bytes4(keccak256(“function(Uint256)”) vs. (abi.encodeWithSignature(buyItem(Uint256)
EN

Ethereum用户
提问于 2018-07-19 01:46:35
回答 1查看 2.7K关注 0票数 2

(a)两者之间的(A)技术差别和(b)实际差别是什么,即你何时使用其中一种:

代码语言:javascript
复制
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 )的价格表示感谢。

EN

回答 1

Ethereum用户

发布于 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))

票数 3
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/54646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档