🎸 feat: integrated MappingController for cream and reflexer

This commit is contained in:
Daksh Miglani 2021-05-11 02:04:31 +05:30
parent 92bb147509
commit 9035da5a36
2 changed files with 34 additions and 15 deletions

View File

@ -14,6 +14,10 @@ interface CTokenInterface {
function underlying() external view returns (address);
}
interface MappingControllerInterface {
function hasRole(address,address) public view returns (bool);
}
abstract contract Helpers {
struct TokenMap {
@ -24,24 +28,29 @@ abstract contract Helpers {
event LogCTokenAdded(string indexed name, address indexed token, address indexed ctoken);
event LogCTokenUpdated(string indexed name, address indexed token, address indexed ctoken);
ConnectorsInterface public immutable connectors;
// TODO: thrilok, verify this address
ConnectorsInterface public constant connectors = ConnectorsInterface(0xFE2390DAD597594439f218190fC2De40f9Cf1179);
// InstaIndex Address.
IndexInterface public constant instaIndex = IndexInterface(0x2971AdFa57b20E5a416aE5a708A8655A9c74f723);
// TODO: add address for MappingController
MappingControllerInterface public constant mappingController = MappingControllerInterface(address(0));
address public constant ethAddr = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;
mapping (string => TokenMap) public cTokenMapping;
modifier isChief {
require(msg.sender == instaIndex.master() || connectors.chief(msg.sender), "not-an-chief");
modifier hasRoleOrIsChief {
require(
msg.sender == instaIndex.master() ||
connectors.chief(msg.sender) ||
mappingController.hasRole(address(this), msg.sender),
"not-an-chief"
);
_;
}
constructor(address _connectors) {
connectors = ConnectorsInterface(_connectors);
}
function _addCtokenMapping(
string[] memory _names,
address[] memory _tokens,
@ -112,7 +121,7 @@ abstract contract Helpers {
string[] memory _names,
address[] memory _tokens,
address[] memory _ctokens
) external isChief {
) external hasRoleOrIsChief {
_addCtokenMapping(_names, _tokens, _ctokens);
}

View File

@ -13,22 +13,32 @@ interface IndexInterface {
function master() external view returns (address);
}
interface MappingControllerInterface {
function hasRole(address,address) public view returns (bool);
}
contract Helpers {
ConnectorsInterface public constant connectors = ConnectorsInterface(0x7D53E606308A2E0A1D396F30dc305cc7f8483436);
// TODO: thrilok, verify this address
ConnectorsInterface public constant connectors = ConnectorsInterface(0xFE2390DAD597594439f218190fC2De40f9Cf1179);
IndexInterface public constant instaIndex = IndexInterface(0x2971AdFa57b20E5a416aE5a708A8655A9c74f723);
// TODO: add address for MappingController
MappingControllerInterface public constant mappingController = MappingControllerInterface(address(0));
uint public version = 1;
mapping (bytes32 => address) public collateralJoinMapping;
event LogAddCollateralJoinMapping(address[] collateralJoin);
modifier isChief {
require(connectors.chief(msg.sender) || instaIndex.master() == msg.sender, "not-a-chief");
modifier hasRoleOrIsChief {
require(
msg.sender == instaIndex.master() ||
connectors.chief(msg.sender) ||
mappingController.hasRole(address(this), msg.sender),
"not-an-chief"
);
_;
}
function addCollateralJoinMapping(address[] memory collateralJoins) public isChief {
}
function addCollateralJoinMapping(address[] memory collateralJoins) public hasRoleOrIsChief {
_addCollateralJoinMapping(collateralJoins);
}