暂无介绍
为什么需要审计,如何开始审计和以及常见合约错误。
Ethernaut 题库闯关第一题解决方案。
Ethernaut 智能合约安全闯关
本次我们将带大家了解智能合约中一个经常被用到的东西——随机数。 智能合约的开发中常常会用到随机数,例如 Lottery 和现在流行的 NFT 数字藏品的属性等都需要用到随机数。目前来说常见的随机数获取有两种:使用区块变量生成随机数,使用预言机来生成随机数。
在之前的内容中,学习到了storage中是使用插槽存储数据的。而delegatecall函数有个有趣的特点:当使用 delegatecall 函数进行外部调用涉及到 storage 变量的修改时是根据插槽位置来修改的而不是变量名。
这次我们将了解如何访问合约中的私有数据(private 数据)。
在计算机编程中,当在特定范围(代码块、方法或内部类)中声明的[变量](https://learnblockchain.cn/article/3398)与在外部范围中声明的变量具有相同的名称时,就会发生变量隐藏。变量隐藏在多种计算机语言中都存在,并不仅仅是Solidity语言独有的特性。
本文概述了 [Web3 开发](https://learnblockchain.cn/article/4067)人员和安全团队在设计、开发并维护智能合约时必须考虑的安全要素,覆盖了从威胁建模到应急响应准备的整个周期。
所有存储在区块链上都是公开可见的,包括合约的私有状态变量!所以不要在区块链上存储密码和私钥,而且对于确实需要存储的敏感数据尽量使用hash比对的存储密文hash。通过本文可以理解合约[数据的存储](https://learnblockchain.cn/2019/10/05/evm-data),并学会访问合约的状态变量数据。
使用检查、影响和交互模式(简称CEI:Checks, Effects, and Interactions)、互斥锁、Pull 支付方式以及gas限制都是防止可重入攻击的有效技术。
上篇文章中我们学习了合约中数据的存储方式以及如何读取合约中的各种数据。这次我们将带大家了解 [delegatecall](https://learnblockchain.cn/article/1960) 函数。
关于openzepplin智能合约可升级代理的安全问题与防御措施。
通过此次攻击事件来看,攻击成功最重要的因素是Paraluni官方MasterChef合约中没有对Token地址做严格校验和对质押存款的方法未做重入限制,当然前提还是对Token未做严格校验,该风险就算加入了重入限制条件,攻击者依然可以通过Token可控对项目造成威胁......
解读两种常见合约的坑,有tx和合约代码,真实案例。
使用重入锁并不能解决所有问题,可以考虑使用[checks-effects-interactions模式](https://learnblockchain.cn/article/1890),另外,转账最好放在一个完整逻辑的最开始或者最结尾,避免状态不一致。
0 回答,829赞同
1 回答,86赞同
38 回答,85赞同
0 回答,51赞同
0 回答,49赞同
2 回答,49赞同
0 回答,41赞同
0 回答,40赞同
15 回答,30赞同
0 回答,30赞同