Dapp开发的流程与架构

  • 链创通
  • 发布于 2024-10-03 18:47
  • 阅读 1822

Dapp开发的流程与架构

背景

随着互联网的逐步发展,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 的对比

功能Web2Web3
数据管理中心化存储去中心化存储(如区块链、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开发的方方面面,提供了从背景到实操的全面思路和框架。

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

0 条评论

请先 登录 后评论