再学:合约继承 、抽象合约 solidity接口、库、事件 合约重入攻击

server/2025/3/27 12:31:09/

目录

1.合约继承

 2.抽象合约

 3.接口

4.库

5.事件

6.重入攻击


1.合约继承

这里的代码解释:B继承A

B可以访问A的set()方法(即便是internal也可以),也可以拿到A的a变量。

只要这些在A的东西不是private就行

若想在子类可以重写这个方法

要在父类加上virtual,在子类加上override

 2.抽象合约

 

 3.接口

使用 new 关键字时,你不需要手动传递合约地址,因为 new 操作符会自动处理地址分配。而使用接口时,你需要传递合约地址,因为接口需要知道它应该与哪个具体的合约实例进行交互。这是接口提供灵活性和抽象性的代价,它允许你在不知道具体合约实现的情况下编写代码。 

这里的uint public count; 也会创建一个get的,所以在接口的地方也要写一个count()方法 

接口必须是external,因为外部要调用

 

4.库

纯计算

 内部库

也可以用以下的调用方式 

链接外部库 

5.事件

 

用地址作为索引

事件会记录在日志当中。

6.重入攻击

攻击者会不断地从银行withdraw fallback withdraw fallback.. 直到银行里没有钱。

 两种解决方法

1.先检查 - 再修改 -最后交互

先将余额全部提取出来,然后将余额设置为0,这样即便call完,又想重复进入withdraw,余额都是0

2.重入锁控制 

解释:攻击者会在调用完call后,就执行withdraw方法,因此若有重入锁的话,第一次进入withdraw方法,locked默认为0,可以执行,然后locked变成1,当攻击者想循环进入withdraw时,因为locked一直为1,从而无法进入下一个withdraw

 

 


http://www.ppmy.cn/server/176886.html

相关文章

【jQuery 使用教程】

文章目录 一、前言二、jQuery 简介1. 什么是 jQuery?2. jQuery 发展历史 三、jQuery 的使用1. 引入 jQuery方式 1:使用 CDN方式 2:本地引入 2. jQuery 语法基础1. 语法结构 3. jQuery 选择器4. jQuery 事件处理1. 点击事件 (click())2. 鼠标悬…

wangEditor富文本轻量使用及多个编辑器

0、官网 wangEditor multi editor 1、引入文件 <!--【富文本】第1步&#xff0c;引入--> <link rel"stylesheet" href"/wangeditor/style.css"/> <script charset"utf-8" src"/wangeditor/index.js"></script…

IO(Input/Output)

IO IO,即输入/输出&#xff0c;磁盘IO,网络IO 计算机角度的IO 主观意思就是计算机输入输出&#xff0c;计算机是主体。计算机分为5个部分:运算器&#xff0c;控制器&#xff0c;存储器&#xff0c;输入设备&#xff0c;输出设备。 输入设备&#xff1a;向计算机输入数据和信…

网络爬虫【爬虫库request】

我叫不三不四&#xff0c;很高兴见到大家&#xff0c;欢迎一起学习交流和进步 今天来讲一讲爬虫 Requests是Python的一个很实用的HTTP客户端库&#xff0c;完全满足如今网络爬虫的需求。与Urllib对比&#xff0c;Requests不仅具备Urllib的全部功能&#xff1b;在开发使用上&…

Python----计算机视觉处理(Opencv:图像缩放)

图像缩放 与图像旋转里的缩放的原理一样&#xff0c;图像缩放的原理也是根据需要将原图像的像素数量增加或减少&#xff0c;并通 过插值算法来计算新像素的像素值。 导入模块 import cv2 输入图像 imgcv2.imread(lena.png) 图像缩放 img_sizecv2.resize(img,None,fx0.5,fy0.5,…

Oracle+11g+笔记(11)-数据库的安全管理

Oracle11g笔记(11)-数据库的安全管理 11、数据库的安全管理 11. 1 用户管理 11.1.1 创建用户 创建用户可以采用CREATE USER命令来完成。下面是CREATE USER 命令的语法。 CREATE USER username IDENTIFIED BY password OR IDENTIFIED EXTERNALLY OR IDENTIFIED GLOBALLY AS…

前端面试:[React] useRef 是如何实现的?

useRef 是 React 中一个非常有用的 Hook&#xff0c;它用于在组件中持久存储可变的值而不会引起重新渲染。理解 useRef 的实现原理对于更高效地使用它非常重要。以下是 useRef 的实现原理和使用场景的详细说明。 一、useRef Hook 的基本概念 持久引用&#xff1a;useRef 返回…

VSCode C/C++ 开发环境完整配置及常见问题

要在 Visual Studio Code (VSCode) 中进行 C/C 开发&#xff0c;你需要配置一个强大的开发环境&#xff0c;包括安装必要的扩展、配置编译器和调试器。以下是如何完成这一配置的详细步骤&#xff0c;以及一些常见问题的解决方法。 1. 安装 VSCode 首先&#xff0c;确保你已安装…