区块见闻 区块见闻
Ctrl+D收藏区块见闻
首页 > Ethereum > 正文

ANC:Rust智能合约养成日记(5)-ODAILY_ALA

作者:

时间:

相关文章:

Rust智能合约养成日记合约状态数据定义与方法实现

Rust智能合约养成日记编写Rust智能合约单元测试

Rust智能合约养成日记Rust智能合约部署,函数调用及Explorer的使用

Rust智能合约养成日记Rust智能合约整数溢出

这一期中我们将向大家展示Rust合约中重入攻击,并提供给开发者相应的建议。本文中的相关代码,已上传至BlockSec的Github上,读者可以自行下载:https://github

...}

在合约B中,withdraw函数开头处的assert!(self

self

...}由于上一次进入withdraw以来,victim合约中的attacker_balance还没有更新,所以还是100,因此此时仍旧可以通过assert!(self

};}

此时的执行效果如下:

$nodeTriple_Contracts_Reentrancy

}Victim::attacker_balance:40FT_Token::attacker_balance:60FT_Token::victim_balance:140

可见由于此时的Victim合约在withdraw的时候事先更新了用户的余额,在调用外部的FungibleToken实施转账。因此当第二次重入了withdraw的时候,Victim合约中保存的attacker_balance已经更新为40,因此将无法通过assert!(self

}Victim::attacker_balance:40FT_Token::attacker_balance:60FT_Token::victim_balance:140

可见限制跨合约函数调用时的GasLimit也能起到防止重入攻击的效果。

本期总结和预告

这一期我们讲述了rust智能合约中的整数溢出问题,同时给出了建议,在书写代码时尽量先更新状态,再执行转账操作,并且设定合适的gas值,可以有效抵御重入攻击,下一期我们将讲述rust智能合约中的DoS问题,敬请关注。

标签:USTANCbalanceALAustc币重新与美元挂钩吗Sheesha FinanceBalance.FinanceVALAS币

Ethereum热门资讯
FOR:全球货币市场基础知识系列:外汇交易-ODAILY_FORE币

如何通过Forex交易赚钱 什么是Forex交易? Forex交易是如何进行的?在Forex市场,你购买或是卖出货币。在Forex市场进行交易是很简单的,其中的原理和在其他金融市场进行交易类似.

PIP:欧洲在Web3的第三道路:为什么欧盟应该拥抱加密世界-ODAILY_加密货币

在这篇文章中,来自UnstoppableFinance的特邀作者PatrickHansen讨论了欧盟在网络时代的斗争.

区块链:「产业区块链正当时·2021年度区块链榜单」延期通知-ODAILY_区块链

致各位关注《产业区块链·正当时》榜单活动的企业、粉丝朋友们:欧洲首只现货比特币ETF自8月中旬上市以来已吸引超过100万美元资金:金色财经报道.

BAL:波卡科普丨除了平行链,通过平行线程也能参与波卡生态?-ODAILY_ALA

“波卡知识图谱”是我们针对波卡从零到一的入门级文章,我们尝试从波卡最基础的部分讲起,为大家提供全方位了解波卡的内容,当然这是一项巨大的工程,也充满了挑战.

SWAP:关于BobaNetwork走红的思考:热度消退,L2赛道如何实现新突破?-ODAILY_Bitcoin Dex on Heco

作者:@bitouq 编辑:DeFi之道 今天总结一个看似没有那么热,但是蛮有意思的一个生态#BOBA,这么一个自带“波霸”meme的生态,引出一些对L2赛道的思考.

MENT:「op/zk」rollup/mixers/MACI的批量处理存款-ODAILY_OMMI价格

引言 在一堆不同的项目中,我们需要允许用户从EVM存入某种链下状态,该状态在链上表示为Merkle累加器。该Merkle树根据有效性证明或欺诈证明+同步假设进行更新.