my-homelab-configs/labs/blockchain/src/Counter.sol

33 lines
747 B
Solidity

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
contract Counter {
uint256 public number;
address public owner;
error NotOwner();
event NumberChanged(uint256 previousNumber, uint256 newNumber);
constructor(uint256 initialNumber) {
owner = msg.sender;
number = initialNumber;
}
function setNumber(uint256 newNumber) external {
if (msg.sender != owner) {
revert NotOwner();
}
uint256 previousNumber = number;
number = newNumber;
emit NumberChanged(previousNumber, newNumber);
}
function increment() external {
uint256 previousNumber = number;
number++;
emit NumberChanged(previousNumber, number);
}
}