diff --git a/config/matic-config.js b/config/matic-config.js index e9cd0a7..7639141 100644 --- a/config/matic-config.js +++ b/config/matic-config.js @@ -9,7 +9,7 @@ module.exports = { DODOSellHelper: "0xDfaf9584F5d229A9DBE5978523317820A8897C5A", DODOCalleeHelper: "0x2BBD66fC4898242BDBD2583BBe1d76E8b8f71445", DODOV1PmmHelper: "0x18DFdE99F578A0735410797e949E8D3e2AFCB9D2", - DODOV2RouteHelper: "0x958f79e2998DFe417208b9A07D799265B0298e58", + DODOV2RouteHelper: "0x324c747885a88EA6f8115C46E0605C828ed527D3", //Template CloneFactory: "0x729f7f44bf64Ce814716b6261e267DbE6cdf021c", @@ -26,17 +26,17 @@ module.exports = { CustomERC20: "0xaF49DBAaf177beE57f84731260a9eb8819d25eff", //Factory - DVMFactory: "0xbAb9F4ff4A19a0e8EEBC56b06750253228ffAc6E", - DPPFactory: "0xE55154D09265b18aC7CDAC6E646672A5460389a1", - DSPFactory: "0xa356867fDCEa8e71AEaF87805808803806231FdC", - UpCpFactory: "0x335aC99bb3E51BDbF22025f092Ebc1Cf2c5cC619", - CrowdPoolingFactory: "0x85351262f7474Ebe23FfAcD633cf20A491F1325D", + DVMFactory: "0x79887f65f83bdf15Bcc8736b5e5BcDB48fb8fE13", + DPPFactory: "0x95E887aDF9EAa22cC1c6E3Cb7f07adC95b4b25a8", + DSPFactory: "0x43C49f8DD240e1545F147211Ec9f917376Ac1e87", + UpCpFactory: "0x326c788c4C236f2bceC9476C66F8593Aa31be4Fc", + CrowdPoolingFactory: "0x42ddEc68db70F5992eB7AB22dfaD8A57109841C9", ERC20Factory: "0xaeB5CF31b97dce6134e416129845e01106fFB177", ERC20V2Factory: "0x8e2f666F316b614c76676215F16F0A9746f96a90", //Approve - DODOApprove: "0x9aE501385Bc7996A2A4a1FBb00c8d3820611BCB5", - DODOApproveProxy: "0x738Ebf387A0CE0eb46b0eF8Fa5DEa2EaE6B1Df51", + DODOApprove: "0x6D310348d5c12009854DFCf72e0DF9027e8cb4f4", + DODOApproveProxy: "0x01FEEA29da5Ae41B0b5F6b10b93EE34752eF80d7", //Adapter DODOV1Adapter: "0xB5397B2210f49e96a5EB2c9747Aa2bD9397d90C0", diff --git a/contracts/DODOMysteryBox/BaseMysteryBox.sol b/contracts/DODOMysteryBox/BaseMysteryBox.sol deleted file mode 100644 index a1f20fd..0000000 --- a/contracts/DODOMysteryBox/BaseMysteryBox.sol +++ /dev/null @@ -1,177 +0,0 @@ -/* - Copyright 2021 DODO ZOO. - SPDX-License-Identifier: Apache-2.0 -*/ -pragma solidity 0.6.9; -pragma experimental ABIEncoderV2; - -import {IERC20} from "../intf/IERC20.sol"; -import {SafeERC20} from "../lib/SafeERC20.sol"; -import {SafeMath} from "../lib/SafeMath.sol"; -import {InitializableOwnable} from "../lib/InitializableOwnable.sol"; -import {IDODOApproveProxy} from "../SmartRoute/DODOApproveProxy.sol"; - -interface IPrice { - function getUserPrice(address mysteryBox, address user, uint256 originalPrice) external view returns (uint256); -} - - -contract BaseMysteryBox is InitializableOwnable { - using SafeMath for uint256; - using SafeERC20 for IERC20; - - // ============ Storage ============ - address constant _BASE_COIN_ = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; - address public _BUY_TICKET_TOKEN_; - address public _FEE_MODEL_; - address public _DODO_APPROVE_PROXY_; - uint256 [] public _PRICE_TIME_INTERVAL_; - uint256 [] public _PRICE_SET_; - uint256 [] public _SELLING_AMOUNT_SET_; - - uint256 public _REDEEM_ALLOWED_TIME_; - - mapping(address => uint256) public _USER_TICKETS_; - uint256 public _TOTAL_TICKETS_; - uint256 public _TICKET_UNIT_ = 1; // ticket consumed in a single lottery - - bool public _IS_REVEAL_MODE_; - uint256 public _REVEAL_RNG_ = 0; - address public _RANDOM_GENERATOR_; - - - // ============ Modifiers ============ - - modifier notStart() { - require(block.timestamp < _PRICE_TIME_INTERVAL_[0] || _PRICE_TIME_INTERVAL_[0] == 0, "ALREADY_START"); - _; - } - - // ============ Event ============= - event BuyTicket(address account, uint256 value, uint256 tickets); - event Withdraw(address account, uint256 amount); - event ChangeRandomGenerator(address randomGenerator); - event ChangeRedeemTime(uint256 redeemTime); - event ChangeTicketUnit(uint256 newTicketUnit); - event SetPriceInterval(); - event Transfer(address indexed from, address indexed to, uint256 amount); - - - function _baseInit( - address[] memory contractList, //0 owner, 1 buyTicketToken, 2 feeModel, 3 dodoApproveProxy 4 randomGenerator - uint256[][] memory priceList, //0 priceTimeInterval, 1 priceSet, 2 sellAmount - uint256 redeemAllowedTime, - bool isRevealMode - ) public { - initOwner(contractList[0]); - _BUY_TICKET_TOKEN_ = contractList[1]; - _FEE_MODEL_ = contractList[2]; - _DODO_APPROVE_PROXY_ = contractList[3]; - _RANDOM_GENERATOR_ = contractList[4]; - - _REDEEM_ALLOWED_TIME_ = redeemAllowedTime; - _IS_REVEAL_MODE_ = isRevealMode; - if(priceList[0].length > 0) _setPrice(priceList[0], priceList[1], priceList[2]); - } - - function buyTickets(uint256 amount) payable external { - uint256 curBlockTime = block.timestamp; - require(curBlockTime >= _PRICE_TIME_INTERVAL_[0] && _PRICE_TIME_INTERVAL_[0] != 0, "NOT_START"); - uint256 i; - for (i = 1; i < _PRICE_TIME_INTERVAL_.length; i++) { - if (curBlockTime <= _PRICE_TIME_INTERVAL_[i]) { - break; - } - } - uint256 curSellAmount = _SELLING_AMOUNT_SET_[i-1]; - require(amount <= curSellAmount, "TICKETS_NOT_ENOUGH"); - uint256 buyPrice = IPrice(_FEE_MODEL_).getUserPrice(address(this), msg.sender, _PRICE_SET_[i-1]); - require(buyPrice > 0, "UnQualified"); - uint256 payAmount = buyPrice.mul(amount); - if(_BUY_TICKET_TOKEN_ == _BASE_COIN_) { - require(msg.value >= payAmount,"BUY_TOKEN_NOT_ENOUGH"); - }else { - IDODOApproveProxy(_DODO_APPROVE_PROXY_).claimTokens(_BUY_TICKET_TOKEN_, msg.sender, address(this), payAmount); - } - - _USER_TICKETS_[msg.sender] = _USER_TICKETS_[msg.sender].add(amount); - _TOTAL_TICKETS_ = _TOTAL_TICKETS_.add(amount); - _SELLING_AMOUNT_SET_[i - 1] = curSellAmount.sub(amount); - - uint256 leftOver = msg.value - payAmount; - if(leftOver > 0) - msg.sender.transfer(leftOver); - - emit BuyTicket(msg.sender, payAmount, amount); - } - - - function transferTickets(address to, uint256 amount) public returns (bool) { - require(amount <= _USER_TICKETS_[msg.sender], "TICKET_NOT_ENOUGH"); - - _USER_TICKETS_[msg.sender] = _USER_TICKETS_[msg.sender].sub(amount); - _USER_TICKETS_[to] = _USER_TICKETS_[to].add(amount); - emit Transfer(msg.sender, to, amount); - return true; - } - - // ================= View =================== - function getTickets(address account) view external returns(uint256) { - return _USER_TICKETS_[account]; - } - - // ============ Internal ============ - - function _setPrice(uint256[] memory priceIntervals, uint256[] memory prices, uint256[] memory amounts) internal { - require(priceIntervals.length == prices.length && prices.length == amounts.length, "PARAM_NOT_INVALID"); - for (uint256 i = 0; i < priceIntervals.length - 1; i++) { - require(priceIntervals[i] < priceIntervals[i + 1], "INTERVAL_INVALID"); - require(prices[i] != 0, "INTERVAL_INVALID"); - require(amounts[i] != 0, "INTERVAL_INVALID"); - } - _PRICE_TIME_INTERVAL_ = priceIntervals; - _PRICE_SET_ = prices; - _SELLING_AMOUNT_SET_ = amounts; - emit SetPriceInterval(); - } - - // ================= Owner =================== - function withdraw() external onlyOwner { - uint256 amount; - if(_BASE_COIN_ == _BUY_TICKET_TOKEN_) { - amount = address(this).balance; - msg.sender.transfer(amount); - }else { - amount = IERC20(_BUY_TICKET_TOKEN_).balanceOf(address(this)); - IERC20(_BUY_TICKET_TOKEN_).safeTransfer(msg.sender, amount); - } - emit Withdraw(msg.sender, amount); - } - - function setRevealRng() external onlyOwner { - require(_REVEAL_RNG_ == 0, "ALREADY_SET"); - _REVEAL_RNG_ = uint256(keccak256(abi.encodePacked(blockhash(block.number - 1)))); - } - - function setPrice(uint256[] memory priceIntervals, uint256[] memory prices, uint256[] memory amounts) external notStart() onlyOwner { - _setPrice(priceIntervals, prices, amounts); - } - - function updateRandomGenerator(address newRandomGenerator) external onlyOwner { - require(newRandomGenerator != address(0)); - _RANDOM_GENERATOR_ = newRandomGenerator; - emit ChangeRandomGenerator(newRandomGenerator); - } - - function updateTicketUnit(uint256 newTicketUnit) external onlyOwner { - require(newTicketUnit != 0); - _TICKET_UNIT_ = newTicketUnit; - emit ChangeTicketUnit(newTicketUnit); - } - - function updateRedeemTime(uint256 newRedeemTime) external onlyOwner { - require(newRedeemTime > block.timestamp || newRedeemTime == 0, "PARAM_NOT_INVALID"); - _REDEEM_ALLOWED_TIME_ = newRedeemTime; - emit ChangeRedeemTime(newRedeemTime); - } -} diff --git a/contracts/DODOMysteryBox/MysteryBoxV2.sol b/contracts/DODOMysteryBox/MysteryBoxV2.sol deleted file mode 100644 index b50e50c..0000000 --- a/contracts/DODOMysteryBox/MysteryBoxV2.sol +++ /dev/null @@ -1,122 +0,0 @@ -/* - Copyright 2021 DODO ZOO. - SPDX-License-Identifier: Apache-2.0 -*/ -pragma solidity 0.6.9; -pragma experimental ABIEncoderV2; - -import {IERC20} from "../intf/IERC20.sol"; -import {SafeERC20} from "../lib/SafeERC20.sol"; -import {SafeMath} from "../lib/SafeMath.sol"; -import {Address} from "../external/utils/Address.sol"; -import {IRandomGenerator} from "../lib/RandomGenerator.sol"; -import {ERC1155} from "../external/ERC1155/ERC1155.sol"; -import {BaseMysteryBox} from "./BaseMysteryBox.sol"; - -//讨论:tokenId 与 ipfs 的 uri 关联关系 -contract MysteryBoxV2 is BaseMysteryBox, ERC1155 { - using SafeMath for uint256; - using SafeERC20 for IERC20; - using Address for address; - - // ============ Storage ============ - - uint256[] public _PROB_INTERVAL_; // index => Interval probability - uint256[][] public _TOKEN_ID_SET_; // Interval index => tokenIds - - // ============ Event ============= - event RedeemPrize(address account, uint256 tokenId); - - event SetProbInterval(); - event SetTokenIds(); - event SetTokenIdByIndex(uint256 index); - - - function init( - address[] memory contractList, //0 owner, 1 buyTicketToken, 2 feeModel, 3 dodoApproveProxy 4 randomGenerator - uint256[][] memory priceList, //0 priceTimeInterval, 1 priceSet, 2 sellAmount - uint256 redeemAllowedTime, - bool isRevealMode, - string memory baseUri, - uint256[] memory probIntervals, - uint256[][] memory tokenIds - ) public { - super._baseInit(contractList,priceList,redeemAllowedTime,isRevealMode); - _setURI(baseUri); - if(probIntervals.length > 0) _setProbInterval(probIntervals); - if(tokenIds.length > 0) _setTokenIds(tokenIds); - } - - function redeemTicket(uint256 ticketNum) external { - require(!address(msg.sender).isContract(), "ONLY_ALLOW_EOA"); - require(ticketNum >= 1 && ticketNum <= _USER_TICKETS_[msg.sender], "TICKET_NUM_INVALID"); - _USER_TICKETS_[msg.sender] = _USER_TICKETS_[msg.sender].sub(ticketNum); - _TOTAL_TICKETS_ = _TOTAL_TICKETS_.sub(ticketNum); - for (uint256 i = 0; i < ticketNum; i++) { - _redeemSinglePrize(msg.sender, i); - } - } - - // ============ Internal ============ - - function _redeemSinglePrize(address to, uint256 curNo) internal { - require(block.timestamp >= _REDEEM_ALLOWED_TIME_ && _REDEEM_ALLOWED_TIME_ != 0, "REDEEM_CLOSE"); - uint256 range = _PROB_INTERVAL_[_PROB_INTERVAL_.length - 1]; - uint256 random; - if(_IS_REVEAL_MODE_) { - require(_REVEAL_RNG_ != 0, "REVEAL_NOT_SET"); - random = uint256(keccak256(abi.encodePacked(_REVEAL_RNG_, msg.sender, _USER_TICKETS_[msg.sender].add(curNo + 1)))) % range; - }else { - random = IRandomGenerator(_RANDOM_GENERATOR_).random(gasleft()) % range; - } - uint256 i; - for (i = 0; i < _PROB_INTERVAL_.length; i++) { - if (random <= _PROB_INTERVAL_[i]) { - break; - } - } - require(_TOKEN_ID_SET_[i].length > 0, "EMPTY_TOKEN_ID_SET"); - uint256 tokenId = _TOKEN_ID_SET_[i][random % _TOKEN_ID_SET_[i].length]; - _mint(to, tokenId, 1, ""); - emit RedeemPrize(to, tokenId); - } - - function _setProbInterval(uint256[] memory probIntervals) internal { - require(probIntervals.length > 0, "PARAM_NOT_INVALID"); - for (uint256 i = 1; i < probIntervals.length; i++) { - require(probIntervals[i] > probIntervals[i - 1], "INTERVAL_INVALID"); - } - _PROB_INTERVAL_ = probIntervals; - emit SetProbInterval(); - } - - function _setTokenIds(uint256[][] memory tokenIds) internal { - require(tokenIds.length == _PROB_INTERVAL_.length, "PARAM_NOT_INVALID"); - for (uint256 i = 0; i < tokenIds.length; i++) { - require(tokenIds[i].length > 0, "INVALID"); - } - _TOKEN_ID_SET_ = tokenIds; - emit SetTokenIds(); - } - - // ================= Owner =================== - function redeemByOwner(uint256 ticketNum) external onlyOwner { - for (uint256 i = 0; i < ticketNum; i++) { - _redeemSinglePrize(msg.sender, i); - } - } - - function setProbInterval(uint256[] memory probIntervals) external notStart() onlyOwner { - _setProbInterval(probIntervals); - } - - function setTokenIds(uint256[][] memory tokenIds) external notStart() onlyOwner { - _setTokenIds(tokenIds); - } - - function setTokenIdByIndex(uint256 index, uint256[] memory tokenIds) external notStart() onlyOwner { - require(tokenIds.length > 0 && index < _TOKEN_ID_SET_.length,"PARAM_NOT_INVALID"); - _TOKEN_ID_SET_[index] = tokenIds; - emit SetTokenIdByIndex(index); - } -} diff --git a/contracts/DODOMysteryBox/MysteryBoxV2/BaseMysteryBox.sol b/contracts/DODOMysteryBox/MysteryBoxV2/BaseMysteryBox.sol new file mode 100644 index 0000000..1d8258a --- /dev/null +++ b/contracts/DODOMysteryBox/MysteryBoxV2/BaseMysteryBox.sol @@ -0,0 +1,312 @@ +/* + Copyright 2021 DODO ZOO. + SPDX-License-Identifier: Apache-2.0 +*/ +pragma solidity 0.6.9; +pragma experimental ABIEncoderV2; + +import {IERC20} from "../../intf/IERC20.sol"; +import {DecimalMath} from "../../lib/DecimalMath.sol"; +import {UniversalERC20} from "../../SmartRoute/lib/UniversalERC20.sol"; +import {SafeMath} from "../../lib/SafeMath.sol"; +import {Address} from "../../external/utils/Address.sol"; +import {ReentrancyGuard} from "../../lib/ReentrancyGuard.sol"; +import {IRandomGenerator} from "../../lib/RandomGenerator.sol"; +import {InitializableOwnable} from "../../lib/InitializableOwnable.sol"; +import {InitializableERC20} from "../../external/ERC20/InitializableERC20.sol"; + +interface IMysteryBoxPay { + function getPayAmount(address mysteryBox, address user, uint256 originalPrice, uint256 ticketAmount) external view returns (uint256, uint256); +} + +interface IMysteryBoxNft { + function mint(address to, uint256 tokenId) external; + function mint(address account, uint256 id, uint256 amount, bytes memory data) external; +} + +contract BaseMysteryBox is InitializableERC20, InitializableOwnable, ReentrancyGuard { + using SafeMath for uint256; + using Address for address; + using UniversalERC20 for IERC20; + + // ============ Storage ============ + address constant _BASE_COIN_ = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; + + address public _BUY_TOKEN_; + uint256 public _BUY_RESERVE_; + address public _FEE_MODEL_; + address payable public _DEFAULT_MAINTAINER_; + address public _NFT_TOKEN_; + + uint256 public _TICKET_UNIT_ = 1; // ticket consumed in a single lottery + + uint256 [] public _PRICE_TIME_INTERVAL_; + uint256 [] public _PRICE_SET_; + uint256 [] public _SELLING_AMOUNT_SET_; + uint256 public _REDEEM_ALLOWED_TIME_; + + uint256[] public _BOX_INTERVAL_; // index => Interval probability (For ProbMode) index => tokenId (For FixedAmount mode) + uint256[][] public _TOKEN_ID_SET_; // Interval index => tokenIds (For ProbMode) + + bool public _IS_PROB_MODE; // false FixedAmount true ProbMode + bool public _IS_REVEAL_MODE_; + uint256 public _REVEAL_RNG_ = 0; + address public _RANDOM_GENERATOR_; + + fallback() external payable {} + + receive() external payable {} + + // ============ Modifiers ============ + + modifier notStart() { + require(block.timestamp < _PRICE_TIME_INTERVAL_[0] || _PRICE_TIME_INTERVAL_[0] == 0, "ALREADY_START"); + _; + } + + // ============ Event ============= + event BuyTicket(address account, uint256 payAmount, uint256 feeAmount, uint256 ticketAmount); + event RedeemPrize(address account, uint256 tokenId, address referer); + + event ChangeRandomGenerator(address randomGenerator); + event ChangeRedeemTime(uint256 redeemTime); + event ChangeTicketUnit(uint256 newTicketUnit); + event Withdraw(address account, uint256 amount); + + event SetPriceInterval(); + event SetBoxInterval(); + event SetTokenIds(); + event SetTokenIdByIndex(uint256 index); + + + function init( + address[] memory contractList, //0 owner, 1 buyToken, 2 feeModel, 3 defaultMaintainer 4 randomGenerator 5 nftToken + uint256[][] memory priceList, //0 priceTimeInterval, 1 priceSet, 2 sellAmount + uint256[] memory boxIntervals, + uint256[][] memory tokenIds, + uint256 redeemAllowedTime, + bool isRevealMode, + bool isProbMode, + uint256 totalTickets + ) public { + initOwner(contractList[0]); + _BUY_TOKEN_ = contractList[1]; + _FEE_MODEL_ = contractList[2]; + _DEFAULT_MAINTAINER_ = payable(contractList[3]); + _RANDOM_GENERATOR_ = contractList[4]; + _NFT_TOKEN_ = contractList[5]; + + _REDEEM_ALLOWED_TIME_ = redeemAllowedTime; + if(priceList.length > 0) _setPrice(priceList[0], priceList[1], priceList[2]); + + _IS_REVEAL_MODE_ = isRevealMode; + _IS_PROB_MODE = isProbMode; + if(boxIntervals.length > 0) _setBoxInterval(boxIntervals); + if(tokenIds.length > 0 && isProbMode) _setTokenIds(tokenIds); + + // init TICKET + string memory prefix = "DROPS_"; + name = string(abi.encodePacked(prefix, addressToShortString(address(this)))); + symbol = name; + decimals = 0; + super.init(address(this), totalTickets, name, symbol, decimals); + } + + function buyTickets(address assetTo, uint256 ticketAmount) payable external preventReentrant { + (uint256 curPrice, uint256 sellAmount, uint256 index) = getPriceAndSellAmount(); + require(curPrice > 0 && sellAmount > 0, "CAN_NOT_BUY"); + require(ticketAmount <= sellAmount, "TICKETS_NOT_ENOUGH"); + (uint256 payAmount, uint256 feeAmount) = IMysteryBoxPay(_FEE_MODEL_).getPayAmount(address(this), assetTo, curPrice, ticketAmount); + require(payAmount > 0, "UnQualified"); + + uint256 baseBalance = IERC20(_BUY_TOKEN_).universalBalanceOf(address(this)); + uint256 buyInput = baseBalance.sub(_BUY_RESERVE_); + + require(payAmount <= buyInput, "PAY_AMOUNT_NOT_ENOUGH"); + + _SELLING_AMOUNT_SET_[index] = sellAmount.sub(ticketAmount); + _BUY_RESERVE_ = baseBalance.sub(feeAmount); + + IERC20(_BUY_TOKEN_).universalTransfer(_DEFAULT_MAINTAINER_,feeAmount); + _transfer(address(this), assetTo, ticketAmount); + emit BuyTicket(assetTo, payAmount, feeAmount, ticketAmount); + } + + function redeemTicket(uint256 ticketNum, address referer) external { + require(!address(msg.sender).isContract(), "ONLY_ALLOW_EOA"); + require(ticketNum >= 1 && ticketNum <= balanceOf(msg.sender), "TICKET_NUM_INVALID"); + balances[msg.sender] = balances[msg.sender].sub(ticketNum); + balances[address(0)] = balances[address(0)].add(ticketNum); + + emit Transfer(msg.sender, address(0), ticketNum); + + for (uint256 i = 0; i < ticketNum; i++) { + _redeemSinglePrize(msg.sender, i, referer); + } + } + + // ============ Internal ============ + + function _redeemSinglePrize(address to, uint256 curNo, address referer) internal { + require(block.timestamp >= _REDEEM_ALLOWED_TIME_ && _REDEEM_ALLOWED_TIME_ != 0, "REDEEM_CLOSE"); + uint256 range; + if(_IS_PROB_MODE) { + range = _BOX_INTERVAL_[_BOX_INTERVAL_.length - 1]; + }else { + range = _BOX_INTERVAL_.length; + } + uint256 random; + if(_IS_REVEAL_MODE_) { + require(_REVEAL_RNG_ != 0, "REVEAL_NOT_SET"); + random = uint256(keccak256(abi.encodePacked(_REVEAL_RNG_, msg.sender, balanceOf(msg.sender).add(curNo + 1)))) % range; + }else { + random = IRandomGenerator(_RANDOM_GENERATOR_).random(gasleft() + block.number) % range; + } + uint256 tokenId; + if(_IS_PROB_MODE) { + uint256 i; + for (i = 0; i < _BOX_INTERVAL_.length; i++) { + if (random <= _BOX_INTERVAL_[i]) { + break; + } + } + require(_TOKEN_ID_SET_[i].length > 0, "EMPTY_TOKEN_ID_SET"); + tokenId = _TOKEN_ID_SET_[i][random % _TOKEN_ID_SET_[i].length]; + IMysteryBoxNft(_NFT_TOKEN_).mint(to, tokenId, 1, ""); + } else { + tokenId = _BOX_INTERVAL_[random]; + if(random != range - 1) { + _BOX_INTERVAL_[random] = _BOX_INTERVAL_[range - 1]; + } + _BOX_INTERVAL_.pop(); + IMysteryBoxNft(_NFT_TOKEN_).mint(to, tokenId); + } + emit RedeemPrize(to, tokenId, referer); + } + + + function _setPrice(uint256[] memory priceIntervals, uint256[] memory prices, uint256[] memory amounts) internal { + require(priceIntervals.length == prices.length && prices.length == amounts.length, "PARAM_NOT_INVALID"); + for (uint256 i = 0; i < priceIntervals.length - 1; i++) { + require(priceIntervals[i] < priceIntervals[i + 1], "INTERVAL_INVALID"); + require(prices[i] != 0, "INTERVAL_INVALID"); + require(amounts[i] != 0, "INTERVAL_INVALID"); + } + _PRICE_TIME_INTERVAL_ = priceIntervals; + _PRICE_SET_ = prices; + _SELLING_AMOUNT_SET_ = amounts; + emit SetPriceInterval(); + } + + function _setBoxInterval(uint256[] memory boxIntervals) internal { + require(boxIntervals.length > 0, "PARAM_NOT_INVALID"); + if(_IS_PROB_MODE) { + for (uint256 i = 1; i < boxIntervals.length; i++) { + require(boxIntervals[i] > boxIntervals[i - 1], "INTERVAL_INVALID"); + } + } + _BOX_INTERVAL_ = boxIntervals; + emit SetBoxInterval(); + } + + function _setTokenIds(uint256[][] memory tokenIds) internal { + require(tokenIds.length == _BOX_INTERVAL_.length, "PARAM_NOT_INVALID"); + require(_IS_PROB_MODE, "ONLY_ALLOW_PROB_MODE"); + for (uint256 i = 0; i < tokenIds.length; i++) { + require(tokenIds[i].length > 0, "INVALID"); + } + _TOKEN_ID_SET_ = tokenIds; + emit SetTokenIds(); + } + + // ================= Owner =================== + + function withdraw() external onlyOwner { + uint256 amount = IERC20(_BUY_TOKEN_).universalBalanceOf(address(this)); + IERC20(_BUY_TOKEN_).universalTransfer(msg.sender ,amount); + emit Withdraw(msg.sender, amount); + } + + function redeemByOwner(uint256 ticketNum, address referer) external onlyOwner { + require(ticketNum >= 1 && ticketNum <= balanceOf(address(this)), "TICKET_NUM_INVALID"); + balances[address(this)] = balances[address(this)].sub(ticketNum); + balances[address(0)] = balances[address(0)].add(ticketNum); + + emit Transfer(address(this), address(0), ticketNum); + + for (uint256 i = 0; i < ticketNum; i++) { + _redeemSinglePrize(msg.sender, i, referer); + } + } + + function setRevealRng() external onlyOwner { + require(_REVEAL_RNG_ == 0, "ALREADY_SET"); + _REVEAL_RNG_ = uint256(keccak256(abi.encodePacked(blockhash(block.number - 1)))); + } + + function setPrice(uint256[] memory priceIntervals, uint256[] memory prices, uint256[] memory amounts) external notStart() onlyOwner { + _setPrice(priceIntervals, prices, amounts); + } + + function setBoxInterval(uint256[] memory boxIntervals) external notStart() onlyOwner { + _setBoxInterval(boxIntervals); + } + + function setTokenIds(uint256[][] memory tokenIds) external notStart() onlyOwner { + _setTokenIds(tokenIds); + } + + function setTokenIdByIndex(uint256 index, uint256[] memory tokenIds) external notStart() onlyOwner { + require(tokenIds.length > 0 && index < _TOKEN_ID_SET_.length,"PARAM_NOT_INVALID"); + require(_IS_PROB_MODE, "ONLY_ALLOW_PROB_MODE"); + _TOKEN_ID_SET_[index] = tokenIds; + emit SetTokenIdByIndex(index); + } + + function updateRandomGenerator(address newRandomGenerator) external onlyOwner { + require(newRandomGenerator != address(0)); + _RANDOM_GENERATOR_ = newRandomGenerator; + emit ChangeRandomGenerator(newRandomGenerator); + } + + function updateTicketUnit(uint256 newTicketUnit) external onlyOwner { + require(newTicketUnit != 0); + _TICKET_UNIT_ = newTicketUnit; + emit ChangeTicketUnit(newTicketUnit); + } + + function updateRedeemTime(uint256 newRedeemTime) external onlyOwner { + require(newRedeemTime > block.timestamp || newRedeemTime == 0, "PARAM_NOT_INVALID"); + _REDEEM_ALLOWED_TIME_ = newRedeemTime; + emit ChangeRedeemTime(newRedeemTime); + } + + // ================= View =================== + + function getPriceAndSellAmount() public view returns (uint256 curPrice, uint256 sellAmount, uint256 index) { + uint256 curBlockTime = block.timestamp; + if(curBlockTime >= _PRICE_TIME_INTERVAL_[0] && _PRICE_TIME_INTERVAL_[0] != 0) { + uint256 i; + for (i = 1; i < _PRICE_TIME_INTERVAL_.length; i++) { + if (curBlockTime <= _PRICE_TIME_INTERVAL_[i]) { + break; + } + } + sellAmount = _SELLING_AMOUNT_SET_[i-1]; + curPrice = _PRICE_SET_[i-1]; + index = i - 1; + } + } + + function addressToShortString(address _addr) public pure returns (string memory) { + bytes32 value = bytes32(uint256(_addr)); + bytes memory alphabet = "0123456789abcdef"; + + bytes memory str = new bytes(8); + for (uint256 i = 0; i < 4; i++) { + str[i * 2] = alphabet[uint8(value[i + 12] >> 4)]; + str[1 + i * 2] = alphabet[uint8(value[i + 12] & 0x0f)]; + } + return string(str); + } +} diff --git a/contracts/DODOMysteryBox/MysteryBoxV2/MysteryBoxERC1155.sol b/contracts/DODOMysteryBox/MysteryBoxV2/MysteryBoxERC1155.sol new file mode 100644 index 0000000..6df4a87 --- /dev/null +++ b/contracts/DODOMysteryBox/MysteryBoxV2/MysteryBoxERC1155.sol @@ -0,0 +1,36 @@ +/* + + Copyright 2020 DODO ZOO. + SPDX-License-Identifier: Apache-2.0 + +*/ + +pragma solidity 0.6.9; + +import {ERC1155} from "../../external/ERC1155/ERC1155.sol"; +import {InitializableOwnable} from "../../lib/InitializableOwnable.sol"; + +contract MysteryBoxERC1155 is ERC1155,InitializableOwnable { + mapping (address => bool) public _IS_ALLOWED_MINT_; + + function addMintAccount(address account) public onlyOwner { + _IS_ALLOWED_MINT_[account] = true; + } + + function removeMintAccount(address account) public onlyOwner { + _IS_ALLOWED_MINT_[account] = false; + } + + function init( + address owner, + string memory uri + ) public { + initOwner(owner); + _setURI(uri); + } + + function mint(address account, uint256 id, uint256 amount, bytes memory data) external { + require(_IS_ALLOWED_MINT_[msg.sender], "Mint restricted"); + _mint(account, id, amount, data); + } +} \ No newline at end of file diff --git a/contracts/DODOMysteryBox/MysteryBoxV2/MysteryBoxERC721.sol b/contracts/DODOMysteryBox/MysteryBoxV2/MysteryBoxERC721.sol new file mode 100644 index 0000000..070c6e6 --- /dev/null +++ b/contracts/DODOMysteryBox/MysteryBoxV2/MysteryBoxERC721.sol @@ -0,0 +1,40 @@ +/* + + Copyright 2021 DODO ZOO. + SPDX-License-Identifier: Apache-2.0 + +*/ + +pragma solidity 0.6.9; + +import {ERC721} from "../../external/ERC721/ERC721.sol"; +import {InitializableOwnable} from "../../lib/InitializableOwnable.sol"; + +contract MysteryBoxERC721 is ERC721,InitializableOwnable { + mapping (address => bool) public _IS_ALLOWED_MINT_; + + function addMintAccount(address account) public onlyOwner { + _IS_ALLOWED_MINT_[account] = true; + } + + function removeMintAccount(address account) public onlyOwner { + _IS_ALLOWED_MINT_[account] = false; + } + + function init( + address owner, + string memory name, + string memory symbol, + string memory uri + ) public { + initOwner(owner); + _name = name; + _symbol = symbol; + _baseUri = uri; + } + + function mint(address to, uint256 tokenId) external { + require(_IS_ALLOWED_MINT_[msg.sender], "Mint restricted"); + _mint(to, tokenId); + } +} \ No newline at end of file diff --git a/contracts/DODOMysteryBox/MysteryBoxV3.sol b/contracts/DODOMysteryBox/MysteryBoxV3.sol deleted file mode 100644 index 7dcb033..0000000 --- a/contracts/DODOMysteryBox/MysteryBoxV3.sol +++ /dev/null @@ -1,93 +0,0 @@ -/* - Copyright 2021 DODO ZOO. - SPDX-License-Identifier: Apache-2.0 -*/ -pragma solidity 0.6.9; -pragma experimental ABIEncoderV2; - -import {IERC20} from "../intf/IERC20.sol"; -import {SafeERC20} from "../lib/SafeERC20.sol"; -import {SafeMath} from "../lib/SafeMath.sol"; -import {IRandomGenerator} from "../lib/RandomGenerator.sol"; -import {InitializableOwnable} from "../lib/InitializableOwnable.sol"; -import {Address} from "../external/utils/Address.sol"; -import {ERC721} from "../external/ERC721/ERC721.sol"; -import {BaseMysteryBox} from "./BaseMysteryBox.sol"; - -contract MysteryBoxV3 is BaseMysteryBox, ERC721 { - using SafeMath for uint256; - using SafeERC20 for IERC20; - using Address for address; - - // ============ Storage ============ - uint256[] public _TOKEN_IDS_; - - // ============ Event ============= - event RedeemPrize(address account, uint256 tokenId); - event SetTokenIds(); - - function init( - address[] memory contractList, //0 owner, 1 buyTicketToken, 2 feeModel, 3 dodoApproveProxy 4 randomGenerator - uint256[][] memory priceList, //0 priceTimeInterval, 1 priceSet, 2 sellAmount - uint256 redeemAllowedTime, - bool isRevealMode, - string memory name, - string memory symbol, - string memory baseUri, - uint256[] memory tokenIds - ) public { - super._baseInit(contractList,priceList,redeemAllowedTime,isRevealMode); - _name = name; - _symbol = symbol; - _baseUri = baseUri; - if(tokenIds.length > 0) _setTokenIds(tokenIds); - } - - function redeemPrize(uint256 ticketNum) external { - require(!address(msg.sender).isContract(), "ONLY_ALLOW_EOA"); - require(ticketNum >= 1 && ticketNum <= _USER_TICKETS_[msg.sender], "TICKET_NUM_INVALID"); - _USER_TICKETS_[msg.sender] = _USER_TICKETS_[msg.sender].sub(ticketNum); - _TOTAL_TICKETS_ = _TOTAL_TICKETS_.sub(ticketNum); - for (uint256 i = 0; i < ticketNum; i++) { - _redeemSinglePrize(msg.sender, i); - } - } - - // =============== Internal ================ - function _redeemSinglePrize(address to, uint256 curNo) internal { - require(block.timestamp >= _REDEEM_ALLOWED_TIME_ && _REDEEM_ALLOWED_TIME_ != 0, "REDEEM_CLOSE"); - uint256 range = _TOKEN_IDS_.length; - uint256 random; - if(_IS_REVEAL_MODE_) { - require(_REVEAL_RNG_ != 0, "REVEAL_NOT_SET"); - random = uint256(keccak256(abi.encodePacked(_REVEAL_RNG_, msg.sender, _USER_TICKETS_[msg.sender].add(curNo + 1)))) % range; - }else { - random = IRandomGenerator(_RANDOM_GENERATOR_).random(gasleft()) % range; - } - uint256 tokenId = _TOKEN_IDS_[random]; - - if(random != range - 1) { - _TOKEN_IDS_[random] = _TOKEN_IDS_[range - 1]; - } - _TOKEN_IDS_.pop(); - _mint(to, tokenId); - emit RedeemPrize(to, tokenId); - } - - function _setTokenIds(uint256[] memory ids) internal { - require(ids.length > 0, "PARAM_NOT_INVALID"); - _TOKEN_IDS_ = ids; - } - - // ================= Owner =================== - function redeemByOwner(uint256 ticketNum) external onlyOwner { - for (uint256 i = 0; i < ticketNum; i++) { - _redeemSinglePrize(msg.sender, i); - } - } - - function setTokenIds(uint256[] memory ids) external notStart() onlyOwner { - _setTokenIds(ids); - emit SetTokenIds(); - } -} diff --git a/contracts/SmartRoute/proxies/DODOMysteryBoxProxy.sol b/contracts/SmartRoute/proxies/DODOMysteryBoxProxy.sol new file mode 100644 index 0000000..333ee4c --- /dev/null +++ b/contracts/SmartRoute/proxies/DODOMysteryBoxProxy.sol @@ -0,0 +1,78 @@ + +/* + Copyright 2020 DODO ZOO. + SPDX-License-Identifier: Apache-2.0 +*/ + +pragma solidity 0.6.9; + +import {IDODOApproveProxy} from "../DODOApproveProxy.sol"; +import {IERC20} from "../../intf/IERC20.sol"; +import {IWETH} from "../../intf/IWETH.sol"; +import {SafeMath} from "../../lib/SafeMath.sol"; +import {SafeERC20} from "../../lib/SafeERC20.sol"; +import {ReentrancyGuard} from "../../lib/ReentrancyGuard.sol"; + +interface IDODOMysteryBox { + function _BUY_TOKEN_() external view returns (address); + function _FEE_MODEL_() external view returns (address); + function getPriceAndSellAmount() external view returns (uint256, uint256, uint256); + function buyTickets(address assetTo, uint256 ticketAmount) external; +} + +interface IMysteryBoxPay { + function getPayAmount(address mysteryBox, address user, uint256 originalPrice, uint256 ticketAmount) external view returns (uint256, uint256); +} + +/** + * @title DODO MysteryBoxProxy + * @author DODO Breeder + * + * @notice Entrance of MysteryBox in DODO platform + */ +contract DODOMysteryBoxProxy is ReentrancyGuard { + using SafeMath for uint256; + + // ============ Storage ============ + + address constant _ETH_ADDRESS_ = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; + address public immutable _WETH_; + address public immutable _DODO_APPROVE_PROXY_; + + // ============ Events ============ + event BuyTicket(address indexed account, address indexed mysteryBox, uint256 ticketAmount); + + fallback() external payable {} + + receive() external payable {} + + constructor( + address payable weth, + address dodoApproveProxy + ) public { + _WETH_ = weth; + _DODO_APPROVE_PROXY_ = dodoApproveProxy; + } + + function buyTickets(address payable dodoMysteryBox, uint256 ticketAmount) external payable preventReentrant { + (uint256 curPrice, uint256 sellAmount,) = IDODOMysteryBox(dodoMysteryBox).getPriceAndSellAmount(); + require(curPrice > 0 && sellAmount > 0, "CAN_NOT_BUY"); + require(ticketAmount <= sellAmount, "TICKETS_NOT_ENOUGH"); + + address feeModel = IDODOMysteryBox(dodoMysteryBox)._FEE_MODEL_(); + (uint256 payAmount,) = IMysteryBoxPay(feeModel).getPayAmount(dodoMysteryBox, msg.sender, curPrice, ticketAmount); + require(payAmount > 0, "UnQualified"); + address buyToken = IDODOMysteryBox(dodoMysteryBox)._BUY_TOKEN_(); + + if(buyToken == _ETH_ADDRESS_) { + require(msg.value >= payAmount, "PAYAMOUNT_NOT_ENOUGH"); + dodoMysteryBox.transfer(payAmount); + }else { + IDODOApproveProxy(_DODO_APPROVE_PROXY_).claimTokens(buyToken, msg.sender, dodoMysteryBox, payAmount); + } + + IDODOMysteryBox(dodoMysteryBox).buyTickets(msg.sender, ticketAmount); + + emit BuyTicket(msg.sender, dodoMysteryBox, ticketAmount); + } +} \ No newline at end of file diff --git a/deploy-detail-v2.0.txt b/deploy-detail-v2.0.txt new file mode 100644 index 0000000..26bedc8 --- /dev/null +++ b/deploy-detail-v2.0.txt @@ -0,0 +1,1115 @@ +==================================================== +network type: kovan +Deploy time: 2021/1/8 下午8:28:05 +Deploy type: V2 +DvmTemplateAddress: 0xB13662Fcb9140dD573e74D76BACF2085A853C779 +DppTemplateAddress: 0x5121e563d6f091945244d02cfE68b1b617206d76 +DppAdminTemplateAddress: 0x59Fd9F2065b9aA717a51111c31B3cA89291BB866 +CpTemplateAddress: 0x7b10eE056D1FBeABd0174477418f90032807b06E +DODOApprove Address: 0xe51d8085aB43AC8BC98e965b2F7B79b998c23814 +DODOIncentiveAddress: 0xe7F4bd2a486DE815824335353973B2f4B94BaCeA +DODOIncentive Init tx: 0x7d1761b113f4e0760e42a6ef6c469cfc15e4635c389eef3add47801a0a9a52e6 +DvmFactoryAddress: 0x0ac46584e4566d5841E7D708Ab4D92Ef191fFe37 +Init DvmFactory Tx: 0x80fe93e8b765be77b07402c4d6569557080e30d8ca1dfaea030896f4365cbec7 +DppFactoryAddress: 0x6D4a70354cd03ae3A8461eDE9A4dAd445a169a6B +Init DppFactory Tx: 0x4befcdbc92ed3a6cab82e7c495085a346f0835eb27e943e2e1eb3ad600e79ee0 +CpFactoryAddress: 0x3a4Cdaf1796b985826CF1Ee451CACA991c2f79E1 +DODOProxyV2 Address: 0xB035847e685925647AaA8b9d74e3bFF36f81EBcB +Init DODOProxyV2 Tx: 0xe98f8e73c4ae138e8d9594dff37afd6657bb34ac8b644e1c6fa9c2f8df8413da +DODOApprove Init tx: 0x7b1718f215975439ff86791a0eb05cbea2081e5e1b9d9c6751280a24a1dbb17c +DODOIncentive ChangeProxy tx: 0x670e992a681a8808b112a8c5531df7ab11beac55f603d495a07ff91dce42cad4 +==================================================== +network type: kovan +Deploy time: 2021/1/11 下午8:31:34 +Deploy type: V2 +DODOApprove Address: 0xe51d8085aB43AC8BC98e965b2F7B79b998c23814 +==================================================== +network type: kovan +Deploy time: 2021/1/11 下午8:33:29 +Deploy type: V2 +DODOApprove Address: 0x9d48172B0189de70F8788DE10196A1FB622B8E6b +DvmFactoryAddress: 0x369279f8e1cc936f7f9513559897B183d4B2F0Bd +Init DvmFactory Tx: 0x999a11c9c72b14d421e9daad6e9b8bf0ebc735560ca704983249156050a149a0 +DODOProxyV2 Address: 0xbD3CAF4354FeFAf20a1c7240A681A553b40CE393 +Init DODOProxyV2 Tx: 0xc3d8815852219d5a33b8377389f2f9862010c741f9041b3bfb1f972957dfa9f3 +DODOApprove Init tx: 0x0fd68e3a962d04ae71815fecff10ae65b09a74fe995ecf064022ae299a6525a1 +DODOIncentive ChangeProxy tx: 0xe9e4dc61df5a36b11459530a29f7213b05f1611f043d56d733bf9c725f001782 +DODOV2RouteHelper Address: 0x9007007b1923C264088Fa23920109F5297bAd8c7 +==================================================== +network type: kovan +Deploy time: 2021/1/13 下午1:37:29 +Deploy type: V2 +CpTemplateAddress: 0x777e548caf1689cbbF45bc8d6108B5D6102E8d6b +CpFactoryAddress: 0x230399caC89E371A05bC133a671c9882ABEFD828 +==================================================== +network type: kovan +Deploy time: 2021/1/13 下午1:50:37 +Deploy type: V2 +DODOApprove Address: 0x8d11670EFE43E37d05111d63337C51e7bCA212e5 +DODOProxyV2 Address: 0x9543Ab4fd525cb95A736888078cCdE042521103C +Init DODOProxyV2 Tx: 0xefe6930e0eda7f845f2ef66a52692bbe22135a8daff722a64eb3ec5cb0214c5d +DODOApprove Init tx: 0xc6235b0625200e920643a63baed27d1ccee109be9deeb00638e054a3af1fa66c +DODOIncentive ChangeProxy tx: 0x30873957ac46d7bd1056c07b4beaf86813b6aeca92bcf38c47d92943d2a09310 +==================================================== +network type: kovan +Deploy time: 2021/1/13 下午2:43:41 +Deploy type: V2 +DODOApprove Address: 0x2F3512cEf28E2f0ae13832D811d7228E3c27aeBf +DODOIncentiveAddress: 0x51Ff5E4f890d1fdc7407e95FA9F2AD06A32d13Ad +DODOIncentive Init tx: 0xe7232abd0f9cb722cd485dd1c63c853f671bd68a6f28d9b3fe5a1794ef007fa3 +DODOProxyV2 Address: 0x63815694141f87E5D45760E98477f248478818Bd +Init DODOProxyV2 Tx: 0x230685707582e8b282d7c028b9689752b134e28f9c5580208cbd834cfa64c168 +DODOApprove Init tx: 0x2ec35578244751fc06e8037659669b9d1b1b0632dd383c9f0775d6cea426429f +DODOIncentive ChangeProxy tx: 0x9c960a96734e4e21b7e4f8df42b8cc3924bced7dc8f292c0888b831361f1aecc +==================================================== +network type: kovan +Deploy time: 2021/1/13 下午8:21:28 +Deploy type: V2 +==================================================== +network type: kovan +Deploy time: 2021/1/13 下午8:25:38 +Deploy type: V2 +DvmTemplateAddress: 0xC61dD1a8C0242785E290CA41bA84AB319c94FF55 +DppTemplateAddress: 0xF89DBd5e716748A5C0d8a081bED1BF554B50dc59 +DppAdminTemplateAddress: 0xe39E02c4f269c4E235Ca8979a125608644c8924a +CpTemplateAddress: 0x55f940C2244Bb16735baCF7D090134fe636d47ea +DODOApprove Address: 0xFa3C805fDE678E93C3d0954F20471799f892F81d +DODOIncentiveAddress: 0x0b8fa3Bb6E352d74803018e934f742198f6bf68B +DODOIncentive Init tx: 0x7376534859db56c94632d6c75861637b23c4f649e298ad52b5dbdb1273ba3947 +DvmFactoryAddress: 0xdd3dDDaae565E7745b2cAcD980B8a98546bAb978 +Init DvmFactory Tx: 0x67c6573ce7de14878924a916777d325ee0231a878d54a04482b0aecb4d1d1304 +DppFactoryAddress: 0x36ab096ADBfd1491FE90F56a9C782dE7b1019f7c +Init DppFactory Tx: 0x57b1a2794e36b3da85b21aa668c66c390e5cbaa7ab85436df8b4dbe1e4d0ed66 +CpFactoryAddress: 0xDaB9B619A78Fca5FC2f562C5b41Bf44f74c1c239 +DODOV2RouteHelper Address: 0xcA79C9431aB16857f78f9F7EE56Ff698bD518533 +DODOProxyV2 Address: 0x06B5D7590297F7b0DcEcC5E382938EB562D91e1a +Init DODOProxyV2 Tx: 0x1951bece5f30c090c6e6cdd121ddb5cfa17a5ca610e30173ec2e12e8698a6c21 +DODOApprove Init tx: 0xf3a9ff215e335405086c44d11e377cddeef39cb8b028f011cb6ffc1362c03f6e +DODOIncentive ChangeProxy tx: 0xc722cf182f24e03b6ccbc19f261452f1a6019f77b32c4350be8df26c069290f0 +==================================================== +network type: kovan +Deploy time: 2021/1/15 上午11:29:53 +Deploy type: V2 +DvmTemplateAddress: 0xD47B0782EDdAc44Bd2B6a51C949feaE9Af382A51 +DppTemplateAddress: 0xA0C3C6Ad75fBfaCb490E315BA762A6D20084b5a8 +CpTemplateAddress: 0x782A2615b4fD7DA26C076eB9F33200510395C739 +DODOApprove Address: 0x5e56Db19C3f52594876E2A3e1a47d15acD8DC570 +DODOIncentiveAddress: 0xDcD1d44Bb885e8ce2dc66ffDE8868ABb642eA45a +DODOIncentive Init tx: 0x983db721a440e582421d873c7c445844b3d271caccce92bf47e74442cc309d47 +DvmFactoryAddress: 0x01B7fCc1890Ab90Da33dE2F0dC54aDF3C7501F04 +Init DvmFactory Tx: 0xaeb84028d484b12594cb796fb8fdb93e48fb0458e0b853afc8589f3eb9cabd11 +DppFactoryAddress: 0x67c4765D04C3848FFa7967231fc7B7E58f67A887 +Init DppFactory Tx: 0x5b2ac8ff39586400a4d3f0fdbd1e6e26c0208559362899d018f1859ec5cd2576 +CpFactoryAddress: 0x671429f12243DE03BF9826ea6cB88c41CF2a2AAA +DODOV2RouteHelper Address: 0x0546641b5288942675A36345E25210695d1d4d50 +DODOProxyV2 Address: 0xA730229607b710cd06AEAad1eDc644Dbb70A5E85 +Init DODOProxyV2 Tx: 0x70d3a11f506ca6bb54343ad9b92d40e799c146c4acb6c6b8104bac30e5909722 +DODOApprove Init tx: 0x60bdfcf5a37bcf3568d9e98e3d32acc9289515184305282dd035475c195e0d6e +DODOIncentive ChangeProxy tx: 0xf34b766489b5833970e01a412c725ef0ae18043e5c421bdafacca2dfe7cb904a +==================================================== +network type: bsclive +Deploy time: 2021/1/15 下午3:53:19 +Deploy type: V2 +CloneFactoryAddress: 0x03E2427859119E497EB856a166F616a2Ce5f8c88 +DefaultMtFeeRateAddress: 0x1Cc229Ac0ef9ba932e4dEbB898C77901C9AFB694 +Init DefaultMtFeeRate Tx: 0x62ab882cec61d29f283e5b7cd8471012f2a700df052ce273149ee6f964b56727 +DefaultPermissionAddress: 0x50C86A07457E99389d7b49761a4237B70f0824E9 +Init DefaultPermissionAddress Tx: 0x238251dbc48095f41c4bd47fd579d2cbde3f81774cd219dd15dfea9fd8313be1 +DODOApprove Address: 0x56901dB769bD923C18d5139eA7A818C444d114bC +DODOProxyV2 Address: 0x066f562B745Af2Ee6e33957708E3073b1AD28AcA +Init DODOProxyV2 Tx: 0xc9285ff79e4bee10c4781f7781c19268b41d83c6ca8341230ae5343d600e317d +DODOApprove Init tx: 0x74bf3ecfd8c81ea5e28ed50d4e57d341279824f4faa6bf3e0bb6dd1f649d317a +DODOV2Adapter Address: 0xAB623fBcaeb522046185051911209F5b2C2a2e1f +UniAdapter Address: 0x5e530cD60931d9DE694a86827e76BB24493A1520 +DODOV1Adapter Address: 0xe281A2686B90ACB58DB86E54da78e4050A22c775 +DODOV1Adapter Address: 0xcB7B4A2CfbFF595c17074534874116b0cF1849C6 +==================================================== +network type: bsclive +Deploy time: 2021/1/15 下午8:27:03 +Deploy type: V2 +DODOApprove Address: 0xd048896f96F71D819a8A2b752E50732798bfE854 +DODOProxyV2 Address: 0x4eC851895d85bfa6835241b3157ae10FfFD3BebC +Init DODOProxyV2 Tx: 0xae543d91dfe704a75499539205c670b5122dd8178df543ab15932a1aef1ef8dc +DODOApprove Init tx: 0x4c991da6b3d31e8fdfbbfe1eaa4461d62aa2dbfda8063130ee738b3ef747f61c +==================================================== +network type: bsclive +Deploy time: 2021/1/15 下午8:59:54 +Deploy type: V2 +DODOApprove Address: 0xeb06b5a57F74B481A10f3D4d08aA1971606cD9Fc +DODOProxyV2 Address: 0xDc74abBbb40D82712a14a5C8C883153ab8c3f64E +Init DODOProxyV2 Tx: 0x82e88fe1b9994e385b13c3e605f7aa6d8a03caeb8d4a326f76638712881f0d67 +DODOApprove Init tx: 0x68c70fd3db8d22aa6706a43e28dde9fa76fc874749719647edbf3879640d42b9 +==================================================== +network type: kovan +Deploy time: 2021/1/17 上午11:28:48 +Deploy type: V2 +CpTemplateAddress: 0x6E0c3D0F6f916B8067999c6196A1806d80840a12 +DODOApprove Address: 0xa9c0900d4b08CD33F94B8874f4442BdCBC69e3a9 +DODOIncentiveAddress: 0x3D5cB1F1364A7188C2ca0497D1Efb5Bb3B6f37D3 +DODOIncentive Init tx: 0xd9932fd17c4fe612bebd3371e1283509f112f8c306f1b9bbde933af6f6a2a2b5 +CpFactoryAddress: 0xD0380eE83a44725a7683525392daAFe2bCA5e0bF +Init CpFactory Tx: 0x40323a31d83ef7438bc14b3d39d357a88a2cb22d43290c24c86dec976115020b +DODOProxyV2 Address: 0x26d2b3d75256fa11b80a64dA8A6e20375aB796CE +Init DODOProxyV2 Tx: 0x2f4b5a2d527fb5e065988173068ec4cbaa432d16f319307325145156c38d6530 +DODOApprove Init tx: 0xc898fa61d5abc92f093dfd368708306e9554c19c1be4fb374b295d8ea60ac881 +DODOIncentive ChangeProxy tx: 0xddb8760d719ef2a39d0127f64a5ec079c14419af9c7ee4e3622c8a38c22f8644 +==================================================== +network type: kovan +Deploy time: 2021/1/17 下午12:28:12 +Deploy type: V2 - Adapter +DODOV1Adapter Address: 0x348E38Aa50AF7c4277E51Ef9fA0d38c646c4E2Da +DODOV2Adapter Address: 0x0C652e999457DB6FD1842857C3a83867457176cB +UniAdapter Address: 0x92FC2498B36d1b0Ad3F5315026Dd2529bE05a4Aa +DODOV1RouterHelper Address: 0xC972069473a686b1c11Bd9347D719c87e6745d39 +DODOV2RouteHelper Address: 0x83eE2294e51b3A882dAF160F500775942065B153 +DODOV1RouterHelper Address: 0xE52ef9814B27C2D0Aed230fed3e6429B8D5A27e7 +==================================================== +network type: kovan +Deploy time: 2021/1/19 下午12:46:45 +Deploy type: V2 +DODOApprove Address: 0x25b5C731822E534A1df126985bb8781f1b979eF9 +DODOIncentiveAddress: 0x21105B823d058C85503baB85103F7B9907B2A646 +DODOIncentive Init tx: 0x1ce0420cc07d4324ed8648bc31f1ecb04aa5f7e054d9371c3dd7eb62d83ee396 +DvmFactoryAddress: 0xFcD6835a9490Dc673944d4AB30F73D7FB8f4fbaA +Init DvmFactory Tx: 0xdabf95a17ae069cb45edd5376ba282dcac9aecf7ad58773421238a5d230fcea6 +DppFactoryAddress: 0x29d2feD26D37167d775f3eCAafAEe3e62B5f4fF6 +Init DppFactory Tx: 0xd58ea07b0268a5fbc64fdd20b77b4ca857f61317b820ca31c8e299ab860bbc84 +CpFactoryAddress: 0x2d497332D957E33858714C7114842f4D5DD565A8 +Init CpFactory Tx: 0x2291d2b4c46989fef831f3d089cd75dc3f59bb46a9b51c0e603cdef8a672e396 +DODOV2RouteHelper Address: 0xb591abA39645dffd1A94C09E8D5ccC962972d5E0 +DODOProxyV2 Address: 0x3566c45117438485331c0628e10bA7bE09a1fFCB +Init DODOProxyV2 Tx: 0xb0650364cc4ed399b0bfd17d7c42a613be74f4743c2112c30f49bd1b7cbc4800 +DODOApprove Init tx: 0x018bd3ef5453a2fb8bba51811f16cc9fdf3158bf941da656b8abbb495a215c3c +DODOIncentive ChangeProxy tx: 0x763dce9273565bd19a6eb8ea27fc3a268b9de0b327bccc9bf06385fb8bd8161b +DODOIncentive OpenSwitch tx: 0x3042d4bb1a4f8110a78ffd53846ecac94b0ea13359334ce4d6bcdd2a1ea7b8e9 +==================================================== +network type: kovan +Deploy time: 2021/1/19 下午6:30:30 +Deploy type: V2 +DvmTemplateAddress: 0x487F3F186dfB1b2e61F4E0cB926b8c50baf456f9 +DppTemplateAddress: 0xe59a9EdA4530235B56cE71BfdAed094B5a873971 +DppAdminTemplateAddress: 0x195C647859927efd879de5C0238594c884b09928 +CpTemplateAddress: 0x107c2712065A0f1461D0Ad6687E022d78E7aed29 +DODOApprove Address: 0x5319f1CF056496e7E13D5653C3C7f338DE127a11 +DODOIncentiveAddress: 0xc6BCC0918c507e057Af641625AfBF11dD9542262 +DODOIncentive Init tx: 0x54e70861b78354a1626c5821132a8440d3c0469b6a1343c16e7dbed3f2127022 +DvmFactoryAddress: 0x1C0435b87B3772E994adA2D0194be91EaC85FDb0 +Init DvmFactory Tx: 0xd962d514f1178cfe70fab5a7ee9592a6746c36952c57174281a806343739a6dc +DppFactoryAddress: 0x2D7F071415480eE7721eBB48c3147e347b980fEe +Init DppFactory Tx: 0x8ec90ba93e68d0cc00180551cca0d440c2413d526a26f40614b72b81348851dc +CpFactoryAddress: 0x2EF5f1a9C89E6C814A2b7C547baC865967d65e64 +Init CpFactory Tx: 0xa757390b62346f94fa3487d5a4be8af49c45725d3ae08f430219befc693dd3d8 +DODOV2RouteHelper Address: 0x67Fc59953Ce23185F26EA126c9EEF7Ec470a1503 +DODOProxyV2 Address: 0xe8836EB6EaE9Bc4Db880D4b9C0912E5db817e41D +Init DODOProxyV2 Tx: 0x9628655c7debebb90bb7ee85ffb9242f90527b1cc4e01d5314d91b9ea9284e07 +DODOApprove Init tx: 0x637222ffb3b5a2554430c4c260edb4264cf77643868324f7ff4a1fa383036ab6 +DODOIncentive ChangeProxy tx: 0xc998dfbe92fecd5c884310b172aa512517f14c3b7f7ea9f5bafcb5a7044f3569 +DODOIncentive OpenSwitch tx: 0xda77ec50379c7e18b7646bdf2efcdd461789484f3045ba3e548f86402a04c8b5 +==================================================== +network type: kovan +Deploy time: 2021/1/22 下午12:12:05 +Deploy type: V2 - Callee +DODOCalleeHelperAddress: 0x8085e9a80edb737a08c158bd018683c7Ad3c082B +==================================================== +network type: kovan +Deploy time: 2021/1/22 下午3:53:35 +Deploy type: V2 +DODOCalleeHelperAddress: 0xf45e57FE0c0Bf759E34152179B2dA0a4e1a6BC9B +DefaultMtFeeRateAddress: 0x2F7e3B1c22C1baE2224Cef9F8BFe6B13789Fd0F7 +DvmTemplateAddress: 0xA6384D1501842e9907D43148E2ca0d50E4ad56E2 +DppTemplateAddress: 0x044b48D64E77Ab8854C46c8456dC05C540c9dd53 +DppAdminTemplateAddress: 0xcFb789F7d5359E376B2aEFC7e14a552457D7d167 +CpTemplateAddress: 0x81c802080c3CE0dE98fcb625670A14Eb8440184a +DODOApprove Address: 0x6FB6313cafaFe38acA19Be0B8151d6354F74A340 +DODOIncentiveAddress: 0x1f69E3CEAbDc464Ab11bceB15726530CD8AC535E +DODOIncentive Init tx: 0xdbfd7e6d14c756665ed33c497ed42f8f40c3ea75eaee01e158874a3a5be7a60f +DvmFactoryAddress: 0xE842d8c9A54B23C4D0cf208daCA3882c0c311353 +Init DvmFactory Tx: 0x736b40137800f9091204317302a927a90f734bece6112fcecb31f1adbb7b3818 +DppFactoryAddress: 0xaFC7F3Ef4f8609411653FbF1Dd6D583A8Ae1f0fA +Init DppFactory Tx: 0x4ae634ccfa937edf510064edd9e2b2ea7e782f2d452d103118e5c4c1f182ff65 +CpFactoryAddress: 0xD25e0A9A464f50191d9C879bE818FbA44680E980 +Init CpFactory Tx: 0xd438ba25d61bb7274440c6d83cfcfb48910299a4bd9cc8f15bc64bad611a3aa0 +DODOV2RouteHelper Address: 0x9641B78445E7818EF76Ed584007311dE752DF831 +DODOProxyV2 Address: 0xfDEDc04A641DE9CEeb4eD2F24d98faa22418Bd94 +Init DODOProxyV2 Tx: 0x8428a34aaacd0c2187294f9f20fdd3a90cdb19633307a7552c8d793e1b1c0ff5 +DODOApprove Init tx: 0x5534e24a69eb855427539eec7e35a398367d044e92cc5249f34e8edd3cedc9d5 +DODOIncentive ChangeProxy tx: 0xa2c6da96963fc693824088bc7d95fa96afe714efed11efb49a85ca27216e4bd9 +DODOIncentive OpenSwitch tx: 0x6bacc0a633934d10895adf1701aa9c059c46a0f6e9bcb321a908cc5ce5ba5b9d +==================================================== +network type: bsclive +Deploy time: 2021/1/22 下午4:18:54 +Deploy type: V2 +DODOCalleeHelperAddress: 0xDfaf9584F5d229A9DBE5978523317820A8897C5A +DODOV1RouterHelper Address: 0x2BBD66fC4898242BDBD2583BBe1d76E8b8f71445 +DefaultMtFeeRateAddress: 0x18DFdE99F578A0735410797e949E8D3e2AFCB9D2 +DefaultPermissionAddress: 0x729f7f44bf64Ce814716b6261e267DbE6cdf021c +Init DefaultPermissionAddress Tx: 0x2fb909748e2afcc040becccae128256d264cd56f713329b49742255b9e478a2c +DvmTemplateAddress: 0xC3BeD579CaB3EC29B22D9AB99F4E586af42496b9 +DppTemplateAddress: 0x85351262f7474Ebe23FfAcD633cf20A491F1325D +DppAdminTemplateAddress: 0x989DcAA95801C527C5B73AA65d3962dF9aCe1b0C +CpTemplateAddress: 0x041ABa00c57Dd47abC37A2931dF569a2A2cc57Be +DODOApprove Address: 0x72d220cE168C4f361dD4deE5D826a01AD8598f6C +DODOIncentiveAddress: 0x80930Cb1849F7D42531506fF45E66724338A821b +DODOIncentive Init tx: 0x2884908366f07ef52408a4903bcc30f58dd9f98988d195cb833807f2d360bdbd +DvmFactoryAddress: 0xf50BDc9E90B7a1c138cb7935071b85c417C4cb8e +Init DvmFactory Tx: 0x3dfc2643f1f20c15270c713fa7b126c6e7acbb284a74869bc502f4a562f7f4a5 +DppFactoryAddress: 0x7737fd30535c69545deeEa54AB8Dd590ccaEBD3c +Init DppFactory Tx: 0x9b319cf1d599831650d25f46a47a7a097422dda6c3580c5cd6e3d280d5eb0e31 +CpFactoryAddress: 0x9aE501385Bc7996A2A4a1FBb00c8d3820611BCB5 +Init CpFactory Tx: 0xf9645fe185e856db852a25eda8cfb41153192c8cc05757cb455bcd90da53e2ba +DODOV2RouteHelper Address: 0xbAb9F4ff4A19a0e8EEBC56b06750253228ffAc6E +DODOProxyV2 Address: 0xb57Dd5c265dBb13CA014F2332069E90CD0e22e65 +Init DODOProxyV2 Tx: 0xb5e8b6503b419f434416fcf905255b704db960959b4c2a52198e97c3945b4ce7 +DODOApprove Init tx: 0x6a74e9a7ef040bf816d945313199bd512719aa0457a0e4e55f8ce17b3eafcc5e +==================================================== +network type: live +Deploy time: 2021/1/22 下午5:40:07 +Deploy type: V2 +DODOCalleeHelperAddress: 0xef49a6DBa1C8DF859E49c17E9A485B439c7689d3 +DODOV1RouterHelper Address: 0x6373ceB657C83C91088d328622573FB766064Ac4 +DefaultMtFeeRateAddress: 0x5e84190a270333aCe5B9202a3F4ceBf11b81bB01 +DefaultPermissionAddress: 0x6B208E08dcF6BD51F50C5Da09d15B2D8E5C46Cf2 +Init DefaultPermissionAddress Tx: 0x235d8c2a5eea61edc73d4e7de1f13f7a4d0479935e4a72c7d400d1844a141071 +DvmTemplateAddress: 0x2BBD66fC4898242BDBD2583BBe1d76E8b8f71445 +DppTemplateAddress: 0xB76de21f04F677f07D9881174a1D8E624276314C +DppAdminTemplateAddress: 0x729f7f44bf64Ce814716b6261e267DbE6cdf021c +CpTemplateAddress: 0x18b0bD918b55f995Fd404B872404378A62cb403b +DODOApprove Address: 0xC3BeD579CaB3EC29B22D9AB99F4E586af42496b9 +DODOIncentiveAddress: 0x989DcAA95801C527C5B73AA65d3962dF9aCe1b0C +DODOIncentive Init tx: 0xccb6c1b53d19754cea094bb0a0957ffc8319b9d75a285dc968e703014b1efae6 +DvmFactoryAddress: 0x72d220cE168C4f361dD4deE5D826a01AD8598f6C +Init DvmFactory Tx: 0xffa5bfc273985acfd01cd391f5e432b4afad50068efc81fde057593e4e5aed1f +DppFactoryAddress: 0xB5Dc5E183c2aCf02aB879A8569aB4EDAf147d537 +Init DppFactory Tx: 0xe73408e20a106f704729fe8bfa46b49c17a4e550c48d39c502eb9312d266dc37 +CpFactoryAddress: 0xE8C9A78725D0451FA19878D5f8A3dC0D55FECF25 +Init CpFactory Tx: 0xde26abd897c382a3cd0c7eeca5ff5a81b07661f831c52c1f7ddeeae1859f9a87 +DODOV2RouteHelper Address: 0xaeB5CF31b97dce6134e416129845e01106fFB177 +DODOProxyV2 Address: 0x9aE501385Bc7996A2A4a1FBb00c8d3820611BCB5 +Init DODOProxyV2 Tx: 0x56342b7096bfba69f24184af2a4ffec2f8c3862b253ab502cfad33b3b47c34f0 +DODOApprove Init tx: 0xc31acb7b6212bc25b6064762cd87bd7f345ac27afb56e4b08bd47b366adf50b1 +==================================================== +network type: live +Deploy time: 2021/1/22 下午6:21:11 +Deploy type: V2 - Adapter +DODOV1Adapter Address: 0xb57Dd5c265dBb13CA014F2332069E90CD0e22e65 +DODOV2Adapter Address: 0xE55154D09265b18aC7CDAC6E646672A5460389a1 +UniAdapter Address: 0x043957f7554275b90c5178872faE851dcfC1089D +==================================================== +network type: live +Deploy time: 2021/1/24 下午5:23:15 +Deploy type: V2 - ERC20 Factory +ERC20TemplateAddress: 0x85351262f7474Ebe23FfAcD633cf20A491F1325D +MintableERC20TemplateAddress: 0x0596908263Ef2724fBfBcAfA1c983FCD7a629038 +ERC20FactoryAddress: 0x44D5dF24d5Ef52A791D6436Fa45A8D426f6de34e +==================================================== +network type: live +Deploy time: 2021/1/25 下午7:40:34 +Deploy type: V2 - Adapter +DODOV1Adapter Address: 0x9B64c81ba54eA51e1f6B7fefb3cfF8AA6F1e2A09 +==================================================== +network type: bsclive +Deploy time: 2021/1/25 下午7:51:54 +Deploy type: V2 - Adapter +DODOV1Adapter Address: 0x0596908263Ef2724fBfBcAfA1c983FCD7a629038 +==================================================== +network type: kovan +Deploy time: 2021/1/25 下午7:54:22 +Deploy type: V2 - Adapter +DODOV1Adapter Address: 0xfbA45094b82AAdA3297712073Ee0920b4090cd7c +==================================================== +network type: kovan +Deploy time: 2021/1/26 上午11:02:21 +Deploy type: V2 +DppAdminTemplateAddress: 0x10AAaeE8B802FaEBEC5dE37dc581490d86Fb07A5 +DODOApprove Address: 0x8acF28D9d8124B20b645893b6102950B488dfd29 +DODOApproveProxy Address: 0x7Dac4ec78D4349FBD9E031a56E92B724B8AFA9B3 +DppFactoryAddress: 0x6DAb26dFE83E484DCC5126F812E3e6AA8e7eEf4D +Init DppFactory Tx: 0x019975d4e881fc929ab8c7f4ecfcec4f54785df20f369848c34ad07462a3fe27 +DODOV2RouteHelper Address: 0xE2dbE9CF7bEb0484F464281D2DcbF6bF98D865Fd +DODOV2Proxy02 Address: 0x3457A15B9ab57FC754789EE83E4BD2BD8f4F50C8 +Init DODOProxyV2 Tx: 0xd888ac726780d59c0902a3d2e0b1d057d740b6d0113a9b574b6e602aaae9c36c +DODOApproveProxy Init tx: 0x269cca5af1c412592439ddce1ff4d4963c5f361251a0e24437f6478a05da9cd9 +DODOApprove Init tx: 0x8883928f79a11fdf1c96a07d2a6c3c8034e1bcf5cfea87342fb5084cc22eb406 +DODOIncentive ChangeProxy tx: 0x1b01057283954629021d23586ba04278c64ada46c899f62b1f53364546d0fa88 +DODOIncentive OpenSwitch tx: 0x336c69f91d6f0b547e432498d3848f8308fe3164925444aca98951876e68a89c +==================================================== +network type: bsclive +Deploy time: 2021/1/26 下午4:25:33 +Deploy type: V2 +DppAdminTemplateAddress: 0x44D5dF24d5Ef52A791D6436Fa45A8D426f6de34e +DODOApproveProxy Address: 0xB76de21f04F677f07D9881174a1D8E624276314C +DppFactoryAddress: 0x9B64c81ba54eA51e1f6B7fefb3cfF8AA6F1e2A09 +Init DppFactory Tx: 0xf2037cb6bbf6b6fccf524e21af55e76f54edf8ae08e5c99e9310afa9192d75e1 +DODOV2RouteHelper Address: 0x335aC99bb3E51BDbF22025f092Ebc1Cf2c5cC619 +DODOV2Proxy02 Address: 0x6B4Fa0bc61Eddc928e0Df9c7f01e407BfcD3e5EF +Init DODOProxyV2 Tx: 0xb30622bdf50144d11d25b0c7c267270f6c6ef6a6eb89efee97f2d31f6e7986e6 +==================================================== +network type: live +Deploy time: 2021/1/26 下午5:07:20 +Deploy type: V2 +DppAdminTemplateAddress: 0x5515363c0412AdD5c72d3E302fE1bD7dCBCF93Fe +DODOApproveProxy Address: 0x335aC99bb3E51BDbF22025f092Ebc1Cf2c5cC619 +DppFactoryAddress: 0x6B4Fa0bc61Eddc928e0Df9c7f01e407BfcD3e5EF +Init DppFactory Tx: 0x3f0ada4251c74ba5f793c1d653a9be7818674daac19291619ce7b5defd232240 +DODOV2RouteHelper Address: 0xbe9a66e49503e84ae59a4d0545365AABedf33b40 +DODOV2Proxy02 Address: 0xa356867fDCEa8e71AEaF87805808803806231FdC +Init DODOProxyV2 Tx: 0xf8e511f50c2f27836ace72e65d8a10e6253f5d5094a9e1f2e5fa5181d3c05f08 +==================================================== +network type: kovan +Deploy time: 2021/2/1 下午11:09:38 +Deploy type: V2 +DODOApprove Address: 0x929ce7b28aA759a1C0E6e855ff2545f9e5ca846A +DODOApproveProxy Address: 0x8a61c59e2DE32af51A252d754c7f852aA44191C8 +DODOV2Proxy02 Address: 0xf47BEA4D26026810787b56670502E058CEe5c386 +Init DODOProxyV2 Tx: 0x48c4de1d6008c96d82a92da63747385b218b56fe3451d4256b9b8429623d34f4 +DODOApproveProxy Init tx: 0xb12443d847d426fbeed3c0c3d0e796d52b214ebff65ca604a72dd7400b94e42c +DODOApprove Init tx: 0x26d3f4be069eccf94b0b6d3ee1db07a534cadc98c4dd2b96fd5921d00f57403c +DODOIncentive ChangeProxy tx: 0x9564307e19b26aed9980d9ac007dc88b789450893540426618de4f1039f5584f +==================================================== +network type: kovan +Deploy time: 2021/2/2 下午2:38:26 +Deploy type: V2 +DppTemplateAddress: 0x6b9Db3908ddFD853AD2A42Ab75b5de3f22f137a5 +DppAdminTemplateAddress: 0x2d69731283ac620760309d8b561De11C6166a5F5 +DODOApprove Address: 0x7BD4dBc1F3cd0333E910aa9eeA14A2d96e3684C2 +DODOApproveProxy Address: 0x0cB68c60E4C2F023C4fdbC6Cbe283aAb34866e8a +DppFactoryAddress: 0x80c03749C22Acbe5EaFEb1d550a32C707a67fc34 +Init DppFactory Tx: 0x643c1fdcefe736f782f0c1be2478ff09515030eb9e6c6030f0ec9513bd327bf7 +DODOV2RouteHelper Address: 0xD5171044E369Ef316125da5A0Af8E75ea6Cd3A90 +DODOV2Proxy02 Address: 0xFC6840905E7E550A209B3856f313C523D2f9a3e3 +Init DODOProxyV2 Tx: 0xb41219ef20f0496c8c2088bf8d30a64dd3fa1ef5cdaeaa9161a6da52349dd76d +DODOApproveProxy Init tx: 0x38ced5f643938891ad553b40bafe55ffc6065a15e4bbc81f4cdfbe4f3a0b9494 +DODOApprove Init tx: 0x7eac3f1fa6dbe499351ea52066623980615bdc7901a84f2afa8fc67e34e4be59 +DODOIncentive ChangeProxy tx: 0x6d64bae7ee09f12db0bfc18823ac8e2ca1d682184c1ed3cc157f2b39641409e3 +==================================================== +network type: bsclive +Deploy time: 2021/2/4 下午5:09:20 +DODOCalleeHelperAddress: 0xaaffAd1017D6a13E026A00121BF258C616B25f7C +==================================================== +network type: kovan +Deploy time: 2021/2/4 下午5:16:38 +DODOCalleeHelperAddress: 0x36ce1831941d35c3588759B2D084E240a094ad4A +==================================================== +network type: kovan +Deploy time: 2021/2/4 下午5:51:45 +Deploy type: V2 +DODOApprove Address: 0x9e159C2932ceFCD0FdC21458fBAd99a535BC1ccB +DODOApproveProxy Address: 0x5ee5B85ddf0b842e0d65f0d295F6954eceFBEeD4 +DODOV2Proxy02 Address: 0x78A6b82ed33B73B8A5702a4Dcb16441bcd2ADA08 +Init DODOProxyV2 Tx: 0x42b4de22ef3a32db868174cc2f99bc3acdc17a77cafa9435e4be998e347cf492 +DODOApproveProxy Init tx: 0x34d085f14d73db5df4564d40c74151404ce66f7b14edb7308986bbfc05072f57 +DODOApprove Init tx: 0x51d7a94362e44515c6e67b9f9535889863977ea0a3a6f58cc2e8524bdf03f4c3 +DODOIncentive ChangeProxy tx: 0xb03cda4c06262131e28c36bed506be52d0621029e4a8dd57fa96d3aecdb81691 +==================================================== +network type: bsclive +Deploy time: 2021/2/7 下午10:51:39 +Deploy type: V2 +DODOIncentiveAddress: 0x4EE6398898F7FC3e648b3f6bA458310ac29cD352 +DODOIncentive Init tx: 0xf654d6b6be449f56933ff5b21952efc89eeca4ce71fa21940294d4f5519aadda +DODOV2Proxy02 Address: 0xD56281EF996B6B29874C77D2e1464216E8043127 +Init DODOProxyV2 Tx: 0xe1b3c17b93959592b6ec6242651b4a1abde27c927b1ebe5da5cc970c60f7e69f +==================================================== +network type: kovan +Deploy time: 2021/2/9 上午8:48:33 +Deploy type: V2 +DefaultMtFeeRateAddress: 0x57e5b46e400c0C31cA174C8E199fB5fE650DB18a +Init DefaultMtFeeRateAddress Tx: 0x71fdca3d54f1d0b5eea530cb52cdb87945833246c78488ad68bfd4c75fbd7078 +DefaultPermissionAddress: 0x82C87c5EB912762676E7a87Aad67D916317c7D0e +Init DefaultPermissionAddress Tx: 0x5d0dd494ed7f6d541b29349b8aeacd5cb80dcdc9f8385903a50bf10c975e8d4d +DvmTemplateAddress: 0x268EA583bc954678DeD93D4832F147604142aDaD +DppAdminTemplateAddress: 0xf63e41A459D9AEcaE4bAE1278ef0ae84F7F2DE56 +CpTemplateAddress: 0x973bEbaE41E79c2B4d9EaEE14c2aB85f43673dc3 +DODOApprove Address: 0x4A354b8d0DDb7083f066bDaC1f50d23DE221B01C +DODOApproveProxy Address: 0xe778affD2a337b57a9cDAF6f2ba0bebe3e16316E +DODOIncentiveAddress: 0x5cFCc14f7C8be8B138D9fDF7438391b0BFe0589F +DODOIncentive Init tx: 0xd7f67d2bdfa4fe199fd8c54fc5cd0dddaeb4923a374dec69f532032dbf7a5272 +DvmFactoryAddress: 0x322F8014C125Da09314d3a68d4d9F427823F17FD +Init DvmFactory Tx: 0x21f1af2c2c991f7f6cea353b68f60f4dfd597a50e6615a4c4fd389aa8ae0baaa +DppFactoryAddress: 0x9fA487762d4329eBDD83a00a82C8a02719Fdf512 +Init DppFactory Tx: 0x9aa6052e2c34b015fd298ea7079f3bccd3da86b6fd1f7f644a0e1fa55c6d1497 +CpFactoryAddress: 0x9e6E8985D52E91eDf1671f28Ca73bc4F3E219b72 +Init CpFactory Tx: 0x332eb5c4d3242fc2cb005e48327c08557cb3eeaeed29335c038f8685042581b8 +DODOV2RouteHelper Address: 0x4605149BB2Efab69D4fA37Bc9669f3b6f7bD3F92 +DODOV2Proxy02 Address: 0x5b3faEAa344F8134a7E0A269a9dFb3C7898b090D +Init DODOProxyV2 Tx: 0x2341d998ff725cfce55b2494c9ebc61e24a1ed07e65784cf064a282aa6512dbb +DODOApproveProxy Init tx: 0x5438ae07169d56c95349f2028c6516d7b999b9689a1daa7b1f4f3c3d4e4ce36e +DODOApprove Init tx: 0x49813a01135d05674e2086511c57f27fb55b8b5ec5ca5373812d6634db110a38 +DODOIncentive ChangeProxy tx: 0xde4919c4a69b5eb58dfa2132c2d41ff163fe95a49fe972f76fb296cd491f7df6 +==================================================== +network type: kovan +Deploy time: 2021/2/9 下午10:15:02 +Deploy type: V2 +DODOApprove Address: 0xa375b128e139ae54EF7F189BC8fEb4624f1c2Afa +DODOApproveProxy Address: 0xE2bf3e72E126f0AD4Aec07AdfA6cc345EEF43bDe +DppFactoryAddress: 0xC65F8087288aa0a118aa6F3228Ef9ecc8187F4b6 +Init DppFactory Tx: 0x7c031a17e29c7585704b1669b4fe1ea66e1180aa1990b973fc133f8fd950114a +DODOV2RouteHelper Address: 0xcB3b6cdBe2e57D3e37feba0C55584992Cc1B973F +DODOV2Proxy02 Address: 0x85CAA68ae47f047aa01C48BCaA711CA70a950fFb +Init DODOProxyV2 Tx: 0x72afdcd3795ee00b67b87c88af14227584b1ca7588dd10cdcda11c42331117e6 +DODOApproveProxy Init tx: 0x34e33c12750fff4abd34dd368157ad1b2101597f44a3f9783725d8a245860b73 +DODOApprove Init tx: 0x1f8ac1bbf54e3b42dc3657485fd837efba382a73342e2ced29b6e9fbdb4edeb4 +DODOIncentive ChangeProxy tx: 0xd0427f9a814efb822a36ebf17bbf637d066887adacf636c32455a165d30b768 +==================================================== +network type: bsclive +Deploy time: 2021/2/16 下午4:51:26 +Deploy type: V2 +DvmFactoryAddress: 0x790B4A80Fb1094589A3c0eFC8740aA9b0C1733fB +Init DvmFactory Tx: 0x9592fd57792036a06da1c028e2d42f267699eb2b9bd3ab652ee277b9b6de13c4 +DppFactoryAddress: 0xAfe0A75DFFb395eaaBd0a7E1BBbd0b11f8609eeF +Init DppFactory Tx: 0x7eb6892dbdec51c098df7d327cdabc2d3b0aa3d2b10cd97bc89bad15c06a3e1a +CpFactoryAddress: 0x778DF5B12170e8af8dF94356BfC864E57CE185DC +Init CpFactory Tx: 0x2b5cb91e706a48090fe066582b41a6bb2e3d789423e6b61c6244e1fb67288f50 +DODOV2RouteHelper Address: 0x1dc8D1f1600B7C1D39e6b60FBC7b021Bc4F9C993 +DODOV2Proxy02 Address: 0x8F8Dd7DB1bDA5eD3da8C9daf3bfa471c12d58486 +Init DODOProxyV2 Tx: 0x1985f2e208d58ab2353eae96231ee3a11e1213a5e31f654274a40bbb2b4e9c8a +==================================================== +network type: heco +Deploy time: 2021/2/24 上午10:39:36 +DODOCalleeHelperAddress: 0xBD5Cc9CF41a7dEDaa7dfa6da189D3a522fe262d1 +==================================================== +network type: heco +Deploy time: 2021/2/24 下午12:25:32 +Deploy type: V2 +DODOSellHelper Address: 0xA0Bb1FbC23a547a8D448C7c8a2336F69A9dBa1AF +DODOV1RouterHelper Address: 0xFB973C79C665C0AC69E74C67be90D4C7A6f23c59 +CloneFactoryAddress: 0x5dCEAe50CF8C3B885430E0E79226C513Db0318f2 +DefaultMtFeeRateAddress: 0x07911226E710dd0b9B1c4a2Dd3c85DeFd821D492 +Init DefaultMtFeeRateAddress Tx: 0xd4961aaf52e89e3be9a91a0a8571e358dc016cfdd1b56c52acc94df95e45335a +DefaultPermissionAddress: 0xC142FBA5948c372f49aDa159748EA224de6cC9AA +Init DefaultPermissionAddress Tx: 0xa3df5a8516a918a526ddfa862a587e0f1a7016750cf9cb8e8ab9cf17bde814f4 +DvmTemplateAddress: 0x13742E431830980c59Ca8d8eC4D001F64C0D0f09 +DppTemplateAddress: 0x78ce7b5ff3b6329BBc15Eb1ddEF5fdaDF04D4012 +DppAdminTemplateAddress: 0x3232fd648997F89E614A021fdAc756d61F9030A1 +CpTemplateAddress: 0x02869989ecc2D310C360861Ec2779f7027F65190 +DODOApprove Address: 0x67E849C7BC9735BFC8f6399171A94EA3BD80A19F +DODOApproveProxy Address: 0x053b27B5b93f6F213084d8e2e1c9317D4B4Ffb28 +DODOIncentiveAddress: 0x94290Bf438697Fa684d8CE0aC07c09f0e82D4f74 +DODOIncentive Init tx: 0xbb17230cb5536f05f89e8038700ae9c8978da502b38fc086471f72e620ce395d +DvmFactoryAddress: 0x496F9267054106Ea74F44BEFc2E3ea88126EB08f +Init DvmFactory Tx: 0x5b0f2a300240567afb73b00ad9aae58721ae14330127ab9f144f74421f39ac03 +DppFactoryAddress: 0xc18dd66CD9C9D1D8540ADbDe46C9a238C2713ff1 +Init DppFactory Tx: 0x04b6fbe1e8049d5e1078bde94f9e73846ac29c35e4b548c96ee9252daf712e81 +CpFactoryAddress: 0x5949a2840865f5d9DdB37c2419060663473f3392 +Init CpFactory Tx: 0x0b490e17b11b9bd4f3265749ca1c2684ab855c8e01d72c0a0657c060303de009 +DODOV2RouteHelper Address: 0x01330a505D1A5EA2d91EA50f3f2742150fba93da +DODOV2Proxy02 Address: 0x9c7300731971d083FA640b12ef0BCbFD6D8DB232 +Init DODOProxyV2 Tx: 0x1e92e187a7e9124c98036ddb5cff6a801355c28c54bf7a957ae96ae5bbd3f33a +==================================================== +network type: heco +Deploy time: 2021/2/24 下午2:37:23 +Deploy type: V2 - Adapter +DODOV1Adapter Address: 0x9B63602c1FEd8292b76fb611B5de66a8fB7F8a77 +DODOV2Adapter Address: 0xF68a04C267e492A21F0818C357f83c665230C5ad +UniAdapter Address: 0xDfa10eC79CE97689a7FeD409aEc3174681EF9602 +==================================================== +Deploy time: 2021/3/2 下午9:43:39 +Deploy type: V2 +DODOSellHelper Address: 0xb61c30c1612504d334b39E5172D8215cb5Ad576C +DODOCalleeHelperAddress: 0x6211feD3b4f22e23Ac77EeB4F31562D17f5A352E +DODOV1RouterHelper Address: 0x4D73053013F876e319f07B27B59158Cca01A64C5 +CloneFactoryAddress: 0x24B7AB1C9f099f00BCE536d8E3605B53C226623E +DefaultMtFeeRateAddress: 0xfFC36c9F7de34d793e431F784724bC6CB8449CaE +Init DefaultMtFeeRateAddress Tx: 0x02cc538d236ab39be3cf9c6714e71fd5a2b99104db68a923c5eb02116112db9d +DefaultPermissionAddress: 0xB79b78C29756D820895774BfF84A447fEfAd373e +Init DefaultPermissionAddress Tx: 0x7cb14b506aae2c1f34d00d31416ef6a48f8f060fb7823f2f06aa6d41e758bc86 +DvmTemplateAddress: 0x85913c7CF9F8624A7f2b2CD34149A214768233d7 +DppTemplateAddress: 0xc04dF41F6382A5dB5752533E0DC93123DaACeD8E +DppAdminTemplateAddress: 0x514c9Ae51a8Bf85F4f656F7226bD208F4995247c +CpTemplateAddress: 0x0AE9df8B24E2F3903441F84d632f655B6B93b9dF +DODOApprove Address: 0x667A1d5947B2f81D56BFd872285F93BFBc73c632 +DODOApproveProxy Address: 0x7525A017EAa0feAaF8bA047d37062E03b2492312 +DODOIncentiveAddress: 0x9f871a98413C5fa0D72d0f2AB88C1d9cD58C3383 +DODOIncentive Init tx: 0xa39806d2399266e223b088c307525423c052046be9874c6daf9141ad49f48ca5 +DvmFactoryAddress: 0x3d1AF1F66Ee4800a1db87321C9B23ed971eEc2e2 +Init DvmFactory Tx: 0x29b055a4506c79f2168cd267ecdb6f2a49ab493561f83ec3ce47fb681ecdeb33 +DppFactoryAddress: 0xBAA57Ff6A08E183917746C999C3FF1dE95eE01fb +Init DppFactory Tx: 0x6e206ff457359e810f8c956b92c817924eeffb88cbe542fa2735acc49fbe55c6 +CpFactoryAddress: 0x9557b4E0Fe6bd94544E4D43E52C5c8f8F771535b +Init CpFactory Tx: 0x47bb88c64e0a051c9bb2834c0bd68cfab7e5a0683dcd5191306864bf245d06bd +DODOV2RouteHelper Address: 0xC679Fe3200D0d3c53Ba5cd3dC8e7111eC2DF939b +DODOV2Proxy02 Address: 0x50d634E43F5aD7748cf2860760b887655524B593 +Init DODOProxyV2 Tx: 0x2d435d5d6d605e2d6d4f7f896764df2bf14b5f67fb7e983835a3faf832005215 +==================================================== +network type: mbdev +Deploy time: 2021/3/3 下午11:03:38 +Deploy type: V2 +DODOSellHelper Address: 0xF8cef78E923919054037a1D03662bBD884fF4edf +DODOCalleeHelperAddress: 0xe573BCA813c741229ffB2488F7856C6cAa841041 +DODOV1RouterHelper Address: 0xBb0CC0fb3e0c06725c67167501f850B4900D6DB5 +CloneFactoryAddress: 0xfE5D3c52F7ee9aa32a69b96Bfbb088Ba0bCd8EfC +DefaultMtFeeRateAddress: 0x92496871560a01551E1B4fD04540D7A519D5C19e +Init DefaultMtFeeRateAddress Tx: 0xb1acc65600ba045845f1668d5a6d928e761b58e594185f388c456d95bcb849d2 +DefaultPermissionAddress: 0xDc552396caEc809752fED0c5E23fd3983766e758 +Init DefaultPermissionAddress Tx: 0xe71176be329c3ed57cf80b3e331a44dbfffc43cee34f5411294fcc45630f446b +DvmTemplateAddress: 0xD81C7319c85fcd6e1F0893b3988BeBab6247Adbc +DppTemplateAddress: 0x596fB37d99bd679d1af76fBCB658f7a1a31A1205 +DppAdminTemplateAddress: 0x4d6942683D051FF95804B08EF11F98A7F41C1b44 +CpTemplateAddress: 0x79885EBC79783C9174faC36Ed99cD9467CB8cDbE +ERC20TemplateAddress: 0xe9CC152481642D7a3Ea207E3930067B19663770F +MintableERC20TemplateAddress: 0x0484C33Bad127FA77CC64d6475aDD6483c70BbB9 +==================================================== +network type: mbdev +Deploy time: 2021/3/3 下午11:05:53 +Deploy type: V2 +ERC20FactoryAddress: 0x4FBb399fB0E360e11DFF274090650C7e588F1af1 +DODOApprove Address: 0xC7430D8919b54F85a723810FBceF2114482EC5D1 +DODOApproveProxy Address: 0xC683516e791c5E2b8e913dE0670d499927f54CEc +DODOIncentiveAddress: 0x1bc238EAd60bdF5e94BB8f7205b6e75ACabACbC0 +DODOIncentive Init tx: 0xc866edfd1beb35c51c0081759297b358c486802fafdbb1020b76992e008a25fa +DvmFactoryAddress: 0x8d9c0eAc2AF186035b18c479E2261fF893283f83 +Init DvmFactory Tx: 0x7150847e18fb8c2a4cf0781b227bdbc834b007a87f33318339699c1f6727d798 +DppFactoryAddress: 0xBF1fdCb2A1CAf1CA5662222417f0351043EEc19A +Init DppFactory Tx: 0x5f861753b0481785db6b27b7bf9f126f4faae690a972344b1ecbe44e6818e445 +CpFactoryAddress: 0x7f78c83A10b9AcDaB1572bC76FD44FF51feDdafE +Init CpFactory Tx: 0x93e987f7a665ff36e22275af6f399d5cbb88509107f7b223b8b7db353ba3e3f4 +DODOV2RouteHelper Address: 0x8e66867Ff57250AF985Da3a81eE480fb6889EA9B +DODOV2Proxy02 Address: 0x750C200d7c7C426da169742f705CA5268e1736b4 +Init DODOProxyV2 Tx: 0x47f86534b348ac846c8fe2014f7debe91a763ff708bb377774933985d5105a6c +==================================================== +network type: bsclive +Deploy time: 2021/3/11 下午10:25:45 +Deploy type: V2 +multiSigAddress: 0xcaa42F09AF66A8BAE3A7445a7f63DAD97c11638b +DvmTemplateAddress: 0xC3BeD579CaB3EC29B22D9AB99F4E586af42496b9 +==================================================== +network type: bsclive +Deploy time: 2021/3/11 下午10:28:36 +Deploy type: V2 +multiSigAddress: 0xcaa42F09AF66A8BAE3A7445a7f63DAD97c11638b +DvmTemplateAddress: 0x02607600407329389C2912F46DD357d7fa33d901 +DvmFactoryAddress: 0xa1254eE5c6d6616904A82c55C6e134557096B6D4 +Init DvmFactory Tx: 0x2c4cf896c289a44977d8587f2608b8b46b2edd7cacd68c3dd22fcbf06d9864e5 +DODOV2RouteHelper Address: 0xd72b354BD39f8F11D0cA07bD5724896Bb1a42707 +DODOV2Proxy02 Address: 0x3a343F2e4e142412c5dD130359edb765a6054965 +Init DODOProxyV2 Tx: 0xa30500fe62320a53e7e5c73ab529f809302c01c0e42dc2f4050be1c948c7c81e +==================================================== +network type: live +Deploy time: 2021/3/12 上午8:38:27 +Deploy type: V2 +multiSigAddress: 0x95C4F5b83aA70810D4f142d58e5F7242Bd891CB0 +DvmTemplateAddress: 0x8a538751A501A9785F93727d4cB7b7827FAb1ad0 +DvmFactoryAddress: 0xc9eD9B18e447e600238fe50e944B9062B664DEa4 +Init DvmFactory Tx: 0x2e9b1a5f11bd9fa802a17404fd46b01b23741c8ebe61d27db1f567f30e83a742 +DODOV2RouteHelper Address: 0xeAB910bea37DD837dDCED91C8E99dBcC4DBcCc01 +==================================================== +network type: live +Deploy time: 2021/3/12 上午9:42:10 +Deploy type: V2 +multiSigAddress: 0x95C4F5b83aA70810D4f142d58e5F7242Bd891CB0 +DODOV2Proxy02 Address: 0x1cf4Ae0Fae772B64d83D175d9E3eE06240f6Dc9a +Init DODOProxyV2 Tx: 0x46f0fe1d79f83d0c7fb887c8e9c43fbf846b9096d39438c68ab48ecec33185f0 +==================================================== +network type: bsclive +Deploy time: 2021/3/14 下午9:34:00 +Deploy type: V2 +multiSigAddress: 0xcaa42F09AF66A8BAE3A7445a7f63DAD97c11638b +DODOV2Proxy02 Address: 0x17eBC315760Bb47384224A5f3BF829222fbD3Aa7 +Init DODOProxyV2 Tx: 0x3c884309f190264d5e7f2d09d1cbb6084fce69da75edb808d21f8aa86aefda12 +==================================================== +network type: live +Deploy time: 2021/3/15 下午2:59:09 +Deploy type: V2 +multiSigAddress: 0x95C4F5b83aA70810D4f142d58e5F7242Bd891CB0 +DODOV2Proxy02 Address: 0x9F8B87ee9D1b596e7479502de5B4f295E437C8d9 +Init DODOProxyV2 Tx: 0x4b6086c0b79edac7a55fedd00fd6104fae133569afa05484d0608d0b96844979 +==================================================== +network type: mbtestnet +Deploy time: 2021/3/15 下午9:03:45 +Deploy type: V2 +multiSigAddress: 0x6Be02d1d3665660d22FF9624b7BE0551ee1Ac91b +DODOSellHelper Address: 0xe573BCA813c741229ffB2488F7856C6cAa841041 +DODOCalleeHelperAddress: 0xBb0CC0fb3e0c06725c67167501f850B4900D6DB5 +DODOV1RouterHelper Address: 0xfE5D3c52F7ee9aa32a69b96Bfbb088Ba0bCd8EfC +CloneFactoryAddress: 0x92496871560a01551E1B4fD04540D7A519D5C19e +DefaultMtFeeRateAddress: 0x63A1519eE99d1121780FFfa1726Ed2eCc6d1611B +Init DefaultMtFeeRateAddress Tx: 0x1c1d4a1190b30fe3070ef936bcbc6029d7db7e85d47b3f01bd913da38adbdf8d +DefaultPermissionAddress: 0x50275d3F95E0F2FCb2cAb2Ec7A231aE188d7319d +Init DefaultPermissionAddress Tx: 0x3472a0da5656f0f18260517a4e8d022aec31ac072502419b438ad61f3e4704f4 +DvmTemplateAddress: 0x596fB37d99bd679d1af76fBCB658f7a1a31A1205 +DppTemplateAddress: 0x4d6942683D051FF95804B08EF11F98A7F41C1b44 +DppAdminTemplateAddress: 0x79885EBC79783C9174faC36Ed99cD9467CB8cDbE +CpTemplateAddress: 0xe9CC152481642D7a3Ea207E3930067B19663770F +ERC20TemplateAddress: 0x0484C33Bad127FA77CC64d6475aDD6483c70BbB9 +MintableERC20TemplateAddress: 0x4FBb399fB0E360e11DFF274090650C7e588F1af1 +ERC20FactoryAddress: 0xC7430D8919b54F85a723810FBceF2114482EC5D1 +DODOApprove Address: 0xC683516e791c5E2b8e913dE0670d499927f54CEc +DODOApproveProxy Address: 0x1bc238EAd60bdF5e94BB8f7205b6e75ACabACbC0 +DODOIncentiveAddress: 0xc5A6D29ed21e63A994A766558cDb055832dbF886 +DODOIncentive Init tx: 0x93267e8c636859eef852e88b48611e2fdd0739d7f4b51468b7a2b852ff473401 +DvmFactoryAddress: 0xFa39bFe0f589aba7315090bDaEbDF617535B130f +Init DvmFactory Tx: 0x453b758492556a2a7ab7d3db10c5e3787b64a5e544d2ba526d322ab0ac664d24 +DppFactoryAddress: 0x708bE4dA5e8D8E40dC51A1Dc5987Cc2a7fB22334 +Init DppFactory Tx: 0xd343a9163a57abfa704287a40141b95fdf7442ab789901ff496fc09503a3927e +CpFactoryAddress: 0xE18691ddF53F52705CBD518dF4c2632adDD8a9e5 +Init CpFactory Tx: 0xe7b5ba791a9ac41c24c22f27bb1791ca68e72a03d7ffe43403b63f6035042d81 +DODOV2RouteHelper Address: 0x750C200d7c7C426da169742f705CA5268e1736b4 +DODOV2Proxy02 Address: 0x58eD6D2faa3C8Ff63e327463823d741E84721B6D +Init DODOProxyV2 Tx: 0x02f3d607219bb702e20d394a66a1b62f747423c355ad20fb2f27fd3279647d8e +DODOApproveProxy Init tx: 0x9b688063eff15620a1e008e65462d6bb3304d64c5bb35c16cea8583665541c0e +DODOApprove Init tx: 0x9a47d0fb5cddad371fd8b46d32073872d533716fff8375c15faf5c04dc8bb58c +DODOIncentive ChangeProxy tx: 0xe7054541b46dc3a6d7f81c5d699221bf866c60a2ce92bd6f5ee3f5651bf222cf +==================================================== +network type: mbtestnet +Deploy time: 2021/3/15 下午9:21:03 +Deploy type: V2 - Adapter +DODOV1Adapter Address: 0x1a3fa978909d86dF1244216b02733136b438D83E +DODOV2Adapter Address: 0x0e1630bd2bc047fF6338F78Dc45410e1c0Fc32a0 +UniAdapter Address: 0x1E7727eDad5a2ef47C5AB95a20FEd515735591B2 +==================================================== +network type: oktest +Deploy time: 2021/3/18 下午5:51:41 +Deploy type: V2 +multiSigAddress: undefined +==================================================== +network type: oktest +Deploy time: 2021/3/18 下午5:55:38 +Deploy type: V2 +multiSigAddress: undefined +==================================================== +network type: oktest +Deploy time: 2021/3/18 下午6:29:10 +Deploy type: V2 +multiSigAddress: 0xaac153c1344cA14497A5dd22b1F70C28793625aa +DODOSellHelper Address: 0x0F859706AeE7FcF61D5A8939E8CB9dBB6c1EDA33 +DODOCalleeHelperAddress: 0xe380Ad3181A69BF92133D2feb609867c4adC61eA +==================================================== +network type: oktest +Deploy time: 2021/3/18 下午6:32:58 +Deploy type: V2 +multiSigAddress: 0xaac153c1344cA14497A5dd22b1F70C28793625aa +DODOV1RouterHelper Address: 0xED3Ac3335a24331F1704df8CB456C88dCA282782 +CloneFactoryAddress: 0xb0199C2c8ADF1E6c1e41De60A62E993406Cb8C02 +DefaultMtFeeRateAddress: 0x4073f2b9bB95774531b9e23d206a308c614A943a +Init DefaultMtFeeRateAddress Tx: 0xee585bca5c418f8d901532b07946af27ce4fbba2efbfbeae134196ab4f830886 +DefaultPermissionAddress: 0x0cA2d4BC266B1ad7a0787409AD7a0331D78Eea90 +Init DefaultPermissionAddress Tx: 0x7d4bf524098795aaf9ea08b55854905e58b44501ef7b9a81759955778c437fd2 +DvmTemplateAddress: 0xbd826D0d98480F1D63Bc4125F1368889517559d0 +DppTemplateAddress: 0x890ED2A571486799F1b6413fbA4669106441f702 +DppAdminTemplateAddress: 0x00E7e2bE2e5EcD4343DeE10712Aa53e94c7B5958 +CpTemplateAddress: 0x93e0fd315d95F164147a6C427dA3D6173750C256 +ERC20TemplateAddress: 0x044B56B8CB54c358415Bf9507d56b1A09b5E4c29 +MintableERC20TemplateAddress: 0x527a5791761fCeBa189B5bEaE175E922D87c636e +ERC20FactoryAddress: 0xc54c1D6Bf83c9d8ef260b93dEfc0eC00132Fa33B +DODOApprove Address: 0x51cB75FEd3beb23Ae3Ed5FC74a761E3913ae47f9 +DODOApproveProxy Address: 0xf40be68442e8bcf900FED714246f99BE556345e7 +DODOIncentiveAddress: 0x3318FB94AF0c7B4A45001b5901d36BBA85afef2D +DODOIncentive Init tx: 0xd611e33a9a5f7f20ee96ecf5c4dbef7b07b017727032707f0c46187ca6e7262c +DvmFactoryAddress: 0x16810820A4ff4348Fc39C07bDf1641B724E7F5E7 +Init DvmFactory Tx: 0x30c2cca689561742fe5ef5ce47edf63c3854b83ce1b92e7c842be1871c94a3b2 +DppFactoryAddress: 0x4f678ECC9d5507eDf39E7656A714A9B51Bb6EA58 +Init DppFactory Tx: 0x4ff036040a161b764206e91fd1af16b10da9ef5dbfa9edaf550bf64966d024d3 +CpFactoryAddress: 0xf4D3ab686a1E133Ec0806644FE5d1FD94869F88F +Init CpFactory Tx: 0xb300f6ae79927223daecaef686795d18443b1223fe290a76b3d008c80f4efd50 +DODOV2RouteHelper Address: 0x6A08844EdeB49A8578671F1452Fd7dbcc048424F +DODOV2Proxy02 Address: 0x76532E95E26336c2096f969a6AF396f4796A0b67 +Init DODOProxyV2 Tx: 0xd93bc1ccb24267dce549964f3b70ed0eb9c16b2f35cc9e14d36515c0d0fa4239 +==================================================== +network type: oktest +Deploy time: 2021/3/18 下午8:18:09 +Deploy type: V2 +multiSigAddress: 0xaac153c1344cA14497A5dd22b1F70C28793625aa +CloneFactoryAddress: 0xae7153d043C55789F88032C168a0A74B18E73CEE +DODOV2Proxy02 Address: 0xf83BeeA1025359C4d2cf554C330bF8Fd1a9eEbAb +Init DODOProxyV2 Tx: 0x503e53d6663cf23f726af62da5a9f6b1e6e03d5ff8f46193d15885578915b313 +DODOApproveProxy Init tx: 0x6826b75559744a67e29c7688b55ecaf5cd2ce3bc6b697ff938a3af9da93a3c89 +DODOApprove Init tx: 0xaff1b167b4e23f76547a0de488ad06a734b9738bd963a3eba26572ca0fc0def2 +DODOIncentive ChangeProxy tx: 0xac36da3fb39009346e41db0ef0b165b1785ef479b6550200d5bf225a6033f7de +==================================================== +network type: oktest +Deploy time: 2021/3/18 下午8:21:27 +Deploy type: V2 - Adapter +DODOV1Adapter Address: 0xa432E1ace51eB849d7a1664e5c60ce965B1fE6E4 +DODOV2Adapter Address: 0xC2aA2C0175e376E63cFb0bd1CAB1196DDc9a7076 +UniAdapter Address: 0x03E2427859119E497EB856a166F616a2Ce5f8c88 +==================================================== +network type: arbtest +Deploy time: 2021/4/5 下午9:27:07 +Deploy type: V2 +multiSigAddress: 0x7081685Ff3ff16FB6c0dF08AC93bdB7299EEEfc9 +DODOSellHelper Address: 0x313fcb27BD83607C33998AA60E409C79Fb2251fd +==================================================== +network type: arbtest +Deploy time: 2021/4/5 下午9:31:06 +Deploy type: V2 +multiSigAddress: 0x7081685Ff3ff16FB6c0dF08AC93bdB7299EEEfc9 +==================================================== +network type: arbtest +Deploy time: 2021/4/5 下午9:32:35 +Deploy type: V2 +multiSigAddress: 0x7081685Ff3ff16FB6c0dF08AC93bdB7299EEEfc9 +DODOCalleeHelperAddress: 0x1ddD02f6d31C1eF04cFA0a1AA811406B5B2884E7 +DODOV1RouterHelper Address: 0xD56281EF996B6B29874C77D2e1464216E8043127 +==================================================== +network type: arbtest +Deploy time: 2021/4/5 下午9:35:57 +Deploy type: V2 +multiSigAddress: 0x7081685Ff3ff16FB6c0dF08AC93bdB7299EEEfc9 +CloneFactoryAddress: 0x61b21603A527b487C4a3A80a69224b87751D0F6a +==================================================== +network type: arbtest +Deploy time: 2021/4/5 下午9:38:16 +Deploy type: V2 +multiSigAddress: 0x7081685Ff3ff16FB6c0dF08AC93bdB7299EEEfc9 +==================================================== +network type: arbtest +Deploy time: 2021/4/5 下午9:40:06 +Deploy type: V2 +multiSigAddress: 0x7081685Ff3ff16FB6c0dF08AC93bdB7299EEEfc9 +DefaultMtFeeRateAddress: 0x4EfF1D851366b8cc51d553a87e2d12dA8Da46F2a +Init DefaultMtFeeRateAddress Tx: 0xfc59c5af3257e02c44eaca448a7813d6b835b6f7304fb546c81fc149ff4aca11 +DefaultPermissionAddress: 0x97f0153E7F5749640aDF3Ff9CFC518b79D6Fe53b +Init DefaultPermissionAddress Tx: 0x16e408cf7ba3e109e91a0ca0c5c0c7aab45b049ec69269f8c7d7f6b5dac070ce +==================================================== +network type: arbtest +Deploy time: 2021/4/5 下午9:43:59 +Deploy type: V2 +multiSigAddress: 0x7081685Ff3ff16FB6c0dF08AC93bdB7299EEEfc9 +==================================================== +network type: arbtest +Deploy time: 2021/4/5 下午9:46:07 +Deploy type: V2 +multiSigAddress: 0x7081685Ff3ff16FB6c0dF08AC93bdB7299EEEfc9 +DvmTemplateAddress: 0x1565666CD77bB6DDE193e1D37Ad7b07900e6f4c0 +DppTemplateAddress: 0x1dc8D1f1600B7C1D39e6b60FBC7b021Bc4F9C993 +DppAdminTemplateAddress: 0x8F8Dd7DB1bDA5eD3da8C9daf3bfa471c12d58486 +CpTemplateAddress: 0x70eFB31271C0796833f80dA4E6538d05B2AFA72C +ERC20TemplateAddress: 0x77106d0f8c5B8ADF95a7feaae5bea130b1D2D748 +MintableERC20TemplateAddress: 0xa952f8716a753D9e094c4041FEBd163e38B21eDB +==================================================== +network type: arbtest +Deploy time: 2021/4/5 下午9:54:11 +Deploy type: V2 +multiSigAddress: 0x7081685Ff3ff16FB6c0dF08AC93bdB7299EEEfc9 +ERC20FactoryAddress: 0x01f9BfAC04E6184e90bD7eaFD51999CE430Cc750 +==================================================== +network type: arbtest +Deploy time: 2021/4/5 下午9:56:58 +Deploy type: V2 +multiSigAddress: 0x7081685Ff3ff16FB6c0dF08AC93bdB7299EEEfc9 +==================================================== +network type: arbtest +Deploy time: 2021/4/5 下午10:00:34 +Deploy type: V2 +multiSigAddress: 0x7081685Ff3ff16FB6c0dF08AC93bdB7299EEEfc9 +==================================================== +network type: arbtest +Deploy time: 2021/4/5 下午10:06:16 +Deploy type: V2 +multiSigAddress: 0x7081685Ff3ff16FB6c0dF08AC93bdB7299EEEfc9 +==================================================== +network type: arbtest +Deploy time: 2021/4/5 下午10:18:56 +Deploy type: V2 +multiSigAddress: 0x7081685Ff3ff16FB6c0dF08AC93bdB7299EEEfc9 +==================================================== +network type: arbtest +Deploy time: 2021/4/5 下午10:28:04 +Deploy type: V2 +multiSigAddress: 0x7081685Ff3ff16FB6c0dF08AC93bdB7299EEEfc9 +DODOApprove Address: 0x1c31c6d0032768463EaBABe1A47D04c6470d31fE +DODOApproveProxy Address: 0x8Fc0d51915D631Ff6B8b70dEEAE789cE5c792a62 +==================================================== +network type: arbtest +Deploy time: 2021/4/5 下午10:31:30 +Deploy type: V2 +multiSigAddress: 0x7081685Ff3ff16FB6c0dF08AC93bdB7299EEEfc9 +DODOIncentiveAddress: 0x3a60A76aCAe8feeC74D6B5b665d4DBaab2abC406 +DODOIncentive Init tx: 0x7dcd6d1f14c50c2d8ca9369dfb86d933a6277cc9123631247b1483cf00cad753 +DvmFactoryAddress: 0xCFea63e3DE31De53D68780Dd65675F169439e470 +Init DvmFactory Tx: 0xab3f6be8d20d1b730c37e61caed2b5bf361289f9b1d01750a495fe3ebee6b3f4 +DppFactoryAddress: 0xb7865a5ceE051d35B09A48b624D7057d3362655a +Init DppFactory Tx: 0x20f0f23cccdf641653eeed070f1c4aa7ece73f4a219f460f6036ad341a2f11c0 +==================================================== +network type: arbtest +Deploy time: 2021/4/5 下午10:39:00 +Deploy type: V2 +multiSigAddress: 0x7081685Ff3ff16FB6c0dF08AC93bdB7299EEEfc9 +==================================================== +network type: arbtest +Deploy time: 2021/4/5 下午10:40:12 +Deploy type: V2 +multiSigAddress: 0x7081685Ff3ff16FB6c0dF08AC93bdB7299EEEfc9 +==================================================== +network type: arbtest +Deploy time: 2021/4/5 下午10:42:05 +Deploy type: V2 +multiSigAddress: 0x7081685Ff3ff16FB6c0dF08AC93bdB7299EEEfc9 +CpFactoryAddress: 0xCDFD45f965De9932367833Ca7187e4c9C43A2380 +Init CpFactory Tx: 0xcbeb5fc276756004ca7565f13946ea67eede733b10c515395eaa84308c87ee0d +==================================================== +network type: arbtest +Deploy time: 2021/4/5 下午10:45:20 +Deploy type: V2 +multiSigAddress: 0x7081685Ff3ff16FB6c0dF08AC93bdB7299EEEfc9 +==================================================== +network type: arbtest +Deploy time: 2021/4/5 下午10:49:05 +Deploy type: V2 +multiSigAddress: 0x7081685Ff3ff16FB6c0dF08AC93bdB7299EEEfc9 +==================================================== +network type: arbtest +Deploy time: 2021/4/5 下午10:54:47 +Deploy type: V2 +multiSigAddress: 0x7081685Ff3ff16FB6c0dF08AC93bdB7299EEEfc9 +==================================================== +network type: arbtest +Deploy time: 2021/4/5 下午10:56:39 +Deploy type: V2 +multiSigAddress: 0x7081685Ff3ff16FB6c0dF08AC93bdB7299EEEfc9 +DODOV2RouteHelper Address: 0x69f52AC40185A2A005D49114F0B77b7bA856F0a0 +DODOV2Proxy02 Address: 0x3bde3f150EAED3A506740EEfcbBB1BB4393600a9 +Init DODOProxyV2 Tx: 0x93ce40a126c12335ba505dd186fce1aca1cc0e57b728db1326e6ac36a789c0f1 +==================================================== +network type: arbtest +Deploy time: 2021/4/5 下午11:01:11 +Deploy type: V2 - Adapter +==================================================== +network type: arbtest +Deploy time: 2021/4/5 下午11:02:53 +Deploy type: V2 - Adapter +==================================================== +network type: arbtest +Deploy time: 2021/4/5 下午11:04:56 +Deploy type: V2 - Adapter +==================================================== +network type: arbtest +Deploy time: 2021/4/5 下午11:06:23 +Deploy type: V2 - Adapter +==================================================== +network type: arbtest +Deploy time: 2021/4/5 下午11:08:19 +Deploy type: V2 - Adapter +DODOV1Adapter Address: 0x3a343F2e4e142412c5dD130359edb765a6054965 +DODOV2Adapter Address: 0x2cD18557E14aF72DAA8090BcAA95b231ffC9ea26 +UniAdapter Address: 0xeCEaDe494FD5F913Fd937C5CAc4577236395Dc32 +==================================================== +network type: heco +Deploy time: 2021/4/6 下午8:24:26 +Deploy type: V2 +multiSigAddress: 0xD93c8D2429a6b0269527f148F3A0e5D187B0b1Ca +DvmTemplateAddress: 0x05061d7f9353a7B5EB550840974B71A7465c2E86 +CpTemplateAddress: 0x5B67cF070ce4303Ff4d450f21Cc371F9f0549335 +ERC20FactoryAddress: 0x2cCDF6F742afBe813B68Ec6bb421C1BEa74fBd46 +DODOApprove Address: 0x68b6c06Ac8Aa359868393724d25D871921E97293 +DODOApproveProxy Address: 0x91737709De4b2eDEE3a2B78A84e21a60C0b4D70b +DvmFactoryAddress: 0xd8c77CF0F01222b07B8343A681C46eFA3faEa985 +Init DvmFactory Tx: 0xfc3b46811c447b5a72f507591f25c954cd4b857fb3cfca6706e40a1fdbea0aec +DppFactoryAddress: 0xF5420a3b91c457d336589217d45CcB8F7250eAed +Init DppFactory Tx: 0xc1bc6fe39d58d44f308a7c3af6e39ab8ab6896afff99fb035d6cc6e42675cce6 +CpFactoryAddress: 0x56133d0b63abf7A15D5697dD2dB9e04730f1A9C2 +Init CpFactory Tx: 0xa3bb6a347ac6eb3955e6773d776bedc480e54da15d744773be24b55273f87e0a +DODOV2RouteHelper Address: 0xd8E049732079a06a2483a3e1789755aD64dC03a9 +DODOV2Proxy02 Address: 0xAc7cC7d2374492De2D1ce21e2FEcA26EB0d113e7 +Init DODOProxyV2 Tx: 0xaf68709cabcfa8efdd8d16eadf9ce2d51dd8cfdc074fea704c762cfc9cad6f94 +DODOApproveProxy Init tx: 0xad3f8af693cc90f8f7843ef7458c54fe7bf7bdd18951dbfbfcbcdec2e709813d +DODOApprove Init tx: 0x64c084228573cc313470155da609ffc126dde54a942c0b221e7512e95d71fcb3 +==================================================== +network type: mbtestnet_offical +Deploy time: 2021/4/27 下午2:17:05 +Deploy type: V2 +multiSigAddress: 0x7081685Ff3ff16FB6c0dF08AC93bdB7299EEEfc9 +DODOSellHelper Address: 0x67ee3Cb086F8a16f34beE3ca72FAD36F7Db929e2 +==================================================== +network type: mbtestnet_offical +Deploy time: 2021/4/27 下午2:19:23 +Deploy type: V2 +multiSigAddress: 0x7081685Ff3ff16FB6c0dF08AC93bdB7299EEEfc9 +DODOCalleeHelperAddress: 0xaaffAd1017D6a13E026A00121BF258C616B25f7C +DODOV1RouterHelper Address: 0x4EE6398898F7FC3e648b3f6bA458310ac29cD352 +CloneFactoryAddress: 0x1ddD02f6d31C1eF04cFA0a1AA811406B5B2884E7 +DefaultMtFeeRateAddress: 0xD56281EF996B6B29874C77D2e1464216E8043127 +Init DefaultMtFeeRateAddress Tx: 0xb5a8e04de4ab824fa61e8725338c9e987a3b3d7430f61d9a38dbb5073bb37403 +DefaultPermissionAddress: 0x61b21603A527b487C4a3A80a69224b87751D0F6a +Init DefaultPermissionAddress Tx: 0x9ed2dfeeb677ddf940e74e1e8d56a93a65f6955e54768b248f53c8ea572548ab +DvmTemplateAddress: 0xF7c5311B618E6dFBBc34210c92D2C9675D7EdDCA +DppTemplateAddress: 0x4EfF1D851366b8cc51d553a87e2d12dA8Da46F2a +DppAdminTemplateAddress: 0x790B4A80Fb1094589A3c0eFC8740aA9b0C1733fB +CpTemplateAddress: 0x97f0153E7F5749640aDF3Ff9CFC518b79D6Fe53b +ERC20TemplateAddress: 0xAfe0A75DFFb395eaaBd0a7E1BBbd0b11f8609eeF +MintableERC20TemplateAddress: 0xC3528D128CC227fd60793007b5e3FdF7c2945282 +ERC20FactoryAddress: 0x778DF5B12170e8af8dF94356BfC864E57CE185DC +DODOApprove Address: 0x1565666CD77bB6DDE193e1D37Ad7b07900e6f4c0 +DODOApproveProxy Address: 0x1dc8D1f1600B7C1D39e6b60FBC7b021Bc4F9C993 +DODOIncentiveAddress: 0x8F8Dd7DB1bDA5eD3da8C9daf3bfa471c12d58486 +DODOIncentive Init tx: 0xd03218cb2bbaa90cfcf33c78cf58ae3c3347b94de9ca8c7c8be8a36507213b7c +DvmFactoryAddress: 0x77106d0f8c5B8ADF95a7feaae5bea130b1D2D748 +Init DvmFactory Tx: 0x49c897aa1d69f836f37eb469618bbb688384a4a93bc5a3d12d1b43dd6927fa57 +DppFactoryAddress: 0x67e5a449EF6B0da29D338023e7cfc50a2975F9Bb +Init DppFactory Tx: 0x6aeccb64cb1bcc955467db9d86da886a8a86abecf807ca2209423ce7d64a8cdb +CpFactoryAddress: 0x0Fba7F96f3D7196FfAcaC46356F05Fdb7B24c38d +Init CpFactory Tx: 0x5ab1c43bf5f92efaddd775de780904c46e21d4e2a19aa9afbae9ba1a993a308f +DODOV2Proxy02 Address: 0xf94435Ad7Edc3D5aDd1C1345622Bb745D0387416 +Init DODOProxyV2 Tx: 0x6444bbaba13ff67b4dc863d80bcd3bb88beab945befc2d128ba8aa6597d99393 +==================================================== +network type: mbtestnet_offical +Deploy time: 2021/4/27 下午2:40:02 +Deploy type: V2 - Adapter +DODOV1Adapter Address: 0x80223ab1F41d4Ec8D8321b9cc88A835737D57592 +==================================================== +network type: mbtestnet_offical +Deploy time: 2021/4/27 下午2:42:12 +Deploy type: V2 - Adapter +DODOV1Adapter Address: 0x1c31c6d0032768463EaBABe1A47D04c6470d31fE +DODOV2Adapter Address: 0x8Fc0d51915D631Ff6B8b70dEEAE789cE5c792a62 +UniAdapter Address: 0x2F2f9460500F27db68AAfBfa0472cEDDb168a5a6 +==================================================== +network type: mbtestnet_offical +Deploy time: 2021/4/27 下午2:58:19 +Deploy type: V2 +multiSigAddress: 0x7081685Ff3ff16FB6c0dF08AC93bdB7299EEEfc9 +==================================================== +network type: mbtestnet_offical +Deploy time: 2021/4/27 下午2:58:53 +Deploy type: V2 +multiSigAddress: 0x7081685Ff3ff16FB6c0dF08AC93bdB7299EEEfc9 +==================================================== +network type: mbtestnet_offical +Deploy time: 2021/4/27 下午3:14:07 +Deploy type: V2 +multiSigAddress: 0x7081685Ff3ff16FB6c0dF08AC93bdB7299EEEfc9 +DODOV2RouteHelper Address: 0xC679Fe3200D0d3c53Ba5cd3dC8e7111eC2DF939b +==================================================== +network type: mbtestnet_offical +Deploy time: 2021/4/27 下午3:39:34 +Deploy type: V2 +multiSigAddress: 0x7081685Ff3ff16FB6c0dF08AC93bdB7299EEEfc9 +DODOV2RouteHelper Address: 0xCFea63e3DE31De53D68780Dd65675F169439e470 +DODOV2Proxy02 Address: 0x96a75d73b3de29c009863fA6329D96b2181D3Dc4 +Init DODOProxyV2 Tx: 0x4421dc60db948a48e46bac8a6bc11881d5de07e58dcb0e40383b799a0273ae15 +==================================================== +network type: mbtestnet_offical +Deploy time: 2021/4/27 下午3:42:07 +Deploy type: V2 +multiSigAddress: 0x7081685Ff3ff16FB6c0dF08AC93bdB7299EEEfc9 +==================================================== +network type: mbtestnet_offical +Deploy time: 2021/4/27 下午3:42:47 +Deploy type: V2 +multiSigAddress: 0x7081685Ff3ff16FB6c0dF08AC93bdB7299EEEfc9 +DODOV2RouteHelper Address: 0x55793C2c8A796cCE00EF2D1a86CCA2E0399BF285 +DODOV2Proxy02 Address: 0x25B2f945Fec30F34b05d416C7c0b5c6c51A3ADdC +Init DODOProxyV2 Tx: 0xeb923b51cc4ea3ec08107b3a7850471d523a358257e18a6abe3bbbc6e1933efa +==================================================== +network type: matic +Deploy time: 2021/5/11 上午11:10:26 +Deploy type: V2 +multiSigAddress: 0x7e83d9d94837eE82F0cc18a691da6f42F03F1d86 +==================================================== +network type: matic +Deploy time: 2021/5/11 上午11:11:25 +Deploy type: V2 +multiSigAddress: 0x16CC37d06FE5061CD0023fb8d142ABaAbB396A2b +==================================================== +network type: matic +Deploy time: 2021/5/11 上午11:15:24 +Deploy type: V2 +multiSigAddress: 0x16CC37d06FE5061CD0023fb8d142ABaAbB396A2b +==================================================== +network type: matic +Deploy time: 2021/5/11 上午11:17:21 +Deploy type: V2 +multiSigAddress: 0x16CC37d06FE5061CD0023fb8d142ABaAbB396A2b +DODOSellHelper Address: 0xDfaf9584F5d229A9DBE5978523317820A8897C5A +DODOCalleeHelperAddress: 0x2BBD66fC4898242BDBD2583BBe1d76E8b8f71445 +DODOV1RouterHelper Address: 0x18DFdE99F578A0735410797e949E8D3e2AFCB9D2 +CloneFactoryAddress: 0x729f7f44bf64Ce814716b6261e267DbE6cdf021c +DefaultMtFeeRateAddress: 0x18b0bD918b55f995Fd404B872404378A62cb403b +Init DefaultMtFeeRateAddress Tx: 0x70107ad441ad6b7d32e5fec2f4eaa3ef93761d8aa7387efa726a65807fbf7ce0 +DefaultPermissionAddress: 0x550B2e7bD9605b8dcdd20d01bA73f1feB6ce289b +Init DefaultPermissionAddress Tx: 0x095d5c4301448893c74d6649ad133b9c5f2fffcab4d51a7bffa8360e8e4cbff8 +DvmTemplateAddress: 0x041ABa00c57Dd47abC37A2931dF569a2A2cc57Be +DspTemplateAddress: 0x72d220cE168C4f361dD4deE5D826a01AD8598f6C +DppTemplateAddress: 0x80930Cb1849F7D42531506fF45E66724338A821b +DppAdminTemplateAddress: 0xB5Dc5E183c2aCf02aB879A8569aB4EDAf147d537 +CpTemplateAddress: 0xf50BDc9E90B7a1c138cb7935071b85c417C4cb8e +ERC20TemplateAddress: 0xE8C9A78725D0451FA19878D5f8A3dC0D55FECF25 +MintableERC20TemplateAddress: 0x7737fd30535c69545deeEa54AB8Dd590ccaEBD3c +ERC20FactoryAddress: 0xaeB5CF31b97dce6134e416129845e01106fFB177 +DODOApprove Address: 0x9aE501385Bc7996A2A4a1FBb00c8d3820611BCB5 +DODOApproveProxy Address: 0x738Ebf387A0CE0eb46b0eF8Fa5DEa2EaE6B1Df51 +DvmFactoryAddress: 0xbAb9F4ff4A19a0e8EEBC56b06750253228ffAc6E +Init DvmFactory Tx: 0xf674e3f917c602d41e911f4f8c0173f826c9ff2acccf1501b2c790e9271c552c +DppFactoryAddress: 0xE55154D09265b18aC7CDAC6E646672A5460389a1 +Init DppFactory Tx: 0x81d2fab9f9f3c894d43f355fd1ba70b3e07951fc8fe21c04aa9a430daa4b66ad +CpFactoryAddress: 0x85351262f7474Ebe23FfAcD633cf20A491F1325D +Init CpFactory Tx: 0x73f56fce4b149093e603b15cb6acfa7e489385067fb35912d2228344a219cda9 +DspFactoryAddress: 0x44D5dF24d5Ef52A791D6436Fa45A8D426f6de34e +Init DspFactory Tx: 0x4a1f64ac7d48184dae5fbec62dc5140f169839bccbb2e0855858a6a6f56fc2e3 +DODOV2RouteHelper Address: 0x9B64c81ba54eA51e1f6B7fefb3cfF8AA6F1e2A09 +DODODspProxy Address: 0x5515363c0412AdD5c72d3E302fE1bD7dCBCF93Fe +==================================================== +==================================================== +network type: matic +Deploy time: 2021/5/11 下午12:04:30 +Deploy type: V2 +multiSigAddress: 0x16CC37d06FE5061CD0023fb8d142ABaAbB396A2b +==================================================== +network type: matic +Deploy time: 2021/5/11 下午12:05:19 +Deploy type: V2 +multiSigAddress: 0x16CC37d06FE5061CD0023fb8d142ABaAbB396A2b +==================================================== +network type: matic +Deploy time: 2021/5/11 下午12:06:33 +Deploy type: V2 +multiSigAddress: 0x16CC37d06FE5061CD0023fb8d142ABaAbB396A2b +UpCrowdPoolingFactory address: 0x335aC99bb3E51BDbF22025f092Ebc1Cf2c5cC619 +Init UpCpFactory Tx: 0xfa4c72a31a0b31c453fb7195a9fbc38723ecfbd7f43104883a65eb0d2fd24102 +DODODspProxy Address: 0x40672211D4310ad71daDc8cDE7Aa3Fb90d420855 +==================================================== +network type: matic +Deploy time: 2021/5/11 下午2:33:18 +Deploy type: V2 +multiSigAddress: 0x16CC37d06FE5061CD0023fb8d142ABaAbB396A2b +==================================================== +network type: matic +Deploy time: 2021/5/11 下午2:34:25 +Deploy type: V2 +multiSigAddress: 0x16CC37d06FE5061CD0023fb8d142ABaAbB396A2b +DspFactoryAddress: 0xa356867fDCEa8e71AEaF87805808803806231FdC +Init DspFactory Tx: 0x7bb88a8910a2bb324920d732456c047a007784f04e8c8bb06d6204b387718429 +DODOV2RouteHelper Address: 0xa2CB66EBB947D217f61510882096F6e95c1DE97D +DODODspProxy Address: 0xfDDCA6ffCE24dF5bE3e8AaD32081822f86178048 +CpProxy address: 0x5480B32c03647ff5E5A653F0465E798DBe558B57 +DODOV2Proxy02 Address: 0x45894C062E6f4E58B257e0826675355305dfef0d +Init DODOProxyV2 Tx: 0x4c1f2f9889776da4d118955accd3aaa05fc1eaa318707e8fe59706a067db4705 +DODOApproveProxy Init tx: 0x0bf2c291e8c3bcc1db6596eddb4e97cac3c7f0ec66166b5eb64e888b0b0f5599 +==================================================== +network type: matic +Deploy time: 2021/5/11 下午2:56:31 +Deploy type: V2 - Adapter +==================================================== +network type: matic +Deploy time: 2021/5/11 下午2:57:22 +Deploy type: V2 - Adapter +DODOV1Adapter Address: 0xB5397B2210f49e96a5EB2c9747Aa2bD9397d90C0 +DODOV2Adapter Address: 0x02fCB21dc1cf221939C1d4277fB54016b5d32bC7 +UniAdapter Address: 0xbef0C8Cd420b76e9d31509abbfd7f8C9f664527c +==================================================== +network type: matic +Deploy time: 2021/5/17 下午8:30:23 +Deploy type: V2 +multiSigAddress: 0x3CD6D7F5fF977bf8069548eA1F9441b061162b42 +DODOApprove Address: 0x6D310348d5c12009854DFCf72e0DF9027e8cb4f4 +DODOApproveProxy Address: 0x01FEEA29da5Ae41B0b5F6b10b93EE34752eF80d7 +==================================================== +network type: matic +Deploy time: 2021/5/17 下午8:37:52 +Deploy type: V2 +multiSigAddress: 0x3CD6D7F5fF977bf8069548eA1F9441b061162b42 +DvmFactoryAddress: 0x79887f65f83bdf15Bcc8736b5e5BcDB48fb8fE13 +Init DvmFactory Tx: 0x7a84c3080ebcd35a4412718cef3534ff16666175045e10706684a53fa9a0fb96 +DppFactoryAddress: 0x95E887aDF9EAa22cC1c6E3Cb7f07adC95b4b25a8 +Init DppFactory Tx: 0x9f627ebab9d50b628f1a394850d9463077d66bff168003d0b429ddef51931039 +UpCrowdPoolingFactory address: 0x326c788c4C236f2bceC9476C66F8593Aa31be4Fc +Init UpCpFactory Tx: 0xa426e3ac204d75dd92c87d57f2de2cdb1f2b78be2ef39c60fee4db650d4f5621 +CpFactoryAddress: 0x42ddEc68db70F5992eB7AB22dfaD8A57109841C9 +Init CpFactory Tx: 0xa39e976f26757036d200087e2b506fff581cc5a58c4400e03c579d51b8e8f362 +DspFactoryAddress: 0x43C49f8DD240e1545F147211Ec9f917376Ac1e87 +Init DspFactory Tx: 0xe34a2f61785fd7105d382874cde40c8eb553876e620bd532edda07ed52b290d7 +DODOV2RouteHelper Address: 0x324c747885a88EA6f8115C46E0605C828ed527D3 +DODODspProxy Address: 0xA3dfF6ae0F73f0970E31Da63B3736F7D3CEF683e +CpProxy address: 0xfdD51aAba2f949195a460121aA3f2D392d2524A9 +DODOV2Proxy02 Address: 0xa222e6a71D1A1Dd5F279805fbe38d5329C1d0e70 +Init DODOProxyV2 Tx: 0x09d5e850c04061af343a8857f5d17f764b2e5cc99c0532ac6905f65f02330108 +DODOApproveProxy Init tx: 0xe752cd6c4e5272c3d3c930878129894b7ebbcb77264e44ffd95cce63e23255f9