From 24ab08ebfab0c688c73e10cf9f8bf02998d2bac8 Mon Sep 17 00:00:00 2001 From: mingda Date: Thu, 4 Feb 2021 19:22:00 +0800 Subject: [PATCH] require vDODO transfer from!=to --- contracts/DODOToken/vDODOToken.sol | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/contracts/DODOToken/vDODOToken.sol b/contracts/DODOToken/vDODOToken.sol index db3d423..e6ac02c 100644 --- a/contracts/DODOToken/vDODOToken.sol +++ b/contracts/DODOToken/vDODOToken.sol @@ -333,29 +333,20 @@ contract vDODOToken is InitializableOwnable { function _transfer( address from, address to, - uint256 _dodoAmount - ) internal balanceEnough(from, _dodoAmount) canTransfer { + uint256 vDODOAmount + ) internal canTransfer balanceEnough(from, vDODOAmount) { require(from != address(0), "transfer from the zero address"); require(to != address(0), "transfer to the zero address"); - - uint256 _amount = DecimalMath.divFloor(_dodoAmount,_DODO_RATIO_); + require(from != to, "transfer from same with to"); + + uint256 stakingPower = DecimalMath.divFloor(vDODOAmount * _DODO_RATIO_, alpha); UserInfo storage fromUser = userInfo[from]; - fromUser.VDODOAmount = uint128(uint256(fromUser.VDODOAmount).sub(_amount)); - UserInfo storage toUser = userInfo[to]; - toUser.VDODOAmount = uint128(uint256(toUser.VDODOAmount).add(_amount)); - uint256 superiorRedeemVDODO = DecimalMath.mulFloor(_amount, _SUPERIOR_RATIO_); + _redeem(fromUser, stakingPower); + _mint(toUser, stakingPower); - if (fromUser.superior != address(0)) { - _redeemFromSuperior(fromUser, superiorRedeemVDODO); - } - - if (toUser.superior != address(0)) { - _mintToSuperior(toUser, superiorRedeemVDODO); - } - - emit Transfer(from, to, _dodoAmount); + emit Transfer(from, to, vDODOAmount); } }