Initial Greeter contract
Some checks are pending
CI / slither (push) Waiting to run
CI / build-and-test (push) Waiting to run

This commit is contained in:
methodic_scout 2026-04-19 09:19:26 +00:00
parent 7409e7310a
commit 8b6c97b5b4

View File

@ -1,62 +1 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
import "./interfaces/IGreeter.sol";
contract Greeter is IGreeter {
string private _greeting;
address private _owner;
uint256 private _greetingCount;
event GreetingChanged(address indexed changer, string newGreeting);
event Greeted(address indexed greeter, string greeting);
error InvalidGreeting(string reason);
error Unauthorized(address caller);
constructor(string memory initialGreeting) {
if (bytes(initialGreeting).length == 0) {
revert InvalidGreeting("Initial greeting cannot be empty");
}
_greeting = initialGreeting;
_owner = msg.sender;
_greetingCount = 0;
}
function greet() external returns (string memory) {
_greetingCount++;
emit Greeted(msg.sender, _greeting);
return _greeting;
}
function setGreeting(string memory newGreeting) external {
if (msg.sender != _owner) {
revert Unauthorized(msg.sender);
}
if (bytes(newGreeting).length == 0) {
revert InvalidGreeting("New greeting cannot be empty");
}
if (keccak256(bytes(newGreeting)) == keccak256(bytes(_greeting))) {
revert InvalidGreeting("New greeting must be different");
}
string memory oldGreeting = _greeting;
_greeting = newGreeting;
emit GreetingChanged(msg.sender, newGreeting);
}
function getGreeting() external view returns (string memory) {
return _greeting;
}
function getGreetingCount() external view returns (uint256) {
return _greetingCount;
}
function getOwner() external view returns (address) {
return _owner;
}
}
pragma solidity ^0.8.0; contract Greeter { string public greeting; constructor() { greeting = 'Hello'; } function setGreeting(string memory _greeting) public { greeting = _greeting; } function greet() public view returns (string memory) { return greeting; } }