直接读取以太坊智能合约余额来计算向用户转移资产是否安全?

Is it safe to read the ethereum smart contract balance directly to calculate the transfer of assets to users?

我有合约,用户可以通过合约在 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 运行 交易的执行。