ETH Price: $2,245.29 (+1.30%)
 

Overview

ETH Balance

0 ETH

ETH Value

$0.00

Token Holdings

More Info

Private Name Tags

ContractCreator

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Gm1459585812026-01-04 8:38:5997 days ago1767515939IN
0x44C252f5...1A9CACDA7
0 ETH0.0000000291740.00100476
Gm1459576622026-01-04 8:08:2197 days ago1767514101IN
0x44C252f5...1A9CACDA7
0 ETH0.000000029220.00100551
Gm1459553272026-01-04 6:50:3197 days ago1767509431IN
0x44C252f5...1A9CACDA7
0 ETH0.0000000288340.00100488
Gm1459457772026-01-04 1:32:1197 days ago1767490331IN
0x44C252f5...1A9CACDA7
0 ETH0.0000000286350.00100498
Gm1459343832026-01-03 19:12:2397 days ago1767467543IN
0x44C252f5...1A9CACDA7
0 ETH0.0000000299530.00100435
Gm1459229562026-01-03 12:51:2997 days ago1767444689IN
0x44C252f5...1A9CACDA7
0 ETH0.0000000301510.00100489
Gm1459204902026-01-03 11:29:1798 days ago1767439757IN
0x44C252f5...1A9CACDA7
0 ETH0.0000000286960.00100497
Gm1459158482026-01-03 8:54:3398 days ago1767430473IN
0x44C252f5...1A9CACDA7
0 ETH0.0000000289460.00100454
Gm1459146192026-01-03 8:13:3598 days ago1767428015IN
0x44C252f5...1A9CACDA7
0 ETH0.0000000288390.00100368
Gm1459109762026-01-03 6:12:0998 days ago1767420729IN
0x44C252f5...1A9CACDA7
0 ETH0.0000000287590.001002
Gm1459072462026-01-03 4:07:4998 days ago1767413269IN
0x44C252f5...1A9CACDA7
0 ETH0.0000000288640.00100216
Gm1459053072026-01-03 3:03:1198 days ago1767409391IN
0x44C252f5...1A9CACDA7
0 ETH0.0000000287740.00100239
Gm1459026732026-01-03 1:35:2398 days ago1767404123IN
0x44C252f5...1A9CACDA7
0 ETH0.0000000286850.0010046
Gm1458955152026-01-02 21:36:4798 days ago1767389807IN
0x44C252f5...1A9CACDA7
0 ETH0.0000000303330.00104208
Gm1458797972026-01-02 12:52:5198 days ago1767358371IN
0x44C252f5...1A9CACDA7
0 ETH0.0000000462260.00100198
Gm1458765912026-01-02 11:05:5999 days ago1767351959IN
0x44C252f5...1A9CACDA7
0 ETH0.0000000303040.00100154
Gm1458715692026-01-02 8:18:3599 days ago1767341915IN
0x44C252f5...1A9CACDA7
0 ETH0.0000000287350.00100158
Gm1458671102026-01-02 5:49:5799 days ago1767332997IN
0x44C252f5...1A9CACDA7
0 ETH0.0000000285890.00100271
Gm1458652822026-01-02 4:49:0199 days ago1767329341IN
0x44C252f5...1A9CACDA7
0 ETH0.0000000287120.00100725
Gm1458614102026-01-02 2:39:5799 days ago1767321597IN
0x44C252f5...1A9CACDA7
0 ETH0.0000000471450.00103317
Gm1458612782026-01-02 2:35:3399 days ago1767321333IN
0x44C252f5...1A9CACDA7
0 ETH0.0000000296720.00103804
Gm1458605912026-01-02 2:12:3999 days ago1767319959IN
0x44C252f5...1A9CACDA7
0 ETH0.0000000293370.00103053
Gm1458572732026-01-02 0:22:0399 days ago1767313323IN
0x44C252f5...1A9CACDA7
0 ETH0.0000000292790.00101348
Gm1458571072026-01-02 0:16:3199 days ago1767312991IN
0x44C252f5...1A9CACDA7
0 ETH0.0000000290850.00101248
Gm1458481672026-01-01 19:18:3199 days ago1767295111IN
0x44C252f5...1A9CACDA7
0 ETH0.0000000315620.00100175
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DailyGM

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 1000000 runs

Other Settings:
cancun EvmVersion
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.24;

