硬核:避免 Solidity 语言和智能合约的不当使用,绕开以太坊的致命弱点_WIT:CAL

很多以太坊的智能合约控制着有实际价值的数字资产。因此,保证合约没有安全漏洞是十分重要的事情。本文是一篇2017年对以太坊合约攻击调研的文献,来帮助大家避免以太坊智能合约设计中的一些可能导致安全性问题的弱点。在这里,你也可以看到,导致以太坊分叉的著名事件TheDAO攻击,其原理是什么。

这篇文献分两部分,第一部分介绍了一些如果对Solidity语言和智能合约不当使用会导致问题的弱点;第二部分则用一些实例展示了这些弱点可能会导致怎样的问题。

原文标题:《以太坊合约的安全性弱点,你都绕开了吗?》

不当使用会导致问题的点

合约内函数调用

在使用Solidity编写智能合约时,可以调用其他合约中的函数。假设Alice合约里有一个ping(uint)函数,c是一个Alice合约在以太坊上的地址。如果其他合约想要以参数42调用ping函数,有三种方式:

第一种

call调用:通过合约地址,合约函数,函数签名和调用参数进行调用。如果被调用函数中有修改合约变量的代码,将修改被调用合约中相应的变量。

第二种

delegatecall与call类似,区别是delegatecall执行时,仅仅使用被调用函数的代码,而代码中如果涉及到合约变量的修改,则是修改调用者合约中的变量。如果被调用的函数中有d

,就没有人有能力将他从王座上赶下去了,因为所有转账的结果都会失败。

以上就是这一期的内容,在接下来的文章中,我们将会介绍文献中提到的其他的Solidity的弱点与可能导致的问题。

参考文献:Atzei,Nicola,MassimoBartoletti,andTizianaCimoli.「Asurveyofattacksonethereumsmartcontracts(sok).」PrinciplesofSecurityandTrust.Springer,Berlin,Heidelberg,2017.164-186.

本文来源于非小号媒体平台:

Conflux中文社区

现已在非小号资讯平台发布1篇作品,

非小号开放平台欢迎币圈作者入驻

入驻指南:

/apply_guide/

本文网址:

/news/3627124.html

以太坊ETH

免责声明:

1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险

2.本文版权归属原作所有,仅代表作者本人观点,不代表非小号的观点或立场

上一篇:

从2018年度区块链安全大事件,看当前区块链安全发展与问题

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金智博客

[0:0ms0-3:530ms