我试着用这个方法:
function test(uint amount) public {
address(0xf5eA38B6b9644224dA1aECbC1219e8543c0689b2).call(abi.encodeWithSignature("deposit(uint)",amount));
}
但是事务会被恢复,这是因为金额没有以某种方式被散列,而且我真的不知道怎么做,我应该对金额做些什么?这些交易是:
-the失败一次使用方法:https://bscscan.com/tx/0x7fdd50cee23295ea866baa8961a2105c58162e77125df852a4fc5bf0fad2f507
这是输入的数据:
功能: test(uint256 tAmount) *
0000000000000000000000000000000000000000000000000000000000000001 : MethodID: 0x29e99f07:
-the成功--直接从站点调用契约,而不是在另一个智能契约内使用调用:https://bscscan.com/tx/0xfd4158766f25761fa5dddb0683c677085a04ea6db05e03794be375a8243d7128
这是输入的数据:
职能:交存(Uint256 _amount) *
000000000000000000000000000000000000000000000000005427aedb41a400 : MethodID: 0xb6b55f25:
我需要以某种方式计算金额吗?
发布于 2021-05-02 18:23:25
目标契约将uint
定义为参数类型,但它只是别名uint256
。ABI编码方法不会自动转换别名,因此您需要在代码中更改它。
// `uint256` instead of `uint`
abi.encodeWithSignature("deposit(uint256)",amount)
https://stackoverflow.com/questions/67358997
复制相似问题