jLab:郭宇的Web3开发最佳实践阅读笔记-1

jLab:郭宇的最佳实践阅读笔记-1

概述

阅读大牛郭宇的文章

guoyu.mirror.xyz/RD-xkpoxasAU7x5MIJmiCX4gll..

研发实践:迭代周期=合约编写,单元测试,工作流自动化,前端与客户端方面等

许多问题,涵盖开发一个 DApp所有内容。

如图:

  1. Smart contract:主要指EVM和兼容EVM的区块链的Solidity或其他语言上的合约,负责和区块链交互(发布合约/Token,查询,修改数据)
  2. DApp:基于智能合约为基础的产品,包括合约可调用接口,用户接口/界面,一般基于Web,用React/Vue
  3. Provider,Signer: Remix 有很多,典型的就是Metamask,提供了InjectProvider,它的好处是会暴露交互行为给客户在Web界面选择
  4. Relay:中继者,扮演了用中心化服务提供从客户的Web/DApp的到链上节点的连接,目前是多用于DApp的后端直接和这些Relay代码后台交互,例如Infura等等
  5. Server:DApp可以没有中心化Server,但是多数时候,复杂的数据整合、传输、存储、计算,多系统的连接和交互,中心化服务器是最擅长的。据说(郭宇说)深度整合区块链的Moralis(我没用过)可以试试,多数时候DApp,都是自己写服务,架设中心服务

架构技术栈

Solidity
  1. 一天搞定:solidity-by-example.org
  2. 持续参考:docs.soliditylang.org/en/v0.8.13
前端
  1. 优秀React hooks:wagmi.sh,基于ether.js,增加了Provider交互函数
  2. 当然,可以基于docs.ethers.io/v5,直接构建
多Provider/网络
  1. 多支持:apeboard.finance,提供跨区块链的数据展现
  2. 托管钱包:web3auth.iomagic.link,Web2登录中心化服务体验更好
Relay
  1. Infura 目前支持 ETH,ETH2 网络,以及 IPFS 和 Filecoin 两个分布式储存方案,级别最大最稳定的Relay解决方案商
  2. Alchemy提供更多的服务,也更中心化,如专用工具,WebHooks集合等,看大家的选择
  3. Morails,郭宇推荐的,集成了许多Faas服务,等于在中继层又叠加了一层中心化的FaaS服务,我猜测因为函数服务是原子的,Restful的,可替代的,中心化程度反而不高
服务器
  1. 多数人使用Node,Go或者Rust

  2. 主要是存储非必要上链的链下数据,或者场景、成本限制,必须链下的应用场景

  3. 如果使用FaaS服务,可以用Morails(深度集成区块链)或者Google的Firebase,据说未来Google也会提供类似的Web3 Relay或者FaaS