contract delegable { uint public number = 7; function Store(uint n) public { number = n; } function Return() public view returns (uint) { return number; } } contract frontend { uint public number; address delegate; constructor(address access) { delegate = access; } function returnDelegableNumber() public view returns (uint) { return delegable(delegate).Return(); } function storeNumber() public { delegate.delegatecall(bytes4(sha3("Store(uint256)")), 123); } function returnNumber() public view returns (uint) { delegate.delegatecall(bytes4(sha3("Return()"))); assembly { // determine size of return data let size := returndatasize // load let ptr := mload(0x40) returndatacopy(ptr, 0, size) return(ptr, size) } } }
0.4.25