智能合约论文评审专家的自白
如果您正在撰写关于智能合约分析的创新方法论文,并想知道评审专家关注什么,那么您来对地方了。随着许多大型会议(如ISSTA工具论文、ASE、FSE等)截止日期临近,以及我们自己的智能合约分析研讨会即将召开,我们想分享一些专业建议。即使您不写智能合约论文,本文也能帮助您识别值得阅读的研究并理解其影响力。
我评审智能合约分析论文已有数年——去年在七个不同场合评审了超过25篇论文——并总结出优秀论文的六大要求。我还想分享一些将论文从“足够好”提升到“优秀”的加分项。
1. 解释分析方法的具体实现
有些作者未能描述提议的分析算法如何工作,可能是由于篇幅限制。虽然不需要描述算法或实现的每个繁琐细节,但优秀论文不应仅用高层次流行语描述方法。“我们将符号执行与群测试相结合”是论文摘要的好句子,但这种粒度不能在整篇论文中持续。评审专家认为这过于模糊。提供细节让读者理解您的提议并进行评估。对于工具论文(基本上是宣传特定工具存在的短文),通用解释有时可以接受。然而,这种缺乏信息的描述在全会议提交中惊人地常见,而这些提交本应让读者理解甚至复制有趣的新方法。
2. 理解区块链和智能合约基础
太多论文因对合约或区块链工作原理犯明显错误而被拒绝。这种问题通常由包含描述区块链和智能合约的样板文本的引言预示。智能合约和区块链分析在某些方面是核心代码分析和测试生成问题的纯粹实例。但是,如果您仍处于研究该主题的早期阶段,需要做最少量的功课才能产生可信结果。我们建议完成Ethernaut CTF练习以了解合约利用的一些基础知识,然后阅读我们的构建安全合约教程,包括使用付费审计中真实工具的实验。区块链和智能合约是快速移动的目标,许多早期论文集中于处理以太币。然而,现代合约的大部分财务价值在于ERC-20或其他最近开发的代币类型。如果您只关注与以太币相关的利用,您就没有解决当前的大部分问题。
3. 基于有意义的合约集进行实验结果
在以太坊区块链上创建的所有合约中,只有一小部分占几乎所有交易和以太币/代币活动。大多数Etherscan合约几乎没有实际用途,是程序员学习Solidity时部署的玩具。如果您的实验基于从Etherscan随机选择的合约,您的结果将不反映感兴趣的合约,并且许多可能近乎重复。合约的随机抽样对评审专家来说是危险信号,因为数据集嘈杂,可能不包含任何人实际关心的任何合约。相反,基于参与交易、持有以太币或代币价值或满足其他证明其有意义的标准的活动合约进行实验。在合约集中包含一些多样性也显示出良好的判断力,并证明您没有基于30个几乎相同实现的基本ERC-20代币得出结果。此外,最先进的以太坊发展迅速的事实在这里适用。如今,许多行动不在单个合约中,而在多合约系统中,基于这些合约组合的分析对于探索有意义的行为是必要的。同样的指导也适用于演示查找漏洞的方法。在持有无以太币或代币价值且从不参与交易的合约中查找无意义的漏洞并不令人信服。另一方面,在参与众多交易的真实合约中存在真实漏洞。找到这些,您就很好地演示了您的想法!Google BigQuery是开始的一种方式,因为从区块链提取可能很困难。
4. 遵守(模糊测试)研究规则
我们关于进行良好模糊测试研究的文章大多也适用于模糊测试智能合约。智能合约模糊测试器可能不需要运行24小时,但运行工具“足够长”的时间肯定至关重要。您需要基于统计的证据,而不是一串轶事。如果您的合约模糊测试器表现更好,它是否以统计显著的优势做到?估计效应大小是多少?我们对该估计质量的置信度如何?良好模糊测试实验实践的其他点只是常识但容易被忽视:例如,如果您在实验中没有使用一致版本的Solidity编译器或未能报告使用的版本,复制(和理解)您的结果将很复杂。这些一般指南的两个特定方面对智能合约模糊测试论文至关重要,因此我们将它们分开。
5. 与有意义的工具基线比较
您需要将您的工作与广泛接受的概念和工具进行比较。让您的工具与真实竞争对抗,这在智能合约工作中可能需要更多努力。人们总是在发布新工具和更新旧工具,一些旧工具不再工作。到您的论文被评审时,前沿可能已经移动。尽管如此,必须明显表明您费心选择了一组合理的可比工具,并在撰写论文时将您的工作与最先进的技术进行比较。
6. 明确说明工具检测和不检测的内容
智能合约模糊测试器报告各种错误,但没有Solidity“崩溃”。因此工具必须寻找某些东西,无论是整数溢出、重入、锁定资金还是表明可能拒绝服务漏洞的失控gas使用。最终,这意味着工具可能在某些方面表现出色,而在其他方面落后。一个模糊测试器可能使用一组激进的预言机,可能导致误报,而另一个可能报告一组特定的错误降低其误报错误。在这种情况下比较同类可能很困难,但您必须显示您的方法找到有意义的错误。在模糊测试中这样做的一种方法是比较您的工具与其他工具的代码覆盖率结果。
我们希望这些建议有助于加强您发布智能合约研究的方法。总之,您几乎可以保证,如果我评审您的论文,并且我无法弄清楚您的方法是什么,我会拒绝您的论文。如果您显然除了阅读维基百科关于以太坊的页面外没有做任何关于智能合约的功课,我会拒绝您的论文。如果您基于区块链上50个随机合约进行实验,这些合约在部署后收到10笔交易,持有总计0.05美元的以太币,并且大多是彼此的重复,我会拒绝您的论文。如果您不理解模糊测试研究的基本规则,如果您只与一个过时的学术研究工具比较,而忽略五个流行的开源工具,如果您声称您的方法更好,仅仅因为您倾向于基于非常慷慨的“错误”概念产生更多误报……嗯,您可以猜到!
好消息是,做本文建议的所有事情不仅是满足评审专家的一部分。它是满足您自己和未来读者(及潜在工具用户)的一部分,并且对于为智能合约开发人员构建更美好的世界至关重要。
最后,要将论文从“好”提升到“优秀”,告诉我您如何提出论文的核心想法以及该想法有效的更大影响。也就是说,除了纯粹运气之外,有一些原因使这种方法在查找智能合约错误方面更好。方法的成功告诉我们关于智能合约性质的什么,或关于生成不仅仅是字节或输入值序列而是结构化函数调用序列的更大测试问题?基于您的工作,我如何提高对智能合约或测试的理解?我期待阅读您的研究。我们希望在今年七月与ISSTA联合举办的WoSCA上看到您的智能合约分析论文!
如果您喜欢本文,请分享: Twitter LinkedIn GitHub Mastodon Hacker News