首页 > 解决方案 > 直接读取以太坊智能合约余额来计算资产转移给用户是否安全?

问题描述

我有合约,用户可以通过它在 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显示不正确的情况,例如合约在另一个用户交易后获得余额?

标签: ethereumsolidity

解决方案


ETH 中的交易是一一执行的,其他交易在 EVM 运行时不会干扰该交易的执行。


推荐阅读