You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am trying to test proxy pattern in Remix, which connected to my private chain with Web3 Provider. By the way, miner is working all the time. After invoking add function of Proxy contract, the state variable total of Proxy contract has not change. But with Javascript VM, it changed as expected.
Here is the code:
pragma solidity ^0.5.0;
contract Proxy {
address public implement;
// with Web3 Provider, it didn't change.
// but with Javascript VM, It changed as expected.
uint public total;
function changeImpl(address _impl) public returns(bool) {
implement = _impl;
return true;
}
// according to proxy pattern, this should be fallback function.
// i change it as named function just for convenience
function add(uint a, uint b) external {
address _impl = implement;
assembly {
let ptr := mload(0x40)
calldatacopy(ptr, 0, calldatasize)
let result := delegatecall(gas, _impl, ptr, calldatasize, 0, 0)
}
}
}
contract ImplContract {
address public implement;
uint public total;
function add(uint a, uint b) public returns(uint) {
total = a + b;
return total;
}
}
I am so confused why same code make different outcome. Any help would be appreciated.
The text was updated successfully, but these errors were encountered:
kevindaizj
changed the title
Proxy pattern didn't change state variable
Proxy does not change state variable
Jun 9, 2019
I am trying to test proxy pattern in Remix, which connected to my private chain with Web3 Provider. By the way, miner is working all the time. After invoking add function of Proxy contract, the state variable total of Proxy contract has not change. But with Javascript VM, it changed as expected.
Here is the code:
I am so confused why same code make different outcome. Any help would be appreciated.
The text was updated successfully, but these errors were encountered: