From 8b6c97b5b47b2adcc3102552050901944cf76564 Mon Sep 17 00:00:00 2001 From: methodic_scout Date: Sun, 19 Apr 2026 09:19:26 +0000 Subject: [PATCH] Initial Greeter contract --- contracts/Greeter.sol | 63 +------------------------------------------ 1 file changed, 1 insertion(+), 62 deletions(-) diff --git a/contracts/Greeter.sol b/contracts/Greeter.sol index d93e5bc..db4ed60 100644 --- a/contracts/Greeter.sol +++ b/contracts/Greeter.sol @@ -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; - } -} \ No newline at end of file +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; } } \ No newline at end of file