UST:Rust智能合约养成日记(5)-ODAILY

相关文章:

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

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

地球链

MANAEST:关于去中心化存储,你只知道Web3.0?-ODAILY

相信大家对Web3.0这个词一点也不陌生了,但是近期推出的Estuary存储是什么呢?这两者又有什么区别呢?以下就为大家简单介绍一下这两者的相关内容以及他们的区别所在:Estuary存储Estu.

[0:15ms0-1:544ms