我正在参加Trae「超级体验官」创意实践征文,本文所使用的 Trae 免费下载链接:
菜鸟逛掘金老是刷到 web3,一直不知道是个啥,点进去也都是介绍区块链,感觉和前端关系不大呀!为什么要叫 web3 ?不叫 区块链3 ?
抱着疑问和菜鸟跟随Trae一起探索吧!
web3是什么?
Web3 是 Web 技术发展的第三个阶段,主要特点是去中心化和基于区块链技术。它与传统的 Web2.0 有很大的区别:
-
与前端的关系:
- Web3 需要前端开发者掌握新的技术栈和工具
- 需要学习如何与区块链交互(比如:以太坊)
- 需要了解智能合约的开发和调用
-
主要技术栈:
- Web3.js / Ethers.js:与区块链交互的 JavaScript 库
- MetaMask:最流行的加密货币钱包(也就是web3中经常提到的“钱包”之一),用于连接 DApp
- Solidity:智能合约开发语言
- IPFS:去中心化存储方案
-
前端开发的变化:
- 用户认证:使用钱包地址替代传统的用户名密码
- 数据存储:使用区块链或去中心化存储
- 状态管理:需要处理区块链交易状态
- 支付集成:直接使用加密货币进行支付
-
实际应用场景:
- DeFi(去中心化金融)应用
- NFT 交易平台
- DAO(去中心化自治组织)
- 去中心化社交平台
如果想在现有项目中集成 Web3 功能,可以从以下步骤开始:
- 安装必要的依赖:
npm install web3 @metamask/detect-provider
- 创建基础的 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 和前端的关系远不止是 "画界面" 那么简单:
-
架构模式的根本变化:
- Web2.0:客户端-服务器模式,数据集中存储
- Web3:去中心化架构,没有传统的后端服务器,前端直接与区块链网络交互
-
数据处理方式的转变:
- Web2.0:通过 API 调用中心化服务器
- Web3:前端需要直接处理区块链交易、智能合约调用、加密算法等
-
用户交互模式的改变:
- Web2.0:用户名密码登录,session/token 认证
- Web3:钱包连接,签名验证,交易确认等全新的交互流程
-
状态管理的复杂性:
- 需要处理区块链交易的各种状态(pending, confirmed, failed)
- 需要考虑区块确认时间
- 需要处理 Gas 费用估算和调整
-
安全性考虑:
- 私钥管理
- 交易签名
- 智能合约交互的安全性
举个例子,一个简单的 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 不仅仅是引入新库那么简单,而是:
- 改变了前端与后端的交互方式
- 增加了大量复杂的业务逻辑处理
- 需要考虑更多的技术细节和安全问题
- 引入了全新的用户交互模式
这就是为什么它被称为 Web3,因为它代表了 Web 技术的一次范式转换,而不仅仅是技术栈的简单叠加。
如何去学习 web3?
以下是学习 Web3 的一些推荐路径和资源:
-
基础知识准备
- 首先确保掌握基础的前端知识(HTML, CSS, JavaScript)
- 了解区块链基本概念
- 熟悉 React/Vue 等现代前端框架
-
推荐学习资源
-
官方文档:
-
学习平台:
- CryptoZombies - 交互式的智能合约编程学习平台
- Buildspace - 实践性的 Web3 项目教程
- LearnWeb3 - 系统的 Web3 开发课程
-
-
学习路线建议:
-
区块链基础
- 了解区块链原理
- 熟悉加密货币钱包使用
- 学习以太坊基础概念
-
智能合约开发
- 学习 Solidity 语言
- 了解 ERC 标准
- 掌握合约部署和测试
-
Web3 前端开发
- Web3.js/Ethers.js 库的使用
- MetaMask 集成
- DApp 开发实践
-
-
实践项目建议:
- 开发一个简单的代币
- 创建一个 NFT 集合
- 构建一个去中心化投票系统
- 开发一个简单的 DeFi 应用
-
社区资源:
- GitHub 上的开源项目
- Discord 开发者社区
- Twitter Web3 开发者社区
- 技术博客和论坛
-
开发工具:
- Truffle/Hardhat - 开发框架
- Remix IDE - 在线 Solidity 编辑器
- Ganache - 本地测试网络
- MetaMask - 浏览器钱包插件
建议:
- 循序渐进,从基础概念开始
- 多动手实践,边学边做
- 参与社区讨论,与其他开发者交流
- 关注安全性,特别是在处理智能合约时
- 持续学习,因为 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);
}
}
}
从这个例子可以看出:
-
交互复杂性:
- Web3 前端需要处理钱包连接、交易签名、Gas 费用等
- 需要实时监听交易状态和区块链事件
- 错误处理更加复杂
-
状态管理:
- 需要处理区块链特有的状态(pending、confirmed、failed)
- 需要考虑网络延迟和交易确认时间
- 需要处理用户钱包状态
-
用户体验设计:
- 需要设计钱包连接流程
- 需要展示交易进度和确认状态
- 需要显示 Gas 费用和网络状态
-
安全考虑:
- 需要处理签名验证
- 需要保护用户私钥和交易安全
- 需要验证智能合约交互
所以,Web3 不仅没有和前端脱离关系,反而对前端开发提出了更高的要求:
- 需要理解区块链概念
- 需要掌握新的开发模式
- 需要处理更复杂的交互逻辑
- 需要设计新的用户体验
这就是为什么说 Web3 和前端关系密切,它实际上扩展了前端开发的范畴,而不是简单的 API 调用替换。
js的写法变化而已,为什么要叫web3?会不会不安全?
菜鸟看完,感觉这也只是 js 的写法变化了,界面还是 html+css,其实就是逻辑不一样的前端罢了,为什么要叫 web3?而且前端交易,黑客不是很容易就破解了?
让我解释一下为什么叫 Web3 以及安全性问题:
- 为什么叫 Web3
- Web1.0:静态网页,单向信息展示
- Web2.0:用户生成内容,中心化服务器
- Web3.0:去中心化,用户拥有数据主权
这个命名不是因为技术栈的变化,而是因为整个网络架构和数据所有权的革命性变化:
- Web2:你的数据存在于各个公司的服务器中(比如微信、支付宝)
- Web3:你通过钱包完全控制自己的资产和数据
- 关于安全性 黑客确实可以看到前端代码,但是:
// 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 的安全性建立在:
- 私钥永远不会离开用户的钱包
- 所有交易都需要用户主动签名
- 智能合约的代码是公开且不可更改的
- 交易记录永久存储在区块链上,不可篡改
这就像:
- Web2 是把钱存在银行,信任银行的安全系统
- Web3 是你自己保管钱包,只有你能决定如何使用里面的资产
所以说,Web3 不仅仅是前端写法的改变,而是:
- 数据所有权的革命
- 信任机制的改变
- 价值传递方式的创新
- 用户主权的回归
这就是为什么它被称为 Web3:因为它代表了互联网的第三次革命性变革,而不仅仅是技术实现的改变。
这里的钱包指的是什么呢?手机app?
在 Web3 中,钱包主要有以下几种形式:
-
浏览器插件钱包(最常用)
- MetaMask(最流行)
- Coinbase Wallet
- TokenPocket
例如 MetaMask 的使用方式:
// 检查用户是否安装了 MetaMask if (typeof window.ethereum !== 'undefined') { // 请求连接钱包 const accounts = await ethereum.request({ method: 'eth_requestAccounts' }); console.log('当前钱包地址:', accounts[0]); } -
手机 App 钱包
- imToken
- Trust Wallet
- MetaMask 手机版
-
硬件钱包(离线冷存储,最安全)
- Ledger
- Trezor
-
网页钱包
- WalletConnect(支持多种钱包连接)
import WalletConnect from "@walletconnect/client"; // 创建连接 const connector = new WalletConnect({ bridge: "https://bridge.walletconnect.org" }); // 连接手机钱包 connector.createSession();
对于普通用户来说:
最简单的开始方式是安装 MetaMask 浏览器插件,它就像一个数字密码箱,存储你的加密货币和 NFT,同时也是你登录各种 Web3 应用的"身份证"。
安全建议:
- 备份助记词(一组用来恢复钱包的单词)
- 永远不要分享私钥
- 重要资产建议使用硬件钱包保管
- 警惕钓鱼网站和欺诈应用
所以说,Web3 钱包不仅仅是存储数字资产的工具,更是:
- 你的数字身份
- 交易签名工具
- 应用程序的登录方式
- 资产管理中心
但是很多用户都没有你说的那些软件,都不能对接到中国的app中,web3存在的意义是啥?
Web3 目前确实面临一些挑战,让我分析一下:
-
现有困境
- 用户门槛高(需要理解钱包、Gas费等概念)
- 与传统支付系统割裂
- 监管政策不明确
- 使用体验不够友好
-
存在的意义
- 数据主权:用户完全控制自己的数据和资产
- 去中心化:不依赖单一平台或公司
- 可编程性:智能合约能实现复杂的自动化业务逻辑
- 全球化:跨境交易无需中间商
-
实际应用场景
// 例如:数字艺术品确权 const NFTContract = { // 艺术家可以直接发行作品 createArt: async function(artworkData) { // 在区块链上记录版权信息 }, // 买家可以验证真伪 verifyAuthenticity: async function(tokenId) { // 查询区块链上的所有权记录 } } -
未来发展方向
- 提升用户体验
- 与传统支付系统融合
- 降低使用门槛
- 完善监管框架
虽然目前 Web3 在中国的发展受限,但它代表的技术革新和理念是有价值的:
-
技术创新
- 分布式存储
- 密码学应用
- 共识机制
-
商业模式创新
- DAO(去中心化自治组织)
- DeFi(去中心化金融)
- GameFi(游戏金融化)
-
价值传递创新
- 点对点交易
- 无需信任交易
- 可编程货币
所以,Web3 的意义不仅在于当前的应用,更在于它开创了一种新的互联网范式,即使现在还不完善,但它代表了未来可能的发展方向。就像早期的互联网一样,需要时间来完善基础设施和应用生态。
总结
综上所述,web3并不是对前端框架的革命或者html、css、js的替换,只是对开发者思维的转变(不是因为技术栈的变化,而是因为整个网络架构和数据所有权的革命性变化),替换掉调用后端api将东西存在数据库的流程。
但是目前在国内不流行,菜鸟感觉不流行的主要原因是:
-
web3 是
p2p的,没有中间商的技术保障,一但出现问题,没有人能兜底。其实只要大厂搞区块链,并提供技术保障,用户还是愿意相信,只是那样大厂赚不到钱,所以也必然不会推广区块链这个技术! -
这个需要对应的钱包才能使用,但是中国客户基本用的都是手机银行、微信、支付宝等工具,需要大厂对区块链的钱包做兼容,但是工程量可很大,且不赚钱!