Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add UBE, GNT, PACT configurators on Alfajores #30

Open
wants to merge 14 commits into
base: main
Choose a base branch
from
15 changes: 15 additions & 0 deletions cli.js
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,9 @@ async function execute(network, action, ...params) {
let cEUR;
let cREAL;
let MOO;
let UBE;
let GNT;
let PACT;
let migrator;
let privateKeyRequired = true;
let liquiditySwapAdapter;
Expand All @@ -264,6 +267,9 @@ async function execute(network, action, ...params) {
cUSD = new kit.web3.eth.Contract(MToken, '0x874069Fa1Eb16D44d622F2e0Ca25eeA172369bC1');
cREAL = new kit.web3.eth.Contract(MToken, '0xE4D517785D091D3c54818832dB6094bcc2744545');
MOO = new kit.web3.eth.Contract(MToken, '0x17700282592D6917F6A73D0bF8AcCf4D578c131e');
UBE = new kit.web3.eth.Contract(MToken, '0x00Be915B9dCf56a3CBE739D9B9c202ca692409EC');
GNT = new kit.web3.eth.Contract(MToken, '0xcd8148C6f63C1559a1f95962569a915AA7907Eb7');
PACT = new kit.web3.eth.Contract(MToken, '0x73A2De6A8370108D43c3C80430C84c30df323eD2');
CELO = new kit.web3.eth.Contract(MToken, '0xF194afDf50B03e69Bd7D057c1Aa9e10c9954E4C9');
dataProvider = new kit.web3.eth.Contract(
DataProvider,
Expand Down Expand Up @@ -299,6 +305,9 @@ async function execute(network, action, ...params) {
cUSD = new kit.web3.eth.Contract(MToken, '0x765DE816845861e75A25fCA122bb6898B8B1282a');
cREAL = new kit.web3.eth.Contract(MToken, '0xe8537a3d056DA446677B9E9d6c5dB704EaAb4787');
MOO = new kit.web3.eth.Contract(MToken, '0x17700282592D6917F6A73D0bF8AcCf4D578c131e');
UBE = new kit.web3.eth.Contract(MToken, '0x00Be915B9dCf56a3CBE739D9B9c202ca692409EC');
GNT = new kit.web3.eth.Contract(MToken, '0x16FDA7073b085e0231824499345c7334a68f7783');
PACT = new kit.web3.eth.Contract(MToken, '0x46c9757C5497c5B1f2eb73aE79b6B67D119B0B58');
CELO = new kit.web3.eth.Contract(MToken, '0x471EcE3750Da237f93B8E339c536989b8978a438');
dataProvider = new kit.web3.eth.Contract(
DataProvider,
Expand Down Expand Up @@ -385,6 +394,9 @@ async function execute(network, action, ...params) {
ceur: cEUR,
creal: cREAL,
moo: MOO,
ube: UBE,
gnt: GNT,
pact: PACT,
};

const reserves = {
Expand All @@ -393,6 +405,9 @@ async function execute(network, action, ...params) {
ceur: cEUR.options.address,
creal: cREAL.options.address,
moo: MOO.options.address,
gnt: GNT.options.address,
pact: PACT.options.address,
ube: UBE.options.address,
};

const isValidAsset = (asset) => {
Expand Down
94 changes: 94 additions & 0 deletions contracts/protocol/lendingpool/GNT/GNTConfiguratorAlfajores.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
pragma experimental ABIEncoderV2;

import {ERC20} from '../../../dependencies/openzeppelin/contracts/ERC20.sol';
import {Ownable} from '../../../dependencies/openzeppelin/contracts/Ownable.sol';
import '../../../protocol/lendingpool/LendingPoolConfigurator.sol';
import '../../../interfaces/ILendingPoolConfigurator.sol';

contract GNTConfiguratorAlfajores is Ownable {
address constant lendingPoolConfiguratorAddress = 0x39fe2A4a4174bB5cAC5568ce0715a0b320bcB231;

LendingPoolConfigurator public lendingPoolConfigurator =
LendingPoolConfigurator(lendingPoolConfiguratorAddress);
address constant assetAddress = 0xcd8148C6f63C1559a1f95962569a915AA7907Eb7;

bytes constant params = '0x10';
bool constant stableBorrowRateEnabled = true;
uint8 constant underlyingAssetDecimals = 18;
address constant aTokenImpl = 0xe8B286649713447D8d5fBeBC28c731830d19B6C9;
address constant stableDebtTokenImpl = 0xB6a5059A228a16Fa2827E28E52ceC96BBC63D639;
address constant variableDebtTokenImpl = 0xB65b6a6a6F78E4daABF259c756567ae346699687;
address constant interestRateStrategyAddress = 0x3C06Fb2f5Ab65b0e35F91073d88afE2b017D04b8;
address constant treasury = 0x643C574128c7C56A1835e021Ad0EcC2592E72624;
address constant incentivesController = 0x0000000000000000000000000000000000000000;
string constant underlyingAssetName = 'CarbonCreditBundleToken';
string constant aTokenName = 'Moola interest bearing GNT';
string constant aTokenSymbol = 'mGNT';
string constant variableDebtTokenName = 'Moola variable debt bearing mGNT';
string constant variableDebtTokenSymbol = 'variableDebtmGNT';
string constant stableDebtTokenName = 'Moola stable debt bearing mGNT';
string constant stableDebtTokenSymbol = 'stableDebtmGNT';
uint256 constant baseLTV = 4500;
uint256 constant liquidationThreshold = 6000;
uint256 constant liquidationBonus = 11000;
uint256 constant reserveFactor = 1000;

function execute() external onlyOwner {
createReserve();
enableCollateral();
enableBorrowing();
setReserveFactor();

selfdestruct(payable(treasury));
}

function destruct() external onlyOwner {
selfdestruct(payable(treasury));
}

function createReserve() internal {
ILendingPoolConfigurator.InitReserveInput[]
memory inputs = new ILendingPoolConfigurator.InitReserveInput[](1);
ILendingPoolConfigurator.InitReserveInput memory input = ILendingPoolConfigurator
.InitReserveInput({
aTokenImpl: aTokenImpl,
stableDebtTokenImpl: stableDebtTokenImpl,
variableDebtTokenImpl: variableDebtTokenImpl,
underlyingAssetDecimals: underlyingAssetDecimals,
interestRateStrategyAddress: interestRateStrategyAddress,
underlyingAsset: assetAddress,
treasury: treasury,
incentivesController: incentivesController,
underlyingAssetName: underlyingAssetName,
aTokenName: aTokenName,
aTokenSymbol: aTokenSymbol,
variableDebtTokenName: variableDebtTokenName,
variableDebtTokenSymbol: variableDebtTokenSymbol,
stableDebtTokenName: stableDebtTokenName,
stableDebtTokenSymbol: stableDebtTokenSymbol,
params: params
});
inputs[0] = input;

lendingPoolConfigurator.batchInitReserve(inputs);
}

function enableCollateral() internal {
lendingPoolConfigurator.configureReserveAsCollateral(
assetAddress,
baseLTV,
liquidationThreshold,
liquidationBonus
);
}

function enableBorrowing() internal {
lendingPoolConfigurator.enableBorrowingOnReserve(assetAddress, stableBorrowRateEnabled);
}

function setReserveFactor() internal {
lendingPoolConfigurator.setReserveFactor(assetAddress, reserveFactor);
}
}
94 changes: 94 additions & 0 deletions contracts/protocol/lendingpool/PACT/PACTConfiguratorAlfajores.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
pragma experimental ABIEncoderV2;

import {ERC20} from '../../../dependencies/openzeppelin/contracts/ERC20.sol';
import {Ownable} from '../../../dependencies/openzeppelin/contracts/Ownable.sol';
import '../../../protocol/lendingpool/LendingPoolConfigurator.sol';
import '../../../interfaces/ILendingPoolConfigurator.sol';

contract PACTConfiguratorAlfajores is Ownable {
address constant lendingPoolConfiguratorAddress = 0x39fe2A4a4174bB5cAC5568ce0715a0b320bcB231;

LendingPoolConfigurator public lendingPoolConfigurator =
LendingPoolConfigurator(lendingPoolConfiguratorAddress);
address constant assetAddress = 0x73A2De6A8370108D43c3C80430C84c30df323eD2;

bytes constant params = '0x10';
bool constant stableBorrowRateEnabled = true;
uint8 constant underlyingAssetDecimals = 18;
address constant aTokenImpl = 0xe8B286649713447D8d5fBeBC28c731830d19B6C9;
address constant stableDebtTokenImpl = 0xB6a5059A228a16Fa2827E28E52ceC96BBC63D639;
address constant variableDebtTokenImpl = 0xB65b6a6a6F78E4daABF259c756567ae346699687;
address constant interestRateStrategyAddress = 0x3C06Fb2f5Ab65b0e35F91073d88afE2b017D04b8;
address constant treasury = 0x643C574128c7C56A1835e021Ad0EcC2592E72624;
address constant incentivesController = 0x0000000000000000000000000000000000000000;
string constant underlyingAssetName = 'impactMarket';
string constant aTokenName = 'Moola interest bearing PACT';
string constant aTokenSymbol = 'mPACT';
string constant variableDebtTokenName = 'Moola variable debt bearing mPACT';
string constant variableDebtTokenSymbol = 'variableDebtmPACT';
string constant stableDebtTokenName = 'Moola stable debt bearing mPACT';
string constant stableDebtTokenSymbol = 'stableDebtmPACT';
uint256 constant baseLTV = 3000;
uint256 constant liquidationThreshold = 4500;
uint256 constant liquidationBonus = 11200;
uint256 constant reserveFactor = 1000;

function execute() external onlyOwner {
createReserve();
enableCollateral();
enableBorrowing();
setReserveFactor();

selfdestruct(payable(treasury));
}

function destruct() external onlyOwner {
selfdestruct(payable(treasury));
}

function createReserve() internal {
ILendingPoolConfigurator.InitReserveInput[]
memory inputs = new ILendingPoolConfigurator.InitReserveInput[](1);
ILendingPoolConfigurator.InitReserveInput memory input = ILendingPoolConfigurator
.InitReserveInput({
aTokenImpl: aTokenImpl,
stableDebtTokenImpl: stableDebtTokenImpl,
variableDebtTokenImpl: variableDebtTokenImpl,
underlyingAssetDecimals: underlyingAssetDecimals,
interestRateStrategyAddress: interestRateStrategyAddress,
underlyingAsset: assetAddress,
treasury: treasury,
incentivesController: incentivesController,
underlyingAssetName: underlyingAssetName,
aTokenName: aTokenName,
aTokenSymbol: aTokenSymbol,
variableDebtTokenName: variableDebtTokenName,
variableDebtTokenSymbol: variableDebtTokenSymbol,
stableDebtTokenName: stableDebtTokenName,
stableDebtTokenSymbol: stableDebtTokenSymbol,
params: params
});
inputs[0] = input;

lendingPoolConfigurator.batchInitReserve(inputs);
}

function enableCollateral() internal {
lendingPoolConfigurator.configureReserveAsCollateral(
assetAddress,
baseLTV,
liquidationThreshold,
liquidationBonus
);
}

function enableBorrowing() internal {
lendingPoolConfigurator.enableBorrowingOnReserve(assetAddress, stableBorrowRateEnabled);
}

function setReserveFactor() internal {
lendingPoolConfigurator.setReserveFactor(assetAddress, reserveFactor);
}
}
94 changes: 94 additions & 0 deletions contracts/protocol/lendingpool/UBE/UBEConfiguratorAlfajores.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
pragma experimental ABIEncoderV2;

import {ERC20} from '../../../dependencies/openzeppelin/contracts/ERC20.sol';
import {Ownable} from '../../../dependencies/openzeppelin/contracts/Ownable.sol';
import '../../../protocol/lendingpool/LendingPoolConfigurator.sol';
import '../../../interfaces/ILendingPoolConfigurator.sol';

contract UBEConfiguratorAlfajores is Ownable {
address constant lendingPoolConfiguratorAddress = 0x39fe2A4a4174bB5cAC5568ce0715a0b320bcB231;

LendingPoolConfigurator public lendingPoolConfigurator =
LendingPoolConfigurator(lendingPoolConfiguratorAddress);
address constant assetAddress = 0x00Be915B9dCf56a3CBE739D9B9c202ca692409EC;

bytes constant params = '0x10';
bool constant stableBorrowRateEnabled = true;
uint8 constant underlyingAssetDecimals = 18;
address constant aTokenImpl = 0xe8B286649713447D8d5fBeBC28c731830d19B6C9;
address constant stableDebtTokenImpl = 0xB6a5059A228a16Fa2827E28E52ceC96BBC63D639;
address constant variableDebtTokenImpl = 0xB65b6a6a6F78E4daABF259c756567ae346699687;
address constant interestRateStrategyAddress = 0x3C06Fb2f5Ab65b0e35F91073d88afE2b017D04b8;
address constant treasury = 0x643C574128c7C56A1835e021Ad0EcC2592E72624;
address constant incentivesController = 0x0000000000000000000000000000000000000000;
string constant underlyingAssetName = 'Ubeswap';
string constant aTokenName = 'Moola interest bearing UBE';
string constant aTokenSymbol = 'mUBE';
string constant variableDebtTokenName = 'Moola variable debt bearing mUBE';
string constant variableDebtTokenSymbol = 'variableDebtmUBE';
string constant stableDebtTokenName = 'Moola stable debt bearing mUBE';
string constant stableDebtTokenSymbol = 'stableDebtmUBE';
uint256 constant baseLTV = 4500;
uint256 constant liquidationThreshold = 6000;
uint256 constant liquidationBonus = 11000;
uint256 constant reserveFactor = 1000;

function execute() external onlyOwner {
createReserve();
enableCollateral();
enableBorrowing();
setReserveFactor();

selfdestruct(payable(treasury));
}

function destruct() external onlyOwner {
selfdestruct(payable(treasury));
}

function createReserve() internal {
ILendingPoolConfigurator.InitReserveInput[]
memory inputs = new ILendingPoolConfigurator.InitReserveInput[](1);
ILendingPoolConfigurator.InitReserveInput memory input = ILendingPoolConfigurator
.InitReserveInput({
aTokenImpl: aTokenImpl,
stableDebtTokenImpl: stableDebtTokenImpl,
variableDebtTokenImpl: variableDebtTokenImpl,
underlyingAssetDecimals: underlyingAssetDecimals,
interestRateStrategyAddress: interestRateStrategyAddress,
underlyingAsset: assetAddress,
treasury: treasury,
incentivesController: incentivesController,
underlyingAssetName: underlyingAssetName,
aTokenName: aTokenName,
aTokenSymbol: aTokenSymbol,
variableDebtTokenName: variableDebtTokenName,
variableDebtTokenSymbol: variableDebtTokenSymbol,
stableDebtTokenName: stableDebtTokenName,
stableDebtTokenSymbol: stableDebtTokenSymbol,
params: params
});
inputs[0] = input;

lendingPoolConfigurator.batchInitReserve(inputs);
}

function enableCollateral() internal {
lendingPoolConfigurator.configureReserveAsCollateral(
assetAddress,
baseLTV,
liquidationThreshold,
liquidationBonus
);
}

function enableBorrowing() internal {
lendingPoolConfigurator.enableBorrowingOnReserve(assetAddress, stableBorrowRateEnabled);
}

function setReserveFactor() internal {
lendingPoolConfigurator.setReserveFactor(assetAddress, reserveFactor);
}
}