ethereum - 直接读取以太坊智能合约余额来计算资产转移给用户是否安全?
问题描述
我有合约,用户可以通过它在 DEX 上进行交易。
像这样:
// transfer asset A from msg.sender
ERC20(AToken).transferFrom(msg.sender, address(this), amount);
// do trade A to B
... trade logic here
// get balance of asset B after trade
// asset B after trade gets to this contract address
uint256 returnAmount = ERC20(BToken).balanceOf(address(this));
// transfer asset B to msg.sender
ERC20(BToken).transfer(msg.sender, returnAmount);
我想知道returnAmount,这个逻辑安全吗?
以太坊中的交易要么完全执行,要么根本不执行,并且按照优先级顺序进行。
但是我还是想知道是否会出现returnAmount显示不正确的情况,例如合约在另一个用户交易后获得余额?
解决方案
ETH 中的交易是一一执行的,其他交易在 EVM 运行时不会干扰该交易的执行。
推荐阅读
- ios - 在 iOS 项目中执行某些库时出现问题
- python - 如何为不同的时间间隔重复相同的日期时间数据
- c++ - 当我编译 nginx 的某些部分时出现“未定义的引用”
- html - 如何使css媒体查询在手机上工作
- android - 如果在 Kotlin 中未选择项目,如何更改文本视图的重力?
- javascript - 制作响应式导航栏
- javascript - 使用 sendgrid nodejs 发送电子邮件
- c++ - 如何制作一个连续的链表?
- javascript - Javascript - 为什么可以对数组中的对象使用包含方法?
- makefile - 崇高的文字说:make:***没有指定目标,也没有找到makefile。停止