![](/img/trans.png)
[英]How do I make a function that is called on every contract call? – Solidity
[英]How to properly use the call (or delegatecall) in solidity
我正在尝试使用这种方法:
function test(uint amount) public {
address(0xf5eA38B6b9644224dA1aECbC1219e8543c0689b2).call(abi.encodeWithSignature("deposit(uint)",amount));
}
但是交易被还原,这是因为金额没有以某种方式进行哈希处理,我真的不知道该怎么做,我应该怎么做? 这些是交易:
-使用方法失败的一个: https://bscscan.com/tx/0x7fdd50cee23295ea866baa8961a2105c58162e77125df852a4fc5bf0fad2f507
这是输入数据:
Function:测试(uint256 tAmount)***
MethodID: 0x29e99f07 [0]: 0000000000000000000000000000000000000000000000000000000000000001
- 直接从站点调用合约而不是在另一个智能合约中使用调用的成功者:https://bscscan.com/tx/0xfd4158766f25761fa5dddb0683c677085a04ea6db05e03794be375a8243d7128
这是输入数据:
Function:存款(uint256 _amount)***
MethodID: 0xb6b55f25 [0]: 000000000000000000000000000000000000000000000000005427aedb41a400
我是否需要以某种方式获得 hash 数量?
目标合约将uint
定义为参数类型,但它只是一个别名uint256
。 ABI 编码方法不会自动转换别名,因此您需要在代码中更改它。
// `uint256` instead of `uint`
abi.encodeWithSignature("deposit(uint256)",amount)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.