Web3小白勇闯清迈 Day24:逐渐冷清

估计是由于临近元旦假期,上午上课明显感觉路上的车少人少,清迈大学也变得冷清起来,咖啡店休息,食堂关了一些档口,上课的学生也比之前要稀疏。还好今天起床自己冲了咖啡,还去 711 买了三明治,虽然没起得特别早,但至少完成了吃早餐任务。
课程进入到了硬核阶段,开始讲 EVM 的存储布局,会涉及到一些合约操作码和内联汇编。Opcodes 内容太多没有特别详细了解过,基本上只有课堂讲的知道。存储布局问题倒不大,EVM 本质上是个虚拟机(操作系统层面),这些计算机基础对程序员来说理应是基本功,我算不上什么合格的程序员,只是在之前对底层好奇的时候有过一些思考,学 EVM 还是比较好上手。
午饭前和同学在讨论学存储布局有什么用,程序中不同的 slot 知道了又能怎样,按老师的说法是在后面学合约升级的时候会用到,简言之就是不同的合约通过升级代理更新代码后,要保证存储布局的兼容不然数据会乱套。更进一步讲,当我们需要基于编译后的字节码进行操作时(升级就是一个例子),了解程序的数据是怎么在存储层面管理,把控程序运行机制的细节,会有助于更好地灵活管理合约之外的世界。
让我想起了嵌入式开发中类似的东西,例如 IAP 升级啥的。其中的逻辑就是,如果把系统看作逻辑和事务的载体,那么只关注语法层面,单个程序的执行即可,语句和函数作为操作的对象。若进一步要把系统看作容器来使用(多个程序间的关系),就不得不开始关注这个容器里的一个个程序是如何编译加载运行了。传统的计算机里有 PC 指针、寄存器、内存堆栈作为环境上下文,EVM 里也会有对应概念和实现。
作业也不难,花一个小时左右做完三道题,回来后继续睡觉,和昨天一样睡到晚上九点多。基本上这两天下课就没再学习,没有去玩也没有去四海,晚上把自己睡的昏昏沉沉。今天吃完晚饭(宵夜)后去了附近酒吧街走了会,回来突然想把 OSKey 编译玩一下,就又开始折腾。
OSKey 是一个开源的硬件钱包,使用 Zephry 构建,不依赖特定的硬件平台,可以自己开发移植。几个月前知道个项目时很兴奋,是一个能把嵌入式和区块链知识结合的项目,一直想研究却迟迟没动手。上次活动从 OpenBuild 那拿了一块 ESP32C3 的小板子之后还没试,正好晚上心血来潮,把 Github 文档重新打开照着重新配置了一下开发环境,最终编译烧录成功。虽说有点小问题,不过好在也是解决能够正常使用了。
或许是项目还处于早期阶段加上人手不足吧,一些文档和指引没有特别清晰,Zephyr 的环境配置没有想象中简单,需要靠着 AI 和自己尝试完成摸索。我有点疑惑这类开源硬件钱包的定位,没有成品没有商业推广,完全靠自己 DIY,用户体验和安全性比不了如 OneKey 那样的商业产品。真正对资金安全要求高的用户,不会自己瞎折腾,极度发烧的极客,会自己整一套专用的更定制化的硬件(比特币生态就有很多这种),OSKey 则选择介于两者之间,在以太坊生态做一个不依赖特定芯片的通用硬件钱包固件,确实是一片空白的领域,很有新意。
折腾硬件依然是很令我着迷的事情,又搞到了大半夜。这两天晚上应该会有不少活动,跨年什么的,然而完全不会想出去嗨,坦然接受自己是一只宅男的现实。