Rust智能合约养成日记(5)-ODAILY_UST:Wanderlust

相关文章:

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

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

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

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

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

Crust Network 佑安:Crust将于5月进行Maxwell先行网测试:金色财经现场报道,4月23日,数御未来——2021数据与存储产业峰会在成都举办。在会议现场,Crust Network PR 佑安介绍,crust致力于解决三个核心问题:证明、激励、服务。

此外,佑安表示,以太坊以及COSMOS 的tendermint对于链的可制定化程度不高,对于一条需要频繁交易且追求稳定性的应用链来说非常不友好。

而波卡生态有四大优势包括1,波卡异构分片的概念是目前以太坊想解决的扩容问题;2,波卡生态内外的信息交互,不管是生态内,还是生态外,都可以通过转接桥,或者是插线NP传输协议;3,高度可定制性;4,链上治理和生态升级。

佑安指出,这些优势让Crust选择了波卡生态。不过,Crust虽然选择了波卡生态,但crust项目是没有以太坊波卡边界的。

据佑安介绍,5月Crust将开启第二阶段测试(Maxwell先行网 ),将基于真实场景的存储订单对整个网络的服务能力进行全方位的测试。Maxwell先行网与主网的规则机制完全相同,奖励的CRU代币也将是基于波卡链。[2021/4/23 20:51:16]

...}

动态 | Overstock支持的Bankorus公司已没有资金:10月6日,Overstock支持的Bankorus公司最大股东Sonic Zhang发表声明称,Bankorus公司已没有资金,员工都已辞职。作为向Bankorus公司捐款100多万美元的捐款人,Sonic Zhang称其了解到,由于第二轮投资者撤资,Bankorus现金已经告罄,同时Overstock的STO平台tZero此前提供资金,帮Bankorus向STO产品过渡的代币并不能保存财富。Bankorus目前所拥有的只是对立陶宛Rato信贷联盟的100万美元投资。(Cointelegraph)[2019/10/7]

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

声音 | Trustnodes:欧盟正取代美国吸引加密投资者领域:据Trustnodes消息,欧盟正在取代美国吸引加密企业家。SEC前法律顾问Nancy Wojtas曾对此发表观点称:“SEC提供的监管框架不适合加密初创企业,我们也一直在努力寻求解决方案,但如果不能在美国完成创新,那么只能别迁他国。”[2018/9/17]

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问题,敬请关注。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

水星链

[0:15ms0-0:999ms