Skip to content
Chain 4441 · LiteForge TestnetHead#0
LitVM·Scan
Hard Money Web3 Explorer
Verified Contract
0x9c165AA32455cBdd0d96a930A81F450DBc320c9c
Pin to watchlist
scan to copy
zkLTC Balance
0
hard money native
Transactions
34
Token transfers
0
Validations
0
blocks produced
Hard Money Score
100
/100
PURE HARD MONEY
share of activity in native zkLTC vs. tokens
native
34
tokens
0
Contract name
HelloLitVM
Compiler
v0.8.20+commit.a1b79de6
Optimization
disabled
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

/// @title HelloLitVM
/// @notice A simple interactive contract deployed by each wallet on LitVM testnet.
contract HelloLitVM {

    // ── State ─────────────────────────────────────────────────────────
    address public owner;
    string  public greeting;
    uint256 public counter;
    uint256 public number;

    struct Tally { uint256 yes; uint256 no; }
    Tally public votes;

    mapping(address => string)  public greetings;
    mapping(address => uint256) public numbers;
    mapping(address => bool)    public hasVoted;

    // ── Events ────────────────────────────────────────────────────────
    event Greeted  (address indexed sender, string  message);
    event Incremented(address indexed sender, uint256 newCount);
    event NumberSet(address indexed sender, uint256 value);
    event Voted    (address indexed sender, bool    choice);

    // ── Constructor ───────────────────────────────────────────────────
    constructor(string memory _greeting) {
        owner    = msg.sender;
        greeting = _greeting;
    }

    // ── Write functions ───────────────────────────────────────────────

    /// @notice Store a greeting; anyone can call
    function greet(string calldata _message) external {
        greetings[msg.sender] = _message;
        greeting = _message;
        emit Greeted(msg.sender, _message);
    }

    /// @notice Increment the shared counter
    function increment() external {
        counter += 1;
        emit Incremented(msg.sender, counter);
    }

    /// @notice Store a number
    function setNumber(uint256 _number) external {
        numbers[msg.sender] = _number;
        number = _number;
        emit NumberSet(msg.sender, _number);
    }

    /// @notice Cast a yes/no vote (one vote per address per contract)
    function vote(bool _choice) external {
        if (_choice) { votes.yes += 1; }
        else         { votes.no  += 1; }
        hasVoted[msg.sender] = true;
        emit Voted(msg.sender, _choice);
    }

    // ── View functions ────────────────────────────────────────────────

    /// @notice Returns (counter, number, votes.yes, votes.no)
    function getStats() external view returns (uint256, uint256, uint256, uint256) {
        return (counter, number, votes.yes, votes.no);
    }
}