相关文章:
Rust智能合约养成日记合约状态数据定义与方法实现
Rust智能合约养成日记编写Rust智能合约单元测试
Rust智能合约养成日记Rust智能合约部署,函数调用及Explorer的使用
Rust智能合约养成日记Rust智能合约整数溢出
这一期中我们将向大家展示Rust合约中重入攻击,并提供给开发者相应的建议。本文中的相关代码,已上传至BlockSec的Github上,读者可以自行下载:https://github
JGN正式开启第三次DAO投票:官方消息,北京时间8月11日晚10点JGN正式开启第三次DAO投票,用户可投票决定关于新的LP质押池的相关规则。DJGN会员用户可在特定网页,链接钱包进行关于LP质押池的投票选择。钻石 JGN(或 dJGN)是一个奖励早期支持者和贡献者的会员计划。
JGN是一个具有DeFi基础设施的 Metaverse NFT 2.0 项目。旗下JGNnft是专注于BSC社区的NFT+DEFI交易所。[2022/8/12 12:19:50]
...}
去中心化自治组织Group DAO正式终止GDO空投,此前需在1月31日前领取:官方消息,去中心化自治组织Group DAO表示,根据快照投票结果,正式终止GDO空投。持有GDO的用户可以参与未来的DAO治理流程。由于部分用户已经事先获得授权,他们仍然可以申请空投,空投预计将在24小时左右的时间内完全终止。
此前消息,去中心化自治组织Group DAO向Twitter用户发放GDO空投,旨在奖励在Twitter上做出单方面贡献的用户。空投最重要的参考因素是拥有的粉丝数量,其次是帐户发布的状态数量,同时也参考了注册时间。用户需在2022年1月31日之前领取,之后所有剩余的Token将被永久锁定。[2022/1/9 8:36:40]
在合约B中,withdraw函数开头处的assert!(self
Aelin Protocol利用Synthetix治理框架启动其DAO:12月3日消息,基于以太坊的交易协调协议Aelin Protocol利用Synthetix治理框架启动其DAO。Aelin DAO最初将由拥有5名成员的委员会组成,负责招募贡献者,引导协议进入v2和资金管理等。该委员会将由Synthetix持有者根据其加权债务投票。
此外,Aelin将以3000万美元的FDV(完全摊薄估值)推出AELIN代币,并对通过协议获得的所有交易收取2%的费用。AELIN总供应量为5000枚,其中只有1250枚在发布时具有初始流动性。[2021/12/3 12:48:49]
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问题,敬请关注。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。