🌐 第01课:Web3与区块链概述

区块链基础 阶段一 ✅ 验证通过

🎯 学习目标:理解Web1→Web2→Web3的演进逻辑,掌握区块链核心概念(去中心化、不可篡改、共识),了解Web3生态全景。

📖 一、互联网的三次革命

1.1 Web1.0:只读时代(1990-2005)

万维网初期,用户是内容的消费者。静态HTML页面,单向信息传递,没有互动。

特征:
• 静态页面,无交互
• 个人主页(GeoCities)、目录式门户(Yahoo!)
• 内容由少数网站管理员发布
• 用户无法生成内容(UGC尚未出现)

1.2 Web2.0:读写时代(2005-2020)

社交媒体崛起,用户成为内容的创造者,但平台成为数据的控制者

特征:
• UGC(用户生成内容):微博、YouTube、Twitter
• 平台垄断:数据归平台所有,用户无真正控制权
• 广告驱动:用户就是产品
• 审查与封号:中心化权力可随时关闭账号

1.3 Web3.0:读写拥有时代(2020-至今)

区块链赋予用户数据主权——你创作的内容,你真正拥有。

核心哲学:Not your keys, not your coins. 不掌握私钥,就不拥有资产。

去中心化:无单点故障,无中心化控制
用户主权:数据、身份、资产由用户掌控
代币经济:参与者获得激励,而非仅平台获利
可组合性:开放协议,如乐高般拼接("货币乐高")
┌─────────────────────────────────────────────────────────────────┐ │ Web1 → Web2 → Web3 演进 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ Web1 (只读) Web2 (读写) Web3 (读写拥有) │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ 静态 │ │ 平台中心 │ │ 用户中心 │ │ │ │ 页面 │ ───► │ 社交媒体 │ ───► │ 区块链 │ │ │ │ 消费者 │ │ 创作者 │ │ 所有者 │ │ │ └─────────┘ └─────────┘ └─────────┘ │ │ │ │ 数据流向: 站点→用户 平台↔用户 用户↔用户(P2P) │ │ 控制权: 站点 平台 协议(代码即法律) │ │ 商业模式: 展示广告 行为广告 代币经济/手续费 │ │ 代表产品: Yahoo! Facebook Ethereum/Uniswap │ └─────────────────────────────────────────────────────────────────┘

📖 二、什么是区块链?

2.1 核心定义

区块链 = 去中心化的分布式账本,由一系列按时间顺序排列的数据块组成,每个块包含一批交易记录,通过密码学链接形成链条。

2.2 五大核心特性

特性说明类比
🔒 去中心化无中心服务器,节点对等没有行长的银行
🧱 不可篡改修改任一区块需改所有后续块刻在石头上的账本
👁️ 公开透明所有交易对所有人可见玻璃房里的保险箱
🤝 共识驱动网络通过规则达成一致民主投票而非独裁
🔗 可追溯每笔交易有完整历史链带时间戳的快递追踪

2.3 区块结构详解

区块结构 ┌───────────────────────────────────────────────┐ │ 区块头 (Block Header) │ │ ┌─────────────────────────────────────────┐ │ │ │ 前一区块哈希 (PrevHash) 0x3a7f... │ │ │ │ 时间戳 (Timestamp) 1716000000 │ │ │ │ 难度目标 (Difficulty) 0x1d00ffff │ │ │ │ Nonce 284719 │ │ │ │ Merkle根 (TxRoot) 0x8c2b... │ │ │ └─────────────────────────────────────────┘ │ │ │ │ 区块体 (Block Body) │ │ ┌─────────────────────────────────────────┐ │ │ │ 交易1: Alice → Bob 1.5 ETH │ │ │ │ 交易2: Carol → Dave 0.3 ETH │ │ │ │ 交易3: Eve → Frank 2.1 ETH │ │ │ │ ... │ │ │ └─────────────────────────────────────────┘ │ └───────────────────────────────────────────────┘ ▲ ▲ │ │ 指向前一区块 密码学链接

📖 三、区块链如何工作?——一笔交易的生命周期

1
发起交易:用户用私钥签名一笔交易(如:A转1 ETH给B)
2
广播交易:交易被广播到P2P网络中的所有节点
3
验证交易:节点验证签名有效性、余额是否充足
4
打包区块:矿工/验证者将多笔交易打包成候选区块
5
共识确认:网络通过PoW/PoS等共识机制确认区块
6
写入链上:区块被追加到链上,交易不可逆

💻 四、代码实战:模拟区块链核心逻辑

4.1 用JavaScript实现简易区块链

// blockchain.js — 简易区块链实现 ✅验证通过

const crypto = require('crypto');

class Block {
  constructor(index, timestamp, data, previousHash = '') {
    this.index = index;
    this.timestamp = timestamp;
    this.data = data;
    this.previousHash = previousHash;
    this.nonce = 0;
    this.hash = this.calculateHash();
  }

  calculateHash() {
    return crypto.createHash('sha256')
      .update(this.index + this.previousHash +
              this.timestamp + JSON.stringify(this.data) +
              this.nonce)
      .digest('hex');
  }

  // 简易PoW挖矿:找到前n个0的哈希
  mineBlock(difficulty) {
    const target = '0'.repeat(difficulty);
    while (this.hash.substring(0, difficulty) !== target) {
      this.nonce++;
      this.hash = this.calculateHash();
    }
    console.log(`✅ 区块 mined: ${this.hash}`);
  }
}

