我们尝试使用奥延特来分析一些在线合同,并绘制了一个关于可能脆弱的智能契约(“可重入”bug)的创建时间的图表。

因此,y轴是通过计算以下百分比来计算的:
# of vulnerable contracts / 300我们随机选择300个合同在每个期间。
总体趋势不断下降,这表明人们意识到重入错误,并且在编写新的智能合同时使用了更安全的设计策略。这对我们来说很有意义。
然而,正如你所看到的,在2016-10和2017-11年间,“脆弱”智能合同的数量有了很大的下降。这是我们无法解释的。我们知道,臭名昭著的DAO bug是在2016-07年报告的,那么在这段时间内可能会让开发人员更加谨慎吗?但为什么2016-11和2016-12的脆弱合同所占比例似乎要高得多呢?
发布于 2019-03-03 13:39:39
一些想法,但没有具体的想法。可能接近于推测..。
我们随机..。
多么?您是否在使用列出在时间段内部署的所有合同的源?
还是您只是查看使用传输/退出模式的合同,并检查其中包含重入漏洞的比例?
如果您使用的是所有合同中的一个示例,难道您没有选择那些实际上包含传输/撤回代码模式的项目,这难道不是偶然吗?(在这种情况下,找不到漏洞的可能性。)
...select 300在每个期间内签订合同。
这是一个足够大的样本大小,以排除你的结果是统计异常?如果你用大得多的样本重复,你会得到同样的结果吗?
总体趋势不断下降,这表明人们意识到重入错误,并且在编写新的智能合同时使用了更安全的设计策略。
另一种看法是,推测不知道自己在做什么的新用户数量将超过已经成为更优秀程序员的现有用户数量。:-)
也许更有可能的是,人们--包括新用户--正在使用来自开放齐柏林飞艇等组的股票合约模板,这些小组已经对各种常见的bug进行了审计。这并不一定是因为他们是谨慎的程序员,他们知道攻击向量;这可能只是因为他们懒惰,不想做这项工作。
还有几个我还没有研究过的想法:
https://ethereum.stackexchange.com/questions/67824
复制相似问题