const FT = artifacts.require("tokens/erc20/FT"); const NFT = artifacts.require("tokens/erc20/NFT"); const MarketPlace = artifacts.require("market/BENFTMarket"); const UserMinterFactory = artifacts.require("logic/UserMinterFactory"); const config = require("../config/config"); const base = require("../scripts/base"); module.exports = async function main(callback) { try { // Our code will go here const network = "arbitrum_testnet"; let cfgs = base.loadData({ network }); const accounts = await web3.eth.getAccounts(); console.log(accounts); const heroInstance = await NFT.at( cfgs.find((c) => c.name === "HERO").address ); const equipInstance = await NFT.at( cfgs.find((c) => c.name === "WEAPON").address ); const chipInstance = await NFT.at( cfgs.find((c) => c.name === "CHIP").address ); const coinInstance = await FT.at( cfgs.find((c) => c.name === "CEC").address ); const goldInstance = await FT.at( cfgs.find((c) => c.name === "CEG").address ); // const usdtInstance = await await FT.at( // cfgs.find((c) => c.name === "BEUSDT").address // ); config.market.paymentTokens.push(coinInstance.address); config.market.paymentTokens.push(goldInstance.address); // config.market.paymentTokens.push(usdtInstance.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.at( cfgs.find((c) => c.name === "BENFTMarket").address ); const ROUND = 1000000; const DECIMALS = 1000000000000000000; if (marketInstance) { await marketInstance.setFeeToAddress(config.market.feeToAddress); console.log( `market receive fee address set to : ${config.market.feeToAddress}` ); await marketInstance.setTransactionFee((4 * ROUND) / 100); await marketInstance.addERC721Support(heroInstance.address); await marketInstance.addERC721Support(equipInstance.address); await marketInstance.addERC721Support(chipInstance.address); const maxPrice = web3.utils.toWei("99990000"); const minPrice = web3.utils.toWei("0.01"); await marketInstance.setNFTPriceMaxLimit(heroInstance.address, maxPrice); await marketInstance.setNFTPriceMinLimit(heroInstance.address, minPrice); await marketInstance.setNFTPriceMaxLimit(equipInstance.address, maxPrice); await marketInstance.setNFTPriceMinLimit(equipInstance.address, minPrice); await marketInstance.setNFTPriceMaxLimit(chipInstance.address, maxPrice); await marketInstance.setNFTPriceMinLimit(chipInstance.address, minPrice); for (let token of config.market.paymentTokens) { await marketInstance.addERC20Support(token); console.log(`add token for market payment: ${token}`); } 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); // console.log( // `Allow operation ${marketInstance.address} to reduce gas fee` // ); } const factoryInstance = await await UserMinterFactory.at( cfgs.find((c) => c.name === "UserMinterFactory").address ); if (!factoryInstance) { console.error("no factoryInstance"); return; } await factoryInstance.updateExecutor(config.admins.admin); await heroInstance.setMintRole(factoryInstance.address); await equipInstance.setMintRole(factoryInstance.address); await chipInstance.setMintRole(factoryInstance.address); await factoryInstance.addTokenSupport(heroInstance.address); await factoryInstance.addTokenSupport(equipInstance.address); await factoryInstance.addTokenSupport(chipInstance.address); console.log( `Allow factory ${factoryInstance.address} to mint contract \n hero: ${heroInstance.address}, \n equip: ${equipInstance.address}, \n chip: ${chipInstance.address}` ); callback(0); } catch (error) { console.error(error); callback(1); } };