33 lines
747 B
Solidity
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);
|
|
}
|
|
}
|