什么是以太坊?为什么值得开发
在开始之前,我们先简单理解两个核心概念:
- 以太坊(Ethereum):不仅仅是一种加密货币(如比特币),更是一个去中心化的区块链平台,它的核心特点是支持“智能合约”——一段自动执行、不可篡改的代码,能实现无需第三方信任的价值交换或逻辑控制(比如投票、众筹、NFT等)。
- 为什么开发?:以太坊是Web3世界的“操作系统”,无论是想构建DeFi应用、NFT项目,还是探索去中心化身份(DID)、DAO组织,掌握以太坊开发都是进入Web3时代的“敲门砖”。
零基础开发前:你需要准备这些“装备”
无需编程基础?不,至少需要一点Python或JavaScript基础(理解变量、函数、循环即可),以及一颗耐心,准备以下工具:
- 电脑环境:Windows/macOS/Linux均可(推荐macOS或Linux,兼容性更好)。
- 浏览器插件:MetaMask(数字钱包,用于与以太坊网络交互,官网下载安装)。
- 代码编辑器:VS Code(免费、插件丰富,安装Solidity插件——后续会用到)。
- 网络连接:稳定的互联网(开发时需要连接以太坊测试网)。
第一步:搭建开发环境——本地“以太坊世界”怎么来
以太坊开发的核心工具是 Truffle Suite(开发框架)和 Ganache(本地区块链节点),简单理解:Ganache是你的“私人以太坊网络”,可以随意测试转账、部署合约;Truffle则帮你管理代码、编译合约、部署到网络。
操作步骤(以macOS/Linux为例,Windows类似):
- 安装Node.js:访问nodejs.org 下载LTS版本(自带npm包管理器),安装后打开终端,输入
node -v和npm -v确认安装成功。 - 安装Ganache:
- 方式一(推荐):下载桌面版Ganache,安装后打开,会看到一个本地区块链界面,默认有10个测试账户,每个账户都有100个“测试用ETH”(虚拟币,仅用于开发)。
- 命令行安装(
npm install -g ganache),运行ganache启动。
- 安装Truffle:终端输入
npm install -g truffle(全局安装),后续用truffle version确认安装成功。
第二步:创建你的第一个以太坊项目
我们用Truffle初始化一个项目,并编写一个简单的“智能合约”——一个能存储和读取数字的“数字钱包”。
初始化项目
在终端进入你想存放项目的文件夹,运行:
mkdir my-first-dapp cd my-first-dapp truffle init
执行后,会生成以下文件夹结构:
contracts/:存放智能合约代码(Solidity语言)。migrations/:部署脚本(告诉Truffle如何部署合约)。test/:测试文件。truffle-config.js:Truffle配置文件。
编写智能合约
打开 contracts/ 文件夹,删除默认的 Migrations.sol,新建 SimpleStorage.sol,输入以下代码:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract SimpleStorage {
uint256 private storedData; // 存储数字的变量(private表示外部不可直接访问)
// 存储数字的函数
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.x)。contract:智能合约的“容器”,类似Python的class或Java的class。uint256:256位无符号整数(0到2²⁵⁶-1)。public:函数修饰符,表示外部可调用。view:表示函数只读,不修改区块链状态。
第三步:编译与部署——让“代码”上链
智能合约是“文本”,需要编译成机器能识别的“字节码”,再部署到区块链上(这里先部署到本地Ganache)。
编译合约
终端运行:
truffle compile
成功后,build/contracts/ 目录会生成 SimpleStorage.json,这是合约的“ABI文件”(应用程序二进制接口,定义了合约与外部交互的接口)。
配置部署脚本
打开 migrations/ 文件夹,新建 2_deploy_simple_storage.js(数字表示执行顺序),输入:
const SimpleStorage = artifacts.require("SimpleStorage");
module.exports = function (deployer) {
deployer.deploy(SimpleStorage);
};
解释:artifacts.require 引用合约,deployer.deploy 告诉Truffle部署这个合约。
部署到本地网络
终端运行:
truffle develop
会启动一个本地开发节点(类似Ganache,但集成在Truffle中),并进入交互式命令行(truffle (develop)>),输入:
migrate --network develop
