Description:
Proxy contract enabling upgradeable smart contract patterns. Delegates calls to an implementation contract.
Blockchain: Ethereum
Source Code: View Code On The Blockchain
Solidity Source Code:
{{
"language": "Solidity",
"sources": {
"src/MinimalProxy.sol": {
"content": "// SPDX-License-Identifier: MIT
pragma solidity ^0.8.29;
contract MinimalProxy {
address public immutable implementation;
address private immutable sender0;
address private immutable sender1;
address private immutable sender2;
address private immutable sender3;
address private immutable sender4;
address private immutable sender5;
address private immutable sender6;
address private immutable sender7;
constructor(address _implementation, address[8] memory senders) {
implementation = _implementation;
sender0 = senders[0];
sender1 = senders[1];
sender2 = senders[2];
sender3 = senders[3];
sender4 = senders[4];
sender5 = senders[5];
sender6 = senders[6];
sender7 = senders[7];
}
receive() external payable {
revert("Should not receive ETH");
}
// forgefmt: disable-next-item
fallback() external payable {
if (
msg.sender != sender0
&& msg.sender != sender1
&& msg.sender != sender2
&& msg.sender != sender3
&& msg.sender != sender4
&& msg.sender != sender5
&& msg.sender != sender6
&& msg.sender != sender7
) {
revert("Unauthorized");
}
address _implementation = implementation;
assembly {
calldatacopy(0, 0, calldatasize())
let result := call(gas(), _implementation, callvalue(), 0, calldatasize(), 0, 0)
returndatacopy(0, 0, returndatasize())
switch result
case 0 {
revert(0, returndatasize())
}
default {
return(0, returndatasize())
}
}
}
}
"
}
},
"settings": {
"remappings": [
"@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/",
"@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
"erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
"forge-std/=lib/forge-std/src/",
"halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/",
"openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
"openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/",
"openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/"
],
"optimizer": {
"enabled": true,
"runs": 1000000
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "cancun",
"viaIR": false
}
}}
Submitted on: 2025-09-24 20:19:18
Comments
Log in to comment.
No comments yet.