diff --git a/contracts/dodo.sol b/contracts/dodo.sol index 08a60c2..f902034 100644 --- a/contracts/dodo.sol +++ b/contracts/dodo.sol @@ -34,7 +34,7 @@ contract DODO is Admin, Trader, LiquidityProvider { uint256 k, uint256 gasPriceLimit ) external onlyOwner preventReentrant { - require(!_INITIALIZED_, "DODO_ALREADY_INITIALIZED"); + require(!_INITIALIZED_, "DODO_INITIALIZED"); _INITIALIZED_ = true; _SUPERVISOR_ = supervisor; @@ -53,19 +53,8 @@ contract DODO is Admin, Trader, LiquidityProvider { _K_ = k; _R_STATUS_ = Types.RStatus.ONE; - string memory lpTokenSuffix = "_DODO_LP_TOKEN_"; - - string memory baseName = string( - abi.encodePacked(IERC20(_BASE_TOKEN_).name(), lpTokenSuffix) - ); - uint8 baseDecimals = IERC20(_BASE_TOKEN_).decimals(); - _BASE_CAPITAL_TOKEN_ = address(new DODOLpToken(baseName, baseDecimals)); - - string memory quoteName = string( - abi.encodePacked(IERC20(_QUOTE_TOKEN_).name(), lpTokenSuffix) - ); - uint8 quoteDecimals = IERC20(_QUOTE_TOKEN_).decimals(); - _QUOTE_CAPITAL_TOKEN_ = address(new DODOLpToken(quoteName, quoteDecimals)); + _BASE_CAPITAL_TOKEN_ = address(new DODOLpToken(_BASE_TOKEN_)); + _QUOTE_CAPITAL_TOKEN_ = address(new DODOLpToken(_QUOTE_TOKEN_)); _checkDODOParameters(); } diff --git a/contracts/impl/DODOLpToken.sol b/contracts/impl/DODOLpToken.sol index 545b3a6..e64652c 100644 --- a/contracts/impl/DODOLpToken.sol +++ b/contracts/impl/DODOLpToken.sol @@ -8,6 +8,7 @@ pragma solidity 0.6.9; pragma experimental ABIEncoderV2; +import {IERC20} from "../intf/IERC20.sol"; import {SafeMath} from "../lib/SafeMath.sol"; import {Ownable} from "../lib/Ownable.sol"; @@ -21,8 +22,7 @@ contract DODOLpToken is Ownable { using SafeMath for uint256; string public symbol = "DLP"; - string public name; - uint8 public decimals; + address public originToken; uint256 public totalSupply; mapping(address => uint256) internal balances; @@ -40,9 +40,17 @@ contract DODOLpToken is Ownable { // ============ Functions ============ - constructor(string memory _name, uint8 _decimals) public { - name = _name; - decimals = _decimals; + constructor(address _originToken) public { + originToken = _originToken; + } + + function name() public view returns (string memory) { + string memory lpTokenSuffix = "_DODO_LP_TOKEN_"; + return string(abi.encodePacked(IERC20(originToken).name(), lpTokenSuffix)); + } + + function decimals() public view returns (uint8) { + return IERC20(originToken).decimals(); } /** @@ -51,7 +59,6 @@ contract DODOLpToken is Ownable { * @param amount The amount to be transferred. */ function transfer(address to, uint256 amount) public returns (bool) { - require(to != address(0), "TO_ADDRESS_IS_EMPTY"); require(amount <= balances[msg.sender], "BALANCE_NOT_ENOUGH"); balances[msg.sender] = balances[msg.sender].sub(amount); @@ -80,7 +87,6 @@ contract DODOLpToken is Ownable { address to, uint256 amount ) public returns (bool) { - require(to != address(0), "TO_ADDRESS_IS_EMPTY"); require(amount <= balances[from], "BALANCE_NOT_ENOUGH"); require(amount <= allowed[from][msg.sender], "ALLOWANCE_NOT_ENOUGH"); @@ -123,6 +129,5 @@ contract DODOLpToken is Ownable { balances[user] = balances[user].sub(value); totalSupply = totalSupply.sub(value); emit Burn(user, value); - emit Transfer(user, address(0), value); } }