Contract Overview
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Contract Name:
CheeseFactory
Compiler Version
v0.8.11+commit.d7f03943
Contract Source Code (Solidity)
/** *Submitted for verification at snowtrace.io on 2022-02-23 */ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.10; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } // File: @openzeppelin/contracts/utils/Context.sol pragma solidity ^0.8.0; /** * @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 Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol pragma solidity ^0.8.0; /** * @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 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() { _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); } } abstract contract ReentrancyGuard { uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } modifier nonReentrant() { require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); _status = _ENTERED; _; _status = _NOT_ENTERED; } } contract CheeseFactory is Ownable, ReentrancyGuard { address[] public depositors; mapping (address => uint) public addressToDeposited; uint public totalDeposits; IERC20 milkContract = IERC20(0x46ABB394b656A07a34272fAbAaE520f696307A0E); constructor(){ } function depositToken(uint _amount) public nonReentrant { milkContract.transferFrom(msg.sender,address(this),_amount); if (addressToDeposited[msg.sender] == 0) { depositors.push(msg.sender); } addressToDeposited[msg.sender] += _amount; totalDeposits += _amount; } function withdrawMilk(uint _amount) public onlyOwner { milkContract.transfer(msg.sender, _amount); } function getUserDeposited() public view returns(uint) { return addressToDeposited[msg.sender]; } function getCurrentDepositors() public view returns(address[] memory) { return depositors; } function getdepositorCount() public view returns(uint) { return depositors.length; } function getTotalDeposits() public view returns(uint) { return totalDeposits; } }
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"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":"","type":"address"}],"name":"addressToDeposited","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"depositToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"depositors","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentDepositors","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUserDeposited","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getdepositorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"totalDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawMilk","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052600580546001600160a01b0319167346abb394b656a07a34272fabaae520f696307a0e17905534801561003657600080fd5b5061004033610049565b60018055610099565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6106b3806100a86000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80638e733c59116100715780638e733c591461013b5780639b1e8ac214610143578063e4b2fb7914610158578063e758b5a61461016b578063eb1391c91461017e578063f2fde38b1461019357600080fd5b8063168a4822146100b95780633f69085f146100d05780636215be77146100f0578063715018a6146101055780637d8820971461010d5780638da5cb5b14610116575b600080fd5b6004545b6040519081526020015b60405180910390f35b6100bd6100de36600461056a565b60036020526000908152604090205481565b6101036100fe36600461059a565b6101a6565b005b61010361031a565b6100bd60045481565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100c7565b6002546100bd565b61014b610350565b6040516100c791906105b3565b61012361016636600461059a565b6103b2565b61010361017936600461059a565b6103dc565b336000908152600360205260409020546100bd565b6101036101a136600461056a565b61047f565b600260015414156101fe5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026001556005546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561025a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027e9190610600565b50336000908152600360205260409020546102d657600280546001810182556000919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b031916331790555b33600090815260036020526040812080548392906102f5908490610622565b92505081905550806004600082825461030e9190610622565b90915550506001805550565b6000546001600160a01b031633146103445760405162461bcd60e51b81526004016101f590610648565b61034e600061051a565b565b606060028054806020026020016040519081016040528092919081815260200182805480156103a857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161038a575b5050505050905090565b600281815481106103c257600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b031633146104065760405162461bcd60e51b81526004016101f590610648565b60055460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610457573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047b9190610600565b5050565b6000546001600160a01b031633146104a95760405162461bcd60e51b81526004016101f590610648565b6001600160a01b03811661050e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101f5565b6105178161051a565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561057c57600080fd5b81356001600160a01b038116811461059357600080fd5b9392505050565b6000602082840312156105ac57600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b818110156105f45783516001600160a01b0316835292840192918401916001016105cf565b50909695505050505050565b60006020828403121561061257600080fd5b8151801515811461059357600080fd5b6000821982111561064357634e487b7160e01b600052601160045260246000fd5b500190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260408201526060019056fea264697066735822122032cc9748971f00c077f80988f48cccf5fcb8739c896dc530775dcf9af0b10ed364736f6c634300080b0033
Deployed ByteCode Sourcemap
4244:1240:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5389:90;5458:13;;5389:90;;;160:25:1;;;148:2;133:18;5389:90:0;;;;;;;;4341:51;;;;;;:::i;:::-;;;;;;;;;;;;;;4559:341;;;;;;:::i;:::-;;:::i;:::-;;3241:94;;;:::i;4401:25::-;;;;;;2590:87;2636:7;2663:6;-1:-1:-1;;;;;2663:6:0;2590:87;;;-1:-1:-1;;;;;836:32:1;;;818:51;;806:2;791:18;2590:87:0;672:203:1;5281:100:0;5356:10;:17;5281:100;;5161:108;;;:::i;:::-;;;;;;;:::i;4305:27::-;;;;;;:::i;:::-;;:::i;4908:114::-;;;;;;:::i;:::-;;:::i;5034:115::-;5127:10;5082:4;5108:30;;;:18;:30;;;;;;5034:115;;3490:192;;;;;;:::i;:::-;;:::i;4559:341::-;3989:1;4115:7;;:19;;4107:63;;;;-1:-1:-1;;;4107:63:0;;1745:2:1;4107:63:0;;;1727:21:1;1784:2;1764:18;;;1757:30;1823:33;1803:18;;;1796:61;1874:18;;4107:63:0;;;;;;;;;3989:1;4177:7;:18;4636:12:::1;::::0;:59:::1;::::0;-1:-1:-1;;;4636:59:0;;4662:10:::1;4636:59;::::0;::::1;2143:34:1::0;4681:4:0::1;2193:18:1::0;;;2186:43;2245:18;;;2238:34;;;-1:-1:-1;;;;;4636:12:0;;::::1;::::0;:25:::1;::::0;2078:18:1;;4636:59:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;4731:10:0::1;4712:30;::::0;;;:18:::1;:30;::::0;;;;;4708:95:::1;;4764:10;:27:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;4764:27:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;4764:27:0::1;4780:10;4764:27;::::0;;4708:95:::1;4835:10;4816:30;::::0;;;:18:::1;:30;::::0;;;;:41;;4850:7;;4816:30;:41:::1;::::0;4850:7;;4816:41:::1;:::i;:::-;;;;;;;;4885:7;4868:13;;:24;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;3948:1:0;4210:22;;-1:-1:-1;4559:341:0:o;3241:94::-;2636:7;2663:6;-1:-1:-1;;;;;2663:6:0;1468:10;2810:23;2802:68;;;;-1:-1:-1;;;2802:68:0;;;;;;;:::i;:::-;3306:21:::1;3324:1;3306:9;:21::i;:::-;3241:94::o:0;5161:108::-;5213:16;5251:10;5244:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5244:17:0;;;;;;;;;;;;;;;;;;;;;;;5161:108;:::o;4305:27::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4305:27:0;;-1:-1:-1;4305:27:0;:::o;4908:114::-;2636:7;2663:6;-1:-1:-1;;;;;2663:6:0;1468:10;2810:23;2802:68;;;;-1:-1:-1;;;2802:68:0;;;;;;;:::i;:::-;4972:12:::1;::::0;:42:::1;::::0;-1:-1:-1;;;4972:42:0;;4994:10:::1;4972:42;::::0;::::1;3330:51:1::0;3397:18;;;3390:34;;;-1:-1:-1;;;;;4972:12:0;;::::1;::::0;:21:::1;::::0;3303:18:1;;4972:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4908:114:::0;:::o;3490:192::-;2636:7;2663:6;-1:-1:-1;;;;;2663:6:0;1468:10;2810:23;2802:68;;;;-1:-1:-1;;;2802:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3579:22:0;::::1;3571:73;;;::::0;-1:-1:-1;;;3571:73:0;;3637:2:1;3571:73:0::1;::::0;::::1;3619:21:1::0;3676:2;3656:18;;;3649:30;3715:34;3695:18;;;3688:62;-1:-1:-1;;;3766:18:1;;;3759:36;3812:19;;3571:73:0::1;3435:402:1::0;3571:73:0::1;3655:19;3665:8;3655:9;:19::i;:::-;3490:192:::0;:::o;3690:173::-;3746:16;3765:6;;-1:-1:-1;;;;;3782:17:0;;;-1:-1:-1;;;;;;3782:17:0;;;;;;3815:40;;3765:6;;;;;;;3815:40;;3746:16;3815:40;3735:128;3690:173;:::o;196:286:1:-;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;350:23;;-1:-1:-1;;;;;402:31:1;;392:42;;382:70;;448:1;445;438:12;382:70;471:5;196:286;-1:-1:-1;;;196:286:1:o;487:180::-;546:6;599:2;587:9;578:7;574:23;570:32;567:52;;;615:1;612;605:12;567:52;-1:-1:-1;638:23:1;;487:180;-1:-1:-1;487:180:1:o;880:658::-;1051:2;1103:21;;;1173:13;;1076:18;;;1195:22;;;1022:4;;1051:2;1274:15;;;;1248:2;1233:18;;;1022:4;1317:195;1331:6;1328:1;1325:13;1317:195;;;1396:13;;-1:-1:-1;;;;;1392:39:1;1380:52;;1487:15;;;;1452:12;;;;1428:1;1346:9;1317:195;;;-1:-1:-1;1529:3:1;;880:658;-1:-1:-1;;;;;;880:658:1:o;2283:277::-;2350:6;2403:2;2391:9;2382:7;2378:23;2374:32;2371:52;;;2419:1;2416;2409:12;2371:52;2451:9;2445:16;2504:5;2497:13;2490:21;2483:5;2480:32;2470:60;;2526:1;2523;2516:12;2565:225;2605:3;2636:1;2632:6;2629:1;2626:13;2623:136;;;2681:10;2676:3;2672:20;2669:1;2662:31;2716:4;2713:1;2706:15;2744:4;2741:1;2734:15;2623:136;-1:-1:-1;2775:9:1;;2565:225::o;2795:356::-;2997:2;2979:21;;;3016:18;;;3009:30;3075:34;3070:2;3055:18;;3048:62;3142:2;3127:18;;2795:356::o
Swarm Source
ipfs://32cc9748971f00c077f80988f48cccf5fcb8739c896dc530775dcf9af0b10ed3
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.