Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 21,915 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Participate | 17041380 | 1029 days ago | IN | 0 ETH | 0.00061797 | ||||
| Participate | 17041380 | 1029 days ago | IN | 0 ETH | 0.00056188 | ||||
| Participate | 17041380 | 1029 days ago | IN | 0 ETH | 0.0015898 | ||||
| Participate | 16912112 | 1048 days ago | IN | 0 ETH | 0.00056597 | ||||
| Participate | 15910302 | 1188 days ago | IN | 0 ETH | 0.00073193 | ||||
| Participate | 15717443 | 1215 days ago | IN | 0 ETH | 0.00321561 | ||||
| Participate | 15559332 | 1237 days ago | IN | 0 ETH | 0.00014452 | ||||
| Participate | 15546944 | 1239 days ago | IN | 0 ETH | 0.00037893 | ||||
| Participate | 15546944 | 1239 days ago | IN | 0 ETH | 0.00037893 | ||||
| Participate | 15546944 | 1239 days ago | IN | 0 ETH | 0.00115713 | ||||
| Participate | 15546944 | 1239 days ago | IN | 0 ETH | 0.00087562 | ||||
| Participate | 15247923 | 1286 days ago | IN | 0 ETH | 0.0003258 | ||||
| Participate | 15246532 | 1286 days ago | IN | 0 ETH | 0.00030208 | ||||
| Participate | 15198536 | 1294 days ago | IN | 0 ETH | 0.00028905 | ||||
| Participate | 15197955 | 1294 days ago | IN | 0 ETH | 0.00008683 | ||||
| Participate | 15191846 | 1295 days ago | IN | 0 ETH | 0.00013526 | ||||
| Participate | 15191846 | 1295 days ago | IN | 0 ETH | 0.00434197 | ||||
| Participate | 15068576 | 1314 days ago | IN | 0 ETH | 0.00042733 | ||||
| Participate | 15066594 | 1314 days ago | IN | 0 ETH | 0.00055313 | ||||
| Participate | 15066594 | 1314 days ago | IN | 0 ETH | 0.00171504 | ||||
| Participate | 15066565 | 1314 days ago | IN | 0 ETH | 0.00043358 | ||||
| Participate | 15066228 | 1314 days ago | IN | 0 ETH | 0.00043358 | ||||
| Participate | 15061818 | 1315 days ago | IN | 0 ETH | 0.00050584 | ||||
| Participate | 14865631 | 1349 days ago | IN | 0 ETH | 0.00057811 | ||||
| Participate | 14863251 | 1349 days ago | IN | 0 ETH | 0.00065037 |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
MoonieIDOSignups
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-08-16 */ // Sources flattened with hardhat v2.4.3 https://hardhat.org // File @openzeppelin/contracts/utils/math/[email protected] pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } // File @openzeppelin/contracts/utils/[email protected] pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) private pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File @openzeppelin/contracts/utils/[email protected] pragma solidity ^0.8.0; /** * @title Counters * @author Matt Condon (@shrugs) * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number * of elements in a mapping, issuing ERC721 ids, or counting request ids. * * Include with `using Counters for Counters.Counter;` */ library Counters { struct Counter { // This variable should never be directly accessed by users of the library: interactions must be restricted to // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add // this feature: see https://github.com/ethereum/solidity/issues/4637 uint256 _value; // default: 0 } function current(Counter storage counter) internal view returns (uint256) { return counter._value; } function increment(Counter storage counter) internal { unchecked { counter._value += 1; } } function decrement(Counter storage counter) internal { uint256 value = counter._value; require(value > 0, "Counter: decrement overflow"); unchecked { counter._value = value - 1; } } function reset(Counter storage counter) internal { counter._value = 0; } } // File contracts/ethereum/MoonieIDOSignups.sol pragma solidity 0.8.4; // SPDX-License-Identifier: MIT /** * @title Implementation of the Moonie IDO draw sign-up list. */ contract MoonieIDOSignups { using SafeMath for uint256; using Address for address; using Counters for Counters.Counter; // EVENTS event NewParticipant(address indexed account); // STATE VARIABLES mapping(uint256 => address) _participants; mapping(address => bool) _participating; /** * @dev Ordinal number of the participant. Works like nonce. */ Counters.Counter private _no; // MODIFIERS modifier notContract(address account) { require(!account.isContract(), "MoonieIDOSignups: The address cannot be a contract"); _; } // VIEWS function isParticipating(address account) public view returns (bool) { return _participating[account]; } function numberOfParticipants() public view returns (uint256) { return _no.current(); } function participantsAddress(uint256 no) public view returns (address) { return _participants[no]; } // EXTERNAL FUNCTIONS function participate() external notContract(msg.sender) { require(!isParticipating(msg.sender), "MoonieIDOSignups: The address is already participating"); _participants[_no.current()] = msg.sender; _participating[msg.sender] = true; _no.increment(); emit NewParticipant(msg.sender); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"NewParticipant","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isParticipating","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numberOfParticipants","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"no","type":"uint256"}],"name":"participantsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"participate","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405234801561001057600080fd5b506103b9806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806342c2f5bc146100515780637417040e146100b1578063d11711a2146100c7578063f4caee88146100d1575b600080fd5b61008761005f36600461036b565b60009081526020819052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100b961011a565b6040519081526020016100a8565b6100cf61012a565b005b61010a6100df366004610330565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60405190151581526020016100a8565b600061012560025490565b905090565b33803b156101bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4d6f6f6e696549444f5369676e7570733a20546865206164647265737320636160448201527f6e6e6f74206265206120636f6e7472616374000000000000000000000000000060648201526084015b60405180910390fd5b3360009081526001602052604090205460ff161561025f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4d6f6f6e696549444f5369676e7570733a20546865206164647265737320697360448201527f20616c72656164792070617274696369706174696e670000000000000000000060648201526084016101b6565b3360008061026c60025490565b81526020808201929092526040908101600090812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff959095169490941790935533835260019182905290912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168217905560028054909101905560405133907f79229b212fa3ea547fb5e5b66090cf250d442b12a51854a030f3b796d528134e90600090a250565b600060208284031215610341578081fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610364578182fd5b9392505050565b60006020828403121561037c578081fd5b503591905056fea26469706673582212206cc097894230ec3e3b227f9fb48787fd4c6616c85f691fefe985ad82f6e38ceb64736f6c63430008040033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806342c2f5bc146100515780637417040e146100b1578063d11711a2146100c7578063f4caee88146100d1575b600080fd5b61008761005f36600461036b565b60009081526020819052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100b961011a565b6040519081526020016100a8565b6100cf61012a565b005b61010a6100df366004610330565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60405190151581526020016100a8565b600061012560025490565b905090565b33803b156101bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4d6f6f6e696549444f5369676e7570733a20546865206164647265737320636160448201527f6e6e6f74206265206120636f6e7472616374000000000000000000000000000060648201526084015b60405180910390fd5b3360009081526001602052604090205460ff161561025f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4d6f6f6e696549444f5369676e7570733a20546865206164647265737320697360448201527f20616c72656164792070617274696369706174696e670000000000000000000060648201526084016101b6565b3360008061026c60025490565b81526020808201929092526040908101600090812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff959095169490941790935533835260019182905290912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168217905560028054909101905560405133907f79229b212fa3ea547fb5e5b66090cf250d442b12a51854a030f3b796d528134e90600090a250565b600060208284031215610341578081fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610364578182fd5b9392505050565b60006020828403121561037c578081fd5b503591905056fea26469706673582212206cc097894230ec3e3b227f9fb48787fd4c6616c85f691fefe985ad82f6e38ceb64736f6c63430008040033
Deployed Bytecode Sourcemap
16526:1390:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17426:114;;;;;;:::i;:::-;17488:7;17515:17;;;;;;;;;;;;;;17426:114;;;;719:42:1;707:55;;;689:74;;677:2;662:18;17426:114:0;;;;;;;;17317:101;;;:::i;:::-;;;1954:25:1;;;1942:2;1927:18;17317:101:0;1909:76:1;17577:334:0;;;:::i;:::-;;17191:118;;;;;;:::i;:::-;17278:23;;17254:4;17278:23;;;:14;:23;;;;;;;;;17191:118;;;;939:14:1;;932:22;914:41;;902:2;887:18;17191:118:0;869:92:1;17317:101:0;17370:7;17397:13;:3;15835:14;;15743:114;17397:13;17390:20;;17317:101;:::o;17577:334::-;17621:10;8126:20;;8174:8;17059:84;;;;;;;1168:2:1;17059:84:0;;;1150:21:1;1207:2;1187:18;;;1180:30;1246:34;1226:18;;;1219:62;1317:20;1297:18;;;1290:48;1355:19;;17059:84:0;;;;;;;;;17669:10:::1;17254:4:::0;17278:23;;;:14;:23;;;;;;;;17652:28:::1;17644:95;;;::::0;::::1;::::0;;1587:2:1;17644:95:0::1;::::0;::::1;1569:21:1::0;1626:2;1606:18;;;1599:30;1665:34;1645:18;;;1638:62;1736:24;1716:18;;;1709:52;1778:19;;17644:95:0::1;1559:244:1::0;17644:95:0::1;17781:10;17750:13;:28:::0;17764:13:::1;:3;15835:14:::0;;15743:114;17764:13:::1;17750:28:::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;17750:28:0;;;:41;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;;17817:10:::1;17802:26:::0;;-1:-1:-1;17802:26:0;;;;;;;:33;;;::::1;::::0;::::1;::::0;;17846:3:::1;15954:19:::0;;;;;;;17877:26:::1;::::0;17892:10:::1;::::0;17877:26:::1;::::0;;;::::1;17577:334:::0;:::o;14:329:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;241:42;234:5;230:54;223:5;220:65;210:2;;304:6;296;289:22;210:2;332:5;84:259;-1:-1:-1;;;84:259:1:o;348:190::-;407:6;460:2;448:9;439:7;435:23;431:32;428:2;;;481:6;473;466:22;428:2;-1:-1:-1;509:23:1;;418:120;-1:-1:-1;418:120:1:o
Swarm Source
ipfs://6cc097894230ec3e3b227f9fb48787fd4c6616c85f691fefe985ad82f6e38ceb
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.