contract DailyGM {
    /// @notice Mapping to track each user's last GM day (UTC day number)
    mapping(address user => uint256 lastGMDay) public lastGMDay;

    /// @notice Event emitted when a new GM is recorded
    event GM(address indexed user, address indexed recipient);

    /// @notice Function to say GM
    /// @dev Used to record a GM for the caller
    /// @dev Recipient set to address zero, since GM is not for a specific user
    /// @dev Ensures caller can only GM once per UTC day
    function gm() external {
        _checkDailyLimit();

        lastGMDay[msg.sender] = _currentDay();

        emit GM(msg.sender, address(0));
    }

    /// @notice Function to GM to a recipient
    /// @dev Prevents self-GM
    function gmTo(address recipient) external {
        if (recipient == msg.sender) {
            revert("Cannot GM to yourself");
        }

        _checkDailyLimit();

        lastGMDay[msg.sender] = _currentDay();

        emit GM(msg.sender, recipient);
    }

    /// @dev Private function to check if caller has already GMed today
    function _checkDailyLimit() private view {
        if (lastGMDay[msg.sender] == _currentDay()) {
            revert("Already GMed today");
        }
    }

    /// @dev Utility: current UTC day number
    function _currentDay() private view returns (uint256) {
        return block.timestamp / 1 days;
    }
}

Settings
{
  "evmVersion": "cancun",
  "metadata": {
    "bytecodeHash": "ipfs"
  },
  "optimizer": {
    "enabled": true,
    "runs": 1000000
  },
  "remappings": [],
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

API
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"}],"name":"GM","type":"event"},{"inputs":[],"name":"gm","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"gmTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"lastGMDay","outputs":[{"internalType":"uint256","name":"lastGMDay","type":"uint256"}],"stateMutability":"view","type":"function"}]

608060405234801561000f575f80fd5b506102ff8061001d5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c80633649049b14610043578063c0129d4314610074578063e884624b1461007e575b5f80fd5b610062610051366004610257565b5f6020819052908152604090205481565b60405190815260200160405180910390f35b61007c610091565b005b61007c61008c366004610257565b6100dd565b6100996101c4565b6100a1610244565b335f818152602081905260408082209390935591517f9bb60bdb6bb0920fe69f94499caf047e26d87945a4791e95ea8f70536625b7b4908390a3565b3373ffffffffffffffffffffffffffffffffffffffff821603610161576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f43616e6e6f7420474d20746f20796f757273656c66000000000000000000000060448201526064015b60405180910390fd5b6101696101c4565b610171610244565b335f8181526020819052604080822093909355915173ffffffffffffffffffffffffffffffffffffffff8416927f9bb60bdb6bb0920fe69f94499caf047e26d87945a4791e95ea8f70536625b7b491a350565b6101cc610244565b335f9081526020819052604090205403610242576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f416c726561647920474d656420746f64617900000000000000000000000000006044820152606401610158565b565b5f6102526201518042610291565b905090565b5f60208284031215610267575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461028a575f80fd5b9392505050565b5f826102c4577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea2646970667358221220074fc3ea9eb48cb97e9c2a93e6846b6f7ace11b33f8ddfbcc6d7b651ac30086164736f6c63430008180033

Deployed Bytecode

0x608060405234801561000f575f80fd5b506004361061003f575f3560e01c80633649049b14610043578063c0129d4314610074578063e884624b1461007e575b5f80fd5b610062610051366004610257565b5f6020819052908152604090205481565b60405190815260200160405180910390f35b61007c610091565b005b61007c61008c366004610257565b6100dd565b6100996101c4565b6100a1610244565b335f818152602081905260408082209390935591517f9bb60bdb6bb0920fe69f94499caf047e26d87945a4791e95ea8f70536625b7b4908390a3565b3373ffffffffffffffffffffffffffffffffffffffff821603610161576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f43616e6e6f7420474d20746f20796f757273656c66000000000000000000000060448201526064015b60405180910390fd5b6101696101c4565b610171610244565b335f8181526020819052604080822093909355915173ffffffffffffffffffffffffffffffffffffffff8416927f9bb60bdb6bb0920fe69f94499caf047e26d87945a4791e95ea8f70536625b7b491a350565b6101cc610244565b335f9081526020819052604090205403610242576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f416c726561647920474d656420746f64617900000000000000000000000000006044820152606401610158565b565b5f6102526201518042610291565b905090565b5f60208284031215610267575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461028a575f80fd5b9392505050565b5f826102c4577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea2646970667358221220074fc3ea9eb48cb97e9c2a93e6846b6f7ace11b33f8ddfbcc6d7b651ac30086164736f6c63430008180033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.