<!--StartFragment-->
背景
随着互联网的逐步发展,Web1.0 主要提供静态内容,用户只能浏览和获取信息;Web2.0 则开启了互动和社交时代,用户不仅可以消费内容,还可以参与内容的创建,但数据多由中心化平台控制。Web3.0 是一个新兴的互联网发展阶段,主要基于区块链技术,通过去中心化的方式使用户拥有对数据和资产的真正所有权,增强了用户的掌控感。
DApp(去中心化应用)正是Web3的核心概念。它使得应用程序无需中心化服务器,依赖于智能合约在区块链上自动执行,带来了透明性、安全性以及用户对自身数据和资产的掌控权。
DApp 项目需求
- 去中心化:无须许可、无中心化实体控制。
- 共识机制:通过区块链共识机制,确保数据的安全、透明,任何人都可以验证数据的正确性。
- 资产的真正所有权:用户对其数字资产具有完全的掌控权,无需信任中介机构。
- 灵活的经济模式:允许用户创建和交易代币资产,通过激励机制鼓励参与和贡献。
- 开放性与透明性:系统对所有用户公开,透明且可审计,用户可以信任并验证应用程序的正确性。
调研与分析
做什么?
- 构建一个基于区块链技术的去中心化应用,例如 NFT 市场、去中心化金融(DeFi)平台、DAO 等。
为什么要用DApp?
去中心化——》无需许可,共识机制强——》获得更加广泛的,价值的标的,资产所有权归个人,进入与退出更加的容易,个体的掌控感增强,还可以把资产创建股份
- 去中心化:打破了传统中心化应用中信任和数据掌控的壁垒。
- 数据不可篡改:区块链的透明和不可篡改特性确保了数据和交易的安全性。
- 提高信任度:通过共识机制,系统可以获得更广泛的信任,无需依赖中心化的第三方机构。
解决哪些传统方法无法解决的问题?
- 消除中介:传统应用依赖中介机构管理和验证数据,而DApp不需要中介,降低了运营成本并提高了效率。
- 提升透明度:所有交易和数据都记录在区块链上,可公开审计,增强了系统的透明性和安全性。
- 提高进入和退出的自由度:DApp中的资产直接由用户控制,退出或进入应用时无需依赖中心化实体的批准。
系统设计
Web3架构
DApp 的系统架构与传统 Web2.0 应用有显著差异,它主要依赖于区块链和去中心化技术。典型的 Web3 架构如下:
- 用户——前端(Frontend):用户通过前端与 DApp 进行交互。
- Provider(通过 JSON-RPC API):前端通过 provider 与智能合约通信,Provider 可以是钱包应用如 MetaMask。
- 智能合约(Smart Contract):智能合约是在区块链上自动执行的代码,处理业务逻辑。
- EVM(以太坊虚拟机):智能合约在 EVM 中执行。
- 区块链(Blockchain):所有数据都存储在区块链上,确保数据的安全和不可篡改。
读取链上数据的流程
user——frontend——(通过json-rpc api)provider——智能合约——evm——blockchain
- 用户通过前端发送请求。
- 前端通过 JSON-RPC API 调用 provider。
- Provider 将请求传递给智能合约。
- 智能合约在 EVM 中执行,并返回结果至前端。
数据上链
- Signer:用户使用私钥对交易进行签名,并通过钱包将签名的交易发送到区块链上。钱包通常负责与用户的私钥进行交互,如 MetaMask。
索引方案
user——frontend——indexer——blockchain
区块链数据的检索通常是通过 indexer 实现,例如 TheGraph。基本流程如下:
- 用户通过前端发出数据请求。
- Indexer 收集并处理链上的数据。
- 通过前端展示检索到的数据。
存储方案
user——frontend——ipfs library——ipfs node
- IPFS(InterPlanetary File System):DApp 通常将大型文件(如图像、视频等)存储在 IPFS 中,因为链上存储的成本较高。流程为:
-
- 用户通过前端上传文件。
- 前端调用 IPFS 库将文件上传到 IPFS 网络。
- IPFS 返回哈希值,作为文件的唯一标识符,存储在区块链上。
Web3 和 Web2 的对比
|
|
|
功能 |
Web2 |
Web3 |
数据管理 |
中心化存储 |
去中心化存储(如区块链、IPFS) |
数据所有权 |
平台拥有数据 |
用户拥有数据 |
身份验证 |
平台账号密码 |
DID、区块链地址 |
应用架构 |
后端服务器 |
智能合约 |
存储方式 |
云存储、数据库 |
Arweave、链上存储、IPFS |
透明性和信任 |
封闭,需信任平台 |
公开,用户可验证和审计 |
支付激励 |
广告收入、订阅 |
加密货币支付奖励 |
数据篡改 |
需要平台权限 |
用户权限修改,公开审计 |
应用类型 |
App(中心化应用) |
DApp(去中心化应用) |
经济模式 |
广告、订阅、用户数据变现 |
代币经济,参与即有激励 |
协议对比
Web3 应用可以基于不同的共识协议、代币标准(如 ERC20、ERC721、ERC1155)开发,不同协议具有不同的特性,适用于不同的场景。
DApp 开发步骤和资源准备
开发——测试(联调测试、内部测试)——部署——维护支持(紧急关闭合约、升级合约、需求迭代)
- 搭建开发环境:
a. 选择网络:如 Ethereum 主网或测试网(Rinkeby, Sepolia 等)。
b. 安装基础工具:如 Node.js, Yarn, Foundry。
- 创建智能合约:
a. 编写智能合约并测试。
b. 编译合约生成 ABI(应用程序二进制接口)。
- 合约部署:
将合约部署至主网或测试网,确保合约逻辑正确无误。
- 构建前端:
创建前端界面,用户通过前端与区块链交互。
- 前端与智能合约交互:
使用 Viem、web3.js 等库实现前端与智能合约的交互。
资源准备
- Node.js 和 Yarn:用于管理项目的依赖。
- Foundry:合约编译和测试工具。
- WalletConnect:用于前端连接钱包的应用 ID。
- 测试币领取:在测试网进行调试时,需要领取测试币进行操作。
DApp 项目实操
实际操作中,DApp 项目从合约编写、测试、部署,到前端实现和与用户交互,完整的流程可以确保项目的可行性和稳定性。
DApp 项目验收
项目验收的关键环节在于:
- 功能测试:确保合约逻辑和前端交互无误。
- 安全审计:对智能合约进行审计,确保没有漏洞。
- 用户反馈:通过用户测试获得反馈,不断迭代完善。
这个流程基本涵盖了DApp开发的方方面面,提供了从背景到实操的全面思路和框架。
<!--EndFragment-->
-
原创
- 学分: 55
- 分类: Web3应用
- 标签:
DAPP开发流程与架构