文件 1 的 1:Proxy.sol
pragma solidity ^0.8.4;
contract Proxy {
constructor(address implementation) {
assembly {
sstore(0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc, implementation)
}
(bool success, bytes memory result) = implementation.delegatecall(abi.encodePacked(uint32(0x8129fc1c)));
require(success, "Constructor call failed!");
}
function _delegate() internal virtual {
assembly {
let implementation := sload(0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc)
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())
}
}
}
fallback() external payable virtual {
_delegate();
}
receive() external payable virtual {
_delegate();
}
}
{
"compilationTarget": {
"contracts/Proxy.sol": "Proxy"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
}