智能合约 -- 安全考量
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
相关概念
就是我们写代码是考虑这种涉及到合约安全的问题:下面这个方面写合约是重点考虑。
创建消息发送以太币
1.要创建消息发送以太币您需要构建一个有效的交易并将其发送到以太坊网络中。
2.交易被发送到以太坊网络后会经过矿工的验证和打包并添加到区块链中。一旦交易完成确认指定的以太币数量将从发送者地址转移到接收者地址。
ps : 消息的执行底层就是智能合约或者不需要,智能合约也就是对交易的一种校验。
安全常量
1.重入攻击: 预防重入,最简单就是现将合约里的账户置0然后再向账户地址发送以太币。
2.gas的限制和循环: 区块消耗的gas和拥有的gas不成正比。
-
合约创建当您部署一个新的合约时将消耗一定数量的 Gas。Gas 的数量取决于合约的字节码大小和构造函数的复杂性。
-
数据存储和读取对状态变量进行写操作即存储或读操作即获取都会消耗 Gas。写操作的消耗量通常比读操作更高因为它涉及到更新状态。
-
函数调用当您调用合约中的函数时将消耗 Gas。消耗量取决于函数的复杂性、参数的数量和大小以及函数内部的计算操作。
-
控制结构包括条件语句如 if、else、switch、循环语句如 for、while和异常处理如 try/catch。这些结构中的每个执行路径都会消耗 Gas。
-
数组和映射操作对数组和映射进行添加、删除、修改和访问等操作都会消耗 Gas。具体消耗量取决于操作涉及的元素数量和复杂性。
-
加密操作加密和解密操作如哈希函数、签名函数和加密函数通常会消耗大量的 Gas。
-
外部调用与其他合约进行交互包括消息发送、合约调用和委托调用等操作都会消耗 Gas。
-
合约自毁当您在合约中调用
selfdestruct
函数来销毁合约时也会消耗一定数量的 Gas。
3. 发送接受以太币
4. 调用栈深度不能超过1024.
5. 授权代理 :
6.solidit中mapping 是无法删除只能通过
1.将元素设置为默认值
2.就是在元素设置默认值的同时同时一个另一个map标记删除。
mapping(uint => bool) public isDeleted;
mapping(uint => uint) public myMapping;
function deleteFromMapping(uint _key) public {
delete myMapping[_key]; // 删除键值对, 就是将mapping[key] 的值设置为默认值
isDeleted[_key] = true; // 标记已删除
}
7.限制访问: 权限修饰符之类的