File size: 978 Bytes
92b0172
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

contract HashLogger {
    struct Entry {
        bytes32 hash;
        uint256 timestamp;
    }

    Entry[] public entries;

    event HashLogged(bytes32 indexed hash, uint256 timestamp);

    address public owner;

    constructor() {
        owner = msg.sender;
    }

    modifier onlyOwner() {
        require(msg.sender == owner, "Not authorized");
        _;
    }

    function logHash(bytes32 hash) external onlyOwner {
        uint256 ts = block.timestamp;
        entries.push(Entry(hash, ts));
        emit HashLogged(hash, ts);
    }

    function getEntryCount() external view returns (uint256) {
        return entries.length;
    }

    function getEntry(uint256 index) external view returns (bytes32, uint256) {
        require(index < entries.length, "Index out of range");
        Entry storage e = entries[index];
        return (e.hash, e.timestamp);
    }
}