Dapp开发的流程与架构

Dapp开发的流程与架构

<!--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

 

  1. 用户通过前端发送请求。
  2. 前端通过 JSON-RPC API 调用 provider。
  3. Provider 将请求传递给智能合约。
  4. 智能合约在 EVM 中执行,并返回结果至前端。

数据上链

  • Signer:用户使用私钥对交易进行签名,并通过钱包将签名的交易发送到区块链上。钱包通常负责与用户的私钥进行交互,如 MetaMask。

索引方案

user——frontend——indexer——blockchain

区块链数据的检索通常是通过 indexer 实现,例如 TheGraph。基本流程如下:

  1. 用户通过前端发出数据请求。
  2. Indexer 收集并处理链上的数据。
  3. 通过前端展示检索到的数据。

存储方案

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 开发步骤和资源准备

开发——测试(联调测试、内部测试)——部署——维护支持(紧急关闭合约、升级合约、需求迭代)

  1. 搭建开发环境: a. 选择网络:如 Ethereum 主网或测试网(Rinkeby, Sepolia 等)。 b. 安装基础工具:如 Node.js, Yarn, Foundry。
  2. 创建智能合约: a. 编写智能合约并测试。 b. 编译合约生成 ABI(应用程序二进制接口)。
  3. 合约部署: 将合约部署至主网或测试网,确保合约逻辑正确无误。
  4. 构建前端: 创建前端界面,用户通过前端与区块链交互。
  5. 前端与智能合约交互: 使用 Viem、web3.js 等库实现前端与智能合约的交互。

资源准备

  • Node.js 和 Yarn:用于管理项目的依赖。
  • Foundry:合约编译和测试工具。
  • WalletConnect:用于前端连接钱包的应用 ID。
  • 测试币领取:在测试网进行调试时,需要领取测试币进行操作。

DApp 项目实操

实际操作中,DApp 项目从合约编写、测试、部署,到前端实现和与用户交互,完整的流程可以确保项目的可行性和稳定性。

DApp 项目验收

项目验收的关键环节在于:

  1. 功能测试:确保合约逻辑和前端交互无误。
  2. 安全审计:对智能合约进行审计,确保没有漏洞。
  3. 用户反馈:通过用户测试获得反馈,不断迭代完善。

这个流程基本涵盖了DApp开发的方方面面,提供了从背景到实操的全面思路和框架。

<!--EndFragment-->

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
链创通
链创通
0x5312...1e69
歪脖山徒步虾