class Blockchain {
  constructor() {
    this.chain = [this.createGenesisBlock()];
    this.difficulty = 2; // 难度:哈希前2位为0
  }

  createGenesisBlock() {
    return new Block(0, "2024-01-01", "Genesis Block", "0");
  }

  getLatestBlock() {
    return this.chain[this.chain.length - 1];
  }

  addBlock(newBlock) {
    newBlock.previousHash = this.getLatestBlock().hash;
    newBlock.mineBlock(this.difficulty);
    this.chain.push(newBlock);
  }

  // 验证链完整性
  isChainValid() {
    for (let i = 1; i < this.chain.length; i++) {
      const curr = this.chain[i];
      const prev = this.chain[i - 1];

      // 验证哈希是否正确
      if (curr.hash !== curr.calculateHash()) {
        console.log(`❌ 区块${i}哈希不匹配`);
        return false;
      }
      // 验证前驱链接
      if (curr.previousHash !== prev.hash) {
        console.log(`❌ 区块${i}前驱哈希断裂`);
        return false;
      }
    }
    return true;
  }
}

// ✅ 运行测试
const myChain = new Blockchain();
console.log("⛏ 开始挖矿...");

myChain.addBlock(new Block(1, "2024-06-01", { from: "Alice", to: "Bob", amount: 50 }));
myChain.addBlock(new Block(2, "2024-06-02", { from: "Bob", to: "Carol", amount: 25 }));

console.log(`\n🔗 链有效性: ${myChain.isChainValid() ? '✅ 有效' : '❌ 无效'}`);
console.log(`\n📊 区块链总长度: ${myChain.chain.length} 个区块`);

// 尝试篡改
console.log("\n⚠️ 尝试篡改区块1的数据...");
myChain.chain[1].data = { from: "Alice", to: "Eve", amount: 9999 };
console.log(`🔗 篡改后链有效性: ${myChain.isChainValid() ? '✅ 有效' : '❌ 无效(防篡改生效)'}`);

4.2 运行结果 ✅

⛏ 开始挖矿...
✅ 区块 mined: 00d3a7b2e8f1c4...
✅ 区块 mined: 009f1e5c3a7b2d...

🔗 链有效性: ✅ 有效
📊 区块链总长度: 3 个区块

⚠️ 尝试篡改区块1的数据...
❌ 区块1哈希不匹配
🔗 篡改后链有效性: ❌ 无效(防篡改生效)

📖 五、Web3生态全景图

Web3 生态系统全景 ┌───────────────────────────────────────────────────────┐ │ 用户层 (Users) │ │ 钱包(MetaMask) │ DApp浏览器 │ 身份(DID) │ ├───────────────────────────────────────────────────────┤ │ 应用层 (DApps) │ │ DeFi │ NFT │ DAO │ GameFi │ SocialFi │ │ Uniswap │ OpenSea│ Aragon│ Axie │ Lens │ ├───────────────────────────────────────────────────────┤ │ 协议层 (Protocols) │ │ ERC-20 │ ERC-721 │ ERC-1155 │ EIP-1559 │ ... │ ├───────────────────────────────────────────────────────┤ │ 基础设施层 (Infra) │ │ 以太坊 │ IPFS │ 预言机 │ 跨链桥 │ L2(Rollup) │ │ EVM │ Arweave│ Chainlink│ Polygon │ Arbitrum │ ├───────────────────────────────────────────────────────┤ │ 共识层 (Consensus) │ │ PoW (Bitcoin) │ PoS (Ethereum 2.0) │ └───────────────────────────────────────────────────────┘

5.1 Web3核心组件

组件Web2等价物Web3实现
身份认证用户名/密码私钥/助记词
数据存储AWS/阿里云IPFS/Arweave
支付支付宝/PayPalETH/USDC
计算云服务器智能合约(EVM)
域名DNSENS
内容分发CDNFilecoin

📖 六、区块链的分类

6.1 公链 vs 联盟链 vs 私链

维度公链联盟链私链
准入任何人授权成员单一组织
代表Bitcoin, EthereumHyperledger企业内部链
去中心化⭐⭐⭐⭐⭐
性能低(~15TPS)中(~1000TPS)高(~10000TPS)
安全模型经济博弈信任假设内部控制

📝 七、练习题

1. Web3相比Web2最核心的区别是什么? 2. 区块链的"不可篡改性"主要依赖什么? 3. 如果修改区块链中第3个区块的数据,会发生什么? 4. PoW共识机制的核心思想是什么? 5. 以太坊从PoW转向PoS的主要原因是?

🔧 八、动手实验

实验1:在区块链浏览器上观察真实交易

  1. 打开 Etherscan
  2. 搜索一个知名地址,如 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045(Vitalik的地址)
  3. 观察:交易列表、区块高度、Gas费用
  4. 思考:为什么交易一旦确认就不可逆?

实验2:本地运行区块链模拟代码

  1. 保存上面的JavaScript代码为 blockchain.js
  2. 运行 node blockchain.js
  3. 尝试修改 difficulty 为3或4,观察挖矿时间变化
  4. 尝试篡改区块数据,验证链的完整性检查

🏆 成就解锁

🌟

区块链先驱者

你已理解Web3的核心哲学和区块链的基础架构!
从中心化到去中心化的思维转变,是你进入Web3世界的第一步。

✅ Web演进理解 ✅ 区块链5大特性 ✅ 简易链实现 ✅ 防篡改验证

📋 课程目录