first commit
This commit is contained in:
78
contracts/DODOZoo.sol
Normal file
78
contracts/DODOZoo.sol
Normal file
@@ -0,0 +1,78 @@
|
||||
/*
|
||||
|
||||
Copyright 2020 DODO ZOO.
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
*/
|
||||
|
||||
pragma solidity 0.6.9;
|
||||
pragma experimental ABIEncoderV2;
|
||||
|
||||
import {Ownable} from "./lib/Ownable.sol";
|
||||
import {IDODO} from "./intf/IDODO.sol";
|
||||
import {DODO} from "./DODO.sol";
|
||||
|
||||
|
||||
/**
|
||||
* @title DODOZoo
|
||||
* @author DODO Breeder
|
||||
*
|
||||
* @notice Register of All DODO
|
||||
*/
|
||||
contract DODOZoo is Ownable {
|
||||
mapping(address => mapping(address => address)) internal _DODO_REGISTER_;
|
||||
|
||||
// ============ Events ============
|
||||
|
||||
event DODOBirth(address newBorn);
|
||||
|
||||
// ============ Breed DODO Function ============
|
||||
|
||||
function breedDODO(
|
||||
address supervisor,
|
||||
address maintainer,
|
||||
address baseToken,
|
||||
address quoteToken,
|
||||
address oracle,
|
||||
uint256 lpFeeRate,
|
||||
uint256 mtFeeRate,
|
||||
uint256 k,
|
||||
uint256 gasPriceLimit
|
||||
) public onlyOwner returns (address) {
|
||||
require(!isDODORegistered(baseToken, quoteToken), "DODO_IS_REGISTERED");
|
||||
require(baseToken != quoteToken, "BASE_IS_SAME_WITH_QUOTE");
|
||||
address newBornDODO = address(new DODO());
|
||||
IDODO(newBornDODO).init(
|
||||
supervisor,
|
||||
maintainer,
|
||||
baseToken,
|
||||
quoteToken,
|
||||
oracle,
|
||||
lpFeeRate,
|
||||
mtFeeRate,
|
||||
k,
|
||||
gasPriceLimit
|
||||
);
|
||||
IDODO(newBornDODO).transferOwnership(_OWNER_);
|
||||
_DODO_REGISTER_[baseToken][quoteToken] = newBornDODO;
|
||||
emit DODOBirth(newBornDODO);
|
||||
return newBornDODO;
|
||||
}
|
||||
|
||||
// ============ View Functions ============
|
||||
|
||||
function isDODORegistered(address baseToken, address quoteToken) public view returns (bool) {
|
||||
if (
|
||||
_DODO_REGISTER_[baseToken][quoteToken] == address(0) &&
|
||||
_DODO_REGISTER_[quoteToken][baseToken] == address(0)
|
||||
) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
function getDODO(address baseToken, address quoteToken) external view returns (address) {
|
||||
return _DODO_REGISTER_[baseToken][quoteToken];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user