//SPDX-License-Identifier: MIT pragma solidity ^0.6.0; pragma experimental ABIEncoderV2; interface IndexInterface { function master() external view returns (address); } interface ConnectorsInterface { function chief(address) external view returns (bool); } contract Helpers { event LogChangeOneProto(address oneProto); address public constant connectors = 0xD6A602C01a023B98Ecfb29Df02FBA380d3B21E0c; address public constant instaIndex = 0x2971AdFa57b20E5a416aE5a708A8655A9c74f723; address public oneProtoAddress; modifier isChief { require( ConnectorsInterface(connectors).chief(msg.sender) || IndexInterface(instaIndex).master() == msg.sender, "not-Chief"); _; } function changeOneProtoAddress(address _oneProtoAddr) external isChief { require(_oneProtoAddr != address(0), "oneProtoAddress-is-address(0)"); require(oneProtoAddress != _oneProtoAddr, "Same-oneProtoAddress"); oneProtoAddress = _oneProtoAddr; emit LogChangeOneProto(_oneProtoAddr); } } contract InstaOneMapping is Helpers { constructor () public { oneProtoAddress = 0x6cb2291A3c3794fcA0F5b6E34a8E6eA7933CA667; } }