File 1 of 1: MinimalBeaconProxy.sol
pragma solidity >=0.8.0;
contract MinimalBeaconProxy {
bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;
constructor() {
assembly {
sstore(BEACON_SLOT, 0x23BEE5B5438C0e32beD44B320F0F12fc48326252)
}
}
fallback() external payable virtual {
assembly {
let p := mload(0x40)
mstore(p, 0xd2c7c2a400000000000000000000000000000000000000000000000000000000)
mstore(add(p, 4), 0x0001)
let result := staticcall(gas(), 0xFD513630F697A9C1731F196185fb9ebA6eAAc20B, p, 0x24, 0x80, 0x20)
if iszero(result) {
revert(0, returndatasize())
}
let impl := mload(0x80)
calldatacopy(0, 0, calldatasize())
result := delegatecall(gas(), impl, 0, calldatasize(), 0, 0)
returndatacopy(0, 0, returndatasize())
switch result
case 0 {
revert(0, returndatasize())
}
default {
return(0, returndatasize())
}
}
}
}
{
"compilationTarget": {
"MinimalBeaconProxy.sol": "MinimalBeaconProxy"
},
"evmVersion": "paris",
"libraries": {},
"metadata": {
"bytecodeHash": "none"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
}