Skip to content

Commit

Permalink
feat!: allow to specify vTokenReceiver when adding markets
Browse files Browse the repository at this point in the history
  • Loading branch information
kkirka committed Apr 27, 2023
1 parent f0500ae commit 4560b04
Show file tree
Hide file tree
Showing 8 changed files with 113 additions and 42 deletions.
13 changes: 7 additions & 6 deletions contracts/Pool/PoolRegistry.sol
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ contract PoolRegistry is Ownable2StepUpgradeable, AccessControlled, PoolRegistry
AccessControlManager accessControlManager;
address beaconAddress;
uint256 initialSupply;
address vTokenReceiver;
uint256 supplyCap;
uint256 borrowCap;
}
Expand Down Expand Up @@ -253,14 +254,14 @@ contract PoolRegistry is Ownable2StepUpgradeable, AccessControlled, PoolRegistry
*/
function addMarket(AddMarketInput memory input) external {
_checkAccessAllowed("addMarket(AddMarketInput)");
require(input.comptroller != address(0), "RegistryPool: Invalid comptroller address");
require(input.asset != address(0), "RegistryPool: Invalid asset address");

require(input.beaconAddress != address(0), "RegistryPool: Invalid beacon address");
require(input.comptroller != address(0), "PoolRegistry: Invalid comptroller address");
require(input.asset != address(0), "PoolRegistry: Invalid asset address");
require(input.beaconAddress != address(0), "PoolRegistry: Invalid beacon address");
require(input.vTokenReceiver != address(0), "PoolRegistry: Invalid vTokenReceiver address");

require(
_vTokens[input.comptroller][input.asset] == address(0),
"RegistryPool: Market already added for asset comptroller combination"
"PoolRegistry: Market already added for asset comptroller combination"
);

InterestRateModel rate;
Expand Down Expand Up @@ -320,7 +321,7 @@ contract PoolRegistry is Ownable2StepUpgradeable, AccessControlled, PoolRegistry
token.safeApprove(address(vToken), 0);
token.safeApprove(address(vToken), input.initialSupply);

vToken.mintBehalf(msg.sender, input.initialSupply);
vToken.mintBehalf(input.vTokenReceiver, input.initialSupply);

emit MarketAdded(address(comptroller), address(vToken));
}
Expand Down
6 changes: 6 additions & 0 deletions deploy/009-deploy-pools.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@ import { HardhatRuntimeEnvironment } from "hardhat/types";

import { getConfig, getTokenConfig } from "../helpers/deploymentConfig";

const treasuryAddresses: { [network: string]: string } = {
bsctestnet: "0xFEA1c651A47FE29dB9b1bf3cC1f224d8D9CFF68C", // one of testnet admin accounts
bscmainnet: "0xF322942f644A996A617BD29c16bd7d231d9F35E9", // Venus Treasury
};

const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
const { deployments, getNamedAccounts } = hre;
const { deploy } = deployments;
Expand Down Expand Up @@ -137,6 +142,7 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
accessControlManager: accessControlManager.address,
beaconAddress: vTokenBeacon.address,
initialSupply: initialSupply,
vTokenReceiver: hre.network.name === "hardhat" ? deployer : treasuryAddresses[hre.network.name],
supplyCap: supplyCap,
borrowCap: borrowCap,
});
Expand Down
6 changes: 6 additions & 0 deletions tests/hardhat/Fork/RiskFund.ts
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,7 @@ const riskFundFixture = async (): Promise<void> => {
accessControlManager: accessControlManager.address,
beaconAddress: vTokenBeacon.address,
initialSupply,
vTokenReceiver: admin.address,
supplyCap: initialSupply,
borrowCap: initialSupply,
});
Expand All @@ -365,6 +366,7 @@ const riskFundFixture = async (): Promise<void> => {
accessControlManager: accessControlManager.address,
beaconAddress: vTokenBeacon.address,
initialSupply,
vTokenReceiver: admin.address,
supplyCap: initialSupply,
borrowCap: initialSupply,
});
Expand All @@ -389,6 +391,7 @@ const riskFundFixture = async (): Promise<void> => {
accessControlManager: accessControlManager.address,
beaconAddress: vTokenBeacon.address,
initialSupply,
vTokenReceiver: admin.address,
supplyCap: initialSupply,
borrowCap: initialSupply,
});
Expand All @@ -413,6 +416,7 @@ const riskFundFixture = async (): Promise<void> => {
accessControlManager: accessControlManager.address,
beaconAddress: vTokenBeacon.address,
initialSupply,
vTokenReceiver: admin.address,
supplyCap: initialSupply,
borrowCap: initialSupply,
});
Expand All @@ -437,6 +441,7 @@ const riskFundFixture = async (): Promise<void> => {
accessControlManager: accessControlManager.address,
beaconAddress: vTokenBeacon.address,
initialSupply,
vTokenReceiver: admin.address,
supplyCap: initialSupply,
borrowCap: initialSupply,
});
Expand All @@ -461,6 +466,7 @@ const riskFundFixture = async (): Promise<void> => {
accessControlManager: accessControlManager.address,
beaconAddress: vTokenBeacon.address,
initialSupply,
vTokenReceiver: admin.address,
supplyCap: initialSupply,
borrowCap: initialSupply,
});
Expand Down
2 changes: 2 additions & 0 deletions tests/hardhat/Fork/RiskFundSwap.ts
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,7 @@ const riskFundFixture = async (): Promise<void> => {
accessControlManager: fakeAccessControlManager.address,
beaconAddress: vTokenBeacon.address,
initialSupply,
vTokenReceiver: admin.address,
supplyCap: initialSupply,
borrowCap: initialSupply,
});
Expand All @@ -257,6 +258,7 @@ const riskFundFixture = async (): Promise<void> => {
accessControlManager: fakeAccessControlManager.address,
beaconAddress: vTokenBeacon.address,
initialSupply,
vTokenReceiver: admin.address,
supplyCap: initialSupply,
borrowCap: initialSupply,
});
Expand Down
2 changes: 2 additions & 0 deletions tests/hardhat/Lens/PoolLens.ts
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,7 @@ describe("PoolLens", async function () {
accessControlManager: fakeAccessControlManager.address,
beaconAddress: vTokenBeacon.address,
initialSupply,
vTokenReceiver: owner.address,
supplyCap: convertToUnit(4000, 18),
borrowCap: convertToUnit(2000, 18),
});
Expand All @@ -236,6 +237,7 @@ describe("PoolLens", async function () {
accessControlManager: fakeAccessControlManager.address,
beaconAddress: vTokenBeacon.address,
initialSupply,
vTokenReceiver: owner.address,
supplyCap: initialSupply,
borrowCap: initialSupply,
});
Expand Down
Loading

0 comments on commit 4560b04

Please sign in to comment.