文件 1 的 2:NutBerryEvents.sol
pragma solidity >=0.7.6;
interface NutBerryEvents {
event BlockBeacon();
event CustomBlockBeacon();
event NewSolution();
event RollupUpgrade(address target);
}
文件 2 的 2:RollupProxy.sol
pragma solidity >=0.7.6;
import '@NutBerry/NutBerry/src/tsm/contracts/NutBerryEvents.sol';
contract RollupProxy is NutBerryEvents {
constructor (address initialImplementation) {
assembly {
sstore(not(returndatasize()), initialImplementation)
sstore(0x319a610c8254af7ecb1f669fb64fa36285b80cad26faf7087184ce1dceb114df, number())
}
emit NutBerryEvents.RollupUpgrade(initialImplementation);
}
fallback () external payable {
assembly {
calldatacopy(returndatasize(), returndatasize(), calldatasize())
let zero := returndatasize()
let success := delegatecall(
gas(),
sload(not(returndatasize())),
returndatasize(),
calldatasize(),
returndatasize(),
returndatasize()
)
returndatacopy(zero, zero, returndatasize())
if success {
return(zero, returndatasize())
}
revert(zero, returndatasize())
}
}
}
{
"compilationTarget": {
"src/rollup/contracts/RollupProxy.sol": "RollupProxy"
},
"evmVersion": "berlin",
"libraries": {},
"metadata": {
"bytecodeHash": "none"
},
"optimizer": {
"details": {
"constantOptimizer": true,
"cse": true,
"deduplicate": true,
"jumpdestRemover": true,
"orderLiterals": false,
"peephole": true,
"yul": false
},
"runs": 256
},
"remappings": []
}
[{"inputs":[{"internalType":"address","name":"initialImplementation","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[],"name":"BlockBeacon","type":"event"},{"anonymous":false,"inputs":[],"name":"CustomBlockBeacon","type":"event"},{"anonymous":false,"inputs":[],"name":"NewSolution","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"target","type":"address"}],"name":"RollupUpgrade","type":"event"},{"stateMutability":"payable","type":"fallback"}]