2022年度目标
自评: ★★★★☆
Github仓库:https://github.com/suiet/suiet[1]
和本科朋友组团队,从8月开始投入,做到12月已经成为Sui钱包生态的Top3,推特粉丝数破100k。
通过开发钱包Chrome插件,我的前端整体架构设计能力得到锻炼。Chrome钱包插件的架构涉及跨上下文通信,主要利用service worker实现类后端服务,通过Chrome Messaging机制[4]建立通信通道,封装成JS Bridge来给前端UI弹窗提供API。存储则是利用IndexedDB存储持久化数据,Persist Redux[5] + Chrome Storage[6]存储内存数据。
在Wallet Standard的实现过程中,整体交互还是比较复杂的,涉及主体有:DApp网页环境、Chrome Content Script沙盒、钱包Service worker、钱包UI。光这块的消息传递就很麻烦:DApp网页环境与Content Script沙盒环境是通过window postMessage广播传递消息,这里我JS事件编程利器RxJS[7]把广播收发包机制包装成类似RPC函数调用(屏蔽底层通信细节),实现独立连接的效果;Content Script与Service worker又得通过Chrome Messaging来通信。
其次是wallet-standard的自动检测钱包适配器的机制实现。本质上就是DApp引入包含wallet-standard的包(如 suiet wallet kit[8]),然后wallet-standard会开启一个特定事件监听register-wallet listener,wallet们各自在页面加载后触发注册事件,注册符合standard的adapter,从而完成DApp对钱包的auto-detection。
Suiet是我们团队第一个作品,凝结了我们对Web3的期望和激情。Team Work的过程中我不仅是技术上得到提升,和不同领域的伙伴协作也是拓宽了我的眼界。币圈里做技术的人良莠不齐,很多基建也是不太可靠,开发体验远不如web2。但反过来想,这正是我们年轻工程师的机会呀,把web2里锤炼过的技术,再注入对web3的热情,Build here a better world。
投入度:★★★★★
产出度:★★★★★
影响力:★★★★★
Github仓库:https://github.com/suiet/wallet-kit[9]
Wallet Kit是我们做钱包的副产物,初衷是抢占与dapp合作的机会,通过all in one的钱包连接管理套件助力铺开我们钱包。这块由团队其他两个小伙伴完成初版的搭建,那会儿文档不太完善,可配置性也不尽人意,接入效果并不好。在wallet-standard之后,因我比较熟悉其整体逻辑,我开始着手重构wallet kit,主要围绕条件判断逻辑冗杂与可配置性这两块做优化。
造成第一点条件判断冗余的背景是:钱包适配器们对standard里features功能的实现不尽相同,甚至是缺失的。于是我抽象出一个通用适配器接口和实现类,底层基于wallet-standard约定的函数调用方式+自定义错误处理将异化逻辑包裹起来,这样做能够保证暴露给用户的函数签名是一致的,优化DApp开发者的体验。
第二点可配置性,作为React插件包,我们既提供了Hooks又提供了UI组件(按钮、弹窗),这对于开发能力较弱的团队来说是很方便的开箱即用,但是,对于大一点的团队,他们对UI的定制要求很高,甚至是只用我们的Hooks逻辑部分,UI用自己的。
所以,我首先针对暴露给开发者的Context上下文进行了重设计,把钱包项的配置列表以及从浏览器中自动检测到的钱包项都提供出来,有助于开发者们构建自己的钱包选择器UI。其次,我支持了钱包预设选项的传入,让开发者能自己决定要展示的预设钱包列表和排序。
在重构的过程中,我学到一个很重要的经验,那就是「向下兼容」!做任何破坏性的更新,一定给已经在用的开发者一个接口的平稳过渡的时间,否则开发者一更新你的包,发现原来的函数改掉了或者直接没有了,项目因升级而运行失败是很糟糕的体验,更何况币圈的开发者能力有得真的弱到让人大跌眼镜(比如文档写的清清楚楚但是还是跑来私戳你要怎么做)。正确的做法应该是:如果可以做到只加参数而不影响旧的功能,那就直接改;否则,将旧的接口标注为deprecated,并行启用新的函数接口,并且写好migration迁移文档,设定合理的弃用时间节点并告知开发者们。
最后我还把我们的文档给翻新了,用更有趣的方式来介绍用法。我发现我对emoji风格的文字叙述还挺在行的哈哈。
img
Anyway, 这是我做出来第一个有项目在用的开源项目:Github 20+ repo的引用,以及npm周峰值800+的下载量,完全超出了我今年定下的要为开源社区贡献能力的目标~好有成就感,哈哈!
投入度:★★★☆☆
产出度:★★★★☆
影响力:★★★★☆
Website: https://let.sh/[10]
Let.sh是我和lzb第一个合作的项目,是一个all-in-one的开发部署平台。支持如static files和web服务的一键命令行部署(类似vercel),并且支持如本地内网穿透、部署后的metrics检测等features,是比较适合个人开发者的开发工具。
最初是因为想直接集成Arweave——做Web3永久存储的一条区块链, 打他们的hackerthon来入圈。于是我们在let.sh原有的逻辑上增加了静态文件部署至Arweave链,实现所谓真正的DApp(Decentralized App去中心化应用)。但是实际并不好,1是每次部署都要扣gas,2是部署和访问都很慢,比不上web2体验,主要受限于ar链的出块共识机制以及通过ipfs做路由寻找peers的速度。
另外还增加了文件树与预览的新特性,树组件真的是前端做页面少数要用到算法的地方了2333。
除了搭建系统之外,还做了一些跨领域的尝试:
这是一个我挺喜欢的产品,lzb这种本想着做给自己用结果发现可以发展成side project的技术热情,我挺佩服的,也要向他学习呀。
投入度:★★★☆☆
产出度:★★☆☆☆
影响力:★☆☆☆☆
入学研究生前后,在专业方面重新做回学生,静心打基础:
2022在写作上是有突破的!开启了个人公众号,学着技术偶像Airing的Weekly周刊[21],也开始写周刊,并且写出了一篇爆款文章"暂别啦!鹅厂&TME",分享了自己如何在大厂工作和出国留学中做抉择的心理历程,4700+阅读还有184点赞,只发了一条在自己朋友圈,完全就是自然增长哦(比如朋友转给他们的朋友看)。非常意外触动到许多和我一样被互联网卷得不舒服的朋友们,他们纷纷来私戳我,说看了我的文字很受触动,佩服我做了他们还不敢做的事,也收到了很多祝福。我才体会到,原来文字真的能传达勇气和力量呀!2023,也请继续保持写作,用知识和故事影响更多人吧!
细数2022,我技术的增长还是主要在前端这块,但也做了很多新的技术尝试,建立了自己的crypto团队,做出了一些不可思议的成就。今年已经踏入了web3,增加了对区块链的理解,并且还做了许多跨领域尝试,希望在2023能够保持对跨领域的热情,并且把根在区块链和后端扎的再深一点,逐渐转型为后端工程师,理由嘛,当然是不满足于只跟浏览器打交道咯。
2023还有一个很大的愿望,那就是通过自己的知识去变现,为他人提供价值,很大胆的想法,希望能做到!
最后希望自己在新的一年,能够更聚焦少数领域,成为某个领域的专家,再努力自律一点,把影响力再扩大一点,把收入再增加一点,再爱生活一点!
[1]
https://github.com/suiet/suiet: https://github.com/suiet/suiet
[2]
Wallet Standard: https://github.com/MystenLabs/sui/tree/main/sdk/wallet-adapter/wallet-standard
[3]
巴比特的开源文章: https://www.8btc.com/books/834/ethereum-book/_book/%E7%AC%AC%E5%85%AD%E7%AB%A0.html
[4]
Chrome Messaging机制: https://developer.chrome.com/docs/extensions/mv3/messaging/
[5]
Persist Redux: https://github.com/rt2zz/redux-persist
[6]
Chrome Storage: https://developer.chrome.com/docs/extensions/reference/storage/
[7]
RxJS: https://rxjs.dev/
[8]
suiet wallet kit: https://kit.suiet.app/
[9]
https://github.com/suiet/wallet-kit: https://github.com/suiet/wallet-kit
[10]
https://let.sh/: https://let.sh/
[11]
labuladong 的刷题教程: https://labuladong.github.io/algo/
[12]
区块链钱包: https://www.8btc.com/books/834/ethereum-book/_book/%E7%AC%AC%E5%85%AD%E7%AB%A0.html
[13]
Sui区块链: https://docs.sui.io/devnet/learn
[14]
币圈李白老师的Youtube分享: https://www.youtube.com/@biquanlibai
[15]
2022年度总结·破与立: https://blog.bruski.wang/2022/12/31/2022/20221231-annual-summary/
[16]
周刊02|不瞒你说,我其实是MIT的学生: https://blog.bruski.wang/2022/06/11/2022/20220611-weekly/
[17]
周刊01 | 两个月搞定美国研究生申请?我居然做到了: https://blog.bruski.wang/2022/05/29/2022/20220529-weekly/
[18]
周刊开刊|开窗便有拂面风: https://blog.bruski.wang/2022/05/22/2022/20220522-weekly/
[19]
暂别啦,鹅厂和TME: https://blog.bruski.wang/2022/03/07/2022/goodbye-tx-tme/
[20]
2022,Round2: https://blog.bruski.wang/2022/02/13/2022/2022-annual-target/
[21]
Airing的Weekly周刊: https://weekly.ursb.me/