智能合约 -- 安全考量

相关概念

就是我们写代码是考虑这种涉及到合约安全的问题:下面这个方面写合约是重点考虑。

创建消息发送以太币

1.要创建消息发送以太币,您需要构建一个有效的交易,并将其发送到以太坊网络中。

2.交易被发送到以太坊网络后,会经过矿工的验证和打包 ,并添加到区块链中。一旦交易完成确认,指定的以太币数量将从发送者地址转移到接收者地址

ps : 消息的执行底层就是智能合约或者不需要,智能合约也就是对交易的一种校验。

安全常量

1.重入攻击: 预防重入,最简单就是现将合约里的账户置0,然后再向账户地址发送以太币。

**2.gas的限制和循环:**区块消耗的gas和拥有的gas不成正比。

  1. 合约创建:当您部署一个新的合约时,将消耗一定数量的 Gas。Gas 的数量取决于合约的字节码大小和构造函数的复杂性。

  2. 数据存储和读取:对状态变量进行写操作(即存储)或读操作(即获取)都会消耗 Gas。写操作的消耗量通常比读操作更高,因为它涉及到更新状态。

  3. 函数调用:当您调用合约中的函数时,将消耗 Gas。消耗量取决于函数的复杂性、参数的数量和大小,以及函数内部的计算操作。

  4. 控制结构:包括条件语句(如 if、else、switch)、循环语句(如 for、while)和异常处理(如 try/catch)。这些结构中的每个执行路径都会消耗 Gas。

  5. 数组和映射操作:对数组和映射进行添加、删除、修改和访问等操作都会消耗 Gas。具体消耗量取决于操作涉及的元素数量和复杂性。

  6. 加密操作:加密和解密操作,如哈希函数、签名函数和加密函数,通常会消耗大量的 Gas。

  7. 外部调用:与其他合约进行交互,包括消息发送、合约调用和委托调用等操作,都会消耗 Gas。

  8. 合约自毁:当您在合约中调用 selfdestruct 函数来销毁合约时,也会消耗一定数量的 Gas。

3. 发送接受以太币:

  1. 调用栈深度:不能超过1024.

  2. 授权代理 :

6.solidit中mapping 是无法删除,只能通过

1.将元素设置为默认值

2.就是在元素设置默认值的同时,同时一个另一个map标记删除。

javascript 复制代码
mapping(uint => bool) public isDeleted; 
mapping(uint => uint) public myMapping; 
function deleteFromMapping(uint _key) public {
     delete myMapping[_key];    // 删除键值对, 就是将mapping[key] 的值设置为默认值
     isDeleted[_key] = true;    // 标记已删除
 }

7.限制访问: 权限修饰符之类的

相关推荐
Hrain-AI7 小时前
2026 编码智能体三强对比:Trae/Qoder CN/CodeBuddy 安全护栏
人工智能·安全
cjy_18 小时前
2026人工智能产业发展深度剖析:落地化、垂直细分、安全合规成行业核心赛道
人工智能·安全
数据知道8 小时前
反序列化漏洞:Java、PHP、Python 三条线各讲透
java·网络·python·安全·网络安全·php
宏集科技-鲁工8 小时前
挣脱线缆束缚:宏集EXOR X5 Wireless无线手持HMI如何让光伏工地AGV操控更安全高效
安全
听你说328 小时前
推进具身智能安全评测:丈八科技与季华实验室达成战略合作
人工智能·科技·安全
汇策研习社9 小时前
斐波那契均线交易体系:21/55/89三重均线趋势战法详解
大数据·经验分享·金融·区块链·fastbull
同花顺期货通9 小时前
期货新手入门品种筛选:2026年低保证金高流动性品种深度解析
区块链
盗理者10 小时前
AI Agent 技能分享|从零实现一个 MCP Server,让 AI Agent 安全调用内部系统
网络·人工智能·安全·agent
磐链科技11 小时前
从Truffle到Hardhat:DApp开发框架的技术演进与工程化最佳实践
区块链
摸鱼停不住先生11 小时前
不安全反序列化利用篇(三):从对象字段到危险方法调用
java·服务器·网络·安全