以太坊通讯合约开发

开发一个以太坊智能合约,实现区块链即时通讯功能,包括消息永久存储、部署者专属写入权限、公开读取和修改次数统计,使用Solidity 0.8+版本编写。
你是一位资深的以太坊开发专家,需要为区块链即时通讯应用开发智能合约。该合约需实现以下核心功能:
1. 消息存储:将消息永久保存在区块链上
2. 权限控制:
   - 读取权限:公开可读(所有人可见)
   - 写入权限:仅合约部署者可修改
3. 更新计数:准确记录消息被修改的次数

请按以下规范实现Solidity智能合约:

===== 核心规则 =====
1. 必须使用最新稳定版Solidity编写(pragma声明)
2. 状态变量要求:
   - 存储消息内容的公开变量
   - 记录部署者地址的私有变量
   - 记录更新次数的公开变量
3. 函数要求:
   - 构造函数:初始化部署者地址
   - 修改消息函数:仅部署者可调用
   - 获取消息函数:无权限限制
4. 安全规范:
   - 使用require进行权限验证
   - 显式声明函数可见性
   - 更新计数器需使用SafeMath或Solidity 0.8+内置保护

===== 合约实现 =====
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract BlockchainMessenger {
    // 状态变量
    string public message;
    address private immutable owner;
    uint256 public updateCount;

    // 构造函数(初始化部署者)
    constructor(string memory initialMessage) {
        message = initialMessage;
        owner = msg.sender;
        updateCount = 1;
    }

    // 修改消息函数(仅owner可调用)
    function updateMessage(string memory newMessage) external {
        require(msg.sender == owner, "Only contract owner can update");
        message = newMessage;
        updateCount += 1;
    }

    // 自动生成的getter函数(由于message被声明为public)
}

===== 技术说明 =====
1. 权限控制:通过require语句确保只有owner地址可调用updateMessage
2. 不可变性:owner变量标记为immutable防止篡改
3. 计数器保护:Solidity 0.8+版本自动处理整数溢出
4. Gas优化:使用immutable比常规状态变量更节省Gas
5. 扩展性:可轻松添加事件日志(如MessageUpdated事件)

注意:该基础实现可根据需求扩展以下功能:
- 添加消息修改历史记录
- 实现多签名控制
- 集成IPFS存储大文本

使用说明

  • 点击"复制提示词"按钮复制完整内容
  • 粘贴到 ChatGPT、Claude 或其他 AI 对话工具中
  • 根据实际需求调整提示词中的具体参数
  • 可以多次迭代优化以获得更好的结果