通过 Trae 认识 web3 -- 中国开发者应该学吗?

586 阅读12分钟

我正在参加Trae「超级体验官」创意实践征文,本文所使用的 Trae 免费下载链接:

www.trae.ai/?utm_source…

菜鸟逛掘金老是刷到 web3,一直不知道是个啥,点进去也都是介绍区块链,感觉和前端关系不大呀!为什么要叫 web3 ?不叫 区块链3

抱着疑问和菜鸟跟随Trae一起探索吧!

web3是什么?

Web3 是 Web 技术发展的第三个阶段,主要特点是去中心化和基于区块链技术。它与传统的 Web2.0 有很大的区别:

  1. 与前端的关系

    • Web3 需要前端开发者掌握新的技术栈和工具
    • 需要学习如何与区块链交互(比如:以太坊)
    • 需要了解智能合约的开发和调用
  2. 主要技术栈

    • Web3.js / Ethers.js:与区块链交互的 JavaScript 库
    • MetaMask:最流行的加密货币钱包(也就是web3中经常提到的“钱包”之一),用于连接 DApp
    • Solidity:智能合约开发语言
    • IPFS:去中心化存储方案
  3. 前端开发的变化

    • 用户认证:使用钱包地址替代传统的用户名密码
    • 数据存储:使用区块链或去中心化存储
    • 状态管理:需要处理区块链交易状态
    • 支付集成:直接使用加密货币进行支付
  4. 实际应用场景

    • DeFi(去中心化金融)应用
    • NFT 交易平台
    • DAO(去中心化自治组织)
    • 去中心化社交平台

如果想在现有项目中集成 Web3 功能,可以从以下步骤开始:

  1. 安装必要的依赖:
npm install web3 @metamask/detect-provider
  1. 创建基础的 Web3 连接:
import Web3 from 'web3';
import detectEthereumProvider from '@metamask/detect-provider';

const initWeb3 = async () => {
  const provider = await detectEthereumProvider();
  
  if (provider) {
    const web3 = new Web3(provider);
    return web3;
  } else {
    throw new Error('请安装 MetaMask!');
  }
};

和前端的关系?前端不都是画界面就行了?

菜鸟看了上面还是不太清楚,感觉不管 web2 还是 web3,前端不都是画界面就行了?顶多就是引入一些区块链相关的库,和前端感觉关系不大呀,为什么要叫 web3?

实际上,Web3 和前端的关系远不止是 "画界面" 那么简单:

  1. 架构模式的根本变化

    • Web2.0:客户端-服务器模式,数据集中存储
    • Web3:去中心化架构,没有传统的后端服务器,前端直接与区块链网络交互
  2. 数据处理方式的转变

    • Web2.0:通过 API 调用中心化服务器
    • Web3:前端需要直接处理区块链交易、智能合约调用、加密算法等
  3. 用户交互模式的改变

    • Web2.0:用户名密码登录,session/token 认证
    • Web3:钱包连接,签名验证,交易确认等全新的交互流程
  4. 状态管理的复杂性

    • 需要处理区块链交易的各种状态(pending, confirmed, failed)
    • 需要考虑区块确认时间
    • 需要处理 Gas 费用估算和调整
  5. 安全性考虑

    • 私钥管理
    • 交易签名
    • 智能合约交互的安全性

举个例子,一个简单的 Web3 前端交互可能是这样的:

// Web2.0 的传统前端请求
async function web2Request() {
    const response = await fetch('/api/data');
    const data = await response.json();
    return data;
}

// Web3 的前端交互
async function web3Transaction() {
    // 连接钱包
    const accounts = await ethereum.request({ method: 'eth_requestAccounts' });
    
    // 创建交易
    const transaction = {
        from: accounts[0],
        to: contractAddress,
        value: '0x00',
        data: contract.methods.someFunction().encodeABI()
    };
    
    // 发送交易并等待确认
    const txHash = await ethereum.request({
        method: 'eth_sendTransaction',
        params: [transaction],
    });
    
    // 监听交易状态
    const receipt = await web3.eth.getTransactionReceipt(txHash);
    
    // 处理事件和结果
    if (receipt.status) {
        const events = await contract.getPastEvents('AllEvents');
        // 处理事件...
    }
}

