:2026-03-18 4:57 点击:7
以太坊作为全球领先的智能合约平台,不仅开创了加密货币的新纪元,更通过智能合约技术奠定了去中心化金融(DeFi)、非同质化代币(NFT)以及各种去中心化应用(DApps)的基石,如果你对区块链技术充满好奇,渴望踏入Web3的世界,那么学习以太坊智能合约将是你的第一步,本文将带你快速入门,了解智能合约的核心概念,并指导你完成第一个简单智能合约的编写与部署。
智能合约是在以太坊区块链上自动执行的程序,它像一份“数字合同”,一旦预设的条件被触发,合约就会自动执行约定的条款,无需任何第三方干预,其核心特性包括:
在动手之前,你需要掌握一些基础知识:

让我们通过一个简单的投票合约来感受Solidity的魅力,这个合约将允许创建投票选项,并进行投票。
打开Remix IDE(https://remix.ethereum.org/),创建一个新的.sol文件,例如Voting.sol。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
contract Voting {
// 定义候选人结构体
struct Candidate {
uint id;
string name;
uint voteCount;
}
// 存储候选人的映射,key为候选人ID,value为Candidate结构体
mapping(uint => Candidate) public candidates;
// 存储投票者是否已投票的映射,防止重复投票
mapping(address => bool) public voters;
// 候选人数量
uint public candidatesCount;
// 事件:当有人投票时触发
event VotedEvent(uint indexed candidateId, address voter);
// 构造函数:部署合约时初始化候选人
constructor(string[] memory candidateNames) {
for (uint i = 0; i < candidateNames.length; i++) {
candidatesCount++;
candidates[candidatesCount] = Candidate(candidatesCount, candidateNames[i], 0);
}
}
// 投票函数
function vote(uint candidateId) public {
// 确保该投票者尚未投票
require(!voters[msg.sender], "You have already voted.");
// 确保候选人ID有效
require(candidateId > 0 && candidateId <= candidatesCount, "Invalid candidate ID.");
// 记录投票者
voters[msg.sender] = true;
// 增加候选人票数
candidates[candidateId].voteCount++;
// 触发投票事件
emit VotedEvent(candidateId, msg.sender);
}
// 获取候选人信息
function getCandidate(uint candidateId) public view returns (uint id, string memory name, uint voteCount) {
Candidate storage candidate = candidates[candidateId];
return (candidate.id, candidate.name, candidate.voteCount);
}
}
SPDX-License-Identifier 和 pragma solidity:Solidity合约的标准开头,指定许可证和编译器版本。contract Voting:定义名为Voting的合约。struct Candidate:定义候选人结构,包含ID、名字和票数。mapping(uint => Candidate):一个从候选人ID到候选人信息的映射,类似于哈希表。mapping(address => bool):记录地址是否已投票。uint public candidatesCount:公开的候选人数量计数器。event VotedEvent:定义事件,方便前端监听投票行为。constructor:合约部署时执行,用于初始化候选人列表。vote(uint candidateId):核心投票函数,包含权限检查和票数更新。getCandidate(uint candidateId):公开函数,用于查询候选人信息。在Remix IDE的“Solidity Compiler”标签页:
pragma solidity版本兼容(如0.8.20)。在Remix IDE的“Deploy & Run Transactions”标签页:
["Alice", "Bob", "Charlie"](注意是JSON格式的字符串数组)。Voting合约实例。部署成功后,你可以直接在Remix中与合约交互:
getCandidate(1),会发现票数变成了1。恭喜你!你已经成功编写、部署并交互了你的第一个以太坊智能合约,你可以:
以太坊智能合约是通往Web3世界的钥匙,虽然初学者可能会被一些概念和细节所困扰,但通过实践(如本文的投票合约例子)和不断学习,你会逐渐掌握其精髓,安全始终是智能合约开发的重中之重,在处理真实资产前务必进行充分的测试和审计,希望这篇快速入门指南能为你打开一扇通往区块链开发新世界的大门!祝你学习愉快!
本文由用户投稿上传,若侵权请提供版权资料并联系删除!