Skip to content

Commit

Permalink
Merge pull request #15 from spherex-collab/M04
Browse files Browse the repository at this point in the history
M04
  • Loading branch information
sfeyal committed Jul 31, 2023
2 parents ec71add + f0a818b commit 42c6e61
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 2 deletions.
17 changes: 15 additions & 2 deletions src/SphereXEngine.sol
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,6 @@ contract SphereXEngine is ISphereXEngine, AccessControlDefaultAdminRules {
bytes32 private constant DEACTIVATED = bytes32(0);
uint64 private constant RULES_1_AND_2_TOGETHER = 3;

event TxStartedAtIrregularDepth();

bytes32 public constant OPERATOR_ROLE = keccak256("OPERATOR_ROLE");

constructor() AccessControlDefaultAdminRules(1 days, msg.sender) {
Expand All @@ -40,6 +38,13 @@ contract SphereXEngine is ISphereXEngine, AccessControlDefaultAdminRules {
_;
}

event TxStartedAtIrregularDepth();
event ConfigureRules(bytes8 oldRules, bytes8 newRules);
event AddedAllowedSenders(address[] senders);
event RemovedAllowedSenders(address[] senders);
event AddedAllowedPatterns(uint256[] patterns);
event RemovedAllowedPatterns(uint256[] patterns);

modifier returnsIfNotActivated() {
if (_engineRules == DEACTIVATED) {
return;
Expand Down Expand Up @@ -71,14 +76,18 @@ contract SphereXEngine is ISphereXEngine, AccessControlDefaultAdminRules {
*/
function configureRules(bytes8 rules) external onlyOperator {
require(RULES_1_AND_2_TOGETHER & uint64(rules) != RULES_1_AND_2_TOGETHER, "Illegal rules combination");
bytes8 oldRules = _engineRules;
_engineRules = rules;
emit ConfigureRules(oldRules, _engineRules);
}

/**
* Deactivates the engine, the calls will return without being checked
*/
function deactivateAllRules() external onlyOperator {
bytes8 oldRules = _engineRules;
_engineRules = bytes8(uint64(0));
emit ConfigureRules(oldRules, 0);
}

/**
Expand All @@ -89,6 +98,7 @@ contract SphereXEngine is ISphereXEngine, AccessControlDefaultAdminRules {
for (uint256 i = 0; i < senders.length; ++i) {
_allowedSenders[senders[i]] = true;
}
emit AddedAllowedSenders(senders);
}

/**
Expand All @@ -99,6 +109,7 @@ contract SphereXEngine is ISphereXEngine, AccessControlDefaultAdminRules {
for (uint256 i = 0; i < senders.length; ++i) {
_allowedSenders[senders[i]] = false;
}
emit RemovedAllowedSenders(senders);
}

/**
Expand All @@ -109,6 +120,7 @@ contract SphereXEngine is ISphereXEngine, AccessControlDefaultAdminRules {
for (uint256 i = 0; i < patterns.length; ++i) {
_allowedPatterns[patterns[i]] = true;
}
emit AddedAllowedPatterns(patterns);
}

/**
Expand All @@ -120,6 +132,7 @@ contract SphereXEngine is ISphereXEngine, AccessControlDefaultAdminRules {
for (uint256 i = 0; i < patterns.length; ++i) {
_allowedPatterns[patterns[i]] = false;
}
emit RemovedAllowedPatterns(patterns);
}

// ============ CF ============
Expand Down
8 changes: 8 additions & 0 deletions src/SphereXProtected.sol
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ abstract contract SphereXProtected {
uint256 gas;
}

event ChangedSpherexOperator(address oldSphereXAdmin, address newSphereXAdmin);
event ChangedSpherexEngineAddress(address oldEngineAddress, address newEngineAddress);
event SpherexAdminTransferStarted(address currentAdmin, address pendingAdmin);
event SpherexAdminTransferCompleted(address oldAdmin, address newAdmin);

Expand All @@ -47,9 +49,11 @@ abstract contract SphereXProtected {
function __SphereXProtected_init() internal {
if (_getAddress(SPHEREX_ADMIN_STORAGE_SLOT) == address(0)) {
_setAddress(SPHEREX_ADMIN_STORAGE_SLOT, msg.sender);
emit SpherexAdminTransferCompleted(address(0), msg.sender);
}
if (_getAddress(SPHEREX_OPERATOR_STORAGE_SLOT) == address(0)) {
_setAddress(SPHEREX_OPERATOR_STORAGE_SLOT, msg.sender);
emit ChangedSpherexOperator(address(0), msg.sender);
}
}

Expand Down Expand Up @@ -148,7 +152,9 @@ abstract contract SphereXProtected {
* @param newSphereXOperator new address of the new operator account
*/
function changeSphereXOperator(address newSphereXOperator) external onlySphereXAdmin {
address oldSphereXOperator = _getAddress(SPHEREX_OPERATOR_STORAGE_SLOT);
_setAddress(SPHEREX_OPERATOR_STORAGE_SLOT, newSphereXOperator);
emit ChangedSpherexOperator(oldSphereXOperator, newSphereXOperator);
}

/**
Expand All @@ -163,7 +169,9 @@ abstract contract SphereXProtected {
|| ISphereXEngine(newSphereXEngine).supportsInterface(type(ISphereXEngine).interfaceId),
"!SX: Not a SphereXEngine"
);
address oldEngine = _getAddress(SPHEREX_ENGINE_STORAGE_SLOT);
_setAddress(SPHEREX_ENGINE_STORAGE_SLOT, newSphereXEngine);
emit ChangedSpherexEngineAddress(oldEngine, newSphereXEngine);
}

// ============ Hooks ============
Expand Down

0 comments on commit 42c6e61

Please sign in to comment.