智能合约论文审稿人的自白:如何写出高质量的研究论文

本文分享了智能合约论文审稿的经验,强调论文需详细描述分析方法、理解区块链基础、基于有意义的合约集实验、遵循模糊测试研究规则、与现有工具对比,并明确工具的检测范围,以提升论文质量。

智能合约论文审稿人的自白

如果你正在考虑撰写一篇关于智能合约分析的新颖方法论文,并想知道审稿人会关注哪些方面,那么你来对地方了。许多大型会议(如ISSTA工具论文、ASE、FSE等)的截止日期即将到来,我们自己的智能合约分析研讨会也即将召开,因此我们想分享一些专业建议。即使你不是在写智能合约论文,这篇文章也可以帮助你识别值得阅读的研究并理解其影响。

我已经审阅智能合约分析论文几年了——去年在七个不同场合审阅了超过25篇论文——并总结出了一篇好论文的六个要求。我还想分享一些额外要点,这些要点可以将论文从“足够好”提升到“优秀”。

解释分析方法实际做了什么!

有些作者未能描述提出的分析算法如何工作,可能是由于页面限制。描述算法或实现的每一个细节并非必需,但一篇好论文不仅仅是使用高级术语描述方法。“我们将符号执行与群体测试相结合”是论文摘要中的好句子,但这种粒度级别无法贯穿全文。审稿人认为这是模糊的。提供细节,让读者理解你实际提出的内容并进行评估。对于工具论文——基本上是宣传特定工具存在的短文——通用解释有时是可以的。然而,这种缺乏信息的描述在全会议提交中出人意料地频繁出现,而这些提交本应让读者理解甚至复制有趣的新方法。

理解区块链和智能合约的基础知识

太多论文因为对合约或区块链工作原理的明显错误而被拒绝。这种问题通常由包含描述区块链和智能合约的样板文本的引言预示。智能合约和区块链分析在某种程度上是核心代码分析和测试生成问题的纯粹实例。然而,如果你仍处于研究该主题的早期阶段,需要做一些基础功课才能产生可信的结果。我们建议完成Ethernaut CTF练习以理解一些合约利用的基础知识,然后阅读我们的Building Secure Contracts教程,包括使用付费审计中使用的真实工具进行实验。区块链和智能合约是快速移动的目标,许多早期论文专注于处理以太币。然而,现代合约的财务价值大多在ERC-20或其他最近开发的代币类型中。如果你只关注与以太币相关的利用,你并没有解决当前的大部分问题。

基于有意义的合约集进行实验结果

在以太坊区块链上创建的所有合约中,只有一小部分占据了几乎所有交易和以太币/代币活动。大多数Etherscan合约几乎没有实际用途,是程序员学习Solidity时部署的玩具。如果你的实验基于从Etherscan随机选择的合约,你的结果将不会反映感兴趣的合约,并且许多可能是近似的重复。合约的随机抽样对审稿人来说是一个危险信号,因为数据集嘈杂,可能不包含任何实际关心的合约。相反,基于参与交易、持有以太币或代币价值或满足其他证明其有意义的条件的活跃合约进行实验。在合约集中包含一些多样性并证明你没有基于30个实现几乎相同的基本ERC-20代币得出结果,也显示出良好的判断力。此外,最先进的以太坊发展迅速也适用于此。如今,许多活动不在单个合约中,而是在多合约系统中,基于这些合约组合的分析对于探索有意义的行为是必要的。同样的指导也适用于展示发现漏洞的方法。在没有以太币或代币价值且从不参与交易的合约中发现无意义的漏洞并不令人信服。另一方面,在参与众多交易的真实合约中存在真实漏洞。找到这些,你就很好地展示了你的想法!Google BigQuery是开始的一种方式,因为从区块链中提取可能很困难。

更一般地,尊重(模糊测试)研究的规则

我们关于进行良好模糊测试研究的帖子大多也适用于模糊测试智能合约。智能合约模糊测试器可能不需要运行24小时,但运行工具“足够长的时间”肯定是必要的。你需要基于统计的证据,而不是一连串的轶事。如果你的合约模糊测试器表现更好,它是否在统计上显著地更好?估计的效果大小是多少,我们对该估计质量的信心如何?良好模糊测试实验实践的其他要点只是常识但容易被忽视:例如,如果你在实验中没有使用一致版本的Solidity编译器或未能报告使用的版本,复制(和理解)你的结果将很复杂。这些一般指南的两个特定方面对智能合约模糊测试论文至关重要,因此我们将它们分开。

与有意义的工具基线进行比较

你需要将你的工作与广泛接受的概念和工具进行比较。将你的工具与真实的竞争对手进行比较,这在智能合约工作中可能需要更多努力。人们总是在发布新工具和更新旧工具,一些旧工具不再工作。到你的论文被审阅时,前沿可能已经移动。然而,必须明显表明你费心选择了一组合适的可比较工具,并在撰写论文时将你的工作与最先进的技术进行比较。

明确解释你的工具检测什么和不检测什么

智能合约模糊测试器报告各种错误,但没有Solidity“崩溃”。因此,工具必须寻找某些东西,无论是整数溢出、重入、锁定资金还是表明可能拒绝服务漏洞的失控gas使用。最终,这意味着工具可能在某些方面表现出色,而在其他方面落后。一个模糊测试器可能使用一组激进的预言机,这可能导致误报,而另一个可能报告一组特定的错误降低其误报错误。在这种情况下比较同类事物可能很困难,但你必须展示你的方法找到有意义的错误。在模糊测试中这样做的一种方法是比较你的工具与其他工具的代码覆盖率结果。

我们希望这些建议有助于加强你发表智能合约研究的方法。总之,你几乎可以保证,如果我审阅你的论文,并且我无法弄清楚你的方法是什么,我会拒绝你的论文。如果你显然除了阅读维基百科上的以太坊页面外没有做任何关于智能合约的功课,我会拒绝你的论文。如果你的实验基于区块链上50个随机合约,这些合约在部署后收到了10笔交易,持有总计0.05美元的以太币,并且大多是彼此的重复,我会拒绝你的论文。如果你不理解模糊测试研究的基本规则,如果你只与一个过时的学术研究工具比较,而忽略五个流行的开源工具,如果你声称你的方法更好仅仅因为你倾向于基于非常宽松的“错误”概念产生更多误报……嗯,你可以猜到!

好消息是,做这篇文章建议的所有事情不仅仅是满足审稿人的一部分。它是满足你自己和未来读者(以及潜在工具用户)的一部分,并且对于为智能合约开发者构建更美好的世界至关重要。

最后,要将论文从“好”提升到“优秀”,告诉我你是如何想出论文的核心想法的,以及该想法有效的更大含义可能是什么。也就是说,除了纯粹运气之外,有一些原因使这种方法在发现智能合约错误方面更好。方法的成功告诉我们关于智能合约性质的什么,或者关于生成不仅仅是字节或输入值序列而是结构化函数调用序列的测试的更大问题?我如何基于你的工作提高我对智能合约或测试的理解?我期待阅读你的研究。我们希望在今年7月与ISSTA共同举办的WoSCA上看到你的智能合约分析论文!

如果你喜欢这篇文章,请分享: Twitter LinkedIn GitHub Mastodon Hacker News

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计