Skip to content

以太坊基础知识与实践指南

一、以太坊基础概念

1.1 以太坊与传统后端的区别

虽然有人将以太坊与传统后端进行类比,但两者有本质区别:

  • 以太坊是去中心化平台,能够运行智能合约
  • 开发时可以不发代币,只编写业务逻辑
  • 智能合约相当于应用程序,类似操作系统上的软件
  • 链上业务 + 传统用户界面 = DApp(去中心化应用)

1.2 EVM (以太坊虚拟机)

EVM (Ethereum Virtual Machine) 是以太坊的核心组件:

  • 运行在每个节点(原矿工)的电脑上
  • 用于解释和执行智能合约代码
  • 存储和维护世界状态树(World State Tree)
  • 提供图灵完备的脚本语言环境

1.3 Gas 费用机制

在以太坊网络中,执行操作需要支付 Gas 费用:

为什么需要 Gas?

  • 修改世界状态树需要占用全球节点的存储和计算资源
  • 防止恶意代码无限循环,保护网络安全

Gas 费用的影响因素:

  • 网络拥堵程度(节点繁忙程度)
  • 交易复杂度(计算量)
  • 当前 Gas Price

以太坊单位换算:

  • 1 ETH = 10^9 Gwei
  • 1 Gwei = 10^9 Wei
  • Wei 是以太坊的最小单位(类似比特币的 Satoshi)

二、以太坊出块机制

2.1 出块时间

以太坊出块时间:约 12 秒

为什么是 12 秒?

  • 这是经过工程实践得出的最佳平衡点
  • 保证全球网络的稳定性
  • 避免空块率过高
  • 相比比特币的 10 分钟,大幅提升交易确认速度

对比:

区块链出块时间特点
以太坊~12秒快速确认,适合应用开发
比特币~10分钟安全性优先,确认较慢

2.2 共识机制的演变

2022年重大转变:从 PoW 到 PoS

PoW (Proof of Work - 工作量证明)

  • 通过算力竞争获得出块权
  • 能源消耗大
  • 2022年前的共识机制

PoS (Proof of Stake - 权益证明)

  • 通过质押 ETH 获得验证权
  • 成为验证节点需质押 32 ETH
  • 能源消耗降低 99.95%
  • 普通用户可通过交易所参与质押挖矿

上海升级 (Shanghai Upgrade)

  • 完成从 PoW 到 PoS 的最终过渡
  • 允许验证者提取质押的 ETH
  • 标志性的里程碑升级

三、钱包创建与使用

3.1 MetaMask 钱包安装

安装步骤:

  1. 在浏览器中安装 MetaMask 扩展
  2. 创建新钱包或导入现有钱包
  3. 妥善保存助记词(可分多处存放)
  4. 设置本地密码(用于浏览器登录)

重要提示:

  • 助记词 = 资产控制权,务必离线保存
  • 本地密码仅用于浏览器访问,不能恢复钱包
  • 永远不要将助记词或私钥发送给任何人

3.2 钱包配置

推荐设置:

  • ✅ 打开测试网络显示
  • ✅ 显示十六进制数据
  • ✅ 启用改进的 Token 检测

钱包类型:

  • EOA (外部拥有账户): 有私钥的普通钱包
  • 合约账户: 部署在链上的智能合约,无私钥,由代码控制

3.3 获取测试币

测试网络 Faucet (水龙头):

推荐的测试网:

  • Sepolia (推荐,最新测试网)
  • Goerli (逐步淘汰中)

获取测试 ETH:

  1. 访问官方测试水龙头
  2. 连接 MetaMask 钱包
  3. 申请测试币(通常需要社交账户验证)
  4. 目标:获取 0.3-0.4 ETH 用于学习和测试

⚠️ 安全警告:

  • 只使用官方或可信的水龙头
  • 避免在闲鱼等二手平台购买测试币
  • 警惕钓鱼网站

四、智能合约开发

4.1 开发环境 - Remix IDE

Remix IDE 是以太坊官方推荐的在线开发环境:

特点:

  • 🌐 在线访问,无需安装
  • 📚 提供完整文档和示例
  • 🔧 集成编译器和调试器
  • 🚀 支持直接部署到测试网/主网

访问地址: https://remix.ethereum.org

4.2 Solidity 基础

Solidity 是以太坊智能合约的编程语言:

  • 文件扩展名: .sol
  • 静态类型语言
  • 类似 JavaScript 的语法
  • 图灵完备

