相关文章:
Rust智能合约养成日记合约状态数据定义与方法实现
Rust智能合约养成日记编写Rust智能合约单元测试
Rust智能合约养成日记Rust智能合约部署,函数调用及Explorer的使用
Rust智能合约养成日记Rust智能合约整数溢出
这一期中我们将向大家展示Rust合约中重入攻击,并提供给开发者相应的建议。本文中的相关代码,已上传至BlockSec的Github上,读者可以自行下载:https://github
数字资产托管机构Aegis Trust新增支持Cosmos生态资产:12月9日消息,数字资产托管机构Aegis Trust宣布新增支持Cosmos生态资产,允许项目通过其提供的基础设施和合规解决方案托管协议财库资产。此前,加密货币托管机构Aegis Trust宣布推出NFT保险服务,将为机构投资者、对冲基金和交易所持有的代币化资产提供高达2500万美元的保险。[2022/12/10 21:34:46]
...}
Hex Trust CEO:目前而言要确保资产能够安全地用于日常工作是一个挑战:金色财经联合Coinlive现场报道,“Token 2049”峰会活动在新加坡举办,在题为 \"未来之路 \"的圆桌讨论中。Hex Trust的首席执行官兼联合创始人Alessio Quaglini表示,在区块链业务开始时,安全确实是一个问题。回顾六到七年前,大多数安全问题已经得到解决。就目前而言,要确保资产能够安全地用于日常工作,如游戏或DeFi,而不仅仅是在钱包中存储加密货币,这是一个挑战。[2022/9/29 6:01:20]
在合约B中,withdraw函数开头处的assert!(self
Crust被收录于IPFS官网生态系统页面:Crust已被收录于IPFS官网生态系统页面并编录于栏。在IPFS生态系统页面可按行业、工具等标签展示基于IPFS构建的项目和产品。此前Crust亦被收录于IPFS docs。
Crust Network是Polkadot生态系统中的去中心化存储网络,提供去中心化的IPFS PIN服务,目前Crust已开放存储市场并提供存储服务,其Maxwell预览网已拥有2600+节点及600+P存储容量。[2021/7/1 0:20:16]
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问题,敬请关注。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。