This commit is contained in:
owen05
2021-04-09 14:58:30 +08:00
parent 7f3932d8f3
commit 85ba335233
7 changed files with 172 additions and 14 deletions

View File

@@ -13,9 +13,10 @@ import {IERC721} from "../../intf/IERC721.sol";
import {IERC721Receiver} from "../../intf/IERC721Receiver.sol";
import {IERC1155} from "../../intf/IERC1155.sol";
import {IERC1155Receiver} from "../../intf/IERC1155Receiver.sol";
import {ReentrancyGuard} from "../../lib/ReentrancyGuard.sol";
contract NFTCollateralVault is InitializableOwnable, IERC721Receiver, IERC1155Receiver {
contract NFTCollateralVault is InitializableOwnable, IERC721Receiver, IERC1155Receiver,ReentrancyGuard {
using SafeMath for uint256;
// ============ Storage ============
@@ -51,11 +52,11 @@ contract NFTCollateralVault is InitializableOwnable, IERC721Receiver, IERC1155Re
emit OwnershipTransferred(_OWNER_, newOwner);
}
function createFragment(address nftProxy, bytes calldata data) external onlyOwner {
function createFragment(address nftProxy, bytes calldata data) external preventReentrant onlyOwner {
require(nftProxy != address(0), "DODONftVault: PROXY_INVALID");
_OWNER_ = nftProxy;
(bool success, ) = nftProxy.call(data);
require(success, "DODONftVault: TRANSFER_OWNER_FAILED");
nftProxy.call(data);
// require(success, "DODONftVault: TRANSFER_OWNER_FAILED");
emit OwnershipTransferred(_OWNER_, nftProxy);
emit CreateFragment();
}

View File

@@ -0,0 +1,68 @@
/*
Copyright 2020 DODO ZOO.
SPDX-License-Identifier: Apache-2.0
*/
pragma solidity 0.6.9;
pragma experimental ABIEncoderV2;
import {IDODOV2} from "../intf/IDODOV2.sol";
contract DODONFTRouteHelper {
address public immutable _NFT_REGISTER_;
struct PairDetail {
uint256 i;
uint256 K;
uint256 B;
uint256 Q;
uint256 B0;
uint256 Q0;
uint256 R;
uint256 lpFeeRate;
uint256 mtFeeRate;
address baseToken;
address quoteToken;
address curPair;
uint256 pairVersion;
}
constructor(address nftRegistry) public {
_NFT_REGISTER_ = nftRegistry;
}
function getPairDetail(address token0,address token1,address userAddr) external view returns (PairDetail[] memory res) {
(address[] memory baseToken0DVM, address[] memory baseToken1DVM) = IDODOV2(_NFT_REGISTER_).getDODOPoolBidirection(token0,token1);
uint256 len = baseToken0DVM.length + baseToken1DVM.length;
res = new PairDetail[](len);
for(uint8 i = 0; i < len; i++) {
PairDetail memory curRes = PairDetail(0,0,0,0,0,0,0,0,0,address(0),address(0),address(0),2);
address cur;
if(i < baseToken0DVM.length) {
cur = baseToken0DVM[i];
curRes.baseToken = token0;
curRes.quoteToken = token1;
} else {
cur = baseToken1DVM[i - baseToken0DVM.length];
curRes.baseToken = token1;
curRes.quoteToken = token0;
}
(
curRes.i,
curRes.K,
curRes.B,
curRes.Q,
curRes.B0,
curRes.Q0,
curRes.R
) = IDODOV2(cur).getPMMStateForCall();
(curRes.lpFeeRate, curRes.mtFeeRate) = IDODOV2(cur).getUserFeeRate(userAddr);
curRes.curPair = cur;
res[i] = curRes;
}
}
}

View File

@@ -94,7 +94,8 @@ contract DODONFTProxy is ReentrancyGuard, InitializableOwnable {
ICollateralVault(newVault).init(msg.sender, name, baseURI);
emit CreateNFTCollateralVault(msg.sender, newVault, name, baseURI);
}
//Stake 碎片
function createFragment(
address quoteToken,
address vaultPreOwner,