false
false
0
- We're indexing this chain right now. Some of the counts may be inaccurate.

Contract Address Details

0x4CdE062abC19B36773226B572667B699E7BA7e77

Contract Name
ZCUAirHockey
Creator
0x9a2742–d45650 at 0x529148–871657
Balance
0 Zero Chill Units
Tokens
Fetching tokens...
Transactions
1 Transactions
Transfers
0 Transfers
Gas Used
137,141
Last Balance Update
53483
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
Contract name:
ZCUAirHockey




Optimization enabled
true
Compiler version
v0.8.19+commit.7dd6d404




Optimization runs
200
EVM Version
london




Verified at
2026-09-03T14:01:09.321532Z

Contract source code

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

/// @title ZCU Air Hockey — Proof-of-Play match ledger
/// @notice Matches are played in the browser; final results are recorded here
///         on the Zero Chill Units chain. First player to WIN_GOALS goals wins.
contract ZCUAirHockey {
    struct Stats {
        uint32 wins;
        uint32 losses;
        uint32 goalsFor;
        uint32 goalsAgainst;
        uint64 lastPlayed;
    }

    uint8 public constant WIN_GOALS = 5;

    mapping(address => Stats) public stats;
    mapping(address => string) public names;
    mapping(address => bool) private known;
    address[] public players;
    uint256 public totalMatches;

    event MatchPlayed(address indexed player, uint8 playerGoals, uint8 aiGoals, bool win, uint256 matchId);
    event NameSet(address indexed player, string name);

    function recordMatch(uint8 playerGoals, uint8 aiGoals) external {
        require(playerGoals <= WIN_GOALS && aiGoals <= WIN_GOALS, "bad score");
        require((playerGoals == WIN_GOALS) != (aiGoals == WIN_GOALS), "no winner");

        if (!known[msg.sender]) {
            known[msg.sender] = true;
            players.push(msg.sender);
        }

        Stats storage s = stats[msg.sender];
        bool win = playerGoals == WIN_GOALS;
        if (win) { s.wins += 1; } else { s.losses += 1; }
        s.goalsFor += playerGoals;
        s.goalsAgainst += aiGoals;
        s.lastPlayed = uint64(block.timestamp);

        totalMatches += 1;
        emit MatchPlayed(msg.sender, playerGoals, aiGoals, win, totalMatches);
    }

    function setName(string calldata name) external {
        require(bytes(name).length <= 24, "name too long");
        names[msg.sender] = name;
        emit NameSet(msg.sender, name);
    }

    function playerCount() external view returns (uint256) {
        return players.length;
    }
}
        

Contract ABI

