编译器
0.8.21+commit.d9974bed
文件 1 的 2:Owned.sol
pragma solidity >=0.8.0;
abstract contract Owned {
event OwnershipTransferred(address indexed user, address indexed newOwner);
address public owner;
modifier onlyOwner() virtual {
require(msg.sender == owner, "UNAUTHORIZED");
_;
}
constructor(address _owner) {
owner = _owner;
emit OwnershipTransferred(address(0), _owner);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
owner = newOwner;
emit OwnershipTransferred(msg.sender, newOwner);
}
}
文件 2 的 2:miniDeployer.sol
pragma solidity 0.8.21;
import { Owned } from "solmate/src/auth/Owned.sol";
contract MiniDeployer is Owned {
error MiniDeployer__InvalidOperation();
event LogContractDeployed(address indexed contractAddress);
constructor(address owner_) Owned(owner_) {}
function _deploy(bytes memory bytecode_) internal returns (address address_) {
if (bytecode_.length == 0) {
revert MiniDeployer__InvalidOperation();
}
assembly {
address_ := create(0, add(bytecode_, 0x20), mload(bytecode_))
}
if (address_ == address(0)) {
revert MiniDeployer__InvalidOperation();
}
}
function deployContract(bytes calldata contractCode_) external onlyOwner returns (address contractAddress_) {
contractAddress_ = _deploy(contractCode_);
emit LogContractDeployed(contractAddress_);
}
}
{
"compilationTarget": {
"contracts/protocols/dex/factory/deploymentHelpers/miniDeployer.sol": "MiniDeployer"
},
"evmVersion": "paris",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs",
"useLiteralContent": true
},
"optimizer": {
"enabled": true,
"runs": 10000000
},
"remappings": []
}
[{"inputs":[{"internalType":"address","name":"owner_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"MiniDeployer__InvalidOperation","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"}],"name":"LogContractDeployed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"bytes","name":"contractCode_","type":"bytes"}],"name":"deployContract","outputs":[{"internalType":"address","name":"contractAddress_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]