paperbot · PL 论文追踪

全部论文 待读 收藏

P2 A Complete Formal Semantics of eBPF Instruction Set Architecture for Solana

Solana 的 eBPF 指令集架构完整形式语义
OOPSLA 9(OOPSLA1)2025匹配度 2/10 · 论文核心是为 Solana eBPF 字节码建立 Isabelle/HOL 形式语义与验证框架,属于传统形式语义/定理证明工作,与用户的 PL↔AI、Agentic 程序静态分析、浮点程序分析及贝叶斯程序分析等方向没有直接交集。仅在形式化验证这一宽泛层面与用户兴趣有轻微关联。引用 1 inbox
Shenghao Yuan, Zhuoruo Zhang, Jiayi Lu, David Sanan, Rui Chang, Yongwang Zhao
crossref: 2026-09-10

AI 速览

一句话:首次给出 Solana eBPF 字节码的完整小步语义,并在 Isabelle/HOL 中形式化与验证。

本文针对 Solana 区块链智能合约所使用的 eBPF 字节码语言缺乏形式语义的问题,首次提出其指令集架构的完整形式语义。该语义覆盖所有二进制级指令,并采用小步风格,便于在 Isabelle/HOL 中形式化 Solana eBPF 解释器。作者还设计语义验证框架,从形式化中抽取可执行语义,与原始 Solana eBPF 解释器实现进行对比测试;该方法轻量且非侵入,缓解了 Isabelle/HOL 现有抽取机制的限制。最后展示了该语义在形式化 Solana eBPF 虚拟机主要组件方面的潜在应用。

问题
Solana 智能合约依赖 eBPF 字节码,但其指令集缺乏精确的形式语义,难以进行形式推理与验证。
方法
以二进制级指令为对象建立小步操作语义,在 Isabelle/HOL 中形式化解释器,并通过抽取可执行语义与原生实现差分测试来验证。
评估
通过语义验证框架将抽取的可执行语义与原始 Solana eBPF 解释器实现进行对比测试,并讨论其在虚拟机组件形式化中的应用。
原文摘要(Abstract)

We present the first formal semantics for the Solana eBPF bytecode language used in smart contracts on the Solana blockchain platform. Our formalization accurately captures all binary-level instructions of the Solana eBPF instruction set architecture. This semantics is structured in a small-step style, facilitating the formalization of the Solana eBPF interpreter within Isabelle/HOL. We provide a semantics validation framework that extracts an executable semantics from our formalization to test against the original implementation of the Solana eBPF interpreter. This approach introduces a novel lightweight and non-invasive method to relax the limitations of the existing Isabelle/HOL extraction mechanism. Furthermore, we illustrate potential applications of our semantics in the formalization of the main components of the Solana eBPF virtual machine

链接与引用

DOI 原文 · PDF(开放获取) ·

BibTeX
@article{paperbot3198,
  title = {A Complete Formal Semantics of eBPF Instruction Set Architecture for Solana},
  author = {Shenghao Yuan and Zhuoruo Zhang and Jiayi Lu and David Sanan and Rui Chang and Yongwang Zhao},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {9},
  number = {OOPSLA1},
  year = {2025},
  doi = {10.1145/3720414}
}