Contract
0x749a2A8850C1861aFa1003D876d90C9b730cA58e
2
My Name Tag:
Not Available, login to update
Txn Hash | Method |
Block
|
From
|
To
|
Value | [Txn Fee] | ||
---|---|---|---|---|---|---|---|---|
0x07856bd3cd9b65d0c0e46e0048e91237d39e87d59336f5f7bc11bdd8156726a4 | Initialize | 41560009 | 224 days 7 hrs ago | 0x3bff7fd5aacb1a22e1dd3ddbd8cfb8622a9e9a5b | IN | Fuji DAO: Admin 2 | 0 FTM | 0.000499386951 |
0xc865f75817be3e462da7ed051457dcadfdd2d223d7a191374cdb5a6fec331044 | 0x60806040 | 19165216 | 480 days 12 hrs ago | 0xb98d4d4e205aff4d4755e9df19bd0b8bd4e0f148 | IN | Create: FujiAdmin | 0 FTM | 0.240590935948 |
[ Download CSV Export ]
Latest 1 internal transaction
Parent Txn Hash | Block | From | To | Value | |||
---|---|---|---|---|---|---|---|
0xc865f75817be3e462da7ed051457dcadfdd2d223d7a191374cdb5a6fec331044 | 19165216 | 480 days 12 hrs ago | 0xb98d4d4e205aff4d4755e9df19bd0b8bd4e0f148 | Contract Creation | 0 FTM |
[ Download CSV Export ]
Contract Name:
FujiAdmin
Compiler Version
v0.8.0+commit.c7dfd78e
Optimization Enabled:
Yes with 1000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; import "./interfaces/IFujiAdmin.sol"; import "./libraries/Errors.sol"; contract FujiAdmin is IFujiAdmin, OwnableUpgradeable { address private _flasher; address private _fliquidator; address payable private _ftreasury; address private _controller; address private _vaultHarvester; mapping(address => bool) public override validVault; address private _swapper; function initialize() external initializer { __Ownable_init(); } // Setter Functions /** * @dev Sets the flasher contract address * @param _newFlasher: flasher address */ function setFlasher(address _newFlasher) external onlyOwner { require(_newFlasher != address(0), Errors.VL_ZERO_ADDR); _flasher = _newFlasher; } /** * @dev Sets the fliquidator contract address * @param _newFliquidator: new fliquidator address */ function setFliquidator(address _newFliquidator) external onlyOwner { require(_newFliquidator != address(0), Errors.VL_ZERO_ADDR); _fliquidator = _newFliquidator; } /** * @dev Sets the Treasury contract address * @param _newTreasury: new Fuji Treasury address */ function setTreasury(address payable _newTreasury) external onlyOwner { require(_newTreasury != address(0), Errors.VL_ZERO_ADDR); _ftreasury = _newTreasury; } /** * @dev Sets the controller contract address. * @param _newController: controller address */ function setController(address _newController) external onlyOwner { require(_newController != address(0), Errors.VL_ZERO_ADDR); _controller = _newController; } /** * @dev Sets the VaultHarvester address * @param _newVaultHarverster: controller address */ function setVaultHarvester(address _newVaultHarverster) external onlyOwner { require(_newVaultHarverster != address(0), Errors.VL_ZERO_ADDR); _vaultHarvester = _newVaultHarverster; } /** * @dev Sets the Swapper address * @param _newSwapper: controller address */ function setSwapper(address _newSwapper) external onlyOwner { require(_newSwapper != address(0), Errors.VL_ZERO_ADDR); _swapper = _newSwapper; } /** * @dev Adds a Vault. * @param _vaultAddr: Address of vault to be added */ function allowVault(address _vaultAddr, bool _allowed) external onlyOwner { validVault[_vaultAddr] = _allowed; } // Getter Functions function getFlasher() external view override returns (address) { return _flasher; } function getFliquidator() external view override returns (address) { return _fliquidator; } function getTreasury() external view override returns (address payable) { return _ftreasury; } function getController() external view override returns (address) { return _controller; } function getVaultHarvester() external view override returns (address) { return _vaultHarvester; } function getSwapper() external view override returns (address) { return _swapper; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../utils/ContextUpgradeable.sol"; import "../proxy/utils/Initializable.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract OwnableUpgradeable is Initializable, ContextUpgradeable { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ function __Ownable_init() internal initializer { __Context_init_unchained(); __Ownable_init_unchained(); } function __Ownable_init_unchained() internal initializer { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } uint256[49] private __gap; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IFujiAdmin { function validVault(address _vaultAddr) external view returns (bool); function getFlasher() external view returns (address); function getFliquidator() external view returns (address); function getController() external view returns (address); function getTreasury() external view returns (address payable); function getVaultHarvester() external view returns (address); function getSwapper() external view returns (address); }
// SPDX-License-Identifier: agpl-3.0 pragma solidity ^0.8.0; /** * @title Errors library * @author Fuji * @notice Defines the error messages emitted by the different contracts of the Aave protocol * @dev Error messages prefix glossary: * - VL = Validation Logic 100 series * - MATH = Math libraries 200 series * - RF = Refinancing 300 series * - VLT = vault 400 series * - SP = Special 900 series */ library Errors { //Errors string public constant VL_INDEX_OVERFLOW = "100"; // index overflows uint128 string public constant VL_INVALID_MINT_AMOUNT = "101"; //invalid amount to mint string public constant VL_INVALID_BURN_AMOUNT = "102"; //invalid amount to burn string public constant VL_AMOUNT_ERROR = "103"; //Input value >0, and for ETH msg.value and amount shall match string public constant VL_INVALID_WITHDRAW_AMOUNT = "104"; //Withdraw amount exceeds provided collateral, or falls undercollaterized string public constant VL_INVALID_BORROW_AMOUNT = "105"; //Borrow amount does not meet collaterization string public constant VL_NO_DEBT_TO_PAYBACK = "106"; //Msg sender has no debt amount to be payback string public constant VL_MISSING_ERC20_ALLOWANCE = "107"; //Msg sender has not approved ERC20 full amount to transfer string public constant VL_USER_NOT_LIQUIDATABLE = "108"; //User debt position is not liquidatable string public constant VL_DEBT_LESS_THAN_AMOUNT = "109"; //User debt is less than amount to partial close string public constant VL_PROVIDER_ALREADY_ADDED = "110"; // Provider is already added in Provider Array string public constant VL_NOT_AUTHORIZED = "111"; //Not authorized string public constant VL_INVALID_COLLATERAL = "112"; //There is no Collateral, or Collateral is not in active in vault string public constant VL_NO_ERC20_BALANCE = "113"; //User does not have ERC20 balance string public constant VL_INPUT_ERROR = "114"; //Check inputs. For ERC1155 batch functions, array sizes should match. string public constant VL_ASSET_EXISTS = "115"; //Asset intended to be added already exists in FujiERC1155 string public constant VL_ZERO_ADDR_1155 = "116"; //ERC1155: balance/transfer for zero address string public constant VL_NOT_A_CONTRACT = "117"; //Address is not a contract. string public constant VL_INVALID_ASSETID_1155 = "118"; //ERC1155 Asset ID is invalid. string public constant VL_NO_ERC1155_BALANCE = "119"; //ERC1155: insufficient balance for transfer. string public constant VL_MISSING_ERC1155_APPROVAL = "120"; //ERC1155: transfer caller is not owner nor approved. string public constant VL_RECEIVER_REJECT_1155 = "121"; //ERC1155Receiver rejected tokens string public constant VL_RECEIVER_CONTRACT_NON_1155 = "122"; //ERC1155: transfer to non ERC1155Receiver implementer string public constant VL_OPTIMIZER_FEE_SMALL = "123"; //Fuji OptimizerFee has to be > 1 RAY (1e27) string public constant VL_UNDERCOLLATERIZED_ERROR = "124"; // Flashloan-Flashclose cannot be used when User's collateral is worth less than intended debt position to close. string public constant VL_MINIMUM_PAYBACK_ERROR = "125"; // Minimum Amount payback should be at least Fuji Optimizerfee accrued interest. string public constant VL_HARVESTING_FAILED = "126"; // Harvesting Function failed, check provided _farmProtocolNum or no claimable balance. string public constant VL_FLASHLOAN_FAILED = "127"; // Flashloan failed string public constant VL_ERC1155_NOT_TRANSFERABLE = "128"; // ERC1155: Not Transferable string public constant VL_SWAP_SLIPPAGE_LIMIT_EXCEED = "129"; // ERC1155: Not Transferable string public constant VL_ZERO_ADDR = "130"; // Zero Address string public constant MATH_DIVISION_BY_ZERO = "201"; string public constant MATH_ADDITION_OVERFLOW = "202"; string public constant MATH_MULTIPLICATION_OVERFLOW = "203"; string public constant RF_INVALID_RATIO_VALUES = "301"; // Ratio Value provided is invalid, _ratioA/_ratioB <= 1, and > 0, or activeProvider borrowBalance = 0 string public constant VLT_CALLER_MUST_BE_VAULT = "401"; // The caller of this function must be a vault string public constant ORACLE_INVALID_LENGTH = "501"; // The assets length and price feeds length doesn't match string public constant ORACLE_NONE_PRICE_FEED = "502"; // The price feed is not found }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../proxy/utils/Initializable.sol"; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract ContextUpgradeable is Initializable { function __Context_init() internal initializer { __Context_init_unchained(); } function __Context_init_unchained() internal initializer { } function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } uint256[50] private __gap; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed * behind a proxy. Since a proxied contract can't have a constructor, it's common to move constructor logic to an * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. * * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. * * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. */ abstract contract Initializable { /** * @dev Indicates that the contract has been initialized. */ bool private _initialized; /** * @dev Indicates that the contract is in the process of being initialized. */ bool private _initializing; /** * @dev Modifier to protect an initializer function from being invoked twice. */ modifier initializer() { require(_initializing || !_initialized, "Initializable: contract is already initialized"); bool isTopLevelCall = !_initializing; if (isTopLevelCall) { _initializing = true; _initialized = true; } _; if (isTopLevelCall) { _initializing = false; } } }
{ "optimizer": { "enabled": true, "runs": 1000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"_vaultAddr","type":"address"},{"internalType":"bool","name":"_allowed","type":"bool"}],"name":"allowVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getController","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFlasher","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFliquidator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSwapper","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTreasury","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVaultHarvester","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newController","type":"address"}],"name":"setController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newFlasher","type":"address"}],"name":"setFlasher","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newFliquidator","type":"address"}],"name":"setFliquidator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newSwapper","type":"address"}],"name":"setSwapper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newTreasury","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newVaultHarverster","type":"address"}],"name":"setVaultHarvester","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"validVault","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50610c00806100206000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c80638129fc1c116100b2578063b8491a8411610081578063f018467d11610066578063f018467d1461021a578063f0f442601461022d578063f2fde38b1461024057610136565b8063b8491a84146101ff578063e43fa4111461020757610136565b80638129fc1c146101c95780638da5cb5b146101d157806392eefe9b146101d95780639c82f2a4146101ec57610136565b806343ad12af1161010957806368f1ecc3116100ee57806368f1ecc3146101b1578063715018a6146101b95780637fabc90b146101c157610136565b806343ad12af14610196578063536fcd1b1461019e57610136565b80630f6ec81f1461013b5780632c793d45146101645780633018205f146101795780633b19e84a1461018e575b600080fd5b61014e6101493660046109f5565b610253565b60405161015b9190610a68565b60405180910390f35b610177610172366004610a18565b610268565b005b6101816102db565b60405161015b9190610a54565b6101816102ea565b6101816102f9565b6101776101ac3660046109f5565b610308565b6101816103ab565b6101776103ba565b610181610405565b610177610414565b610181610491565b6101776101e73660046109f5565b6104a0565b6101776101fa3660046109f5565b610543565b6101816105e6565b6101776102153660046109f5565b6105f5565b6101776102283660046109f5565b610698565b61017761023b3660046109f5565b61073b565b61017761024e3660046109f5565b6107de565b606a6020526000908152604090205460ff1681565b61027061084c565b6001600160a01b0316610281610491565b6001600160a01b0316146102b05760405162461bcd60e51b81526004016102a790610b80565b60405180910390fd5b6001600160a01b03919091166000908152606a60205260409020805460ff1916911515919091179055565b6068546001600160a01b031690565b6067546001600160a01b031690565b606b546001600160a01b031690565b61031061084c565b6001600160a01b0316610321610491565b6001600160a01b0316146103475760405162461bcd60e51b81526004016102a790610b80565b60408051808201909152600381526203133360ec1b60208201526001600160a01b0382166103885760405162461bcd60e51b81526004016102a79190610a73565b50606580546001600160a01b0319166001600160a01b0392909216919091179055565b6069546001600160a01b031690565b6103c261084c565b6001600160a01b03166103d3610491565b6001600160a01b0316146103f95760405162461bcd60e51b81526004016102a790610b80565b6104036000610850565b565b6065546001600160a01b031690565b600054610100900460ff168061042d575060005460ff16155b6104495760405162461bcd60e51b81526004016102a790610b23565b600054610100900460ff16158015610474576000805460ff1961ff0019909116610100171660011790555b61047c6108a2565b801561048e576000805461ff00191690555b50565b6033546001600160a01b031690565b6104a861084c565b6001600160a01b03166104b9610491565b6001600160a01b0316146104df5760405162461bcd60e51b81526004016102a790610b80565b60408051808201909152600381526203133360ec1b60208201526001600160a01b0382166105205760405162461bcd60e51b81526004016102a79190610a73565b50606880546001600160a01b0319166001600160a01b0392909216919091179055565b61054b61084c565b6001600160a01b031661055c610491565b6001600160a01b0316146105825760405162461bcd60e51b81526004016102a790610b80565b60408051808201909152600381526203133360ec1b60208201526001600160a01b0382166105c35760405162461bcd60e51b81526004016102a79190610a73565b50606b80546001600160a01b0319166001600160a01b0392909216919091179055565b6066546001600160a01b031690565b6105fd61084c565b6001600160a01b031661060e610491565b6001600160a01b0316146106345760405162461bcd60e51b81526004016102a790610b80565b60408051808201909152600381526203133360ec1b60208201526001600160a01b0382166106755760405162461bcd60e51b81526004016102a79190610a73565b50606980546001600160a01b0319166001600160a01b0392909216919091179055565b6106a061084c565b6001600160a01b03166106b1610491565b6001600160a01b0316146106d75760405162461bcd60e51b81526004016102a790610b80565b60408051808201909152600381526203133360ec1b60208201526001600160a01b0382166107185760405162461bcd60e51b81526004016102a79190610a73565b50606680546001600160a01b0319166001600160a01b0392909216919091179055565b61074361084c565b6001600160a01b0316610754610491565b6001600160a01b03161461077a5760405162461bcd60e51b81526004016102a790610b80565b60408051808201909152600381526203133360ec1b60208201526001600160a01b0382166107bb5760405162461bcd60e51b81526004016102a79190610a73565b50606780546001600160a01b0319166001600160a01b0392909216919091179055565b6107e661084c565b6001600160a01b03166107f7610491565b6001600160a01b03161461081d5760405162461bcd60e51b81526004016102a790610b80565b6001600160a01b0381166108435760405162461bcd60e51b81526004016102a790610ac6565b61048e81610850565b3390565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16806108bb575060005460ff16155b6108d75760405162461bcd60e51b81526004016102a790610b23565b600054610100900460ff16158015610902576000805460ff1961ff0019909116610100171660011790555b61090a610912565b61047c610985565b600054610100900460ff168061092b575060005460ff16155b6109475760405162461bcd60e51b81526004016102a790610b23565b600054610100900460ff1615801561047c576000805460ff1961ff001990911661010017166001179055801561048e576000805461ff001916905550565b600054610100900460ff168061099e575060005460ff16155b6109ba5760405162461bcd60e51b81526004016102a790610b23565b600054610100900460ff161580156109e5576000805460ff1961ff0019909116610100171660011790555b61047c6109f061084c565b610850565b600060208284031215610a06578081fd5b8135610a1181610bb5565b9392505050565b60008060408385031215610a2a578081fd5b8235610a3581610bb5565b915060208301358015158114610a49578182fd5b809150509250929050565b6001600160a01b0391909116815260200190565b901515815260200190565b6000602080835283518082850152825b81811015610a9f57858101830151858201604001528201610a83565b81811115610ab05783604083870101525b50601f01601f1916929092016040019392505050565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201527f6464726573730000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201527f647920696e697469616c697a6564000000000000000000000000000000000000606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6001600160a01b038116811461048e57600080fdfea2646970667358221220a45e74196cecd2ae24b3a85a7fac67b60b47ef7e65ac632b55b38e119a2d0a9d64736f6c63430008000033
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Validator ID :
0 FTM
Amount Staked
0
Amount Delegated
0
Staking Total
0
Staking Start Epoch
0
Staking Start Time
0
Proof of Importance
0
Origination Score
0
Validation Score
0
Active
0
Online
0
Downtime
0 s
Address | Amount | claimed Rewards | Created On Epoch | Created On |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.