# 前端工程师，你了解Web3了么？

By [Gustaf](https://paragraph.com/@gustaf) · 2022-08-18

---

要说这2年最火的是什么？web3绝对数一数二，这2年web3的热度持续明显的上升，随处一搜，都是关于web3的新闻、资讯、技术文章等，而且基本都是近2年的；同时无论是投资人、大公司、开源机构还是个人都已经开始参与其中了，那么到底什么是web3?web3与当前的互联网的差异是什么？web3解决了什么问题？对于前端工程师意味着什么？ewb3又需要什么样的技能呢？

我最近专门对web3进行了探索，今天就和大家聊聊一聊web3；

**什么是Web3?**

web3或者Web3.0的概念并不是什么新的概念，只是在2021年底变得火爆起来，可是到目前并没有明确的定义。目前普遍的说法来源于 2014 年以太坊联合创始人 Gavin Wood 的一篇博客，核心是基于区块链的去中心化的价值互联网，通过加密技术和不可篡改性，提供可靠信任的互联网服务，实现让每一个用户不仅仅是参与者,也是建设者，最终将用户的数据还给用户；

简单讲就是去中心化、隐私、信任、数据所有权；为什么web3是这样的？，他到底解决了什么问题，那么先让我们来看看web1.0和web2.0及web3.0的区别到底是什么？

web1.0：通常来讲web1.0是从1991到2004年间的互联网，彼时的互联网主要还是提供新闻资讯等阅读服务，信息主要由各大门户网站，如搜狐、新浪、网易等网站来提供，用户只能被动接收，这个阶段主要还是以读为主，静态网站，只读属性，属于Read阶段；

web2.0：大概从2004年至今，互联网已经不只是用来获取新闻资讯了，用户可以参与其中，进行互动、生产内容；这个时候的互联网形式主要演变成微博、QQ、微信、豆瓣等等服务形式，用户生产大量内容，主动参与其中；这个阶段的互联网从只读变成了可读可写的阶段，属于Read-Write阶段；

web3.0：目前我们还处于web2.0阶段，web3.0才刚刚开始，并且每个阶段都是经历了长时间的演进及过渡，所以web2.0和web3.0会并存很久。这个阶段的主要特点就是数据的所有权，把用户自己的数据还给自己；目前的互联网服务主要是几个大的互联网公司提供服务，几近垄断，用户生产的数据存储在各公司的中心服务器上，数据的所有权归公司所有，数据经常被用来进行广告投放、商品推荐以及数据可能会被无故删除或者泄漏，带来了隐私泄漏、安全风险、信息丢失等；所以web3.0的目的就是把数据还给用户，用户对自己的数据拥有所有权，即Own阶段；

**web3到底解决了什么问题？我们为什么需要这样的web3？**

web3的核心就是数据所有权，实现数据真正属于用户自己，成为数据的拥有者。

数据所有者意味着什么呢？

你在互联网上的东西完全属于你自己，就像你在现实购买的东西，创造的内容，别人送给的东西，分享给你的东西，你是有所有权的。但是目前我们在互联网上的东西，并不属于我们。比如我们写的微博、博客、发的朋友圈等内容，表面看起来是我们的，实质还是属于互联网公司，他们有权删除，修改，屏蔽，一旦终止服务时，我们的东西就不复存在了，同时更有甚者，花钱买的一些书籍、杂志、课程等数字产品也会打水漂；而且我们在一家公司生产的内容或者购买的数字产品，是不能在其他公司的服务来使用的，我们花在互联网的时间、精力、钱财，最终可能都不属于我们自己；并且我们还时时面临安全风险、隐私泄漏等问题，成了电信诈骗、广告骚扰的受害者；

而web3的目标就要解决这些问题，让用户成为互联网的真正建设者和拥有者，建设成一个人人拥有，互相信任，安全的互联网；

**web3的组成**

既然web3的目标是让用户成为数据的拥有者，实现安全、隐私、信任的互联网，那么web3是如何实现的？又是如何组成的呢？

web3的核心是架构在区块链之上，通过去中心化的点对点的分布式网络和密码学的加密技术实现数据无法被篡改，数据存储在区块链上，分布在各个节点之上，数据的任何变更都会被记录，并且不能被篡改；用户登录授权不再采用用户名和密码的形式，而是使用电子钱包，通过公钥／私钥的加密技术来登录及授权使用web3的应用，即DApp(去中心化的应用），钱包通过32位的地址来进行标记，不包含个人信息，从而保证个人隐私及安全。

web3的整个组成及链路如下：

![区块链架构](https://storage.googleapis.com/papyrus_images/50dd72e2ef10d149020a059b5c503d259c26129f01915a7f71e124d8f05a9b82.jpg)

区块链架构

用户使用个人钱包访问DApp，通过Provider和Singer提供的服务，与智能合约进行交互，智能合约运行在区块链的虚拟机（EVM）上，并且将交易等数据存储在区块链上；我们的数据与钱包关联，最终成为数据拥有者，但是如果钱包丢失了，那数据也就找不回来了，所以一定要保护好自己的钱包；

这里面涉及到了较多的名词概念，下面做一个解释：

Blockchain:区块链（Blockchain）是比特币的底层技术，像一个数据库账本，记载所有的交易记录，本质上是一个去中心化的数据库。

NFT：NFT（英语全称：Non-Fungible Token，中文：非同质化代币）是一种被称为[区块链](https://baike.sogou.com/lemma/ShowInnerLink.htm?lemmaId=99996909&ss_c=ssc.citiao.link)数位账本上的[数据单位](https://baike.sogou.com/lemma/ShowInnerLink.htm?lemmaId=68671776&ss_c=ssc.citiao.link)。每个代币可以代表一个独特的数码资料。通常被称为数字藏品，比如艺术品、收藏品等；

DAO：去中心化自治组织（Decentralized Autonomous Organization）是围绕一个使命而建立起来的团体，该团体通过在区块链上执行的一套共享规则进行协调和合作。

DeFi:去中心化金融（Decentralized Finance）是以[比特币](https://baike.sogou.com/lemma/ShowInnerLink.htm?lemmaId=44342252&ss_c=ssc.citiao.link)和以太币为代表的加密货币，[区块链](https://baike.sogou.com/lemma/ShowInnerLink.htm?lemmaId=99996909&ss_c=ssc.citiao.link)和智能合约结合的产物。与传统金融相比，去中心化金融有更强的开放性和包容性。

Smart Contract:是一种旨在促进以信息化方式传播、验证或执行合同的谈判或履行的计算机协议。智能合约可以在没有第三方的情况下执行可靠的交易。这些交易是可跟踪且不可逆的。智能合约包含有关合约条款的所有信息，并自动执行所有设想的操作。简单讲智能合约就是运行在区块链上的一段不可篡改的程序代码，严格按照约定的条款执行；

Wallet:一个数字资产钱包，允许用户存储、传输和接收在区块链网络上发行的各种类型的代币。它可以包含以太坊和Klaytn等加密资产、数字内容NFT和灵魂绑定代币（SBT），可用于身份认证和结业证书等凭证。

DApp:去中心化应用也被称为DApp（decentralized application），DApp可以是网站，也可以是手机App，只要主要逻辑和数据在区块链上就可以称为DApp，在以太坊平台上，一个DApp肯定基于一个或多个智能合约。

Ethereum：以太坊（英文Ethereum）是一个[开源](https://baike.baidu.com/item/%E5%BC%80%E6%BA%90/246339)的有[智能合约](https://baike.baidu.com/item/%E6%99%BA%E8%83%BD%E5%90%88%E7%BA%A6/19770937)功能的公共[区块链](https://baike.baidu.com/item/%E5%8C%BA%E5%9D%97%E9%93%BE/13465666)平台，通过其专用[加密货币](https://baike.baidu.com/item/%E5%8A%A0%E5%AF%86%E8%B4%A7%E5%B8%81)[以太币](https://baike.baidu.com/item/%E4%BB%A5%E5%A4%AA%E5%B8%81/20857686)（Ether，简称“ETH”）提供[去中心化](https://baike.baidu.com/item/%E5%8E%BB%E4%B8%AD%E5%BF%83%E5%8C%96/8719532)的以太[虚拟机](https://baike.baidu.com/item/%E8%99%9A%E6%8B%9F%E6%9C%BA/104440)（Ethereum Virtual Machine）来处理[点对点](https://baike.baidu.com/item/%E7%82%B9%E5%AF%B9%E7%82%B9/7452984)合约。（来源百度百科：[https://baike.baidu.com/item/%E4%BB%A5%E5%A4%AA%E5%9D%8A/20865117）](https://baike.baidu.com/item/%E4%BB%A5%E5%A4%AA%E5%9D%8A/20865117%EF%BC%89)

Solidity:Solidity 是用于编写智能合约(Smart Contract)的语言，在语法上和Java，Javascript等语言类似,它被设计成以编译的方式生成以太坊虚拟机代码，并运行在以太坊虚拟机上（EVM），是目前最主流的智能合约编程语言。

**Web3存在的问题？**

web3目前正在起步阶段，虽然作为第3代互联网，为用户提供信任、可靠的拥有数据的互联网服务，但是由于仍然处于早期阶段，会存在不少问题。

效率：web3是构建在区块链之上，采用分布式点对点的方式，那么在进行交易的时候，是需要矿工通过挖矿，来产生一个新的区块，来链接到区块链上，并且要进行全网数据同步，将新生成的区块同步到所有节点，这个过程是非常耗时的，可能需要10分钟，虽然现在通过L2等方式，已经大大提高了效率，但是与web2相比，效率仍然明显低下；

Gas费用：web3在进行交易时，需要修改区块链数据，这个过程是需要收费的，因为这个过程是需要矿工进行挖矿来产生新的区块，所以费用会支付给矿工，用来奖励矿工通过挖矿来产生新的区块；这个gas就有点像燃油费一样，比如我们乘车从一个地方到另一个地方，那么这个过程就会消耗汽油，就产生了油费，比如消耗了5升汽油，假如1升汽油价值10元，那整个行程就花费了50元的油费；gas其实也一样，每一次交易系统都会计算出大概需要花费的gas数，1个单位的gas会与代币（比如以太币）有一定的换算关系，代币与现实世界的钱也有汇率关系，最终就会花费现实世界的钱；所以只要进行交易，修改区块链的数据，就需要花钱。

智能合约不能修改：区块链上的数据是不能篡改的，那么同理，智能合约既然是运行在区块链之上，所以智能合约一旦部署，就不能再修改了。如果你修改了合约代码，然后再部署到区块链上，那么就会生成一个新的合约，而且原来的合约还在；所以合约的代码一定不要出错，否则就比较麻烦了。

加密货币：区块链最早是因比特币而起，因此区块链往往就和加密货币联系到了一起，因为炒币、割韭菜等问题，而使区块链背上了污名；

web2的互联网公司：虽然很多互联网公司，包括很多大厂都在对区块链等进行投入，但是web3的理念和理想却是与web2的互联网公司相悖；web2时代，数据归互联网公司所有，web3时代，数据归个人所有，那么最终这些大的互联网公司在web3及区块链等方面会是什么样的态度及承担什么角色，也还是个未知数；

政府：web3架构在区块链的去中心化之上，采用DAO的去中心化且自治的方式，与中心化的公司完全不同，那么政府机构如何参与其中，如何监管，目前还没有清晰的方案；

web3的世界正在来临，但是web3目前也确实存在很多问题，需要不停的完善、改进，这个过程是渐进的，会与web2持久并存。

**web3对于前端工程师的意义？**

对于前端工程师，web3又有什么意义呢？首先，作为工程师，我们要始终保持好奇心，始终要保持对新技术、前沿技术的关注；其次，web3对于前端工程师是非常友好的，门槛低，机会多，空间大；

技术一致：对于前端来讲，web3与web2的前端开发技术是一致的，并没有本质的区别，用到的技术、工具等完全一样， 些许差别就是需要用到web3相关的前端js库，目前主要使用ethers.js和web3.js，那么想要开发DApp，对于前端工程师来讲，几乎没有门槛；

开发模式：web3的DApp和web2的App的开发模式发生一定的变化：

web2的模式是前端通过http等方式与中心化的服务进行通信，服务与数据库连接，提供web2.0的互联网服务；

web3的DApp通过JSON－RPC，以websocket方式与智能合约进行通信，数据存储在区块链的；

web2.0的服务需要各自注册用户／密码，web3.0只需要1个钱包就可以实现通用授权登录；

开发模式的转变也为我们带来了更多的机会；

智能合约：智能合约运行在区块链上，类似web2.0的服务，但是本质差别很大，架构、开发模式等也完全不一样；但是以以太坊为主的智能合约对于前端来讲，却是比较友好；一个完整的智能合约工程，除了合约本身的代码需要Solidity来编写，其他所有的代码都可以用nodejs来实现，包括测试、编译、部署等，都可以通过javascript来编写实现，对于前端来讲，学习成本很低，只需熟悉下相关的SDK；而且Solidity语言与Javascript比较相似，容易上手；对于前端工程师来讲，不仅可以开发DApp的前端页面，也可以尝试来开发智能合约；

web3作为一个新的事物，必然有其存在的道理，同时也一定要解决用户的问题，为用户提供价值。目前可以看到web3在特定的场景已经可以解决特定问题了，

比如食品安全中，大家最关注的源头问题，可以通过区块链来记录食品的源产地、运输链路等整个周期，好处在于整个链路无法篡改，可确保食品生产的各个环节可追踪，可溯源，从而确保食品安全；

在招聘领域，可以通过区块链来记录个人的简历，教育经历、培训、职业背景等；用人单位可以通过个人授权来查看简历，获取个人信息，同时由于简历数据无法篡改，也不用再请背景调查公司来进行调查，既节省时间，也节省钱财；

在元宇宙方向，也可以为个人在虚拟世界购买的资产，提供所有权证明；并且实现1个资产可以在任何1 个元宇宙中使用；至于类似XtoEarn的模式，也是目前比较火的方向，比如Stepn应用，就是通过跑步来赚取相应的代币，让用户在运动中也能赚钱；

相信未来，web3的场景会越来越多，会慢慢走进每个人的生活中，会为用户带来一个不一样的互联网世界。

---

*Originally published on [Gustaf](https://paragraph.com/@gustaf/web3)*
