Blockchain / Global / Address

Contract

0xDBd6eFb2019367c72e3284eE69494Dd49552f557

Balance
0 SOMI
Transactions sent
1
Type
Contract · 1,220 bytes of code

GM Verified

Compiler
solc 0.8.30+commit.73712a01
Language
Solidity
Optimization
Yes, 200 runs
EVM version
cancun
License
—
Verified
2026-10-12

src/GM.sol

Solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

contract GM {
    address public feeRecipient = 0xE987eC8d38c95A86752e2073eeD1260ECf2e9083;
    uint256 public GM_FEE = 0.15 ether;

    uint256 public totalGMs;
    mapping(address => uint256) public gmCount;
    address[] public allUsers;

    event GMed(address indexed user, uint256 totalUserGMs);

    function gm() external payable {
        require(msg.value == GM_FEE, "Incorrect GM fee");

        // transfer fee to recipient
        (bool success, ) = feeRecipient.call{value: msg.value}("");
        require(success, "Fee transfer failed");

        // increment GM count
        if (gmCount[msg.sender] == 0) {
            allUsers.push(msg.sender);
        }

        gmCount[msg.sender] += 1;
        totalGMs += 1;

        emit GMed(msg.sender, gmCount[msg.sender]);
    }

    function getAllUsers() external view returns (address[] memory) {
        return allUsers;
    }

    function getGMsForAddress(address user) external view returns (uint256) {
        return gmCount[user];
    }
}
ABI · 9 entries
json
[
  {
    "name": "GMed",
    "type": "event",
    "inputs": [
      {
        "name": "user",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "totalUserGMs",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      }
    ],
    "anonymous": false
  },
  {
    "name": "GM_FEE",
    "type": "function",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "name": "allUsers",
    "type": "function",
    "inputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "address",
        "internalType": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "name": "feeRecipient",
    "type": "function",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address",
        "internalType": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "name": "getAllUsers",
    "type": "function",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address[]",
        "internalType": "address[]"
      }
    ],
    "stateMutability": "view"
  },
  {
    "name": "getGMsForAddress",
    "type": "function",
    "inputs": [
      {
        "name": "user",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "name": "gm",
    "type": "function",
    "inputs": [],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "name": "gmCount",
    "type": "function",
    "inputs": [
      {
        "name": "",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "name": "totalGMs",
    "type": "function",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  }
]