这是我的第一个智能合约,用 Solidity 实现了一个简单的计数器。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
contract ClickCounter {
uint256 public counter = block.number;
function getCounter() public view returns (uint) {
return block.number - counter;
}
function click() public {
counter++;
}
function unclick() public {
counter--;
}
}
合约名称叫 ClickCounter,contract 类似 Java 的 class 关键字,用于声明一个合约
定义了一个全局变量
uint256 public counter = block.number;
uint256:无符号整型public:允许外部访问,会自动生成一个 getter 方法,相当于 Java 的对象可以直接访问block.number:初始值为当前区块号
实现了三个核心方法
getCounter:会返回「当前区块号 - 初始区块号」,就像一个基于时间的计数器click:将counter加 1unclick:将counter减 1
我在 Cursor 中编写合约,将代码粘贴到 Remix 编辑器中会弹出安全警告,这对于初学者和非合约开发者非常友好,能在一定程度上避免误用非法脚本的可能,进而导致资金丢失(很友好:)

上链步骤也比较简单,先点击 Compile 编译代码,再在左侧 Tab 切换到 Deploy & run transactions 点击 Deploy 便可直接发布到相应的 Environment 上

其中 Environment 那里使用 WalletConnect 切换到对应的 Sepolia Testnet

上链后右侧控制台会出现当前交易的信息,区块信息。基本都是一长串的 hash 值
左侧控制台包括了刚才编写的几个 public 方法,点击就会触发相应的方法,其中多了一个 counter 的 button 是因为代码里的 counter 被 public 修饰所以会多一个访问方法

由于我的合约是部署 sepolia 链上,这是一个以太坊的测试链,将 transaction hash 或者 block hash 粘贴到官方搜索框可以一键查询出交易的信息
打卡记录下我的第一个智能合约

这次体验最大的感受是所有的开发部署记录,交易信息都可以运行在公开的链上,并且都是不可篡改的,公开透明,这种感觉太棒了
