Skip to main content

Command Palette

Search for a command to run...

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

Published
1 min read

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

概述

阅读大牛郭宇的文章

https://guoyu.mirror.xyz/RD-xkpoxasAU7x5MIJmiCX4gll3Cs0pAd5iM258S1Ek

第四篇笔记见这里:here,主要是合约开发的全流程实践。

本文聊前端开发。

首先大家要明白,Web版本的DApp,是阶段性的,这和移动、便捷的应用发展趋势相悖。

另外原因是移动版本技术方案太过复杂,体验并不好,包括Android的软件安全,也会造成助记词被内存偷窥等等原因。当然,上文提到了钱包托管服务,不过这样又回到了中心化服务的老路,和Web3趋势不相符。

因此,当下,我们主流技术栈,一个DApp依然选择Web前端技术栈:JavaScript,React.js/Vue.js 。

偏好不同,选择不同,但同时也要注意兼顾开发效率,因此:

  1. ether.js(或者wagmi封装版,提供稳定hooks),啥是hooks?这里

  2. scaffold脚手架,多数人推荐scaffold-eth, 来入门开发,你熟悉后,会建立自己的开发模式。Github

  3. 郭宇原话:对于没有任何偏好的读者,我推荐你使用 React + Next.js 来初始化新项目,Next.js 使用 React 作为基础视图框架,并提供了丰富的工作流,简单的路由系统,好用的 SSR 与 FaaS 支持,当然,它也是一个非常好用 site builder 工具,Next. 这里补充一点,Next.jx是一个基于React库的开发框架,整合了简单路由、应用部署、SSR、SSG等等,应该说更好用些。扩展阅读:对比

  4. 合约交互:本质是使用js的xhr发送请求到signer或者relay来和链上合约交互。这个过程:

    1>打开网页后,默认只能调用view类别的方法获取返回值,例如获取ens,获取余额等?。

    2>点击连接钱包,connector进行通信,获取链接状态,授权连接后,可以通过connector获取默认连接网络,以及发送请求让用户更改网络。

    3>在和合约page交互后,提交交易给relay,然后监听交易的event,等候通知。

    4>签名后也可以仅仅通过connector发布一些加密后的数据交互。

  5. Relay network例如Infura等,需要申请一个key(有免费限量的访问服务,足够个人使用),这里要和大家讨论下:Provider是不同的提供者,例如metamask的inject web3或者relay的js对象,而connctor是一个在此之上的抽象概念,是建立链接后的对象,大家理解是? 如果多个合约ABI的写操作,有 Multicall.js,放在一次事务中,会节约部分gas。

  6. 事实上,我们使用很多前端依赖:前面提到的wagmi,还有更复杂的useDApp,不过这个我个人了解不多。登录可以使用SIWE,EIP4361的实现。多语言郭宇推荐:如果你的 Next.js DApp 计划提供多语言版本和检测,我推荐你使用 i18nextreact-i18nexti18next-browser-languagedetector

  7. UI库大家一般选择:muiNextUI,这个我也是普通用户,UI熟悉的同学可以聊下看,各自的优缺点。

下一篇聊客户端开发。


More from this blog

让你的私钥随时更换,可以四处旅行

是的基于社交恢复和社区运行的TEE KMS,普通个体的私钥可以依赖多层安全机制:passkey+Email+社区KMS(硬件安全)+AA多签(可适配多种签名机制,增加抗量子签名模块)。听起来非常棒!是人类数字未来中需要的东西。下面是我的一个研究项目,进行中,有经验的大牛可以指点一下(嵌入式和硬件钱包开发、TEE、抗量子等等)。 STM32MP157F-DK2 Development Project STM32MP157F-DK2 开发项目 🇬🇧 Jump to English Vers...

Jan 25, 20263 min read

人性之光-以自由之名

以自由之名 v0.1.5 有点怪怪的标题,原谅理工男的简单和直接。 先分享一点感触和认知:某个角度看,人性是想象力、创造力和情感,是人类独有的特质。 人性是区别于AI和机器人,以及其他生命和造物的独有内核。人性是一种对自由的追求:发挥你的想象力、创造力,拥有自己的情感,是人存在的一种方式,这种方式,称为自由。 作为普通个体,想在人类社会拥有自由,除去国家和法律赋予的基础保障和基本权利之外,哈耶克有个观点是时间、空间和选择的范围,是自由的基础保障;而福柯则反向给出了规训的方式:时间空间和力量(并非...

Jan 25, 20261 min read

How to play with AI vibe coding?

我们要和 AI 沟通,要总结几个经验,供大家参考(血泪教学,迭代无数次): 三个重点 重设计、三层文档体系、渐进式开发。 第一点 最重要就是设计一定要占据你开发时间的一半以上,包括研究,包括和 AI 的交互讨论,包括提取一些专题,然后跟其他的 AI 交流生成深度的报告,包括自己阅读相关的报告和分析,以及一些范例的 repository。 第二点 要完整的文档体系,不管哪一种,都要跟随文档体系来去不断地迭代你的和 AI 交互的过程;我现在使用的是,嗯,三层的文档管理体系。第一层呢是backlog...

Aug 17, 20252 min read

It is Fun for me.

jFlow: from research to production 创新之路:最有趣的探索之路。 创新之路 Road of Exploration Research Input=Idea:描述你的 idea,进行严谨的论证过程,逻辑结构类似于缩小版本的 SCI 论文。通过分析论证,得出结论,是真正有价值创新。 output=Solution:定义你的产品,包括产品定位、目标用户、核心功能、商业模式,让团队、社区、早期投资者、用户、合作伙伴等,都快速了解你的产品的价值所在。 Devel...

Aug 12, 20251 min read

我的AI小助手:RAG 本地测试记录(updating...)

预期: 数据: 本地个人计划和隐私、正常论文相关的科研、业界跟踪和研究分析,三大类都存储在本地,不要流出个人电脑。 初步的7B模型(本人MiniMac的上限)进行大体分析。 可以使用外部deepseek和grok,claude等外部API,但沟通内容是隔离和脱敏的,最简单就是7B分析的结论,进行隐私脱敏(自行设定脱敏规则)和单独目录存储(独立知识库),这个动作是离线断网进行。 然后针对沟通外部的独立知识库,可以充分利用外部大模型能力。 个人计划是使用雷电连接mac book和mac m...

Mar 15, 20251 min read

jLab

69 posts

It is my Lab for curiosity!