我在合同的函数中调用了一个名为"getExpectedReturn“的1icnh智能契约函数。当我在调用之前设置一个变量(名为v1)时,变量不会改变,但是如果在调用之后设置了一个变量(名为v2),它就会工作。我不知道为什么会这样。下面是一个简单的合同来复制这个问题:
pragma solidity ^0.6.6;
contract A {
address internal constant ONE_INCH_ADDRESS = 0xC586BeF4a0992C495Cf22e1aeEE4E446CECDee0E;
uint256 public v1 = 1;
uint256 public v2 = 2;
event Ev1( uint256 v1, uint256 v2);
function A1 () public {
v1 = 11; /*this does not work*/
ONE_INCH_ADDRESS.call(abi.encodeWithSignature(
"getExpectedReturn(address,address,uint256,uint256,uint256)",
0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE,
0x6B175474E89094C44Da98b954EedeAC495271d0F,
1000000000000000000, 100, 0));
v2 = 22; /* this works*/
emit Ev1(v1, v2); /* here v1 is 1 but should be 11 ! and v2 is 22*/
}
}职能A的执行日志附后:
[ { "from": "0x69A5e5e86c72aE3D57bBD25A38f63bc527176228", "topic": "0x9aa0a5ee181172acba4a8b7e3c24db463f4c218ff10a6ea1777f43817d257414", "event": "Ev1", "args": { "0": "1", "1": "22", "v1": "1", "v2": "22", "length": 2 } } ]欢迎任何建议。
PS1:合同部署在一个混合的分叉主板上。(已使用的地址位于,ETH:0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE,DAI:0x6B175474E89094C44Da98b954EedeAC495271d0F)上
发布于 2020-12-10 19:56:04
好像是一只怪虫。
这是您在mainnet上的事务,事件看起来很好。
https://ethereum.stackexchange.com/questions/89865
复制相似问题