第5节:DAPP技术栈
小白入门:https://github.com/dukedaily/solidity-expert ,欢迎star转发,文末加V入群。
职场进阶: https://dukeweb3.com
在web3世界,万物皆可fork(可以理解为抄袭),因为主流协议都会代码开源,经过了市场的检验,用户才敢把自己花真金白银购买的token交给你。
也正因为fork是如此容易,所以各种土狗协议(抄袭主流协议,换个皮,以圈钱为目的项目)才会层出不穷,那些不明就里的新人往往深受其害。所以了解必要的web3技术对我们避坑有大有裨益。
技术栈
web3的技术栈并不复杂,传统的互联网后端技术对于web3开发是非必须的,而是作为可选项,你需要掌握:
- 区块链基本知识:地址、token、非对称加密、哈希、共识;
- Solidity:编写智能合约,这是整个dapp最核心部分;
- nodejs:这部分必须手到擒来,因为框架、单测、脚本等都是使用js来操作的(js是最主流的,python、java等也有);
- web3 sdk:主流的web3库为web3.js或ethers.js,所有与链上交互的操作都是通过这两个库进行的;
- Subgraph: 这是一个三方基建服务,可以在链下对事件进行捕捉(扫链、计算、存储postgres),从而对进行数据整合,被前端调用,快速返回数据,极大的方便了开发者。
- 前端:react(大项目使用,知名协议原生支持的库更全面)、vue
- 后端(可选项):机器人、周期性调用合约、监听扫链(钱包)、其他需求
最小技术栈:solidity、nodejs、web3、subgraph、前端。(默认你是开发者,linux等就不说了)
这几部分是写dapp的最小技术栈。掌握了这些技能,读写dapp的基本功就具备了,但是这还远远不够,掌握了技术才刚刚开始,具体细分业务才是我们更加需要关注的重点,业务才会让你成为细分领域专家,技术永远只搬砖的份儿,对于这部分我们后续专门讲解,不要着急。
开发工具
经过多年发展,开发工具也在不断变化,具体如下:
- 基本:remix、solidity、vscode、metamask、etherscan
- 框架:hardhat、truffle
- 早期2018年工具链:solidity + truffle + infura + web3.js + nodejs
- 目前2022年工具链:solidity + hardhat + alchemy + ethers.js + ts,
- 点击查看最新工具链使用demo:https://github.com/dukedaily/solidity-hardhat-kit
我常用的部分三方工具:
- 在线库工具:https://web3playground.io/(web3/ethers)
- 常用基础库:https://github.com/OpenZeppelin(有npm包)
- tender:https://dashboard.tenderly.co/explorer (模拟真实交易、告警)
团队构成
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,元宇宙等业务方向。