/ migrations / 2_deploy_contracts.js
2_deploy_contracts.js
1 var test = false; 2 3 const Deployer = artifacts.require("Deployer"); 4 const BlockTimeProvider = artifacts.require("BlockTimeProvider"); 5 const TimeProviderMock = artifacts.require("TimeProviderMock"); 6 7 const ProtocolSettings = artifacts.require("ProtocolSettings") 8 const ProposalsManager = artifacts.require("ProposalsManager"); 9 const GovToken = artifacts.require("GovToken"); 10 const CreditToken = artifacts.require("CreditToken"); 11 const CreditProvider = artifacts.require("CreditProvider"); 12 const CollateralManager = artifacts.require("CollateralManager"); 13 14 const OptionTokenFactory = artifacts.require("OptionTokenFactory"); 15 const OptionsExchange = artifacts.require("OptionsExchange"); 16 const Incentivized = artifacts.require("Incentivized"); 17 18 const DEXFeedFactory = artifacts.require("DEXFeedFactory"); 19 20 const LinearLiquidityPoolFactory = artifacts.require("LinearLiquidityPoolFactory"); 21 const LinearAnySlopeInterpolator = artifacts.require("LinearAnySlopeInterpolator"); 22 const YieldTracker = artifacts.require("YieldTracker"); 23 24 25 const MockChainLinkFeed = artifacts.require("ChainlinkFeed"); 26 const AggregatorV3Mock = artifacts.require("AggregatorV3Mock"); 27 const UnderlyingVault = artifacts.require("UnderlyingVault"); 28 29 const Stablecoin = artifacts.require("ERC20Mock"); 30 //const UnderlyingToken = artifacts.require("ERC20Mock"); 31 //const UnderlyingFeed = artifacts.require("EthFeedMock"); 32 //const SwapRouter = artifacts.require("UniswapV2RouterMock"); 33 34 35 36 module.exports = async function(deployer) { 37 if (test) { 38 await deployer.deploy(Deployer, "0x0000000000000000000000000000000000000000"); 39 await deployer.deploy(TimeProviderMock); 40 await deployer.deploy(GovToken, ""); 41 await deployer.deploy(UnderlyingToken, 18); 42 await deployer.deploy(UnderlyingFeed); 43 await deployer.deploy(SwapRouter); 44 await deployer.deploy(ProtocolSettings, true); 45 } else { 46 await deployer.deploy(Deployer, "0xe977757dA5fd73Ca3D2bA6b7B544bdF42bb2CBf6"); 47 //await deployer.deploy(GovToken, "0xA6FA4fB5f76172d178d61B04b0ecd319C5d1C0aa"); 48 } 49 50 const d = await Deployer.at(Deployer.address); 51 console.log("Deployer is at: "+ Deployer.address); 52 53 54 const timeProvider = await deployer.deploy(BlockTimeProvider); 55 console.log("timeProvider is at: "+ timeProvider.address); 56 const settings = await deployer.deploy(ProtocolSettings, false); 57 console.log("settings is at: "+ settings.address); 58 const ct = await deployer.deploy(CreditToken); 59 const pm = await deployer.deploy(ProposalsManager); 60 const gt = await deployer.deploy(GovToken, "0x0000000000000000000000000000000000000000"); 61 const uv = await deployer.deploy(UnderlyingVault); 62 const id = await deployer.deploy(Incentivized); 63 const lasit = await deployer.deploy(LinearAnySlopeInterpolator); 64 const yt = await deployer.deploy(YieldTracker); 65 66 67 const creditProvider = await deployer.deploy(CreditProvider); 68 console.log("creditProvider is at: "+ creditProvider.address); 69 const otf = await deployer.deploy(OptionTokenFactory); 70 const exchange = await deployer.deploy(OptionsExchange); 71 console.log("exchange is at: "+ exchange.address); 72 const poolFactory = await deployer.deploy(LinearLiquidityPoolFactory); 73 console.log("poolFactory is at: "+ poolFactory.address); 74 const dexFeedFactory = await deployer.deploy(DEXFeedFactory); 75 console.log("dexFeedFactory is at: "+ dexFeedFactory.address); 76 const collateralManager = await deployer.deploy(CollateralManager); 77 78 79 if (test) { 80 deployer.setContractAddress("TimeProvider", TimeProviderMock.address); 81 await deployer.deploy(Stablecoin, 18); 82 deployer.setContractAddress("StablecoinA", Stablecoin.address, false); 83 await deployer.deploy(Stablecoin, 9); 84 deployer.setContractAddress("StablecoinB", Stablecoin.address, false); 85 await deployer.deploy(Stablecoin, 6); 86 deployer.setContractAddress("StablecoinC", Stablecoin.address, false); 87 deployer.setContractAddress("UnderlyingToken", UnderlyingToken.address, false); 88 deployer.setContractAddress("UnderlyingFeed", UnderlyingFeed.address); 89 deployer.setContractAddress("SwapRouter", SwapRouter.address); 90 } 91 92 const FakeDAI = await deployer.deploy(Stablecoin, 18); 93 d.setContractAddress("FakeDAI", FakeDAI.address, false); 94 const FakeUSDC = await deployer.deploy(Stablecoin, 6); 95 d.setContractAddress("FakeUSDC", FakeUSDC.address, false); 96 97 98 await d.setContractAddress("ProtocolSettings", settings.address); 99 await d.setContractAddress("TimeProvider", timeProvider.address); 100 await d.setContractAddress("CreditProvider", creditProvider.address); 101 await d.addAlias("CreditIssuer", "CreditProvider"); 102 await d.setContractAddress("CreditToken", ct.address); 103 await d.setContractAddress("ProposalsManager", pm.address); 104 await d.setContractAddress("CollateralManager", collateralManager.address); 105 await d.setContractAddress("OptionsExchange", exchange.address); 106 await d.setContractAddress("OptionTokenFactory", otf.address); 107 await d.setContractAddress("GovToken", gt.address); //MAY JUST USE THE EXISTING GOV TOKEN ADDR ON POLYGON MAINNET TO MAKE THINGS SIMPLE 108 await d.setContractAddress("LinearLiquidityPoolFactory", poolFactory.address); 109 await d.setContractAddress("DEXFeedFactory", dexFeedFactory.address); 110 await d.setContractAddress("Interpolator", lasit.address); 111 await d.setContractAddress("YieldTracker", yt.address); 112 await d.setContractAddress("UnderlyingVault", uv.address); 113 await d.setContractAddress("Incentivized", id.address); 114 115 console.log("set contract address done"); 116 await d.deploy(); 117 118 119 console.log("deployer done"); 120 121 122 const timeProviderAddress = await d.getContractAddress("TimeProvider"); 123 console.log("timeProviderAddress is at: "+ timeProviderAddress); 124 const ProtocolSettingsAddress = await d.getContractAddress("ProtocolSettings"); 125 console.log("ProtocolSettingsAddress is at: "+ ProtocolSettingsAddress); 126 const CreditProviderAddress = await d.getContractAddress("CreditProvider"); 127 console.log("CreditProviderAddress is at: "+ CreditProviderAddress); 128 const OptionsExchangeAddress = await d.getContractAddress("OptionsExchange"); 129 console.log("OptionsExchangeAddress is at: "+ OptionsExchangeAddress); 130 const LinearLiquidityPoolFactoryAddress = await d.getContractAddress("LinearLiquidityPoolFactory"); 131 console.log("LinearLiquidityPoolFactoryAddress is at: "+ LinearLiquidityPoolFactoryAddress); 132 const DEXFeedFactoryAddress = await d.getContractAddress("DEXFeedFactory"); 133 console.log("DEXFeedFactoryAddress is at: "+ DEXFeedFactoryAddress); 134 const ProposalsManagerAddress = await d.getContractAddress("ProposalsManager"); 135 console.log("ProposalsManagerAddress is at: "+ ProposalsManagerAddress); 136 const GovTokenAddress = await d.getContractAddress("GovToken"); 137 console.log("GovTokenAddress is at: "+ GovTokenAddress); 138 };