当前位置: 首页 > news >正文

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

目录

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

 

 

相关文章:

  • C语言论递归函数及其本质
  • 【FAQ】HarmonyOS SDK 闭源开放能力 —Map Kit(6)
  • 中兴B860AV3.2-T/B860AV3.1-T2_S905L3-B_2+8G_安卓9.0_先线刷+后卡刷固件-完美修复反复重启瑕疵
  • Linux--内核进程O(1)调度队列
  • 20分钟上手DeepSeek开发:SpringBoot + Vue2快速构建AI对话系统
  • 画册相册图库摄影画廊H5开源版开发
  • 论文阅读:SCI 1区 RADAR: Robust AI-Text Detection via Adversarial Learning
  • TypeScript + Vue:类风格组件如何引领前端新潮流?
  • 植物知识分享论坛毕设
  • Python基础语法全解析:从入门到实践
  • Qt中打开windows的cmd窗口并显示
  • Git 使用SSH登陆
  • 工厂方法模式和抽象工厂模式详解
  • 【从零开始学习计算机科学与技术】计算机网络(六)传输层
  • 调整iptables规则,解决无法ssh连接服务器的问题
  • Linux中安装Git
  • Javascript 日期相关计算
  • halcon几何测量(二)计算距离和角度的函数
  • Linux主机持久化技术
  • 日常学习开发记录-input组件
  • 外企聊营商|上海仲裁:化解跨国企业纠纷的“上海路径”
  • 土耳其、美国、乌克兰三边会议开始
  • 小米汽车机盖门陷谈判僵局,车主代表称小米表示“退订会造成崩塌”
  • 最高人民法院原副院长唐德华逝世,享年89岁
  • 曾犯强奸罪教师出狱后办教培机构?柳州鱼峰区教育局回应
  • 六连板成飞集成:航空零部件业务收入占比为1.74%,市场环境没有重大调整