// 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); } }