Files
dodo-contractV2/migrations/5_deploy_nft.js

187 lines
7.4 KiB
JavaScript
Raw Normal View History

2021-04-08 00:31:25 +08:00
const fs = require("fs");
const { deploySwitch } = require('../truffle-config.js')
const file = fs.createWriteStream("../deploy-nft.txt", { 'flags': 'a' });
let logger = new console.Console(file, file);
const { GetConfig } = require("../configAdapter.js")
const DODOApproveProxy = artifacts.require("DODOApproveProxy");
const NFTCollateralVault = artifacts.require("NFTCollateralVault");
const Fragment = artifacts.require("Fragment");
const DODONFTRegistry = artifacts.require("DODONFTRegistry");
const DODONFTProxy = artifacts.require("DODONFTProxy");
2021-04-09 14:58:30 +08:00
const DODONFTRouteHelper = artifacts.require("DODONFTRouteHelper");
2021-04-08 00:31:25 +08:00
const InitializableERC721 = artifacts.require("InitializableERC721");
const InitializableERC1155 = artifacts.require("InitializableERC1155");
const NFTTokenFactory = artifacts.require("NFTTokenFactory");
2021-04-15 10:38:19 +08:00
const MysteryBoxV1 = artifacts.require("MysteryBoxV1");
const RandomGenerator = artifacts.require("RandomGenerator");
2021-04-08 00:31:25 +08:00
module.exports = async (deployer, network, accounts) => {
let CONFIG = GetConfig(network, accounts)
if (CONFIG == null) return;
//Need Deploy first
let WETHAddress = CONFIG.WETH;
let DVMTemplateAddress = CONFIG.DVM;
let CloneFactoryAddress = CONFIG.CloneFactory;
let DODOApproveProxyAddress = CONFIG.DODOApproveProxy;
2021-04-08 16:16:11 +08:00
if (DODOApproveProxyAddress == "" || CloneFactoryAddress == "") return;
2021-04-08 00:31:25 +08:00
2021-04-30 12:29:35 +08:00
let MtFeeRateModelAddress = CONFIG.FeeRateModel;
2021-04-08 00:31:25 +08:00
let FragmentAddress = CONFIG.Fragment;
let NFTCollateralVaultAddress = CONFIG.NFTCollateralVault;
2021-04-09 14:58:30 +08:00
let DODONFTRouteHelperAddress = CONFIG.DODONFTRouteHelper;
2021-04-08 00:31:25 +08:00
let DODONFTRegistryAddress = CONFIG.DODONFTRegistry;
let DODONFTProxyAddress = CONFIG.DODONFTProxy;
let ERC721Address = CONFIG.InitializableERC721;
let ERC1155Address = CONFIG.InitializableERC1155;
let NFTTokenFactoryAddress = CONFIG.NFTTokenFactory;
2021-04-15 10:38:19 +08:00
let MysteryBoxV1Address = CONFIG.MysteryBoxV1;
let RandomGeneratorAddress = CONFIG.RandomGenerator;
let RandomPool = CONFIG.RandomPool;
2021-04-08 00:31:25 +08:00
let multiSigAddress = CONFIG.multiSigAddress;
let defaultMaintainer = CONFIG.defaultMaintainer;
2021-04-15 10:38:19 +08:00
if (deploySwitch.MYSTERYBOX_V1) {
logger.log("====================================================");
logger.log("network type: " + network);
logger.log("Deploy time: " + new Date().toLocaleString());
logger.log("Deploy type: MysteryBoxV1");
if (RandomGeneratorAddress == "") {
2021-04-15 13:40:48 +08:00
await deployer.deploy(RandomGenerator, RandomPool);
2021-04-15 10:38:19 +08:00
RandomGeneratorAddress = RandomGenerator.address;
logger.log("RandomGeneratorAddress: ", RandomGeneratorAddress);
}
if (MysteryBoxV1Address == "") {
await deployer.deploy(MysteryBoxV1);
MysteryBoxV1Address = MysteryBoxV1.address;
logger.log("MysteryBoxV1Address: ", MysteryBoxV1Address);
const MysteryBoxV1Instance = await MysteryBoxV1.at(MysteryBoxV1Address);
var tx = await MysteryBoxV1Instance.init(
"DODOMysteryBox",
"DODOBox",
"",
multiSigAddress,
RandomGeneratorAddress
);
logger.log("Init MysteryBoxV1 Tx:", tx.tx);
}
}
2021-04-08 00:31:25 +08:00
if (deploySwitch.DEPLOY_NFT) {
logger.log("====================================================");
logger.log("network type: " + network);
logger.log("Deploy time: " + new Date().toLocaleString());
logger.log("Deploy type: NFT");
logger.log("multiSigAddress: ", multiSigAddress)
//ERC721
if (ERC721Address == "") {
await deployer.deploy(InitializableERC721);
ERC721Address = InitializableERC721.address;
logger.log("ERC721Address: ", ERC721Address);
}
//ERC1155
if (ERC1155Address == "") {
await deployer.deploy(InitializableERC1155);
ERC1155Address = InitializableERC1155.address;
logger.log("ERC1155Address: ", ERC1155Address);
}
//NFTTokenFactory
if (NFTTokenFactoryAddress == "") {
await deployer.deploy(
NFTTokenFactory,
CloneFactoryAddress,
ERC721Address,
ERC1155Address
);
NFTTokenFactoryAddress = NFTTokenFactory.address;
logger.log("NFTTokenFactoryAddress: ", NFTTokenFactoryAddress);
}
//NFTRegister
if (DODONFTRegistryAddress == "") {
await deployer.deploy(DODONFTRegistry);
DODONFTRegistryAddress = DODONFTRegistry.address;
logger.log("DODONFTRegistryAddress: ", DODONFTRegistryAddress);
const DODONFTRegistrynstance = await DODONFTRegistry.at(DODONFTRegistryAddress);
var tx = await DODONFTRegistrynstance.initOwner(multiSigAddress);
logger.log("Init DODONFTRegistryAddress Tx:", tx.tx);
2021-04-09 14:58:30 +08:00
await deployer.deploy(
DODONFTRouteHelper,
DODONFTRegistryAddress
);
DODONFTRouteHelperAddress = DODONFTRouteHelper.address;
logger.log("DODONFTRouteHelperAddress: ", DODONFTRouteHelperAddress);
}
//DODONFTRouteHelper
if (DODONFTRouteHelperAddress == "") {
await deployer.deploy(
DODONFTRouteHelper,
DODONFTRegistryAddress
);
DODONFTRouteHelperAddress = DODONFTRouteHelper.address;
logger.log("DODONFTRouteHelperAddress: ", DODONFTRouteHelperAddress);
2021-04-08 00:31:25 +08:00
}
//Vault
if (NFTCollateralVaultAddress == "") {
await deployer.deploy(NFTCollateralVault);
2021-04-09 14:58:30 +08:00
NFTCollateralVaultAddress = NFTCollateralVault.address;
logger.log("NFTCollateralVaultAddress: ", NFTCollateralVaultAddress);
2021-04-08 00:31:25 +08:00
}
//Frag
if (FragmentAddress == "") {
await deployer.deploy(Fragment);
FragmentAddress = Fragment.address;
logger.log("FragmentAddress: ", FragmentAddress);
}
if (DODONFTProxyAddress == "") {
await deployer.deploy(
DODONFTProxy,
CloneFactoryAddress,
WETHAddress,
DODOApproveProxyAddress,
defaultMaintainer,
2021-04-30 12:29:35 +08:00
MtFeeRateModelAddress,
2021-04-08 00:31:25 +08:00
NFTCollateralVaultAddress,
FragmentAddress,
DVMTemplateAddress,
DODONFTRegistryAddress
);
DODONFTProxyAddress = DODONFTProxy.address;
logger.log("DODONFTProxyAddress: ", DODONFTProxyAddress);
const DODONFTProxyInstance = await DODONFTProxy.at(DODONFTProxyAddress);
var tx = await DODONFTProxyInstance.initOwner(multiSigAddress);
logger.log("Init DODONFTProxyAddress Tx:", tx.tx);
}
2021-04-30 12:29:35 +08:00
if (network == 'kovan') {
2021-04-08 00:31:25 +08:00
const DODOApproveProxyInstance = await DODOApproveProxy.at(DODOApproveProxyAddress);
var tx = await DODOApproveProxyInstance.unlockAddProxy(DODONFTProxyAddress);
logger.log("DODOApproveProxy unlockAddProxy tx: ", tx.tx);
tx = await DODOApproveProxyInstance.addDODOProxy();
logger.log("DODOApproveProxy addDODOProxy tx: ", tx.tx);
2021-04-09 20:07:39 +08:00
const DODONFTRegistrynstance = await DODONFTRegistry.at(DODONFTRegistryAddress);
2021-04-28 00:04:40 +08:00
var tx = await DODONFTRegistrynstance.addAdminList(DODONFTProxyAddress);
2021-04-09 20:07:39 +08:00
logger.log("Add AdminList on DODONFTRegistry Tx:", tx.tx);
2021-04-08 00:31:25 +08:00
}
}
};