web3.0 开发实践
优质博文:IT-BLOG-CN
一、简介
Web3.0
也称为去中心化网络,是对互联网未来演进的一种概念性描述。它代表着对现有互联网的下一代版本的设想和期望。Web3.0
的目标是通过整合区块链技术、分布式系统和加密技术等新兴技术,构建一个更加去中心化、安全、隐私保护和用户的互联网。
Web 3.0
具备四项主要功能
【1】去中心化: 去中心化的Web
应用程序是Web 3.0
的关键功能。其目的是在去中心化网络中分发和存储数据。在这些网络中,不同的实体拥有底层基础设施,用户直接向存储提供商付费以访问该空间。
去中心化的应用程序还将信息副本存储在多个位置,并确保整个过程中的数据一致性。每位用户可以控制其数据存放的位置,而不必将其移交给集中式基础设施。去中心化的互联网用户可根据需要出售自己的数据。
【2】去信任性: 在集中式Web
应用程序和服务中,用户通常需要信任中央权威机构来管理其数据、交易和交互。这些中央权威机构可以控制用户数据,并且可以操纵系统的规则。数据可能存在安全风险或管理不善,从而导致用户信息丢失或滥用。
相比之下,Web3
引入去信任性,因此用户可以在无需信任任何特定方的情况下进行交易和交互。
【3】语义网: 借助语义网,应用程序能够通过理解Web
数据的内容和上下文来执行复杂的任务。语义网使用元数据和人工智能为用户生成的数据提供含义(语义)。
Web 3.0
旨在更全面地转向目前存在于现有Web
技术某些方面中的语义网技术。例如,搜索引擎可提供更准确且与上下文相关的搜索结果,而智能代理则可帮助用户更高效地执行任务。
【4】互操作性: Web 3.0
的目标是在不同技术之间建立更多的互连,从而数据无需中介即可在不同平台之间流动。互操作性使数据具有可移植性,因此用户可以在服务之间无缝切换,同时保持自己的首选项、配置文件和设置。
与此同时,集成各种物联网IoT
设备的协议将Web
的覆盖范围扩展到传统边界之外。例如,支持无边界交易的加密货币技术允许跨地域和政治边界进行价值交换。
二、web1.0 web2.0 web3.0 之间的区别
特点 | web1.0(静态互联网) | web2.0(互动互联网) | web3.0(去中心化互联网) |
---|---|---|---|
时间 | 20世纪90年代初到2000年代初 | 2000年初到现在 | 2010年代后期至未来 |
概述 | web1.0是互联网的初始阶段,主要特点是静态内容和信息的单向传播,内容由少数发布者提供,用户主要是信息的消费者 | web2.0引入了互动内容和社交网络,使用户即是信息的消费者也是生产者 | web3.0被很多人称作互联网的未来,强调去中心化、信任最小化和用户主权 |
特点 | 用户是信息的消费者,互动性低 | 互动性增强,社交网络、博客、视频分享平台 | 数据和应用的去中心化管理,用户控制自己的数据和身份,降低对中心化中介的依赖 |
主要技术 | HTML、GIF图像、电子邮件 | AJAX、JavaScript、社交媒体平台 | 区块链、智能合约、去中心化存储IPFS、去中心身份认证DID |
代表平台 | 雅虎、新浪、MSN | 抖音、微博、YouTube | 以太坊、Polkadot、Uniswap |
Web 2.0
面临的挑战:
【1】服务提供商可能无法在不损失声誉和丢失客户群体的情况下将其数据转移到其他平台。
【2】服务用户对其数据使用和管理方式的控制权有限。
【3】集中式平台可能会独立制定某些对最终用户产生重大影响的决策。例如,这些平台可以筛选某些用户生成的内容或限制最终用户对某些网站功能的访问。
三、区块链
区块链技术构成了许多Web 3.0
应用程序的基础,提供了透明度、不可变性和去信任性。区块链是去中心化的分布式分类账,用于存储节点网络上的交易记录或数据。
区块链数据库将数据存储在按时间顺序保持一致的区块中,只有在通过对等网络达成共识后,才能删除或修改这些区块。区块链内置的机制可以阻止未经授权的交易条目并在这些交易的共享视图中创建一致性。因此,可以使用区块链创建不可更改或不可变的分类账,以此跟踪所有类型的交易。
接下来将介绍其他推动Web 3.0
发展的关键技术。
区块链: 一串包含交易信息的数据块按照时间顺序有序连接组成的链表结构。
【1】区块Block
: 一个区块包含了一系列交易记录,每个区块都有一个独特的哈希值和前一个区块的哈希值;
【2】链Chain
: 区块通过前一个区块的哈希值链接在一起,形成一个不可篡改的记录链条;
【3】节点: 每个安装有区块链客户端软件并连接在区块链网络上的智能设备(矿机、手机、服务器等);
【4】分布式: 区块链中,不存在任何“中央机构”去限制节点的正常操作。每个节点的数据都是独立记录和存储的,都可以进行交易处理,并以某种共识机制进行投票。共识当成后都会更新分布式账本的内容,每个节点也会维护自己的账本记录。
【5】51%
法则: 达成共识后的数据会永远存储,如果有恶意节点篡改数据,需要同时控制链上超过51%
的节点来提供证明。节点越多,该区块链越安全。
【6】共识机制Consensus Mechanism
: 用于确保区块链网络中所有节点对数据的统一认知。常见的共识机制包括:
☑️ 工作量证明Proof of Work, PoW
:矿工通过解决复杂的数据问题来验证交易。
☑️ 权益证明Proof of Stake,PoS
:节点根据持有的加密货币数量和时间来验证交易。
☑️ 委托权益证明Delegated Proof of Stake,DPoS
:通过投票选出代表节点来验证交易。
智能合约
智能合约是基于区块链技术的自动执行计算机程序,具有公开透明、不可篡改和永久运行等特点。其通过代码强制执行合约条款,提高了交易的效率和可靠性,是数字经济的重要组成部分。智能合约的开发需明确需求、选择平台、编写代码、测试、部署、调试、维护和更新等步骤。
智能合约的特点:
【1】公开透明: 智能合约部署在区块链上,其内容是公开透明的,所有参与者都可以查看合约的内容和执行过程,从而增加了信任和透明度。
【2】不可篡改: 由于智能合约的执行基于区块链技术,合约内容是无法被篡改或修改的,确保了合约的可靠性和安全性。
【3】永久运行: 运行在区块链上的智能合约由网络节点共同维护,因此可以永久地运行下去,不受单一机构或服务器的控制。
智能合约的开发逻辑通常遵循以下步骤:
【1】确定需求: 首先,你需要明确智能合约的需求和功能。这包括确定合约的参与者、合约的执行条件、合约的功能等。确保你对所需的合约功能有清晰的理解。
【2】选择合适的平台: 根据你的需求和技术栈,选择合适的区块链平台进行开发。目前比较流行的区块链平台包括以太坊、EOS
、Tron
等,它们提供了各种开发工具和语言来编写智能合约。
【3】选择合适的编程语言: 不同的区块链平台支持不同的编程语言来编写智能合约。比如以太坊主要使用Solidity
语言,EOS
使用C++
和WebAssembly
,Tron
使用Solidity
和Java
等。选择适合你需求和技能的编程语言。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract Demo {
address public owner;
// 合约构造函数,设置合约owner
constructor() {
owner = msg.sender;
}
// 提现函数,owner可以提现合约中的以太币
function withdraw(uint _amount) external {
require(msg.sender == owner, "You are not the owner");
require(address(this).balance >= _amount, "Insufficient balance");
payable(owner).transfer(_amount);
}
// 转账函数,将合约中的以太币转账给指定地址
function transfer(address payable _to, uint _amount) external {
require(address(this).balance >= _amount, "Insufficient balance");
_to.transfer(_amount);
}
// 获取合约余额
function getBalance() external view returns (uint) {
return address(this).balance;
}
// 允许合约接收以太币
receive() external payable {}
}
【4】编写智能合约代码: 根据需求和选择的平台及语言,编写智能合约的代码。在编写代码时,确保考虑到安全性、效率和可扩展性等方面的问题。
【5】测试智能合约: 在部署合约之前,务必进行充分的测试。测试可以包括单元测试、集成测试和功能测试等,以确保合约的功能和安全性达到预期。
【6】部署智能合约: 在选择的区块链平台上部署智能合约。部署合约时需要支付一定的Gas
费用,确保你有足够的资金来支付部署费用。
【7】调试和优化: 部署后,可能需要进一步调试和优化合约的代码。根据实际运行情况,及时调整合约的逻辑和参数,以提高合约的性能和稳定性。
【8】维护和更新: 智能合约的开发不是一次性的工作,需要持续的维护和更新。随着业务需求的变化和新的技术进展,可能需要对合约进行更新和升级。
DApps(Decentralized Applications,去中心化应用)
去中心化应用程序DAPPS
是一种基于区块链技术构建的应用程序,它与传统的中心化应用程序有所不同。在传统中心化应用程序中,数据由单一的机构或公司掌控,而DAPPS则将数据所有权归还给用户,并且不依赖于任何中心化的服务器或云服务。
DAPPS
的优势:
【1】数据安全: 由于DAPPS
的数据存储在区块链上,因此数据安全性得到了极大的提高。黑客想要攻击DAPPS
的难度远高于传统的中心化应用程序。
【2】数据所有权归用户所有: 在DAPPS
中,数据所有权归用户所有,而不是归应用程序开发人员所有。这使得用户可以更好地掌控自己的数据。
【3】透明性和可追溯性: 区块链的特性使得DAPPS具有更高的透明性和可追溯性。所有的交易记录和数据变动都会被永久保存,并且可以随时被查询。
DApp
的工作原理:
前端: 用户界面,通过Web3.js
或Ethers.js
等库与区块链交互。
智能合约: 后端逻辑,部署在区块链上,处理应用的核心功能。
区块链网络: 分布式账本,存储交易和智能合约的状态。
火出圈的DApp
: NFT
交易中心: opensea.io/ blur.io/
查看当前较火的DApp
: DApp
热度排名
DeFi(Decentralized Finance,去中心化金融)
DeFi
: 是基于区块链技术的去中心化金融服务,包括借贷、交易、支付和保险等。例如:
☑️ Uniswap
:去中心化交易所DEX
,允许用户直接在链上进行代币交换。
☑️ Aave
:去中心化借贷平台,用户可以存入加密资产赚取利息或借入资产。
DeFi
的优势:
☑️ 无需中介:用户直接在区块链上进行交易,减少中介费用和时间。
☑️ 高透明度:所有交易和合约公开透明,用户可以验证。
☑️ 全球可访问:任何人只需互联网连接即可参与DeFi服务。
DeFi
的风险::
☑️ 智能合约漏洞:代码漏洞可能导致资金损失。
☑️ 市场波动:加密资产价格波动剧烈,存在投资风险。
☑️ 法规不确定性:各国对DeFi的监管政策尚未明确。
NFT(Non-Fungible Token,非同质化代币)
NFT
是一种独特的数字资产,代表着数字或实体资产的所有权。与传统加密货币(如比特币、以太坊)不同,每个NFT
都有独一无二的标识和元数据,使其不可互换。NFT
在各个领域都有广泛应用:
【1】数字艺术: 艺术家可以通过NFT销售数字艺术作品,确保作品的唯一性和所有权。这为艺术家提供了新的营销和收益机会,同时为购买者提供了独特的数字艺术品。例如,Beeple
的作品Everydays: The First 5000 Days
以6,900
万美元的价格售出,创下了数字艺术品的纪录。
【2】游戏: NFT
在游戏中发挥着重要作用,用于代表游戏中的虚拟资产,如道具、角色和稀有物品。玩家可以拥有和交易这些NFT,从而在游戏中展示自己的收藏和实力。一个例子是Axie Infinity
游戏中的角色Axie
,它们是NFT
,玩家可以培养、交易和利用它们进行游戏。
【3】虚拟地产: NFT
也被用于购买和交易虚拟世界中的土地和房地产。虚拟地产平台如Decentraland
提供了一个数字化的世界,用户可以购买、建设和交易虚拟土地。这种虚拟地产的所有权和价值由NFT
来表示。
【4】收藏品: NFT
为数字收藏品的认证和交易提供了基础。例如,NBA Top Shot
是一个基于NFT
的数字篮球卡平台,用户可以购买和交易具有独特价值的数字篮球卡片,这些卡片代表了具体的比赛时刻。
四、开发工具及框架
【1】服务端: 开发可以使用任意服务端框架和语言,只需要保证能与Relay Network
进行交互。大多数情况下偏向使用Node
环境,因为大部分合约使用NPM
进行包管理,使用hardhat
做编译和测试流程,使用JavaScript
已成为智能合约中不可忽视的一环。使用Node
生态开发有助于代码的复用。两个和Web3.0
交互的重要js
包: Web3.js
, Ethers.js
【2】页面端Frontend
: 前端可使用任意语言和框架进行搭建。包括不限于:React/Vue
等各种前端封装框架,Redux
等状态管理库,Tailwind
等CSS
库。前端当然可以也使用Ether.js
与Web3.js
与以太坊进行交易,但在React
框架层面下,有更好的hooks
库wagmi
与useDApp
。
☑️ Wagmi
: 基于ethers.js
集成了大量基础的React Hooks
,并提供了与外部Provider/Signer
交互的快捷函数。
☑️ useDApp
: 和wagmi
一样,useDApp
提供了丰富的React Hooks
。相比wagmi
,他更复杂,但支持multicall.js
。
【3】IPFS(InterPlanetary File System)
星际文件系统: IPFS是一个去中心化的文件存储和共享网络协议。由Protocol Labs
创建,旨在实现一种更高效、安全和持久的文件存储和传输方式。IPFS
可以被视为下一代互联网的基础架构之一。
其工作原理如下:
☑️ 文件存储: 用户将文件添加到IPFS网络,文件被分块,并为每个块生成哈希值。这些哈希值被存储在本地节点的IPFS存储库中,并通过DHT
广播到网络中。
☑️ 文件访问: 用户通过内容标识符CID
请求文件。IPFS
节点使用DHT
查找存储该文件或其块的节点,并从这些节点下载文件。
☑️ 内容传播: 当一个节点下载了文件或文件块后,它也可以作为提供者,将这些数据分享给其他节点。这种方式加快了文件的传播和下载速度,提高了网络的整体效率
【4】Hardhat
: Hardhat
是一个用于以太坊智能合约开发的开发工具套件,支持编写、测试和部署智能合约。如今在所有的DApp
开发中,有过51%
的项目使用Hardhat
来支持本地开发工作流。Hardhat
提供了一种简单的方式创建本地EVM
兼容区块链开发的环境,并且支持直观的debug
方式,此外,还有丰富的插件社区,帮助开发者完成一系列特定的需求。
【5】测试网络: 开发者直接在Main Network
开发消费较大,以太坊也提供了多个测试网络以供开发,常用的有:
☑️ Sepolia
: 以太坊的测试网络,使用PoW共识机制,模拟主网环境。
☑️ Kovan
: 基于PoA
(权威证明)共识机制,适用于快速测试和开发。
☑️ Rinkeby
: 也是PoA
测试网络,稳定性和速度较高。
【6】Remix
: Remix IDE
是一个基于Web
的集成开发环境,用于构建和部署以太坊智能合约。它提供了一个友好的界面和强大的功能,包括代码编辑器、编译器、调试器和部署工具等。Remix IDE
支持Solidity
和Vyper
两种智能合约语言,并且提供了丰富的插件和扩展,使开发人员能够更轻松地进行开发、测试和部署智能合约。
五、web3.0不足之处
问题 | 描述 |
---|---|
扩展性 | 问题描述: 当前区块链网络在处理大量交易时面临性能瓶颈,导致交易速度慢和交易费用高。 案例分析: ☑️ 以太坊网络:由于 DeFi 和NFT 热潮,网络拥堵严重,Gas 费飙升。例如,2021 年5 月,以太坊网络的平均交易费用达到70 美元以上 。☑️ 比特币网络:比特币的区块大小限制和10分钟的出块时间导致确认交易时间较长。 可能解决方案: ☑️ Layer 2 解决方案:如闪电网络(比特币)和Rollups (以太坊),通过在主链外处理大量交易,缓解主链的压力。☑️ 分片技术 Sharding :将区块链分成多个部分,每个部分处理一部分交易,提高整体处理能力。 |
用户体验 | 问题描述: Web3.0 应用的用户体验仍然存在较大改进空间,特别是在易用性和访问性方面。案例分析: ☑️ 钱包使用:用户需要管理复杂的私钥和助记词,稍有不慎就可能导致资产丢失。例如,许多用户在操作 MetaMask 时因为私钥管理不善而遭受损失。☑️ DApp 交互:DApp 的界面和用户交互体验与传统Web2.0 应用相比仍显复杂,阻碍了普通用户的使用。可能解决方案: ☑️ 改进用户界面 UI 和用户体验UX 设计:简化操作流程,提供更直观的界面。☑️ 引入用户友好的身份验证机制:如社交登录、无密码验证等,减少用户管理私钥的复杂性。 |
合规和法律风险 | 问题描述: Web3.0 技术的去中心化和匿名性使其在合规和法律监管上面临挑战。案例分析: ☑️ 监管不确定性:不同国家和地区对加密资产和区块链技术的法律法规不统一,导致合规风险。例如,美国证券交易委员会 SEC 对加密货币的监管态度影响了许多项目的发展。☑️ 非法活动:匿名性和去中心化的特点被不法分子利用,用于洗钱、诈骗等非法活动,增加了监管难度。 可能解决方案: ☑️ 推动全球监管标准化:国际间合作,制定统一的监管框架。 ☑️ 采用合规技术:如链上身份验证 on-chain KYC 和链上监控工具,确保遵守法律法规。 |