diff --git a/config/kovan-config.js b/config/kovan-config.js index fcc1714..0f334bc 100644 --- a/config/kovan-config.js +++ b/config/kovan-config.js @@ -67,9 +67,9 @@ module.exports = { Fragment: "0x36ed21f19B0cf0c1E571A8C3A6953a5778E48B5a", NFTCollateralVault: "0x78B7AFf2E5fA95B1E7E16679645FB65a850ed6AB", - InitializableERC721: "0xBF243C5626A0766031d57269c01F6eFd57B603fc", - InitializableERC1155: "0x33221F3aFC8b5F7eEB1bf6e836ECB0bA6a78759b", - NFTTokenFactory: "0x57d7A27e9E7206F28fe98D0A0228a03afF5b6e77", + InitializableERC721: "", + InitializableERC1155: "", + NFTTokenFactory: "", DODONFTRegistry: "0xF405372b7808363DCfbb5Eb81204889B7a69Aa3e", DODONFTProxy: "0x41Eb1FFC3d6474Ee4f4Aaf335a09cD411ADDDf1f", diff --git a/contracts/Factory/NFTTokenFactory.sol b/contracts/Factory/NFTTokenFactory.sol index aaa7447..c7d7ec8 100644 --- a/contracts/Factory/NFTTokenFactory.sol +++ b/contracts/Factory/NFTTokenFactory.sol @@ -49,7 +49,7 @@ contract NFTTokenFactory { string memory baseUrl ) external returns (address newERC721) { newERC721 = ICloneFactory(_CLONE_FACTORY_).clone(_ERC721_TEMPLATE_); - InitializableERC721(newERC721).init("DODONFT", "DODONFT", baseUrl); + InitializableERC721(newERC721).init(msg.sender, "DODONFT", "DODONFT", baseUrl); _USER_ERC721_REGISTRY_[msg.sender].push(newERC721); emit NewERC721(newERC721, msg.sender); } @@ -59,7 +59,7 @@ contract NFTTokenFactory { string memory baseUrl ) external returns (address newERC1155) { newERC1155 = ICloneFactory(_CLONE_FACTORY_).clone(_ERC1155_TEMPLATE_); - InitializableERC1155(newERC1155).init(amount, baseUrl); + InitializableERC1155(newERC1155).init(msg.sender, amount, baseUrl); _USER_ERC1155_REGISTRY_[msg.sender].push(newERC1155); emit NewERC1155(newERC1155, msg.sender); } diff --git a/contracts/external/ERC1155/InitializableERC1155.sol b/contracts/external/ERC1155/InitializableERC1155.sol index dcd54ec..3e2e8cf 100644 --- a/contracts/external/ERC1155/InitializableERC1155.sol +++ b/contracts/external/ERC1155/InitializableERC1155.sol @@ -24,13 +24,13 @@ contract InitializableERC1155 is IERC165, IERC1155, IERC1155MetadataURI { string private _uri; - function init( + address creator, uint256 amount, string memory baseUrI ) public { _setURI(baseUrI); - _mint(msg.sender, 0, amount ,""); + _mint(creator, 0, amount ,""); } function supportsInterface(bytes4 interfaceId) public view override returns (bool) { diff --git a/contracts/external/ERC721/InitializableERC721.sol b/contracts/external/ERC721/InitializableERC721.sol index a3825f4..2a7700c 100644 --- a/contracts/external/ERC721/InitializableERC721.sol +++ b/contracts/external/ERC721/InitializableERC721.sol @@ -43,6 +43,7 @@ contract InitializableERC721 is IERC165, IERC721, IERC721Metadata { function init( + address creator, string memory name, string memory symbol, string memory baseUrI @@ -50,7 +51,7 @@ contract InitializableERC721 is IERC165, IERC721, IERC721Metadata { _name = name; _symbol = symbol; _baseURI = baseUrI; - _safeMint(msg.sender, 0); + _mint(creator, 0); } diff --git a/test/DODONFT/collateralVault.test.ts b/test/DODONFT/collateralVault.test.ts deleted file mode 100644 index e69de29..0000000 diff --git a/test/DODONFT/feeDistributer.test.ts b/test/DODONFT/feeDistributer.test.ts deleted file mode 100644 index e69de29..0000000 diff --git a/test/DODONFT/fragment.test.ts b/test/DODONFT/fragment.test.ts deleted file mode 100644 index e69de29..0000000 diff --git a/test/DODONFT/nftMainFlow.test.ts b/test/DODONFT/nftMainFlow.test.ts new file mode 100644 index 0000000..396dfb5 --- /dev/null +++ b/test/DODONFT/nftMainFlow.test.ts @@ -0,0 +1,120 @@ +/* + + Copyright 2020 DODO ZOO. + SPDX-License-Identifier: Apache-2.0 + +*/ +import { decimalStr, mweiStr } from '../utils/Converter'; +import { logGas } from '../utils/Log'; +import { NFTContext, getDODONftContext } from '../utils/NFTContext'; +import { assert } from 'chai'; +import * as contracts from '../utils/Contracts'; +import { Contract } from 'web3-eth-contract'; + +let author: string; +let user1: string; +let user2: string; + +async function init(ctx: NFTContext): Promise { + author = ctx.SpareAccounts[1]; + user1 = ctx.SpareAccounts[2]; + user2 = ctx.SpareAccounts[3]; + + await ctx.mintTestToken(user1, ctx.USDT, mweiStr("10000")); + await ctx.mintTestToken(user2, ctx.USDT, mweiStr("10000")); + + await ctx.approveProxy(user1); + await ctx.approveProxy(user2); +} + +async function createNFTVault(ctx: NFTContext) { + var tx = await ctx.NFTProxy.methods.createNFTCollateralVault( + "DODONFT", + "https://app.dodoex.io" + ).send(ctx.sendParam(author)); + + return tx.events['CreateNFTCollateralVault']['returnValues']['vault']; +} + +async function createERC721(ctx:NFTContext) { + var tx = await ctx.NFTTokenFacotry.methods.createERC721( + "https://app.dodoex.io" + ).send(ctx.sendParam(author)); + return tx.events['NewERC721']['returnValues']['erc721']; +} + + +describe("DODONFT", () => { + let snapshotId: string; + let ctx: NFTContext; + + + before(async () => { + let ETH = await contracts.newContract( + contracts.WETH_CONTRACT_NAME + ); + ctx = await getDODONftContext(ETH.options.address); + await init(ctx); + }); + + beforeEach(async () => { + snapshotId = await ctx.EVM.snapshot(); + }); + + afterEach(async () => { + await ctx.EVM.reset(snapshotId); + }); + + describe("DODONFTMainFlow", () => { + it("createNFTVault", async () => { + await logGas(await ctx.NFTProxy.methods.createNFTCollateralVault( + "DODOVault", + "https://app.dodoex.io" + ), ctx.sendParam(author), "createNFTVault"); + }); + + it("createTokenAndTransferToVault", async () => { + var erc721Address = await createERC721(ctx); + var vaultAddress = await createNFTVault(ctx); + var nftVaultInstance = contracts.getContractWithAddress(contracts.NFT_VAULT, vaultAddress); + var erc721Instance = contracts.getContractWithAddress(contracts.ERC721, erc721Address); + await erc721Instance.methods.safeTransferFrom(author, vaultAddress, 0).send(ctx.sendParam(author)); + var nftIndex = await nftVaultInstance.methods.getIdByTokenIdAndAddr(erc721Address,0).call(); + var nftInfo = await nftVaultInstance.methods.getNftInfoById(nftIndex).call(); + assert(nftInfo.amount, '1') + assert(nftInfo.tokenId, '0') + }); + + it("createFragment", async () => { + + }); + + it("stakeToFeeDistributor", async () => { + + }); + + it("dvm-trade", async () => { + + }); + + it("claim", async () => { + + }); + + it("unstake", async () => { + + }); + + it("buyout", async () => { + + }); + + it("redeem", async () => { + + }); + + it("withdrawNFTFromVault", async () => { + + }); + }); +}); diff --git a/test/DODONFT/nftProxy.test.ts b/test/DODONFT/nftProxy.test.ts deleted file mode 100644 index 05dd655..0000000 --- a/test/DODONFT/nftProxy.test.ts +++ /dev/null @@ -1,69 +0,0 @@ -/* - - Copyright 2020 DODO ZOO. - SPDX-License-Identifier: Apache-2.0 - -*/ -import { decimalStr, mweiStr } from '../utils/Converter'; -import { logGas } from '../utils/Log'; -import { NFTContext, getDODONftContext } from '../utils/NFTContext'; -import { assert } from 'chai'; -import * as contracts from '../utils/Contracts'; -import { Contract } from 'web3-eth-contract'; - -let author: string; -let user1: string; -let user2: string; - -async function init(ctx: NFTContext): Promise { - author = ctx.SpareAccounts[1]; - user1 = ctx.SpareAccounts[2]; - user2 = ctx.SpareAccounts[3]; - - await ctx.mintTestToken(user1, ctx.USDT, mweiStr("10000")); - await ctx.mintTestToken(user2, ctx.USDT, mweiStr("10000")); - - await ctx.approveProxy(user1); - await ctx.approveProxy(user2); -} - - -describe("DODONFTProxy", () => { - let snapshotId: string; - let ctx: NFTContext; - - - before(async () => { - let ETH = await contracts.newContract( - contracts.WETH_CONTRACT_NAME - ); - ctx = await getDODONftContext(ETH.options.address); - await init(ctx); - }); - - beforeEach(async () => { - snapshotId = await ctx.EVM.snapshot(); - }); - - afterEach(async () => { - await ctx.EVM.reset(snapshotId); - }); - - describe("DODONFTProxy", () => { - it("createNFTVault", async () => { - - }); - - it("buyout", async () => { - - }); - - it("AddLiquidity", async () => { - - }); - - it("AddLiquidity", async () => { - - }); - }); -}); diff --git a/test/DODONFT/nftTokenFactory.test.ts b/test/DODONFT/nftTokenFactory.test.ts deleted file mode 100644 index e69de29..0000000 diff --git a/truffle-test.sh b/truffle-test.sh index 9d738d7..bb25922 100644 --- a/truffle-test.sh +++ b/truffle-test.sh @@ -56,6 +56,12 @@ then truffle test ./test/DODOMineV2/vDODOMine.test.ts fi +if [ "$1"x = "nft"x ] +then + truffle test ./test/DODONFT/nftMainFlow.test.ts +fi + + # if [ "$1"x = "route-incentive"x ] # then # truffle test ./test/Route/Incentive.test.ts