直接读取以太坊智能合约余额来计算向用户转移资产是否安全?
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 运行 交易的执行。
我有合约,用户可以通过合约在 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 运行 交易的执行。