版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
智能合约异常与错误处理CONTENTS目录01020304异常处理基础异常处理方式异常处理函数对比异常处理实践05项目总结与展望异常处理基础01PART异常定义异常是合约运行中无法预料的非法情况,如除零、数组越界等,会导致合约执行中断及交易数据回滚。错误定义错误是程序执行中不符合预期的情况,如运行条件不满足、用户输入不合法等。异常与错误概念异常处理方式02PARTrequire()通过条件表达式检查要求是否满足,不满足则抛出错误信息并退出事务,常用于检查函数传入参数等。require函数assert()用于检查内部错误,条件不成立时抛出异常,一般用于程序调试。assert函数revert()用于复杂逻辑处理场景,可抛出错误信息,适用于条件验证。revert函数抛出异常try/catch用于捕获外部调用时的异常,防止交易失败,可接收外部调用的返回值及异常时的返回数据。try/catch语法try/catch可捕获require()、assert()和revert()函数抛出的异常,通过catch的不同子句捕获错误信息。主动抛出异常捕获捕获异常异常处理函数对比03PARTassert函数Solidity0.8.0之前,assert()抛出异常时消耗所有剩余Gas,之后版本会退还剩余Gas。1require与revert函数require()和revert()函数在抛出异常时会退还剩余Gas。2Gas开销require函数适用于验证用户输入、函数返回值、交易前条件等,通常放在函数开头。revert函数适用于复杂逻辑处理场景,结合if/else条件语句使用。assert函数适用于检查整数溢出、数据异常等不应出现的错误,通常放在函数结尾。适用场景异常处理实践04PART任务目的编写猜数字游戏合约,使用异常处理函数对用户输入数据进行检查。任务步骤完成start()、guess()、viewNumber()函数,通过require()等函数对游戏逻辑进行异常处理。猜数游戏任务分析Bank合约漏洞,编写攻击合约展示漏洞后果,并修复漏洞。任务目的任务步骤编写攻击合约Attack,通过修改转账方法、调整余额修改顺序或使用互斥锁修复漏洞。重入攻击漏洞修复任务任务目的在借书管理系统中增加异常处理,对参数传递、权限判断等情况进行处理。任务步骤在BookMgr、ReaderMgr、BookManage合约中增加require()等异常处理函数,确保系统运行安全。借书管理系统任务项目总结与展望05PART学习成果本项目学习了Solidity合约编程中异常处理的方法,包括异常抛出、捕获及函数对比,通过任务案例加深了对异常处理的理解。重要性掌握异常处理方法有助于编写安全稳定的智能合约,保障用户利益和区块链生态健康发展。0102项目总结技术发展随着区块链技术发展,智能合约的异常处理将更加智能化、自动化。安全意识开发者需持续增强安全意识,关注合约潜在风险,及时发现并修复漏洞。未来展望谢谢大家正确使用事件和日志Catalogue目录1.项目背景能力目标2.思政聚焦3.项目相关知识4.项目任务5.项目小结6.项目背景01PART事件的作用事件是智能合约与外部应用交互的重要方式,通过事件可以将合约运行状态和交易信息传递给前端应用,方便前端及时更新数据。日志用于记录智能合约的运行过程,便于调试和查看合约执行情况,同时为区块链的透明性和可追溯性提供支持。日志的功能智能合约中的事件与日志能力目标02PART01.02.使用event关键字定义事件,事件可以有参数,参数可加indexed标记以便快速检索。事件定义使用emit关键字触发事件,事件触发后会生成日志记录在区块链上。触发事件掌握事件定义和触发使用Solidity内置的log函数记录日志,日志会显示在Remix控制台终端上。日志记录通过日志查看功能,可以浏览和过滤日志中的信息,方便调试和查看合约运行结果。信息输出日志记录和信息输出思政聚焦03PART事件和日志确保了链上操作的透明性和可追溯性,增强了区块链交易系统的公平公正性。透明性和可追溯性通过日志记录,任何人都可以验证合约交易和操作的执行过程,减少了人为操控和不公正行为的可能。信任度提升事件和日志的意义项目相关知识04PARTRemix控制台日志Remix控制台终端显示合约部署或函数调用时的日志信息,包括交易状态、Gas消耗及函数的输入输出等。Solidity中的日志函数Solidity提供了log0到log3等日志函数,用于记录不同数量参数的日志信息。日志处理事件是智能合约发出的通知,可以被外部监听者通过RPC接口订阅,用于记录交易和与前端应用交互。事件的概念在合约中先定义事件,再在函数中触发事件,事件触发后会以日志条目形式记录在区块链中。事件的使用事件处理项目任务05PART任务目的练习枚举、结构体、映射、异常处理、事件处理等知识点,完成影评管理系统的合约编写。任务步骤编写addFilm、postReview和getReviews函数,实现新增电影、发布影评和查询影评的功能,并在Remix上部署和测试。电影评价管理在借书管理系统中增加事件处理机制,记录添加图书、添加读者、借阅图书、归还图书、缴纳罚金等操作。任务目的在相应合约中定义和触发事件,完成系统功能的完善,并在Remix上进行测试。任务步骤借书管理:五项目小结06PART
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026广西来宾合山市融媒体中心招聘见习人员4人备考题库附答案详解(培优b卷)
- 北师大实验顺义学校应届毕业生招聘26人笔试模拟试题及答案解析
- 初中英语八年级下册Unit 6 An old man tried to move the mountains Section B (1a1d) 教学设计
- 初中九年级英语下册第四单元《对话未来:科技影响下的生活》听说整合教学设计
- 小学英语三年级下册《邀请与回应:儿童节计划》项目式学习教案
- 初中数学八年级核心素养导向下“三角形的中位线定理”单元整体教学导学案
- 小学道德与法治一年级上册大单元视域下的跨学科主题教学设计:冬藏蕴趣·家国同心
- 初中七年级英语下册《城镇变迁:今昔对比与可持续未来》跨学科单元教学设计
- 人教新课标一年级上册数学教案6和7的加减法教学设计
- 教师结构化面试题目
- 水晶产品采购合同范本
- 2025年家庭智能健身器材开发可行性研究报告
- 携程培训课件
- 第7课《我们爱分享》(名师课件)
- 排水泄压阀施工方案
- 电力系统配电房管理维护操作规程
- 2025年黑龙江省纪委监委遴选笔试真题答案解析
- 生物滤池除臭装置培训
- 国家安全 青春挺膺-新时代青年的使命与担当
- 《人工智能基础与应用(微课版)》课件 第二章 机器学习基础
- 风险评估矩阵表标准版
评论
0/150
提交评论