所以说 Web3 不仅仅是引入新库那么简单,而是:

  1. 改变了前端与后端的交互方式
  2. 增加了大量复杂的业务逻辑处理
  3. 需要考虑更多的技术细节和安全问题
  4. 引入了全新的用户交互模式

这就是为什么它被称为 Web3,因为它代表了 Web 技术的一次范式转换,而不仅仅是技术栈的简单叠加

如何去学习 web3?

以下是学习 Web3 的一些推荐路径和资源:

  1. 基础知识准备

    • 首先确保掌握基础的前端知识(HTML, CSS, JavaScript)
    • 了解区块链基本概念
    • 熟悉 React/Vue 等现代前端框架
  2. 推荐学习资源

  3. 学习路线建议

    1. 区块链基础

      • 了解区块链原理
      • 熟悉加密货币钱包使用
      • 学习以太坊基础概念
    2. 智能合约开发

      • 学习 Solidity 语言
      • 了解 ERC 标准
      • 掌握合约部署和测试
    3. Web3 前端开发

      • Web3.js/Ethers.js 库的使用
      • MetaMask 集成
      • DApp 开发实践
  4. 实践项目建议

    • 开发一个简单的代币
    • 创建一个 NFT 集合
    • 构建一个去中心化投票系统
    • 开发一个简单的 DeFi 应用
  5. 社区资源

    • GitHub 上的开源项目
    • Discord 开发者社区
    • Twitter Web3 开发者社区
    • 技术博客和论坛
  6. 开发工具

    • Truffle/Hardhat - 开发框架
    • Remix IDE - 在线 Solidity 编辑器
    • Ganache - 本地测试网络
    • MetaMask - 浏览器钱包插件

建议:

  1. 循序渐进,从基础概念开始
  2. 多动手实践,边学边做
  3. 参与社区讨论,与其他开发者交流
  4. 关注安全性,特别是在处理智能合约时
  5. 持续学习,因为 Web3 技术发展很快

不太理解,感觉看了学习链接,发现和前端没有很大的关联呀?

让我用一个具体的例子来说明 Web3 和前端的紧密关系。

假设我们要开发一个简单的 NFT 交易平台,对比一下 Web2 和 Web3 的前端开发差异:

Web2 版本

// 传统前端购买商品
async function buyItem() {
  try {
    // 1. 调用后端API
    const response = await fetch('/api/buy', {
      method: 'POST',
      body: JSON.stringify({
        itemId: '123',
        price: 100
      })
    });
    // 2. 处理响应
    const result = await response.json();
    // 3. 更新UI
    if (result.success) {
      showSuccess('购买成功!');
    }
  } catch (error) {
    showError('购买失败');
  }
}

Web3 版本

// Web3前端购买NFT
async function buyNFT() {
  try {
    // 1. 连接用户钱包
    const accounts = await window.ethereum.request({
      method: 'eth_requestAccounts'
    });
    
    // 2. 创建智能合约实例
    const contract = new web3.eth.Contract(NFT_ABI, CONTRACT_ADDRESS);
    
    // 3. 获取 Gas 估算
    const gasEstimate = await contract.methods.mint().estimateGas();
    
    // 4. 发起区块链交易
    const transaction = await contract.methods.mint().send({
      from: accounts[0],
      value: web3.utils.toWei('0.1', 'ether'),
      gas: gasEstimate
    });
    
    // 5. 监听交易状态
    transaction.on('transactionHash', (hash) => {
      showPending('交易已提交,等待确认...');
    });
    
    transaction.on('confirmation', (confirmationNumber) => {
      if (confirmationNumber === 1) {
        showSuccess('NFT 购买成功!');
      }
    });
    
    // 6. 监听合约事件
    contract.events.Transfer()
      .on('data', (event) => {
        updateUserNFTCollection();
      });
      
  } catch (error) {
    if (error.code === 4001) {
      showError('用户拒绝了交易');
    } else {
      showError('购买失败:' + error.message);
    }
  }
}

