My Name Tag:
Not Available, login to update
Txn Hash | Method |
Block
|
From
|
To
|
Value | [Txn Fee] | |||
---|---|---|---|---|---|---|---|---|---|
0x09c4bf3ec124732ba58e29ff8538918764f1441d419277e780d45024cce060fb | Transfer Ownersh... | 1012199 | 566 days 17 hrs ago | Moonwell Artemis: Deployer | IN | Moonwell Artemis: Ecosystem Reserve Controller V1 | 0 GLMR | 0.002615046 | |
0xdbbaf99f5623dd844c32b5970d1f6f73fd78d67af3d9ade27275b98a5cd72e80 | Approve | 1012198 | 566 days 17 hrs ago | Moonwell Artemis: Deployer | IN | Moonwell Artemis: Ecosystem Reserve Controller V1 | 0 GLMR | 0.006842927 | |
0xfe01f0a8ef8132bf3bd6f52e9314f8e81b9426480ad5688914be67e0e0735cef | Set Ecosystem Re... | 1012185 | 566 days 17 hrs ago | Moonwell Artemis: Deployer | IN | Moonwell Artemis: Ecosystem Reserve Controller V1 | 0 GLMR | 0.005107146143 | |
0xe6ec88b72e8ad1ffc35c7e6b4957fa2b2ce3cb363ab593b9464463341dc0b412 | 0x60806040 | 1012173 | 566 days 17 hrs ago | Moonwell Artemis: Deployer | IN | Create: EcosystemReserveController | 0 GLMR | 0.073279617794 |
[ Download CSV Export ]
Contract Name:
EcosystemReserveController
Compiler Version
v0.6.12+commit.27d51765
Optimization Enabled:
Yes with 999999 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: agpl-3.0 pragma solidity 0.6.12; import "./interfaces/IEcosystemReserve.sol"; import "./interfaces/IERC20.sol"; import {Ownable} from "./libraries/Ownable.sol"; /* * @title EcosystemReserveController * @dev Proxy smart contract to control the EcosystemReserve, in order for the governance to call its * user-face functions (as the governance is also the proxy admin of the EcosystemReserve) * @author Moonwell */ contract EcosystemReserveController is Ownable { IEcosystemReserve public ECOSYSTEM_RESERVE; bool public initialized; function setEcosystemReserve(address ecosystemReserve) external onlyOwner { require(!initialized, "ECOSYSTEM_RESERVE has been initialized"); initialized = true; ECOSYSTEM_RESERVE = IEcosystemReserve(ecosystemReserve); } function approve(IERC20 token, address recipient, uint256 amount) external onlyOwner { ECOSYSTEM_RESERVE.approve(token, recipient, amount); } function transfer(IERC20 token, address recipient, uint256 amount) external onlyOwner { ECOSYSTEM_RESERVE.transfer(token, recipient, amount); } function setFundsAdmin(address admin) external onlyOwner { ECOSYSTEM_RESERVE.setFundsAdmin(admin); } }
// SPDX-License-Identifier: agpl-3.0 pragma solidity 0.6.12; import "../interfaces/IERC20.sol"; interface IEcosystemReserve { function approve(IERC20 token, address recipient, uint256 amount) external; function transfer(IERC20 token, address recipient, uint256 amount) external; function setFundsAdmin(address admin) external; }
// SPDX-License-Identifier: agpl-3.0 pragma solidity 0.6.12; /** * @dev Interface of the ERC20 standard as defined in the EIP. * From https://github.com/OpenZeppelin/openzeppelin-contracts */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: agpl-3.0 pragma solidity 0.6.12; import {Context} from "./Context.sol"; /** * @dev From https://github.com/OpenZeppelin/openzeppelin-contracts * 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. */ contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() public { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view 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 { emit OwnershipTransferred(_owner, address(0)); _owner = 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'); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
// SPDX-License-Identifier: agpl-3.0 pragma solidity 0.6.12; /** * @dev From https://github.com/OpenZeppelin/openzeppelin-contracts * 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 GSN 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 Context { function _msgSender() internal virtual view returns (address payable) { return msg.sender; } function _msgData() internal virtual view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } }
{ "optimizer": { "enabled": true, "runs": 999999 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"ECOSYSTEM_RESERVE","outputs":[{"internalType":"contract IEcosystemReserve","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialized","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"ecosystemReserve","type":"address"}],"name":"setEcosystemReserve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"setFundsAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50600061001b61006a565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006e565b3390565b610a7b8061007d6000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c8063be98900011610076578063e1f21c671161005b578063e1f21c671461017d578063ed0d2371146101c0578063f2fde38b146101f3576100a3565b8063be98900014610107578063beabacc81461013a576100a3565b8063158ef93e146100a85780634f8d2323146100c4578063715018a6146100f55780638da5cb5b146100ff575b600080fd5b6100b0610226565b604080519115158252519081900360200190f35b6100cc610247565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100fd610263565b005b6100cc610363565b6100fd6004803603602081101561011d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661037f565b6100fd6004803603606081101561015057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610506565b6100fd6004803603606081101561019357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610637565b6100fd600480360360208110156101d657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661074b565b6100fd6004803603602081101561020957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661086b565b60015474010000000000000000000000000000000000000000900460ff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b61026b6109f5565b60005473ffffffffffffffffffffffffffffffffffffffff9081169116146102f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6103876109f5565b60005473ffffffffffffffffffffffffffffffffffffffff90811691161461041057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60015474010000000000000000000000000000000000000000900460ff1615610484576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610a206026913960400191505060405180910390fd5b60018054740100000000000000000000000000000000000000007fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909116177fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61050e6109f5565b60005473ffffffffffffffffffffffffffffffffffffffff90811691161461059757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600154604080517fbeabacc800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301528581166024830152604482018590529151919092169163beabacc891606480830192600092919082900301818387803b15801561061a57600080fd5b505af115801561062e573d6000803e3d6000fd5b50505050505050565b61063f6109f5565b60005473ffffffffffffffffffffffffffffffffffffffff9081169116146106c857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600154604080517fe1f21c6700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301528581166024830152604482018590529151919092169163e1f21c6791606480830192600092919082900301818387803b15801561061a57600080fd5b6107536109f5565b60005473ffffffffffffffffffffffffffffffffffffffff9081169116146107dc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600154604080517fed0d237100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529151919092169163ed0d237191602480830192600092919082900301818387803b15801561085057600080fd5b505af1158015610864573d6000803e3d6000fd5b5050505050565b6108736109f5565b60005473ffffffffffffffffffffffffffffffffffffffff9081169116146108fc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610968576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806109fa6026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345434f53595354454d5f5245534552564520686173206265656e20696e697469616c697a6564a2646970667358221220e4d0d9ed6041611d897f528f2c8c19db83975089282653c6797bc050137a74bb64736f6c634300060c0033
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.