在开发 ARM64 裸机 Hypervisor 时,作者遇到了由 `CTR_EL0` 寄存器拦截导致的系统持续死机问题。经过数月的调试,作者排除了寄存器损坏、缓存不一致或硬件故障等初步假设。 当作者对比两段语义相同但结果迥异的代码时,取得了突破性进展:运行正常的版本使用静态调用,而崩溃的版本使用动态分支(`blr`)。这表明 CPU 的分支预测器触发了对无效内存地址的推测性指令读取。 在 ARM 架构中,将内存映射为“设备”(MMIO)可以防止推测性数据访问,但如果该区域被标记为可执行,CPU 仍可能从中推测性地读取指令。作者发现,将该内存标记为不可执行(NX)可以阻止这些推测性读取,从而使系统能够正常启动。 最终,作者认识到 NX 位不仅是防止代码执行攻击的安全功能,更是防止 MMIO 映射内存中出现非法推测性指令读取的关键架构工具,对于确保底层编程的系统稳定性至关重要。
Liquid Network 在发生一起安全事件后已暂停运营,约 4000 枚 BTC(约 3.2 亿美元)从 Liquid 联盟钱包中被提取。Blockstream 表示,尽管资金是通过 SideSwap 挂钩输出授权密钥(PAK)转移的,但实际上并没有密钥遭到泄露。
作为安全预防措施,桥接节点已被禁用,实际上暂停了 Liquid 侧链。虽然各交易所的 LBTC 充值和提现均已暂停,但其他基于 Liquid 的资产(如 USDT、DePix 和 RWA)未受影响。
Blockstream 目前正尝试通过链上消息联系相关方(被认定为“所谓的白帽黑客”)。联盟成员正在积极努力解决问题并恢复网络功能。建议用户通过提供的内存池(mempool)跟踪链接持续关注事态进展。
Austin Z. Henley 记录了他将 Python 解释器实现限制在 1024 字节 C 代码内的技术挑战。Henley 摒弃了标准库和复杂工具,构建了一个递归下降解析器,能够处理算术运算、变量赋值、if/else 逻辑、while 和 for 循环以及函数定义等核心语言特性。
为了满足 1024 字节的严格限制,Henley 采用了大量的代码高尔夫(code-golfing)技巧。其中包括使用单字母变量名、利用全局变量、省略错误处理,以及使用 C89 特有的“技巧”,如隐式整数声明和基于 ASCII 的运算符。通过去除代码的可读格式,并用紧凑的位运算逻辑替代冗长的结构,他成功地将 4800 字节的逻辑压缩到了 1KB 以内。
最终的解释器支持基于缩进的代码块、递归,甚至基础的打印功能,足以执行 Python 风格的“FizzBuzz”程序。Henley 总结道,虽然这个项目在理解代码如何从硬件层面执行方面是一次迷人的实践,但“高尔夫”编程的繁琐过程令人疲惫,同时也让他对全功能语言实现中的抽象机制有了全新的认识。