从这个例子可以看出:

  1. 交互复杂性

    • Web3 前端需要处理钱包连接、交易签名、Gas 费用等
    • 需要实时监听交易状态和区块链事件
    • 错误处理更加复杂
  2. 状态管理

    • 需要处理区块链特有的状态(pending、confirmed、failed)
    • 需要考虑网络延迟和交易确认时间
    • 需要处理用户钱包状态
  3. 用户体验设计

    • 需要设计钱包连接流程
    • 需要展示交易进度和确认状态
    • 需要显示 Gas 费用和网络状态
  4. 安全考虑

    • 需要处理签名验证
    • 需要保护用户私钥和交易安全
    • 需要验证智能合约交互

所以,Web3 不仅没有和前端脱离关系,反而对前端开发提出了更高的要求:

  • 需要理解区块链概念
  • 需要掌握新的开发模式
  • 需要处理更复杂的交互逻辑
  • 需要设计新的用户体验

这就是为什么说 Web3 和前端关系密切,它实际上扩展了前端开发的范畴,而不是简单的 API 调用替换。

js的写法变化而已,为什么要叫web3?会不会不安全?

菜鸟看完,感觉这也只是 js 的写法变化了,界面还是 html+css,其实就是逻辑不一样的前端罢了,为什么要叫 web3?而且前端交易,黑客不是很容易就破解了?

让我解释一下为什么叫 Web3 以及安全性问题:

  1. 为什么叫 Web3
    • Web1.0:静态网页,单向信息展示
    • Web2.0:用户生成内容,中心化服务器
    • Web3.0:去中心化,用户拥有数据主权

这个命名不是因为技术栈的变化,而是因为整个网络架构和数据所有权的革命性变化

  • Web2:你的数据存在于各个公司的服务器中(比如微信、支付宝)
  • Web3:你通过钱包完全控制自己的资产和数据
  1. 关于安全性 黑客确实可以看到前端代码,但是:
// Web2 的安全隐患
const sensitiveData = {
  apiKey: 'xxx',
  userToken: 'yyy'
}; 
// 这些敏感信息可能被黑客从前端获取

// Web3 的安全机制
async function sendTransaction() {
  // 1. 交易数据是公开的,但私钥完全在用户钱包中
  const transaction = {
    to: '0x...',
    value: '1000000000000000000'  // 1 ETH
  };
  
  // 2. 签名过程在钱包中完成,前端无法接触私钥
  const signedTx = await window.ethereum.request({
    method: 'eth_sendTransaction',
    params: [transaction]
  });
  
  // 3. 所有交易都需要用户在钱包中确认
  // 黑客无法未经用户同意就发送交易
}

Web3 的安全性建立在:

  1. 私钥永远不会离开用户的钱包
  2. 所有交易都需要用户主动签名
  3. 智能合约的代码是公开且不可更改的
  4. 交易记录永久存储在区块链上,不可篡改

这就像:

  • Web2 是把钱存在银行,信任银行的安全系统
  • Web3 是你自己保管钱包,只有你能决定如何使用里面的资产

所以说,Web3 不仅仅是前端写法的改变,而是:

  1. 数据所有权的革命
  2. 信任机制的改变
  3. 价值传递方式的创新
  4. 用户主权的回归

这就是为什么它被称为 Web3:因为它代表了互联网的第三次革命性变革,而不仅仅是技术实现的改变。

这里的钱包指的是什么呢?手机app?

