const BEHero = artifacts.require("tokens/erc721/BEHero"); const BEEquipment = artifacts.require("tokens/erc721/BEEquipment"); const BECoin = artifacts.require("tokens/erc20/BECoin"); const BEGold = artifacts.require("tokens/erc20/BEGold"); const BEChip1155 = artifacts.require("tokens/erc1155/BEChip1155"); const BEShard = artifacts.require("tokens/erc1155/BEShard"); const MarketPlace = artifacts.require("market/MarketPlace"); // const BEBoxMall = artifacts.require('market/BEBoxMall') const MinterFactory = artifacts.require("logic/MinterFactory"); const UserMinterFactory = artifacts.require("logic/UserMinterFactory"); const EvolveFactory = artifacts.require("logic/EvolveFactory"); const UserEvolveFactory = artifacts.require("logic/UserEvolveFactory"); const BENftMall = artifacts.require("market/BENftMall"); const NftChipLocker = artifacts.require("logic/NftChipLocker"); const config = require("../config/config"); module.exports = async function main(callback) { try { // Our code will go here const accounts = await web3.eth.getAccounts(); console.log(accounts); const heroInstance = await BEHero.deployed(); const equipInstance = await BEEquipment.deployed(); const chipInstance = await BEChip1155.deployed(); const shardInstance = await BEShard.deployed(); const coinInstance = await BECoin.deployed(); const goldInstance = await BEGold.deployed(); config.market.paymentTokens.push(coinInstance.address); config.market.paymentTokens.push(goldInstance.address); await heroInstance.updateBaseURI(config.token.baseTokenURI); console.log("BEHero baseURI update success."); await equipInstance.updateBaseURI(config.token.baseTokenURI); console.log("Equip baseURI update success."); const marketInstance = await MarketPlace.deployed(); if (marketInstance) { await marketInstance.setFeeToAddress(config.market.feeToAddress); await marketInstance.setTransactionFee(400); await marketInstance.setPaymentTokens(config.market.paymentTokens); console.log(`finish update market config`); await heroInstance.grantLockRole(marketInstance.address); await heroInstance.setApprovalForAll(marketInstance.address, true); console.log("finish heroInstance.addApprovalWhitelist"); await equipInstance.grantLockRole(marketInstance.address); await equipInstance.setApprovalForAll(marketInstance.address, true); console.log("finish equipInstance.addApprovalWhitelist"); await chipInstance.grantLockRole(marketInstance.address); await chipInstance.setApprovalForAll(marketInstance.address, true); console.log("finish chipInstance.addApprovalWhitelist"); await heroInstance.grantLockRole(config.admins.admin); await equipInstance.grantLockRole(config.admins.admin); await chipInstance.grantLockRole(config.admins.admin); await shardInstance.grantLockRole(config.admins.admin); console.log( `Allow operation ${marketInstance.address} to reduce gas fee` ); } const factoryInstance = await MinterFactory.deployed(); if (!factoryInstance) { console.error("no factoryInstance"); return; } await factoryInstance.init([ heroInstance.address, equipInstance.address, chipInstance.address, shardInstance.address, ]); await factoryInstance.setFeeToAddress(config.market.feeToAddress); await factoryInstance.updateExecutor(config.admins.admin); await heroInstance.setMintFactory(factoryInstance.address); await equipInstance.setMintFactory(factoryInstance.address); await chipInstance.setMintFactory(factoryInstance.address); await shardInstance.setMintFactory(factoryInstance.address); console.log( `Allow factory ${factoryInstance.address} to mint contract \n hero: ${heroInstance.address}, \n equip: ${equipInstance.address}, \n chip: ${chipInstance.address}` ); await heroInstance.grantBurnRole(factoryInstance.address); await equipInstance.grantBurnRole(factoryInstance.address); await chipInstance.grantBurnRole(factoryInstance.address); await shardInstance.grantBurnRole(factoryInstance.address); console.log( `Allow factory ${factoryInstance.address} to burn contract \n hero: ${heroInstance.address}, \n equip: ${equipInstance.address}, \n chip: ${chipInstance.address}` ); const userFactoryInstance = await UserMinterFactory.deployed(); if (!userFactoryInstance) { console.error("no userFactoryInstance"); return; } await factoryInstance.addApprovalList(userFactoryInstance.address); await userFactoryInstance.init([ heroInstance.address, equipInstance.address, chipInstance.address, shardInstance.address, factoryInstance.address, ]); const proxyInstance = await EvolveFactory.deployed(); if (!proxyInstance) { console.error("no proxyInstance"); return; } await proxyInstance.init(chipInstance.address); await proxyInstance.addNFTTokenSupport(heroInstance.address); await proxyInstance.addNFTTokenSupport(equipInstance.address); await proxyInstance.updateExecutor(config.admins.admin); await heroInstance.grantBurnRole(proxyInstance.address); await equipInstance.grantBurnRole(proxyInstance.address); await chipInstance.grantBurnRole(proxyInstance.address); console.log( `Allow proxy ${proxyInstance.address} to burn contract \n hero: ${heroInstance.address}, \n equip: ${equipInstance.address}, \n chip: ${chipInstance.address}` ); const userProxyInstance = await UserEvolveFactory.deployed(); if (!userProxyInstance) { console.error("no userProxyInstance"); return; } await proxyInstance.addApprovalList(userProxyInstance.address); await userProxyInstance.init(proxyInstance.address); // const boxInstance = await BEBoxMall.deployed(); // if (!boxInstance) { // console.error("no boxInstance"); // return; // } // await boxInstance.setPaymentReceivedAddress(config.market.mallFeeAddress); // console.log( // `update payment received address: ${config.market.mallFeeAddress}` // ); const nftMallInstance = await BENftMall.deployed(); if (nftMallInstance) { await nftMallInstance.setFeeToAddress(config.market.feeToAddress); await nftMallInstance.setPaymentTokens(config.market.paymentTokens); await nftMallInstance.addNFTTokenSupport(heroInstance.address); await nftMallInstance.addNFTTokenSupport(equipInstance.address); await nftMallInstance.addNFTTokenSupport(chipInstance.address); await heroInstance.setMintFactory(nftMallInstance.address); await equipInstance.setMintFactory(nftMallInstance.address); await chipInstance.setMintFactory(nftMallInstance.address); console.log("update nftMallInstance settings success"); } const lockerInstance = await NftChipLocker.deployed(); if (lockerInstance) { await lockerInstance.addNFTTokenSupport(heroInstance.address); await lockerInstance.addNFTTokenSupport(equipInstance.address); await lockerInstance.addNFTTokenSupport(chipInstance.address); console.log("update NftChipLocker addNFTTokenSupport success"); } callback(0); } catch (error) { console.error(error); callback(1); } };