文件 1 的 1:Proxy.sol
pragma solidity 0.8.23;
contract Proxy {
uint256 private constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
constructor(address implementation_) {
if (implementation_ == address(0)) revert();
assembly {
sstore(_IMPLEMENTATION_SLOT, implementation_)
}
}
fallback() external payable virtual {
bytes32 implementation_;
assembly {
implementation_ := sload(_IMPLEMENTATION_SLOT)
}
assembly {
calldatacopy(0, 0, calldatasize())
let result_ := delegatecall(gas(), implementation_, 0, calldatasize(), 0, 0)
returndatacopy(0, 0, returndatasize())
switch result_
case 0 {
revert(0, returndatasize())
}
default {
return(0, returndatasize())
}
}
}
}
{
"compilationTarget": {
"src/Proxy.sol": "Proxy"
},
"evmVersion": "shanghai",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 999999
},
"remappings": [
":common/=lib/common/src/",
":ds-test/=lib/common/lib/forge-std/lib/ds-test/src/",
":forge-std/=lib/forge-std/src/"
]
}