UNPKG

@gnosis.pm/util-contracts

Version:
911 lines (910 loc) 204 kB
{ "contractName": "StorageAccessibleWrapper", "abi": [ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "SIMULATE_DELEGATECALL_INTERNAL_SELECTOR", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "SLOT_BAM", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "SLOT_BAR", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "SLOT_BAZ", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "SLOT_FOO", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "SLOT_FOOBAR", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "SLOT_QUX", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "offset", "type": "uint256" }, { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "getStorageAt", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "response", "type": "bytes" } ], "name": "revertWith", "outputs": [], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "buffer", "type": "bytes" }, { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "setLength", "outputs": [], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "targetContract", "type": "address" }, { "internalType": "bytes", "name": "calldataPayload", "type": "bytes" } ], "name": "simulateDelegatecall", "outputs": [ { "internalType": "bytes", "name": "response", "type": "bytes" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "targetContract", "type": "address" }, { "internalType": "bytes", "name": "calldataPayload", "type": "bytes" } ], "name": "simulateDelegatecallInternal", "outputs": [ { "internalType": "bytes", "name": "response", "type": "bytes" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "foo_", "type": "uint256" } ], "name": "setFoo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint128", "name": "bar_", "type": "uint128" } ], "name": "setBar", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "bam_", "type": "uint64" } ], "name": "setBam", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "baz_", "type": "uint256[]" } ], "name": "setBaz", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "key", "type": "uint256" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "setQuxKeyValue", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "foo_", "type": "uint256" }, { "internalType": "uint256", "name": "bar_", "type": "uint256" } ], "name": "setFoobar", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.7.5+commit.eb77ed08\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"SIMULATE_DELEGATECALL_INTERNAL_SELECTOR\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLOT_BAM\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLOT_BAR\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLOT_BAZ\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLOT_FOO\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLOT_FOOBAR\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLOT_QUX\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"getStorageAt\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"name\":\"revertWith\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"bam_\",\"type\":\"uint64\"}],\"name\":\"setBam\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"bar_\",\"type\":\"uint128\"}],\"name\":\"setBar\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"baz_\",\"type\":\"uint256[]\"}],\"name\":\"setBaz\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"foo_\",\"type\":\"uint256\"}],\"name\":\"setFoo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"foo_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bar_\",\"type\":\"uint256\"}],\"name\":\"setFoobar\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"buffer\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"setLength\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setQuxKeyValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"targetContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"calldataPayload\",\"type\":\"bytes\"}],\"name\":\"simulateDelegatecall\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"targetContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"calldataPayload\",\"type\":\"bytes\"}],\"name\":\"simulateDelegatecallInternal\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getStorageAt(uint256,uint256)\":{\"details\":\"Reads `length` bytes of storage in the currents contract\",\"params\":{\"length\":\"- the number of words (32 bytes) of data to read\",\"offset\":\"- the offset in the current contract's storage in words to start reading from\"},\"returns\":{\"_0\":\"the bytes that were read.\"}},\"simulateDelegatecall(address,bytes)\":{\"details\":\"Performs a delegetecall on a targetContract in the context of self. Internally reverts execution to avoid side effects (making it static). Catches revert and returns encoded result as bytes.\",\"params\":{\"calldataPayload\":\"Calldata that should be sent to the target contract (encoded method name and arguments).\",\"targetContract\":\"Address of the contract containing the code to execute.\"}},\"simulateDelegatecallInternal(address,bytes)\":{\"details\":\"Performs a delegetecall on a targetContract in the context of self. Internally reverts execution to avoid side effects (making it static). Returns encoded result as revert message concatenated with the success flag of the inner call as a last byte.\",\"params\":{\"calldataPayload\":\"Calldata that should be sent to the target contract (encoded method name and arguments).\",\"targetContract\":\"Address of the contract containing the code to execute.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/bensniff/Projects/gnosis/util-contracts/contracts/test/StorageAccessibleWrapper.sol\":\"StorageAccessibleWrapper\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/bensniff/Projects/gnosis/util-contracts/contracts/StorageAccessible.sol\":{\"keccak256\":\"0xc8b52a0614f7537b65d6db188ffc5b16fd23b71d9174cb29f8020c9bf3ccb333\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3445810f14c830c1a10f21df9f67014c0a8c110334431f3ac5d9f296234be505\",\"dweb:/ipfs/QmZefwGQd6A1quZZk78e4eTVRjQSwMwFCXTFNkxAvKDFmw\"]},\"/Users/bensniff/Projects/gnosis/util-contracts/contracts/test/StorageAccessibleWrapper.sol\":{\"keccak256\":\"0x3efce0b9c27dbab9e83a61b0c4dd46052473861c85b984c7f96dd1ea946f84ac\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://bfe540d250671147f58993a55af3f129150db108e4be07cd6be0045e448e7391\",\"dweb:/ipfs/QmWrUeXvb4Xbuh12nrmicHdbdqvbPq3br4JmGEeqwYuFQs\"]}},\"version\":1}", "bytecode": "0x608060405234801561001057600080fd5b50610b16806100206000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80637a5d379b116100a2578063bd0276fc11610071578063bd0276fc146104f8578063dc0f34901461051f578063dc80035d14610527578063eeb21aaf14610544578063f84436bd1461056757610116565b80637a5d379b146104a75780638e9c68f2146104af57806399cf6449146104d55780639fde4466146103fb57610116565b80634e78b547116100e95780634e78b5471461032a57806352b8dfc5146103325780635624b25b146103d85780636334bd13146103fb57806365906ca31461040357610116565b80630697a74f1461011b57806338cccf07146101395780633a1b407a146101dc57806343218e1914610201575b600080fd5b61012361061b565b6040805160ff9092168252519081900360200190f35b6101da6004803603602081101561014f57600080fd5b810190602081018135600160201b81111561016957600080fd5b82018360208201111561017b57600080fd5b803590602001918460208302840111600160201b8311171561019c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610620945050505050565b005b6101e4610637565b604080516001600160e01b03199092168252519081900360200190f35b6102b56004803603604081101561021757600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561024157600080fd5b82018360208201111561025357600080fd5b803590602001918460018302840111600160201b8311171561027457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061065b945050505050565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102ef5781810151838201526020016102d7565b50505050905090810190601f16801561031c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61012361078a565b6101da6004803603604081101561034857600080fd5b810190602081018135600160201b81111561036257600080fd5b82018360208201111561037457600080fd5b803590602001918460018302840111600160201b8311171561039557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550509135925061078f915050565b6102b5600480360360408110156103ee57600080fd5b5080359060200135610793565b610123610808565b6101da6004803603602081101561041957600080fd5b810190602081018135600160201b81111561043357600080fd5b82018360208201111561044557600080fd5b803590602001918460018302840111600160201b8311171561046657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061080d945050505050565b610123610815565b6101da600480360360208110156104c557600080fd5b50356001600160801b031661081a565b6101da600480360360408110156104eb57600080fd5b5080359060200135610845565b6101da6004803603602081101561050e57600080fd5b503567ffffffffffffffff16610857565b610123610885565b6101da6004803603602081101561053d57600080fd5b503561088a565b6101da6004803603604081101561055a57600080fd5b508035906020013561088f565b6102b56004803603604081101561057d57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105a757600080fd5b8201836020820111156105b957600080fd5b803590602001918460018302840111600160201b831117156105da57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506108ad945050505050565b600281565b8051610633906002906020840190610a80565b5050565b7f43218e198a5f5c70ca65adf1973b6285a79c4d29a39cc2a8bb67b912f447dc6481565b60606000836001600160a01b0316836040518082805190602001908083835b602083106106995780518252601f19909201916020918201910161067a565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146106f9576040519150601f19603f3d011682016040523d82523d6000602084013e6106fe565b606091505b50809350819250505061078382826040516020018083805190602001908083835b6020831061073e5780518252601f19909201916020918201910161071f565b6001836020036101000a03801982511681845116808217855250505050505090500182151560f81b81526001019250505060405160208183030381529060405261080d565b5092915050565b600081565b9052565b6060808260200267ffffffffffffffff811180156107b057600080fd5b506040519080825280601f01601f1916602001820160405280156107db576020820181803683370190505b50905060005b838110156107fe57848101546020808302840101526001016107e1565b5090505b92915050565b600181565b805160208201fd5b600381565b600180546fffffffffffffffffffffffffffffffff19166001600160801b0392909216919091179055565b60009182526003602052604090912055565b6001805467ffffffffffffffff909216600160801b0267ffffffffffffffff60801b19909216919091179055565b600481565b600055565b60408051808201909152828152602001819052600491909155600555565b6060807f43218e198a5f5c70ca65adf1973b6285a79c4d29a39cc2a8bb67b912f447dc64848460405160240180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561092257818101518382015260200161090a565b50505050905090810190601f16801561094f5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909816979097178752518151919750309688965090945084935091508083835b602083106109b75780518252601f199092019160209182019101610998565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610a19576040519150601f19603f3d011682016040523d82523d6000602084013e610a1e565b606091505b50905080925050600082600184510381518110610a3757fe5b602001015160f81c60f81b6001600160f81b031916600160f81b149050610a6283600185510361078f565b8015610a6f575050610802565b610a788361080d565b505092915050565b828054828255906000526020600020908101928215610abb579160200282015b82811115610abb578251825591602001919060010190610aa0565b50610ac7929150610acb565b5090565b5b80821115610ac75760008155600101610acc56fea26469706673582212203f731b77c8f811929f054f70c652be765a2221680d0c79626e0e35bc0243b47664736f6c63430007050033", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c80637a5d379b116100a2578063bd0276fc11610071578063bd0276fc146104f8578063dc0f34901461051f578063dc80035d14610527578063eeb21aaf14610544578063f84436bd1461056757610116565b80637a5d379b146104a75780638e9c68f2146104af57806399cf6449146104d55780639fde4466146103fb57610116565b80634e78b547116100e95780634e78b5471461032a57806352b8dfc5146103325780635624b25b146103d85780636334bd13146103fb57806365906ca31461040357610116565b80630697a74f1461011b57806338cccf07146101395780633a1b407a146101dc57806343218e1914610201575b600080fd5b61012361061b565b6040805160ff9092168252519081900360200190f35b6101da6004803603602081101561014f57600080fd5b810190602081018135600160201b81111561016957600080fd5b82018360208201111561017b57600080fd5b803590602001918460208302840111600160201b8311171561019c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610620945050505050565b005b6101e4610637565b604080516001600160e01b03199092168252519081900360200190f35b6102b56004803603604081101561021757600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561024157600080fd5b82018360208201111561025357600080fd5b803590602001918460018302840111600160201b8311171561027457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061065b945050505050565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102ef5781810151838201526020016102d7565b50505050905090810190601f16801561031c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61012361078a565b6101da6004803603604081101561034857600080fd5b810190602081018135600160201b81111561036257600080fd5b82018360208201111561037457600080fd5b803590602001918460018302840111600160201b8311171561039557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550509135925061078f915050565b6102b5600480360360408110156103ee57600080fd5b5080359060200135610793565b610123610808565b6101da6004803603602081101561041957600080fd5b810190602081018135600160201b81111561043357600080fd5b82018360208201111561044557600080fd5b803590602001918460018302840111600160201b8311171561046657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061080d945050505050565b610123610815565b6101da600480360360208110156104c557600080fd5b50356001600160801b031661081a565b6101da600480360360408110156104eb57600080fd5b5080359060200135610845565b6101da6004803603602081101561050e57600080fd5b503567ffffffffffffffff16610857565b610123610885565b6101da6004803603602081101561053d57600080fd5b503561088a565b6101da6004803603604081101561055a57600080fd5b508035906020013561088f565b6102b56004803603604081101561057d57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105a757600080fd5b8201836020820111156105b957600080fd5b803590602001918460018302840111600160201b831117156105da57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506108ad945050505050565b600281565b8051610633906002906020840190610a80565b5050565b7f43218e198a5f5c70ca65adf1973b6285a79c4d29a39cc2a8bb67b912f447dc6481565b60606000836001600160a01b0316836040518082805190602001908083835b602083106106995780518252601f19909201916020918201910161067a565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146106f9576040519150601f19603f3d011682016040523d82523d6000602084013e6106fe565b606091505b50809350819250505061078382826040516020018083805190602001908083835b6020831061073e5780518252601f19909201916020918201910161071f565b6001836020036101000a03801982511681845116808217855250505050505090500182151560f81b81526001019250505060405160208183030381529060405261080d565b5092915050565b600081565b9052565b6060808260200267ffffffffffffffff811180156107b057600080fd5b506040519080825280601f01601f1916602001820160405280156107db576020820181803683370190505b50905060005b838110156107fe57848101546020808302840101526001016107e1565b5090505b92915050565b600181565b805160208201fd5b600381565b600180546fffffffffffffffffffffffffffffffff19166001600160801b0392909216919091179055565b60009182526003602052604090912055565b6001805467ffffffffffffffff909216600160801b0267ffffffffffffffff60801b19909216919091179055565b600481565b600055565b60408051808201909152828152602001819052600491909155600555565b6060807f43218e198a5f5c70ca65adf1973b6285a79c4d29a39cc2a8bb67b912f447dc64848460405160240180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561092257818101518382015260200161090a565b50505050905090810190601f16801561094f5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909816979097178752518151919750309688965090945084935091508083835b602083106109b75780518252601f199092019160209182019101610998565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610a19576040519150601f19603f3d011682016040523d82523d6000602084013e610a1e565b606091505b50905080925050600082600184510381518110610a3757fe5b602001015160f81c60f81b6001600160f81b031916600160f81b149050610a6283600185510361078f565b8015610a6f575050610802565b610a788361080d565b505092915050565b828054828255906000526020600020908101928215610abb579160200282015b82811115610abb578251825591602001919060010190610aa0565b50610ac7929150610acb565b5090565b5b80821115610ac75760008155600101610acc56fea26469706673582212203f731b77c8f811929f054f70c652be765a2221680d0c79626e0e35bc0243b47664736f6c63430007050033", "immutableReferences": {}, "generatedSources": [], "deployedGeneratedSources": [], "sourceMap": "102:1020:8:-:0;;;602:16;;;;;;;;;;102:1020;;;;;;", "deployedSourceMap": "102:1020:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;352:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;833:73;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;833:73:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;833:73:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;833:73:8;;-1:-1:-1;833:73:8;;-1:-1:-1;;;;;833:73:8:i;:::-;;788:143:6;;;:::i;:::-;;;;-1:-1:-1;;;;;;788:143:6;;;;;;;;;;;;;;3220:337;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3220:337:6;;;;;;;;;;;;;;;-1:-1:-1;;;3220:337:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3220:337:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3220:337:6;;-1:-1:-1;3220:337:6;;-1:-1:-1;;;;;3220:337:6:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;232:34:8;;;:::i;3717:139:6:-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3717:139:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3717:139:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3717:139:6;;-1:-1:-1;;3717:139:6;;;-1:-1:-1;3717:139:6;;-1:-1:-1;;3717:139:6:i;1233:432::-;;;;;;;;;;;;;;;;-1:-1:-1;1233:432:6;;;;;;;:::i;272:34:8:-;;;:::i;3563:148:6:-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3563:148:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3563:148:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3563:148:6;;-1:-1:-1;3563:148:6;;-1:-1:-1;;;;;3563:148:6:i;392:34:8:-;;;:::i;694:64::-;;;;;;;;;;;;;;;;-1:-1:-1;694:64:8;-1:-1:-1;;;;;694:64:8;;:::i;912:92::-;;;;;;;;;;;;;;;;-1:-1:-1;912:92:8;;;;;;;:::i;764:63::-;;;;;;;;;;;;;;;;-1:-1:-1;764:63:8;;;;:::i;432:37::-;;;:::i;624:64::-;;;;;;;;;;;;;;;;-1:-1:-1;624:64:8;;:::i;1010:110::-;;;;;;;;;;;;;;;;-1:-1:-1;1010:110:8;;;;;;;:::i;2101:618:6:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2101:618:6;;;;;;;;;;;;;;;-1:-1:-1;;;2101:618:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2101:618:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2101:618:6;;-1:-1:-1;2101:618:6;;-1:-1:-1;;;;;2101:618:6:i;352:34:8:-;385:1;352:34;:::o;833:73::-;889:10;;;;:3;;:10;;;;;:::i;:::-;;833:73;:::o;788:143:6:-;869:56;788:143;:::o;3220:337::-;3350:21;3383:12;3427:14;-1:-1:-1;;;;;3427:27:6;3468:15;3427:66;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3427:66:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3405:88;;;;;;;;3503:47;3531:8;3541:7;3514:35;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3514:35:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3503:10;:47::i;:::-;3220:337;;;;;:::o;232:34:8:-;265:1;232:34;:::o;3717:139:6:-;3818:22;;3804:46::o;1233:432::-;1332:12;1360:19;1392:6;1401:2;1392:11;1382:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1382:22:6;;1360:44;;1419:13;1414:222;1446:6;1438:5;:14;1414:222;;;1522:18;;;1516:25;1599:4;1588:16;;;1565:40;;;1558:54;1454:7;;1414:222;;;-1:-1:-1;1652:6:6;-1:-1:-1;1233:432:6;;;;;:::o;272:34:8:-;305:1;272:34;:::o;3563:148:6:-;3685:8;3679:15;3672:4;3662:8;3658:19;3651:44;392:34:8;425:1;392:34;:::o;694:64::-;741:3;:10;;-1:-1:-1;;741:10:8;-1:-1:-1;;;;;741:10:8;;;;;;;;;;694:64::o;912:92::-;981:8;;;;:3;:8;;;;;;:16;912:92::o;764:63::-;810:3;:10;;;;;;-1:-1:-1;;;810:10:8;-1:-1:-1;;;;810:10:8;;;;;;;;;764:63::o;432:37::-;468:1;432:37;:::o;624:64::-;671:3;:10;624:64::o;1010:110::-;1083:30;;;;;;;;;;;;;;;;;1074:6;:39;;;;;;1010:110::o;2101:618:6:-;2223:21;2256:22;869:56;2370:14;2398:15;2281:142;;;;;;-1:-1:-1;;;;;2281:142:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2281:142:6;;;-1:-1:-1;;2281:142:6;;;;;;;;;;;;;;-1:-1:-1;;;;;2281:142:6;-1:-1:-1;;;;;;2281:142:6;;;;;;;;;2448:29;;;2281:142;;-1:-1:-1;2456:4:6;;2281:142;;-1:-1:-1;2448:29:6;;-1:-1:-1;2448:29:6;;-1:-1:-1;2281:142:6;-1:-1:-1;2448:29:6;;2281:142;2448:29;;;;;;;;;;-1:-1:-1;;2448:29:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2433:44;;;;;;2487:17;2507:8;2534:1;2516:8;:15;:19;2507:29;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2507:37:6;;2540:4;2507:37;;;2487:57;;2554:40;2564:8;2592:1;2574:8;:15;:19;2554:9;:40::i;:::-;2608:12;2604:109;;;2636:15;;;;2604:109;2682:20;2693:8;2682:10;:20::i;:::-;2101:618;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;", "source": "// SPDX-License-Identifier: LGPL-3.0-only\npragma solidity ^0.7.0;\nimport \"../StorageAccessible.sol\";\n\ncontract StorageAccessibleWrapper is StorageAccessible {\n struct FooBar {\n uint256 foo;\n uint256 bar;\n }\n\n uint8 public constant SLOT_FOO = 0;\n uint8 public constant SLOT_BAR = 1;\n uint8 public constant SLOT_BAM = 1;\n uint8 public constant SLOT_BAZ = 2;\n uint8 public constant SLOT_QUX = 3;\n uint8 public constant SLOT_FOOBAR = 4;\n\n uint256 foo;\n uint128 bar;\n uint64 bam;\n uint256[] baz;\n mapping(uint256 => uint256) qux;\n FooBar foobar;\n\n constructor() {}\n\n function setFoo(uint256 foo_) public {\n foo = foo_;\n }\n\n function setBar(uint128 bar_) public {\n bar = bar_;\n }\n\n function setBam(uint64 bam_) public {\n bam = bam_;\n }\n\n function setBaz(uint256[] memory baz_) public {\n baz = baz_;\n }\n\n function setQuxKeyValue(uint256 key, uint256 value) public {\n qux[key] = value;\n }\n\n function setFoobar(uint256 foo_, uint256 bar_) public {\n foobar = FooBar({foo: foo_, bar: bar_});\n }\n}\n\n/**\n * Defines reader methods on StorageAccessibleWrapper that can be later executed\n * in the context of a previously deployed instance\n */\ncontract ExternalStorageReader {\n // Needs same storage layout as the contract it is reading from\n uint256 foo;\n\n function getFoo() public view returns (uint256) {\n return foo;\n }\n\n function setAndGetFoo(uint256 foo_) public returns (uint256) {\n foo = foo_;\n return foo;\n }\n\n function doRevert() public pure {\n revert();\n }\n\n function invokeDoRevertViaStorageAccessible(StorageAccessible target)\n public\n {\n target.simulateDelegatecall(\n address(this),\n abi.encodeWithSignature(\"doRevert()\")\n );\n }\n\n function invokeStaticDelegatecall(\n ViewStorageAccessible target,\n bytes calldata encodedCall\n ) public view returns (uint256) {\n uint256 result = abi.decode(\n target.simulateDelegatecall(address(this), encodedCall),\n (uint256)\n );\n return result;\n }\n}\n", "sourcePath": "/Users/bensniff/Projects/gnosis/util-contracts/contracts/test/StorageAccessibleWrapper.sol", "ast": { "absolutePath": "/Users/bensniff/Projects/gnosis/util-contracts/contracts/test/StorageAccessibleWrapper.sol", "exportedSymbols": { "ExternalStorageReader": [ 2102 ], "StorageAccessible": [ 1833 ], "StorageAccessibleWrapper": [ 2021 ], "ViewStorageAccessible": [ 1681 ] }, "id": 2103, "license": "LGPL-3.0-only", "nodeType": "SourceUnit", "nodes": [ { "id": 1905, "literals": [ "solidity", "^", "0.7", ".0" ], "nodeType": "PragmaDirective", "src": "42:23:8" }, { "absolutePath": "/Users/bensniff/Projects/gnosis/util-contracts/contracts/StorageAccessible.sol", "file": "../StorageAccessible.sol", "id": 1906, "nodeType": "ImportDirective", "scope": 2103, "sourceUnit": 1834, "src": "66:34:8", "symbolAliases": [], "unitAlias": "" }, { "abstract": false, "baseContracts": [ { "baseName": { "id": 1907, "name": "StorageAccessible", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1833, "src": "139:17:8", "typeDescriptions": { "typeIdentifier": "t_contract$_StorageAccessible_$1833", "typeString": "contract StorageAccessible" } }, "id": 1908, "nodeType": "InheritanceSpecifier", "src": "139:17:8" } ], "contractDependencies": [ 1833 ], "contractKind": "contract", "fullyImplemented": true, "id": 2021, "linearizedBaseContracts": [ 2021, 1833 ], "name": "StorageAccessibleWrapper", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "StorageAccessibleWrapper.FooBar", "id": 1913, "members": [ { "constant": false, "id": 1910, "mutability": "mutable", "name": "foo", "nodeType": "VariableDeclaration", "scope": 1913, "src": "187:11:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1909, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "187:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 1912, "mutability": "mutable", "name": "bar", "nodeType": "VariableDeclaration", "scope": 1913, "src": "208:11:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1911, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "208:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "name": "FooBar", "nodeType": "StructDefinition", "scope": 2021, "src": "163:63:8", "visibility": "public" }, { "constant": true, "functionSelector": "4e78b547", "id": 1916, "mutability": "constant", "name": "SLOT_FOO", "nodeType": "VariableDeclaration", "scope": 2021, "src": "232:34:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1914, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "232:5:8", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": { "hexValue": "30", "id": 1915, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "265:1:8", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "visibility": "public" }, { "constant": true, "functionSelector": "6334bd13", "id": 1919, "mutability": "constant", "name": "SLOT_BAR", "nodeType": "VariableDeclaration", "scope": 2021, "src": "272:34:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1917, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "272:5:8", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": { "hexValue": "31", "id": 1918, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "305:1:8", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "visibility": "public" }, { "constant": true, "functionSelector": "9fde4466", "id": 1922, "mutability": "constant", "name": "SLOT_BAM", "nodeType": "VariableDeclaration", "scope": 2021, "src": "312:34:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1920, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "312:5:8", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": { "hexValue": "31", "id": 1921, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "345:1:8", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "visibility": "public" }, { "constant": true, "functionSelector": "0697a74f", "id": 1925, "mutability": "constant", "name": "SLOT_BAZ", "nodeType": "VariableDeclaration", "scope": 2021, "src": "352:34:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1923, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "352:5:8", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": { "hexValue": "32", "id": 1924, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "385:1:8", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, "visibility": "public" }, { "constant": true, "functionSelector": "7a5d379b", "id": 1928, "mutability": "constant", "name": "SLOT_QUX", "nodeType": "VariableDeclaration", "scope": 2021, "src": "392:34:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1926, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "392:5:8", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": { "hexValue": "33", "id": 1927, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "425:1:8", "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3" }, "value": "3" }, "visibility": "public" }, { "constant": true, "functionSelector": "dc0f3490", "id": 1931, "mutability": "constant", "name": "SLOT_FOOBAR", "nodeType": "VariableDeclaration", "scope": 2021, "src": "432:37:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1929, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "432:5:8", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": { "hexValue": "34", "id": 1930, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "468:1:8", "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" }, "value": "4" }, "visibility": "public" }, { "constant": false, "id": 1933, "mutability": "mutable", "name": "foo", "nodeType": "VariableDeclaration", "scope": 2021, "src": "476:11:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1932, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "476:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 1935, "mutability": "mutable", "name": "bar", "nodeType": "VariableDeclaration", "scope": 2021, "src": "493:11:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" }, "typeName": { "id": 1934, "name": "uint128", "nodeType": "ElementaryTypeName", "src": "493:7:8", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" } }, "visibility": "internal" }, { "constant": false, "id": 1937, "mutability": "mutable", "name": "bam", "nodeType": "VariableDeclaration", "scope": 2021, "src": "510:10:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" }, "typeName": { "id": 1936, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "510:6:8", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, "visibility": "internal" }, { "constant": false, "id": 1940, "mutability": "mutable", "name": "baz", "nodeType": "VariableDeclaration", "scope": 2021, "src": "526:13:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage", "typeString": "uint256[]" }, "typeName": { "baseType": { "id": 1938, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "526:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1939, "nodeType": "ArrayTypeName", "src": "526:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" } }, "visibility": "internal" }, { "constant": false, "id": 1944, "mutability": "mutable", "name": "qux", "nodeType": "VariableDeclaration", "scope": 2021, "src": "545:31:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", "typeString": "mapping(uint256 => uint256)" }, "typeName": { "id": 1943, "keyType": { "id": 1941, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "553:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Mapping", "src": "545:27:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", "typeString": "mapping(uint256 => uint256)" }, "valueType": { "id": 1942, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "564:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, "visibility": "internal" }, { "constant": false, "id": 1946, "mutability": "mutable", "name": "foobar", "nodeType": "VariableDeclaration", "scope": 2021, "src": "582:13:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_struct$_FooBar_$1913_storage", "typeString": "struct StorageAccessibleWrapper.FooBar" }, "typeName": { "id": 1945, "name": "FooBar", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1913, "src": "582:6:8", "typeDescriptions": { "typeIdentifier": "t_struct$_FooBar_$1913_storage_ptr", "typeString": "struct StorageAccessibleWrapper.FooBar" } }, "visibility": "internal" }, { "body": { "id": 1949, "nodeType": "Block", "src": "616:2:8", "statements": [] }, "id": 1950, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { "id": 1947, "nodeType": "ParameterList", "parameters": [], "src": "613:2:8" }, "returnParameters": { "id": 1948, "nodeType": "ParameterList", "parameters": [], "src": "616:0:8" }, "scope": 2021, "src": "602:16:8", "stateMutability": "nonpayable",