第5节:DAPP技术栈

小白入门:https://github.com/dukedaily/solidity-expert ,欢迎star转发,文末加V入群。

职场进阶: https://dukeweb3.com

在web3世界,万物皆可fork(可以理解为抄袭),因为主流协议都会代码开源,经过了市场的检验,用户才敢把自己花真金白银购买的token交给你。

也正因为fork是如此容易,所以各种土狗协议(抄袭主流协议,换个皮,以圈钱为目的项目)才会层出不穷,那些不明就里的新人往往深受其害。所以了解必要的web3技术对我们避坑有大有裨益。

技术栈

web3的技术栈并不复杂,传统的互联网后端技术对于web3开发是非必须的,而是作为可选项,你需要掌握:

  1. 区块链基本知识:地址、token、非对称加密、哈希、共识;
  2. Solidity:编写智能合约,这是整个dapp最核心部分;
  3. nodejs:这部分必须手到擒来,因为框架、单测、脚本等都是使用js来操作的(js是最主流的,python、java等也有);
  4. web3 sdk:主流的web3库为web3.js或ethers.js,所有与链上交互的操作都是通过这两个库进行的;
  5. Subgraph: 这是一个三方基建服务,可以在链下对事件进行捕捉(扫链、计算、存储postgres),从而对进行数据整合,被前端调用,快速返回数据,极大的方便了开发者。
  6. 前端:react(大项目使用,知名协议原生支持的库更全面)、vue
  7. 后端可选项):机器人、周期性调用合约、监听扫链(钱包)、其他需求

web3-remix-arch

最小技术栈:solidity、nodejs、web3、subgraph、前端。(默认你是开发者,linux等就不说了)

这几部分是写dapp的最小技术栈。掌握了这些技能,读写dapp的基本功就具备了,但是这还远远不够,掌握了技术才刚刚开始,具体细分业务才是我们更加需要关注的重点,业务才会让你成为细分领域专家,技术永远只搬砖的份儿,对于这部分我们后续专门讲解,不要着急。

image-20221009175009429

开发工具

经过多年发展,开发工具也在不断变化,具体如下:

  • 基本:remix、solidity、vscode、metamask、etherscan
  • 框架:hardhat、truffle
  • 早期2018年工具链:solidity + truffle + infura + web3.js + nodejs
  • 目前2022年工具链:solidity + hardhat + alchemy + ethers.js + ts,

我常用的部分三方工具

团队构成

dapp开发只需要很小的团队,一般4~5个人就足够了,具体分工:

  • Contract(1~2)
  • Subgraph(1)
  • Sdk(1)(Optional)
  • Frontend(1~2)(多)
  • QA(会代码)

前端需要多一点人,因为往往合约写半天,前端需要写一周,这就是爱吧。

一定要重视QA的存在,而且不仅仅要在页面上端对端测试,也要直接对合约的接口进行逐个测试,这才能最大限度保证安全。

开发流程

需求分析->开发->联调-> 测试网测试->主网测试->合约审计->上线->合约升级

设计原则

  • 相比于高效率更注重确定性(不可篡改)
    • 数据与逻辑分离,方便升级
  • 代码开源,数据完全公开(透明)
    • 拒绝链上存储任何敏感信息(包括修饰为private的字段)
    • 逻辑清晰,做好权限控制
    • 单元测试
  • 随时准备应对攻击(安全性)
    • 总假设合约是被攻击成功的,有补救措施(紧急暂停、储备金)
    • 不重复造车轮子,使用经过检验的代码(类似于加密算法)
  • 交互付费(写数据时)
    • 非必要的数据不要上链(on-chain vs off-chain)

掌握好基本的工具链是万里长征第一步,web3世界瞬息万变,业务层出不穷,但掌握技术永远是最重要的一环,加油,动起来吧!

加V入群:dukeweb3,公众号:阿杜在新加坡,一起抱团拥抱web3,下期见!

关于作者:国内第一批区块链布道者;2017年开始专注于区块链教育(btc, eth, fabric),目前base新加坡,专注海外defi,dex,元宇宙等业务方向。