示例合约结构:

solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract HelloWorld {
    string public message;

    constructor(string memory _message) {
        message = _message;
    }

    function updateMessage(string memory _newMessage) public {
        message = _newMessage;
    }
}

4.3 Remix 测试环境

Remix 提供便捷的测试环境:

  • 🎁 自动生成 10 个测试账户
  • 💰 每个账户预充值 100 ETH 测试币
  • ⚡ 即时部署,无需等待出块

五、前端交互开发

5.1 连接钱包

使用原生 JavaScript 连接 MetaMask:

javascript
// 检查 MetaMask 是否安装
if (typeof window.ethereum !== 'undefined') {
    console.log('MetaMask is installed!');
}

// 请求连接钱包
async function connectWallet() {
    try {
        const accounts = await window.ethereum.request({
            method: 'eth_requestAccounts'
        });
        console.log('Connected account:', accounts[0]);
        return accounts[0];
    } catch (error) {
        console.error('User denied account access');
    }
}

// 获取余额
async function getBalance(address) {
    const balance = await window.ethereum.request({
        method: 'eth_getBalance',
        params: [address, 'latest']
    });
    // balance 是 Wei,需要转换为 ETH
    const ethBalance = parseInt(balance, 16) / Math.pow(10, 18);
    return ethBalance;
}

5.2 与合约交互

推荐库:

  • ethers.js: 轻量级,功能完善
  • web3.js: 历史悠久,生态丰富
  • GraphQL: 用于查询链上数据

5.3 数据编码

十六进制数据:

  • 以太坊交易数据使用十六进制编码
  • 需要了解编码/解码方法
  • MetaMask 可显示原始十六进制数据

六、实践作业

作业一:构建本地区块链

使用 Cosmos SDK (推荐)

  • 搭建本地区块链节点
  • 实现挖矿功能
  • 创建钱包
  • 实现转账功能
  • 创建本地区块浏览器

或使用 Node.js (简化版)

  • 实现基础区块链数据结构
  • 实现简单的共识机制
  • 录制视频详细讲解代码

作业二:以太坊实战

任务清单:

  1. 获取测试 ETH

    • 寻找可用的测试网水龙头
    • 获取 0.3-0.4 个测试 ETH
    • 记录获取过程
  2. MetaMask 实践

    • 创建新文件并连接 MetaMask
    • 在页面上显示钱包地址
    • 显示账户余额
    • 使用原生 window.ethereum API(不使用 ethers.js)
  3. 数据上链

    • 学习交易的十六进制编码
    • 理解加密/解密过程
    • 发送测试交易
  4. 读取链上数据

    • 使用 ethers.js 或 GraphQL
    • 查询交易记录
    • 解析事件日志
  5. 分享与讨论

    • 整理以太坊出块机制知识点
    • 对比 PoW 和 PoS
    • 分享学习心得

七、学习资源

官方文档

开发工具

  • MetaMask: 浏览器钱包
  • Hardhat: 本地开发环境
  • Truffle: 开发框架
  • Ethers.js: JavaScript 库

测试网络

  • Sepolia: 当前推荐的测试网
  • Goerli: 即将弃用
  • Ganache: 本地测试网络

区块浏览器

  • Etherscan: 主网浏览器
  • Sepolia Etherscan: 测试网浏览器

八、重要概念速查

术语说明
EVM以太坊虚拟机,执行智能合约
Gas交易费用,用于支付计算资源
Wei以太坊最小单位 (10^-18 ETH)
Gwei常用 Gas 单位 (10^-9 ETH)
EOA外部拥有账户,有私钥的钱包
Smart Contract智能合约,部署在区块链上的代码
DApp去中心化应用
PoW工作量证明,旧共识机制
PoS权益证明,当前共识机制
Solidity智能合约编程语言

注意事项

  1. 安全第一

    • 妥善保管助记词和私钥
    • 测试网和主网严格区分
    • 警惕钓鱼网站和诈骗
  2. 开发建议

    • 先在测试网充分测试
    • 代码审计后再部署主网
    • 关注 Gas 优化
  3. 学习路径

    • 从 Remix 开始学习 Solidity
    • 掌握钱包交互基础
    • 逐步深入智能合约开发
    • 学习 DApp 全栈开发

最后更新: 2025-12-01