[{"type":"event","name":"MatchPlayed","inputs":[{"type":"address","name":"player","internalType":"address","indexed":true},{"type":"uint8","name":"playerGoals","internalType":"uint8","indexed":false},{"type":"uint8","name":"aiGoals","internalType":"uint8","indexed":false},{"type":"bool","name":"win","internalType":"bool","indexed":false},{"type":"uint256","name":"matchId","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"NameSet","inputs":[{"type":"address","name":"player","internalType":"address","indexed":true},{"type":"string","name":"name","internalType":"string","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"WIN_GOALS","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"names","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"playerCount","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"players","inputs":[{"type":"uint256","name":"","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"recordMatch","inputs":[{"type":"uint8","name":"playerGoals","internalType":"uint8"},{"type":"uint8","name":"aiGoals","internalType":"uint8"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setName","inputs":[{"type":"string","name":"name","internalType":"string"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint32","name":"wins","internalType":"uint32"},{"type":"uint32","name":"losses","internalType":"uint32"},{"type":"uint32","name":"goalsFor","internalType":"uint32"},{"type":"uint32","name":"goalsAgainst","internalType":"uint32"},{"type":"uint64","name":"lastPlayed","internalType":"uint64"}],"name":"stats","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalMatches","inputs":[]}]
              

Contract Creation Code

0x608060405234801561001057600080fd5b50610977806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638bcdcbf31161005b5780638bcdcbf3146100eb578063bc86ace514610186578063c47f00271461019b578063f71d96cb146101ae57600080fd5b806321379fdd1461008d5780632a5b1451146100ac578063302bcc57146100c35780635cf3d346146100cb575b600080fd5b610095600581565b60405160ff90911681526020015b60405180910390f35b6100b560045481565b6040519081526020016100a3565b6003546100b5565b6100de6100d936600461060d565b6101d9565b6040516100a3919061063d565b6101456100f936600461060d565b60006020819052908152604090205463ffffffff808216916401000000008104821691600160401b8204811691600160601b810490911690600160801b900467ffffffffffffffff1685565b6040805163ffffffff9687168152948616602086015292851692840192909252909216606082015267ffffffffffffffff909116608082015260a0016100a3565b6101996101943660046106a1565b610273565b005b6101996101a93660046106d4565b610540565b6101c16101bc366004610746565b6105e3565b6040516001600160a01b0390911681526020016100a3565b600160205260009081526040902080546101f29061075f565b80601f016020809104026020016040519081016040528092919081815260200182805461021e9061075f565b801561026b5780601f106102405761010080835404028352916020019161026b565b820191906000526020600020905b81548152906001019060200180831161024e57829003601f168201915b505050505081565b600560ff83161180159061028b5750600560ff821611155b6102c85760405162461bcd60e51b81526020600482015260096024820152686261642073636f726560b81b60448201526064015b60405180910390fd5b60ff8181166005908114918416140361030f5760405162461bcd60e51b81526020600482015260096024820152683737903bb4b73732b960b91b60448201526064016102bf565b3360009081526002602052604090205460ff1661038357336000818152600260205260408120805460ff191660019081179091556003805491820181559091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b03191690911790555b33600090815260208190526040902060ff831660051480156103dd57815460019083906000906103ba90849063ffffffff166107af565b92506101000a81548163ffffffff021916908363ffffffff16021790555061041f565b81546001908390600490610400908490640100000000900463ffffffff166107af565b92506101000a81548163ffffffff021916908363ffffffff1602179055505b815460ff8516908390600890610443908490600160401b900463ffffffff166107af565b92506101000a81548163ffffffff021916908363ffffffff1602179055508260ff1682600001600c8282829054906101000a900463ffffffff1661048791906107af565b92506101000a81548163ffffffff021916908363ffffffff160217905550428260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600460008282546104e391906107d3565b90915550506004546040805160ff8781168252861660208201528315158183015260608101929092525133917fff9e9d923a095914d0f9a8745730fd9213154db695f3d85818c28cc9b1ded3fd919081900360800190a250505050565b60188111156105815760405162461bcd60e51b815260206004820152600d60248201526c6e616d6520746f6f206c6f6e6760981b60448201526064016102bf565b33600090815260016020526040902061059b828483610851565b50336001600160a01b03167fa4cea56cd77acc2291276688ddfb9e3144c5dc056ada99eed3cd0460fbeda17583836040516105d7929190610912565b60405180910390a25050565b600381815481106105f357600080fd5b6000918252602090912001546001600160a01b0316905081565b60006020828403121561061f57600080fd5b81356001600160a01b038116811461063657600080fd5b9392505050565b600060208083528351808285015260005b8181101561066a5785810183015185820160400152820161064e565b506000604082860101526040601f19601f8301168501019250505092915050565b803560ff8116811461069c57600080fd5b919050565b600080604083850312156106b457600080fd5b6106bd8361068b565b91506106cb6020840161068b565b90509250929050565b600080602083850312156106e757600080fd5b823567ffffffffffffffff808211156106ff57600080fd5b818501915085601f83011261071357600080fd5b81358181111561072257600080fd5b86602082850101111561073457600080fd5b60209290920196919550909350505050565b60006020828403121561075857600080fd5b5035919050565b600181811c9082168061077357607f821691505b60208210810361079357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b63ffffffff8181168382160190808211156107cc576107cc610799565b5092915050565b808201808211156107e6576107e6610799565b92915050565b634e487b7160e01b600052604160045260246000fd5b601f82111561084c57600081815260208120601f850160051c810160208610156108295750805b601f850160051c820191505b8181101561084857828155600101610835565b5050505b505050565b67ffffffffffffffff831115610869576108696107ec565b61087d83610877835461075f565b83610802565b6000601f8411600181146108b157600085156108995750838201355b600019600387901b1c1916600186901b17835561090b565b600083815260209020601f19861690835b828110156108e257868501358255602094850194600190920191016108c2565b50868210156108ff5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f1916010191905056fea264697066735822122050dd23a96e51a2e9a66f5b3bf3c82e8893d5d8ee7c945f1865bb989d597f571264736f6c63430008130033

Deployed ByteCode

0x608060405234801561001057600080fd5b50600436106100885760003560e01c80638bcdcbf31161005b5780638bcdcbf3146100eb578063bc86ace514610186578063c47f00271461019b578063f71d96cb146101ae57600080fd5b806321379fdd1461008d5780632a5b1451146100ac578063302bcc57146100c35780635cf3d346146100cb575b600080fd5b610095600581565b60405160ff90911681526020015b60405180910390f35b6100b560045481565b6040519081526020016100a3565b6003546100b5565b6100de6100d936600461060d565b6101d9565b6040516100a3919061063d565b6101456100f936600461060d565b60006020819052908152604090205463ffffffff808216916401000000008104821691600160401b8204811691600160601b810490911690600160801b900467ffffffffffffffff1685565b6040805163ffffffff9687168152948616602086015292851692840192909252909216606082015267ffffffffffffffff909116608082015260a0016100a3565b6101996101943660046106a1565b610273565b005b6101996101a93660046106d4565b610540565b6101c16101bc366004610746565b6105e3565b6040516001600160a01b0390911681526020016100a3565b600160205260009081526040902080546101f29061075f565b80601f016020809104026020016040519081016040528092919081815260200182805461021e9061075f565b801561026b5780601f106102405761010080835404028352916020019161026b565b820191906000526020600020905b81548152906001019060200180831161024e57829003601f168201915b505050505081565b600560ff83161180159061028b5750600560ff821611155b6102c85760405162461bcd60e51b81526020600482015260096024820152686261642073636f726560b81b60448201526064015b60405180910390fd5b60ff8181166005908114918416140361030f5760405162461bcd60e51b81526020600482015260096024820152683737903bb4b73732b960b91b60448201526064016102bf565b3360009081526002602052604090205460ff1661038357336000818152600260205260408120805460ff191660019081179091556003805491820181559091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b03191690911790555b33600090815260208190526040902060ff831660051480156103dd57815460019083906000906103ba90849063ffffffff166107af565b92506101000a81548163ffffffff021916908363ffffffff16021790555061041f565b81546001908390600490610400908490640100000000900463ffffffff166107af565b92506101000a81548163ffffffff021916908363ffffffff1602179055505b815460ff8516908390600890610443908490600160401b900463ffffffff166107af565b92506101000a81548163ffffffff021916908363ffffffff1602179055508260ff1682600001600c8282829054906101000a900463ffffffff1661048791906107af565b92506101000a81548163ffffffff021916908363ffffffff160217905550428260000160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600460008282546104e391906107d3565b90915550506004546040805160ff8781168252861660208201528315158183015260608101929092525133917fff9e9d923a095914d0f9a8745730fd9213154db695f3d85818c28cc9b1ded3fd919081900360800190a250505050565b60188111156105815760405162461bcd60e51b815260206004820152600d60248201526c6e616d6520746f6f206c6f6e6760981b60448201526064016102bf565b33600090815260016020526040902061059b828483610851565b50336001600160a01b03167fa4cea56cd77acc2291276688ddfb9e3144c5dc056ada99eed3cd0460fbeda17583836040516105d7929190610912565b60405180910390a25050565b600381815481106105f357600080fd5b6000918252602090912001546001600160a01b0316905081565b60006020828403121561061f57600080fd5b81356001600160a01b038116811461063657600080fd5b9392505050565b600060208083528351808285015260005b8181101561066a5785810183015185820160400152820161064e565b506000604082860101526040601f19601f8301168501019250505092915050565b803560ff8116811461069c57600080fd5b919050565b600080604083850312156106b457600080fd5b6106bd8361068b565b91506106cb6020840161068b565b90509250929050565b600080602083850312156106e757600080fd5b823567ffffffffffffffff808211156106ff57600080fd5b818501915085601f83011261071357600080fd5b81358181111561072257600080fd5b86602082850101111561073457600080fd5b60209290920196919550909350505050565b60006020828403121561075857600080fd5b5035919050565b600181811c9082168061077357607f821691505b60208210810361079357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b63ffffffff8181168382160190808211156107cc576107cc610799565b5092915050565b808201808211156107e6576107e6610799565b92915050565b634e487b7160e01b600052604160045260246000fd5b601f82111561084c57600081815260208120601f850160051c810160208610156108295750805b601f850160051c820191505b8181101561084857828155600101610835565b5050505b505050565b67ffffffffffffffff831115610869576108696107ec565b61087d83610877835461075f565b83610802565b6000601f8411600181146108b157600085156108995750838201355b600019600387901b1c1916600186901b17835561090b565b600083815260209020601f19861690835b828110156108e257868501358255602094850194600190920191016108c2565b50868210156108ff5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f1916010191905056fea264697066735822122050dd23a96e51a2e9a66f5b3bf3c82e8893d5d8ee7c945f1865bb989d597f571264736f6c63430008130033
<script src="{@file}"> </script>