# 从零开始学区块链之初识dapp开发

By [Untitled](https://paragraph.com/@0x386d602a8938b5a0c5c4ba7532b8b54a72212e1b) · 2021-12-23

---

背景
==

之前对区块链的认知一直停留在挖矿、炒币的阶段。在国内封禁了挖矿和炒币之后，还以为区块链的风口就过去了。万万没想到，大家的NTF还挺火的。于是有了更深入了解的动力。

![](https://storage.googleapis.com/papyrus_images/f4803be50c4fc782b651d6076d6ace5c5ae626d9c0446d2a81758bf15164cb0b.jpg)

什么是DApp
=======

**app**大家熟悉吧。就是我们常用的各种应用。那 **d**是什么呢？ 区块链的去中心化特性大家应该是熟悉的，那去中心化用英语怎么说？**decentralization** 就是了。按照惯例，取个首字母加上去，就成了DApp，即去中心化应用

DApp能干什么
--------

你现在手机上的app能干嘛，从理论上基本都可以。但是对交易速度有要求的就不太合适了，毕竟区块链的一个特性就是速度慢

怎么开发DApp
========

作为一个多年的app开发人员，对DApp的开发欲望是无法控制的。那么我就聊下DApp的开发流程。

DApp的整体框架
---------

![](https://storage.googleapis.com/papyrus_images/a64664573f173289e46f3301d9f7a8bec1c80e655b4bcf42f5e088cd1e62906d.png)

整个看来，架构有三大部分 1、区块链以及本身提供的能力 2、三方钱包等提供的能力 3、我们要写的DApp部分 前两部分，不需要我们参与开发，我们能做的，最多就是选择用哪个。 但是第三部分就不一样了，这个才是我们的主战场

DApp开发架构
--------

从我们开发的Dapp来说，也可以分为三层 1、和EVM交互的合约层 2、和合约层、钱包交互的交互库 3、做业务的业务层，该层会和用户以及第二层交互

开发DApp的准备
=========

技术选型
----

1、链用的是ETH 2、钱包使用了[MetaMask](https://docs.metamask.io/guide/#why-metamask)，这是一个比较完善的钱包了 3、合约层用的是[solidity](https://learnblockchain.cn/docs/solidity/index.html) 4、交互库 用的比较多的是[web3js](https://learnblockchain.cn/docs/web3js-0.2x/#) 5、业务层框架的话，就看自己喜欢用什么了，vue、react 都是OK的

环境搭建
----

为了做开发，那一定是要有一个开发环境的。 到DApp的开发中来说，4、5是前端的知识，这个部分自己去解决，默认大家都懂了； 那我们现在要解决的就是模拟链（毕竟真链上的操作都是要花钱的）、钱包和合约的问题测试环境 1、链的模拟的话，我们可以用[ganache](http://trufflesuite.com/ganache/) 2、钱包用MetaMask 3、solidity既然是一个编程语言，并且要跑再EVM上，那就有 编写、编译、测试和调试的地方，这里推荐使用[remix](https://remix.ethereum.org/#optimize=false&runs=200&evmVersion=null&version=soljson-v0.5.17+commit.d19bba13.js)

总结
==

大家先对DApp的开发有个整体的了解，我在后续会完善其他的后续部分

---

*Originally published on [Untitled](https://paragraph.com/@0x386d602a8938b5a0c5c4ba7532b8b54a72212e1b/dapp)*
