编译器
0.6.12+commit.27d51765
文件 1 的 5:Context.sol
pragma solidity >=0.6.0 <0.8.0;
abstract contract Context {
function _msgSender() internal view virtual returns (address payable) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes memory) {
this;
return msg.data;
}
}
文件 2 的 5:IWooAccessManager.sol
pragma solidity =0.6.12;
pragma experimental ABIEncoderV2;
interface IWooAccessManager {
event FeeAdminUpdated(address indexed feeAdmin, bool flag);
event VaultAdminUpdated(address indexed vaultAdmin, bool flag);
event RebateAdminUpdated(address indexed rebateAdmin, bool flag);
event ZeroFeeVaultUpdated(address indexed vault, bool flag);
function isFeeAdmin(address feeAdmin) external returns (bool);
function isVaultAdmin(address vaultAdmin) external returns (bool);
function isRebateAdmin(address rebateAdmin) external returns (bool);
function isZeroFeeVault(address vault) external returns (bool);
function setFeeAdmin(address feeAdmin, bool flag) external;
function batchSetFeeAdmin(address[] calldata feeAdmins, bool[] calldata flags) external;
function setVaultAdmin(address vaultAdmin, bool flag) external;
function batchSetVaultAdmin(address[] calldata vaultAdmins, bool[] calldata flags) external;
function setRebateAdmin(address rebateAdmin, bool flag) external;
function batchSetRebateAdmin(address[] calldata rebateAdmins, bool[] calldata flags) external;
function setZeroFeeVault(address vault, bool flag) external;
function batchSetZeroFeeVault(address[] calldata vaults, bool[] calldata flags) external;
}
文件 3 的 5:Ownable.sol
pragma solidity >=0.6.0 <0.8.0;
import "../utils/Context.sol";
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () internal {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view virtual returns (address) {
return _owner;
}
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
文件 4 的 5:Pausable.sol
pragma solidity >=0.6.0 <0.8.0;
import "./Context.sol";
abstract contract Pausable is Context {
event Paused(address account);
event Unpaused(address account);
bool private _paused;
constructor () internal {
_paused = false;
}
function paused() public view virtual returns (bool) {
return _paused;
}
modifier whenNotPaused() {
require(!paused(), "Pausable: paused");
_;
}
modifier whenPaused() {
require(paused(), "Pausable: not paused");
_;
}
function _pause() internal virtual whenNotPaused {
_paused = true;
emit Paused(_msgSender());
}
function _unpause() internal virtual whenPaused {
_paused = false;
emit Unpaused(_msgSender());
}
}
文件 5 的 5:WooAccessManager.sol
pragma solidity 0.6.12;
import '@openzeppelin/contracts/access/Ownable.sol';
import '@openzeppelin/contracts/utils/Pausable.sol';
import './interfaces/IWooAccessManager.sol';
contract WooAccessManager is IWooAccessManager, Ownable, Pausable {
mapping(address => bool) public override isFeeAdmin;
mapping(address => bool) public override isVaultAdmin;
mapping(address => bool) public override isRebateAdmin;
mapping(address => bool) public override isZeroFeeVault;
function setFeeAdmin(address feeAdmin, bool flag) external override onlyOwner whenNotPaused {
require(feeAdmin != address(0), 'WooAccessManager: feeAdmin_ZERO_ADDR');
isFeeAdmin[feeAdmin] = flag;
emit FeeAdminUpdated(feeAdmin, flag);
}
function batchSetFeeAdmin(address[] calldata feeAdmins, bool[] calldata flags)
external
override
onlyOwner
whenNotPaused
{
require(feeAdmins.length == flags.length, 'WooAccessManager: length_INVALID');
for (uint256 i = 0; i < feeAdmins.length; i++) {
require(feeAdmins[i] != address(0), 'WooAccessManager: feeAdmin_ZERO_ADDR');
isFeeAdmin[feeAdmins[i]] = flags[i];
emit FeeAdminUpdated(feeAdmins[i], flags[i]);
}
}
function setVaultAdmin(address vaultAdmin, bool flag) external override onlyOwner whenNotPaused {
require(vaultAdmin != address(0), 'WooAccessManager: vaultAdmin_ZERO_ADDR');
isVaultAdmin[vaultAdmin] = flag;
emit VaultAdminUpdated(vaultAdmin, flag);
}
function batchSetVaultAdmin(address[] calldata vaultAdmins, bool[] calldata flags)
external
override
onlyOwner
whenNotPaused
{
require(vaultAdmins.length == flags.length, 'WooAccessManager: length_INVALID');
for (uint256 i = 0; i < vaultAdmins.length; i++) {
require(vaultAdmins[i] != address(0), 'WooAccessManager: vaultAdmin_ZERO_ADDR');
isVaultAdmin[vaultAdmins[i]] = flags[i];
emit VaultAdminUpdated(vaultAdmins[i], flags[i]);
}
}
function setRebateAdmin(address rebateAdmin, bool flag) external override onlyOwner whenNotPaused {
require(rebateAdmin != address(0), 'WooAccessManager: rebateAdmin_ZERO_ADDR');
isRebateAdmin[rebateAdmin] = flag;
emit RebateAdminUpdated(rebateAdmin, flag);
}
function batchSetRebateAdmin(address[] calldata rebateAdmins, bool[] calldata flags)
external
override
onlyOwner
whenNotPaused
{
require(rebateAdmins.length == flags.length, 'WooAccessManager: length_INVALID');
for (uint256 i = 0; i < rebateAdmins.length; i++) {
require(rebateAdmins[i] != address(0), 'WooAccessManager: rebateAdmin_ZERO_ADDR');
isRebateAdmin[rebateAdmins[i]] = flags[i];
emit RebateAdminUpdated(rebateAdmins[i], flags[i]);
}
}
function setZeroFeeVault(address vault, bool flag) external override onlyOwner whenNotPaused {
require(vault != address(0), 'WooAccessManager: vault_ZERO_ADDR');
isZeroFeeVault[vault] = flag;
emit ZeroFeeVaultUpdated(vault, flag);
}
function batchSetZeroFeeVault(address[] calldata vaults, bool[] calldata flags)
external
override
onlyOwner
whenNotPaused
{
require(vaults.length == flags.length, 'WooAccessManager: length_INVALID');
for (uint256 i = 0; i < vaults.length; i++) {
require(vaults[i] != address(0), 'WooAccessManager: vault_ZERO_ADDR');
isZeroFeeVault[vaults[i]] = flags[i];
emit ZeroFeeVaultUpdated(vaults[i], flags[i]);
}
}
function pause() external onlyOwner {
super._pause();
}
function unpause() external onlyOwner {
super._unpause();
}
}
{
"compilationTarget": {
"contracts/WooAccessManager.sol": "WooAccessManager"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
}
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"feeAdmin","type":"address"},{"indexed":false,"internalType":"bool","name":"flag","type":"bool"}],"name":"FeeAdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"rebateAdmin","type":"address"},{"indexed":false,"internalType":"bool","name":"flag","type":"bool"}],"name":"RebateAdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"vaultAdmin","type":"address"},{"indexed":false,"internalType":"bool","name":"flag","type":"bool"}],"name":"VaultAdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"vault","type":"address"},{"indexed":false,"internalType":"bool","name":"flag","type":"bool"}],"name":"ZeroFeeVaultUpdated","type":"event"},{"inputs":[{"internalType":"address[]","name":"feeAdmins","type":"address[]"},{"internalType":"bool[]","name":"flags","type":"bool[]"}],"name":"batchSetFeeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"rebateAdmins","type":"address[]"},{"internalType":"bool[]","name":"flags","type":"bool[]"}],"name":"batchSetRebateAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"vaultAdmins","type":"address[]"},{"internalType":"bool[]","name":"flags","type":"bool[]"}],"name":"batchSetVaultAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"vaults","type":"address[]"},{"internalType":"bool[]","name":"flags","type":"bool[]"}],"name":"batchSetZeroFeeVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isRebateAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isVaultAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isZeroFeeVault","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"feeAdmin","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"setFeeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rebateAdmin","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"setRebateAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"vaultAdmin","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"setVaultAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"setZeroFeeVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]