/ 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  };