热门话题
#
Bonk 生态迷因币展现强韧势头
#
有消息称 Pump.fun 计划 40 亿估值发币,引发市场猜测
#
Solana 新代币发射平台 Boop.Fun 风头正劲
这让我想起了以太坊早期的内存池时代,当时我们不得不进行非常类似的XOR calldata混淆,以阻止竞争对手重新出价哈哈
有趣的是,实际上在solanaland中仍然存在着一片西部荒野。

12月4日 10:08
HumidiFi 交换指令数据混淆:
- 就地基于 XOR 的流密码。
- 对称(f(f(x)) = x),并在 64 位块上操作。
算法:
- 以 8 字节(u64)块处理数据。
- 对于每个块:
-- 与静态 `HUMIDIFI_IX_DATA_KEY` 进行 XOR: [58, 255, 47, 255, 226, 186, 235, 195, 123, 131, 245, 8, 11, 233, 132, 219, 225, 40, 79, 119, 169, 121, 169, 58, 197, 1, 122, 9, 216, 164, 149, 97][0..7];
-- 与滚动的 `pos_mask` 进行 XOR(从 0 开始,每个块递增 0x0001_0001_0001_0001)。
- 剩余处理(如果 len % 8 != 0):
- 将剩余字节填充为 64 位。
- 应用相同的 XOR(密钥 + 当前 pos_mask)。
- 将有效字节复制回原始切片。
输入布局(去混淆后):
- 字节 0-7: `swap_id` (u64)
- 字节 8-15: `amount_in` (u64)
- 字节 16: `is_base_to_quote` (u8)
- 字节 17-23:填充
- 字节 24:选择器(在反序列化之前弹出)
如果你在想“为什么要编码 calldata 而不是直接模拟”,答案很简单:模拟在计算时间上是昂贵的,但竞标是低延迟的,这意味着如果你在模拟 + 重新竞标时,到你重新竞标时,发起者已经发送了多个更新的交易。
这意味着你需要有一种方法来即时识别竞争对手的参数,以便你可以基于这些参数进行新的竞标。这就是为什么你要解析 calldata 而不是进行模拟。当每个人都在这样做时,你需要走在前面,以一种无法在没有手动逆向工程的情况下解码的方式编码 calldata。
罕见的技术评论。
4.33K
热门
排行
收藏

