以太坊作为全球领先的区块链平台,不仅仅是一种加密货币,更是一个去中心化的应用(DApp)开发平台,而智能合约,正是以太坊实现DApp自动执行、不可篡改逻辑的核心,本教程将带你一步步走进以太坊智能合约的世界,从基础概念到实践部署,助你迈出开发的第一步。

智能合约是存储在以太坊区块链上的程序代码,它们在满足预设条件时会自动执行,你可以把它想象成一个“自动售货机”:你投入特定数量的货币(满足条件),机器就会自动掉出你选择的商品(执行结果),整个过程无需人工干预,且记录公开透明。
智能合约由Solidity等编程语言编写,一旦部署到以太坊网络上,就无法被修改或删除,确保了合约的稳定性和可信度,它们是构建去中心化金融(DeFi)、非同质化代币(NFT)、去中心化自治组织(DAO)等复杂应用的基础。
在开始编写智能合约之前,你需要准备以下开发环境:
浏览器钱包(MetaMask):
以太坊节点/测试网:
集成开发环境(IDE):
我们将以一个简单的“存储合约”为例,学习如何在Remix IDE中编写、编译和部署智能合约。

打开Remix IDE:
remix.ethereum.org。创建新文件:
SimpleStorage.sol。编写Solidity代码:
SimpleStorage.sol 文件中,输入以下代码:// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/**
* @title SimpleStorage
* @dev 一个简单的存储合约,用于演示如何存储和获取一个uint256类型的数值。
*/
contract SimpleStorage {
uint256 private storedData;
// 存储一个数值
function set(uint256 x) public {
storedData = x;
}
// 获取存储的数值
function get() public view returns (uint256) {
return storedData;
}
} 代码解释:
// SPDX-License-Identifier: MIT:指定许可证标识符。pragma solidity ^0.8.0;:指定Solidity编译器版本,^0.8.0表示使用0.8.0或更高但不包括0.9.0的版本。contract SimpleStorage { ... }:定义一个名为 SimpleStorage 的合约。uint256 private storedData;:声明一个私有的无符号256位整型变量 storedData,用于存储数据。function set(uint256 x) public { ... }:一个公共函数 set,接受一个 uint256 类型的参数 x,并将其赋值给 storedData。function get() public view returns (uint256) { ... }:一个公共函数 get,view 关键字表示它只读取数据而不修改状态,返回 storedData 的值。编译合约:
pragma 版本兼容(例如0.8.7)。合约编译成功后,我们需要将其部署到以太坊测试网上。
连接到测试网:

在MetaMask中确保你已经切换到你之前添加的测试网络(如Goerli),并且账户中有足够的测试ETH。
在Remix中部署:
SimpleStorage 合约。Deploy 进行部署。确认交易:
SimpleStorage 合约实例,并有一个合约地址。合约部署成功后,我们可以调用其中的函数来验证其功能。
调用 set 函数:
SimpleStorage 合约实例。set 和 get 函数。set 函数的输入框中输入一个数值,42。set 按钮,MetaMask会再次弹出交易确认窗口,确认该交易(这是修改合约状态的操作,需要消耗Gas)。storedData 的值就被设置为 42 了。调用 get 函数:
get 函数按钮。get 函数是 view 函数,它只读取数据,不会产生交易,因此不需要Gas费,也不会弹出MetaMask窗口。get 函数下方,你会看到返回值 42,这证明了你成功存储并获取了数据!恭喜你!你已经成功编写、部署并交互了你的第一个以太坊智能合约,你可以探索以下更高级的主题:
以太坊智能合约为构建可信、自动化的去中心化应用提供了强大的可能性,本教程只是一个入门起点,但为你打开了通往Web3开发世界的大门,实践是掌握技术的最佳途径,多动手编写、测试和部署合约,不断学习和探索,你将能够在这个充满机遇的领域中创造属于自己的精彩。