在 Web3 中,钱包主要有以下几种形式:

  1. 浏览器插件钱包(最常用)

    • MetaMask(最流行)
    • Coinbase Wallet
    • TokenPocket

    例如 MetaMask 的使用方式:

    // 检查用户是否安装了 MetaMask
    if (typeof window.ethereum !== 'undefined') {
      // 请求连接钱包
      const accounts = await ethereum.request({ 
        method: 'eth_requestAccounts' 
      });
      console.log('当前钱包地址:', accounts[0]);
    }
    
  2. 手机 App 钱包

    • imToken
    • Trust Wallet
    • MetaMask 手机版
  3. 硬件钱包(离线冷存储,最安全)

    • Ledger
    • Trezor
  4. 网页钱包

    • WalletConnect(支持多种钱包连接)
    import WalletConnect from "@walletconnect/client";
    
    // 创建连接
    const connector = new WalletConnect({
      bridge: "https://bridge.walletconnect.org"
    });
    
    // 连接手机钱包
    connector.createSession();
    

对于普通用户来说:

最简单的开始方式是安装 MetaMask 浏览器插件,它就像一个数字密码箱,存储你的加密货币和 NFT,同时也是你登录各种 Web3 应用的"身份证"。

安全建议:

  1. 备份助记词(一组用来恢复钱包的单词)
  2. 永远不要分享私钥
  3. 重要资产建议使用硬件钱包保管
  4. 警惕钓鱼网站和欺诈应用

所以说,Web3 钱包不仅仅是存储数字资产的工具,更是:

  • 你的数字身份
  • 交易签名工具
  • 应用程序的登录方式
  • 资产管理中心

但是很多用户都没有你说的那些软件,都不能对接到中国的app中,web3存在的意义是啥?

Web3 目前确实面临一些挑战,让我分析一下:

  1. 现有困境

    • 用户门槛高(需要理解钱包、Gas费等概念)
    • 与传统支付系统割裂
    • 监管政策不明确
    • 使用体验不够友好
  2. 存在的意义

    • 数据主权:用户完全控制自己的数据和资产
    • 去中心化:不依赖单一平台或公司
    • 可编程性:智能合约能实现复杂的自动化业务逻辑
    • 全球化:跨境交易无需中间商
  3. 实际应用场景

    // 例如:数字艺术品确权
    const NFTContract = {
      // 艺术家可以直接发行作品
      createArt: async function(artworkData) {
        // 在区块链上记录版权信息
      },
      
      // 买家可以验证真伪
      verifyAuthenticity: async function(tokenId) {
        // 查询区块链上的所有权记录
      }
    }
    
  4. 未来发展方向

    • 提升用户体验
    • 与传统支付系统融合
    • 降低使用门槛
    • 完善监管框架

虽然目前 Web3 在中国的发展受限,但它代表的技术革新和理念是有价值的:

  1. 技术创新

    • 分布式存储
    • 密码学应用
    • 共识机制
  2. 商业模式创新

    • DAO(去中心化自治组织)
    • DeFi(去中心化金融)
    • GameFi(游戏金融化)
  3. 价值传递创新

    • 点对点交易
    • 无需信任交易
    • 可编程货币

所以,Web3 的意义不仅在于当前的应用,更在于它开创了一种新的互联网范式,即使现在还不完善,但它代表了未来可能的发展方向。就像早期的互联网一样,需要时间来完善基础设施和应用生态。

总结

综上所述,web3并不是对前端框架的革命或者html、css、js的替换,只是对开发者思维的转变(不是因为技术栈的变化,而是因为整个网络架构和数据所有权的革命性变化),替换掉调用后端api将东西存在数据库的流程。

但是目前在国内不流行,菜鸟感觉不流行的主要原因是:

  1. web3 是 p2p 的,没有中间商的技术保障,一但出现问题,没有人能兜底。其实只要大厂搞区块链,并提供技术保障,用户还是愿意相信,只是那样大厂赚不到钱,所以也必然不会推广区块链这个技术!

  2. 这个需要对应的钱包才能使用,但是中国客户基本用的都是手机银行、微信、支付宝等工具,需要大厂对区块链的钱包做兼容,但是工程量可很大,且不赚钱!