const fs = require("fs"); const file = fs.createWriteStream("../deploy-detail-v2.0.txt", { 'flags': 'a' }); let logger = new console.Console(file, file); const CloneFactory = artifacts.require("CloneFactory"); const DvmTemplate = artifacts.require("DVM"); const DvmAdminTemplate = artifacts.require("DVMAdmin"); const DppTemplate = artifacts.require("DPP"); const DppAdminTemplate = artifacts.require("DPPAdmin"); const FeeRateModelTemplate = artifacts.require("FeeRateModel"); const PermissionManagerTemplate = artifacts.require("PermissionManager"); const ExternalValueTemplate = artifacts.require("ExternalValue"); const DvmFactory = artifacts.require("DVMFactory"); const DppFactory = artifacts.require("DPPFactory"); const DODOApprove = artifacts.require("DODOApprove"); const DODOProxyV2 = artifacts.require("DODOV2Proxy01"); const DODOSellHelper = artifacts.require("DODOSellHelper"); const DODOCalleeHelper = artifacts.require("DODOCalleeHelper"); const DEPLOY_V2 = true; module.exports = async (deployer, network, accounts) => { let DODOSellHelperAddress = ""; let DODOCalleeHelperAddress = ""; let WETHAddress = ""; let DODOApproveAddress = ""; let chiAddress = ""; let CloneFactoryAddress = ""; let FeeRateModelTemplateAddress = ""; let PermissionManagerTemplateAddress = ""; let ExternalValueTemplateAddress = ""; let DefaultGasSourceAddress = ""; let DvmTemplateAddress = ""; let DvmAdminTemplateAddress = ""; let DppTemplateAddress = ""; let DppAdminTemplateAddress = ""; let DvmFactoryAddress = ""; let DppFactoryAddress = ""; if (network == "kovan") { DODOSellHelperAddress = "0xbdEae617F2616b45DCB69B287D52940a76035Fe3"; WETHAddress = "0x5eca15b12d959dfcf9c71c59f8b467eb8c6efd0b"; chiAddress = "0x0000000000004946c0e9f43f4dee607b0ef1fa1c"; DODOApproveAddress = "0x0C4a80B2e234448E5f6fD86e7eFA733d985004c8"; DODOCalleeHelperAddress = "0x507EBbb195CF54E0aF147A2b269C08a38EA36989"; //Template CloneFactoryAddress = "0xf7959fe661124C49F96CF30Da33729201aEE1b27"; FeeRateModelTemplateAddress = "0xEF3137780B387313c5889B999D03BdCf9aeEa892"; PermissionManagerTemplateAddress = "0x5D2Da09501d97a7bf0A8F192D2eb2F9Aa80d3241"; ExternalValueTemplateAddress = "0xe0f813951dE2BB012f7Feb981669F9a7b5250A57"; DefaultGasSourceAddress = "0xE0c0df0e0be7ec4f579503304a6C186cA4365407"; DvmTemplateAddress = "0x460Ada67279Ff2ce8c87cb88F99070c6520Aa624"; DvmAdminTemplateAddress = "0xbB9F79f6ac9e577B658E3B2E1340838d8965986B"; DppTemplateAddress = "0x577c2cE26B8b5C8b3f7c57826Bf351ac7c21a441"; DppAdminTemplateAddress = "0x402ace5a3e6Aa71FB942d309341F8867afcde302"; //Factory DvmFactoryAddress = "0xaeF2cce5678e6e29f7a7C2A6f5d2Ce26df600dc1"; DppFactoryAddress = "0x5935a606383Ba43C61FcE5E632357744a95e9dC3"; } else if (network == "live") { DODOSellHelperAddress = "0x533da777aedce766ceae696bf90f8541a4ba80eb"; WETHAddress = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"; chiAddress = "0x0000000000004946c0e9F43F4Dee607b0eF1fA1c"; DODOApproveAddress = "0x4eC851895d85bfa6835241b3157ae10FfFD3BebC"; //Tempalte } else if (network == "bsclive") { DODOSellHelperAddress = "0x0F859706AeE7FcF61D5A8939E8CB9dBB6c1EDA33"; WETHAddress = "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c"; chiAddress = "0x0000000000000000000000000000000000000000"; DODOApproveAddress = "0x19DA73be23Cea6bFA804Ec020041b8F3971BC522"; //Template } else return; logger.log("===================================================="); logger.log("network type: " + network); logger.log("Deploy time: " + new Date().toLocaleString()); if (DEPLOY_V2) { logger.log("Deploy type: V2"); if (CloneFactoryAddress == "") { await deployer.deploy(CloneFactory); CloneFactoryAddress = CloneFactory.address; logger.log("CloneFactoryAddress: ", CloneFactoryAddress); } if (FeeRateModelTemplateAddress == "") { await deployer.deploy(FeeRateModelTemplate); FeeRateModelTemplateAddress = FeeRateModelTemplate.address; logger.log("FeeRateModelTemplateAddress: ", FeeRateModelTemplateAddress); } if (PermissionManagerTemplateAddress == "") { await deployer.deploy(PermissionManagerTemplate); PermissionManagerTemplateAddress = PermissionManagerTemplate.address; logger.log("PermissionManagerTemplateAddress: ", PermissionManagerTemplateAddress); } if (ExternalValueTemplateAddress == "") { await deployer.deploy(ExternalValueTemplate); ExternalValueTemplateAddress = ExternalValueTemplate.address; logger.log("ExternalValueTemplateAddress: ", ExternalValueTemplateAddress); } if (DefaultGasSourceAddress == "") { await deployer.deploy(ExternalValueTemplate); DefaultGasSourceAddress = ExternalValueTemplate.address; logger.log("DefaultGasSourceAddress: ", DefaultGasSourceAddress); const defaultGasSourceInstance = await ExternalValueTemplate.at(DefaultGasSourceAddress); var tx = await defaultGasSourceInstance.init(accounts[0], "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"); logger.log("Set default Gas Tx:", tx.tx); } if (DvmTemplateAddress == "") { await deployer.deploy(DvmTemplate); DvmTemplateAddress = DvmTemplate.address; logger.log("DvmTemplateAddress: ", DvmTemplateAddress); } if (DvmAdminTemplateAddress == "") { await deployer.deploy(DvmAdminTemplate); DvmAdminTemplateAddress = DvmAdminTemplate.address; logger.log("DvmAdminTemplateAddress: ", DvmAdminTemplateAddress); } if (DppTemplateAddress == "") { await deployer.deploy(DppTemplate); DppTemplateAddress = DppTemplate.address; logger.log("DppTemplateAddress: ", DppTemplateAddress); } if (DppAdminTemplateAddress == "") { await deployer.deploy(DppAdminTemplate); DppAdminTemplateAddress = DppAdminTemplate.address; logger.log("DppAdminTemplateAddress: ", DppAdminTemplateAddress); } if (DODOApproveAddress == "") { await deployer.deploy(DODOApprove); DODOApproveAddress = DODOApprove.address; logger.log("DODOApprove Address: ", DODOApproveAddress); } if (DODOSellHelperAddress == "") { await deployer.deploy(DODOSellHelper); DODOSellHelperAddress = DODOSellHelper.address; logger.log("DODOSellHelper Address: ", DODOSellHelperAddress); } if (DODOCalleeHelperAddress == "") { await deployer.deploy(DODOCalleeHelper,WETHAddress); DODOCalleeHelperAddress = DODOCalleeHelper.address; logger.log("DODOCalleeHelperAddress: ", DODOCalleeHelperAddress); } //Factory if (DvmFactoryAddress == "") { await deployer.deploy( DvmFactory, CloneFactoryAddress, DvmTemplateAddress, DvmAdminTemplateAddress, FeeRateModelTemplateAddress, PermissionManagerTemplateAddress, DefaultGasSourceAddress ); DvmFactoryAddress = DvmFactory.address; logger.log("DvmFactoryAddress: ", DvmFactoryAddress); } if (DppFactoryAddress == "") { await deployer.deploy( DppFactory, CloneFactoryAddress, DppTemplateAddress, DppAdminTemplateAddress, FeeRateModelTemplateAddress, PermissionManagerTemplateAddress, ExternalValueTemplateAddress, DefaultGasSourceAddress, DODOApproveAddress ); DppFactoryAddress = DppFactory.address; logger.log("DppFactoryAddress: ", DppFactoryAddress); } //Proxy await deployer.deploy( DODOProxyV2, DvmFactoryAddress, DppFactoryAddress, WETHAddress, DODOApproveAddress, DODOSellHelperAddress ); logger.log("DODOProxyV2 Address: ", DODOProxyV2.address); const DODOApproveInstance = await DODOApprove.at(DODOApproveAddress); var tx = await DODOApproveInstance.setDODOProxy(DODOProxyV2.address); logger.log("DODOApprovce setProxy tx: ", tx.tx); } };