Skip to content

Commit

Permalink
Merge branch 'feat/access-control' into feat/ebo-access-module
Browse files Browse the repository at this point in the history
  • Loading branch information
xorsal committed Nov 18, 2024
2 parents 64ecc28 + 992c835 commit 25c3341
Show file tree
Hide file tree
Showing 6 changed files with 29 additions and 52 deletions.
10 changes: 2 additions & 8 deletions src/contracts/EBOFinalityModule.sol
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@
pragma solidity 0.8.26;

import {IModule, Module} from '@defi-wonderland/prophet-core/solidity/contracts/Module.sol';
import {ModuleAccessController} from
'@defi-wonderland/prophet-core/solidity/contracts/access/ModuleAccessController.sol';

import {EnumerableSet} from '@openzeppelin/contracts/utils/structs/EnumerableSet.sol';

Expand All @@ -20,7 +18,7 @@ import {
* @notice Module allowing users to index data into the subgraph
* as a result of a request being finalized
*/
contract EBOFinalityModule is ModuleAccessController, IEBOFinalityModule {
contract EBOFinalityModule is Module, IEBOFinalityModule {
using EnumerableSet for EnumerableSet.AddressSet;

/// @inheritdoc IEBOFinalityModule
Expand All @@ -37,11 +35,7 @@ contract EBOFinalityModule is ModuleAccessController, IEBOFinalityModule {
* @param _eboRequestCreator The address of the EBORequestCreator
* @param _arbitrable The address of the Arbitrable contract
*/
constructor(
IOracle _oracle,
IEBORequestCreator _eboRequestCreator,
IArbitrable _arbitrable
) ModuleAccessController(_oracle) {
constructor(IOracle _oracle, IEBORequestCreator _eboRequestCreator, IArbitrable _arbitrable) Module(_oracle) {
_addEBORequestCreator(_eboRequestCreator);
ARBITRABLE = _arbitrable;
}
Expand Down
10 changes: 2 additions & 8 deletions src/contracts/EBORequestModule.sol
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@
pragma solidity 0.8.26;

import {IModule, Module} from '@defi-wonderland/prophet-core/solidity/contracts/Module.sol';
import {ModuleAccessController} from
'@defi-wonderland/prophet-core/solidity/contracts/access/ModuleAccessController.sol';
import {EnumerableSet} from '@openzeppelin/contracts/utils/structs/EnumerableSet.sol';

import {IArbitrable, IEBORequestCreator, IEBORequestModule, IOracle} from 'interfaces/IEBORequestModule.sol';
Expand All @@ -12,7 +10,7 @@ import {IArbitrable, IEBORequestCreator, IEBORequestModule, IOracle} from 'inter
* @title EBORequestModule
* @notice Module allowing users to create a request for RPC data for a specific epoch
*/
contract EBORequestModule is ModuleAccessController, IEBORequestModule {
contract EBORequestModule is Module, IEBORequestModule {
using EnumerableSet for EnumerableSet.AddressSet;

/// @inheritdoc IEBORequestModule
Expand All @@ -29,11 +27,7 @@ contract EBORequestModule is ModuleAccessController, IEBORequestModule {
* @param _eboRequestCreator The address of the EBORequestCreator
* @param _arbitrable The address of the Arbitrable contract
*/
constructor(
IOracle _oracle,
IEBORequestCreator _eboRequestCreator,
IArbitrable _arbitrable
) ModuleAccessController(_oracle) {
constructor(IOracle _oracle, IEBORequestCreator _eboRequestCreator, IArbitrable _arbitrable) Module(_oracle) {
_addEBORequestCreator(_eboRequestCreator);
ARBITRABLE = _arbitrable;
}
Expand Down
4 changes: 2 additions & 2 deletions src/interfaces/IEBORequestCreator.sol
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ interface IEBORequestCreator {
* @return _disputeModule The dispute module address
* @return _resolutionModule The resolution module address
* @return _finalityModule The finality module address
* @return _accessControlModule The address of the access control module
* @return _accessModule The address of the access module
* @return _requestModuleData The request module data
* @return _responseModuleData The response module data
* @return _disputeModuleData The dispute module data
Expand All @@ -171,7 +171,7 @@ interface IEBORequestCreator {
address _disputeModule,
address _resolutionModule,
address _finalityModule,
address _accessControlModule,
address _accessModule,
bytes memory _requestModuleData,
bytes memory _responseModuleData,
bytes memory _disputeModuleData,
Expand Down
9 changes: 5 additions & 4 deletions test/integration/arbitrum/CreateRequest.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,9 @@ contract IntegrationCreateRequest is IntegrationBase {
// Should revert if the requester is not the EBORequestCreator
vm.expectRevert(IEBORequestModule.EBORequestModule_InvalidRequester.selector);
_requestData.requester = _requester;
_accessControl.user = _requester;

vm.prank(_requester);
oracle.createRequest(_requestData, '', _accessControl);
oracle.createRequest(_requestData, '', _createAccessControl());

// Should revert if the epoch is invalid
vm.expectRevert(IEBORequestCreator.EBORequestCreator_InvalidEpoch.selector);
Expand All @@ -44,11 +43,13 @@ contract IntegrationCreateRequest is IntegrationBase {
_requestParams.chainId = _chainId;
_requestData.requestModuleData = abi.encode(_requestParams);
_requestData.requester = address(eboRequestCreator);
_accessControl.user = address(eboRequestCreator);

// Expect the oracle to create the request
vm.expectCall(
address(oracle), abi.encodeWithSelector(IOracle.createRequest.selector, _requestData, bytes32(0), _accessControl)
address(oracle),
abi.encodeWithSelector(
IOracle.createRequest.selector, _requestData, bytes32(0), _createAccessControl(address(eboRequestCreator))
)
);

vm.prank(_requester);
Expand Down
30 changes: 5 additions & 25 deletions test/integration/arbitrum/IntegrationBase.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,6 @@ contract IntegrationBase is Deploy, Test, Helpers {
uint256 internal _currentEpoch;
uint256 internal _blockNumber;

IAccessController.AccessControl internal _accessControl;

function setUp() public virtual override {
vm.createSelectFork(vm.rpcUrl('arbitrum'), _ARBITRUM_SEPOLIA_FORK_BLOCK);

Expand All @@ -66,9 +64,6 @@ contract IntegrationBase is Deploy, Test, Helpers {

// Set block number
_blockNumber = block.number;

// Configure the access control
_accessControl = IAccessController.AccessControl({user: address(0), data: bytes('')});
}

function _createRequest() internal returns (bytes32 _requestId) {
Expand All @@ -95,11 +90,8 @@ contract IntegrationBase is Deploy, Test, Helpers {
IOracle.Request memory _requestData = _requests[_requestId];
IOracle.Response memory _responseData = _instantiateResponseData(_requestId);

// Set the caller
_accessControl.user = _proposer;

vm.prank(_proposer);
oracle.proposeResponse(_requestData, _responseData, _accessControl);
oracle.proposeResponse(_requestData, _responseData, _createAccessControl());

_responseId = _responseData._getId();
_responses[_responseId] = _responseData;
Expand All @@ -110,11 +102,8 @@ contract IntegrationBase is Deploy, Test, Helpers {
IOracle.Response memory _responseData = _responses[_responseId];
IOracle.Dispute memory _disputeData = _instantiateDisputeData(_requestId, _responseId);

// Set the caller
_accessControl.user = _disputer;

vm.prank(_disputer);
oracle.disputeResponse(_requestData, _responseData, _disputeData, _accessControl);
oracle.disputeResponse(_requestData, _responseData, _disputeData, _createAccessControl());

_disputeId = _disputeData._getId();
_disputes[_disputeId] = _disputeData;
Expand Down Expand Up @@ -151,21 +140,15 @@ contract IntegrationBase is Deploy, Test, Helpers {
IOracle.Response memory _responseData = _responses[_responseId];
IOracle.Dispute memory _disputeData = _disputes[_disputeId];

// Set the caller
_accessControl.user = address(this);

oracle.escalateDispute(_requestData, _responseData, _disputeData, _accessControl);
oracle.escalateDispute(_requestData, _responseData, _disputeData, _createAccessControl(address(this)));
}

function _resolveDispute(bytes32 _requestId, bytes32 _responseId, bytes32 _disputeId) internal {
IOracle.Request memory _requestData = _requests[_requestId];
IOracle.Response memory _responseData = _responses[_responseId];
IOracle.Dispute memory _disputeData = _disputes[_disputeId];

// Set the caller
_accessControl.user = address(this);

oracle.resolveDispute(_requestData, _responseData, _disputeData, _accessControl);
oracle.resolveDispute(_requestData, _responseData, _disputeData, _createAccessControl(address(this)));
}

function _arbitrateDispute(bytes32 _disputeId, IOracle.DisputeStatus _award) internal {
Expand All @@ -177,10 +160,7 @@ contract IntegrationBase is Deploy, Test, Helpers {
IOracle.Request memory _requestData = _requests[_requestId];
IOracle.Response memory _responseData = _responses[_responseId];

// Set the caller
_accessControl.user = address(this);

oracle.finalize(_requestData, _responseData, _accessControl);
oracle.finalize(_requestData, _responseData, _createAccessControl(address(this)));
}

function _releaseUnfinalizableResponseBond(bytes32 _requestId, bytes32 _responseId) internal {
Expand Down
18 changes: 13 additions & 5 deletions test/unit/CouncilArbitrator.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ contract CouncilArbitrator_Unit_BaseTest is Test, Helpers {
IOracle public oracle;
IArbitratorModule public arbitratorModule;
IArbitrable public arbitrable;
IAccessController.AccessControl internal _accessControl;

event ResolutionStarted(
bytes32 indexed _disputeId, IOracle.Request _request, IOracle.Response _response, IOracle.Dispute _dispute
Expand All @@ -60,7 +59,6 @@ contract CouncilArbitrator_Unit_BaseTest is Test, Helpers {
vm.mockCall(address(arbitratorModule), abi.encodeCall(IValidator.ORACLE, ()), abi.encode(oracle));

councilArbitrator = new MockCouncilArbitrator(arbitratorModule, arbitrable);
_accessControl = IAccessController.AccessControl({user: address(councilArbitrator), data: bytes('')});
}

function _mockGetAnswer(bytes32 _disputeId, IOracle.DisputeStatus _status) internal {
Expand Down Expand Up @@ -214,7 +212,7 @@ contract CouncilArbitrator_Unit_ArbitrateDispute is CouncilArbitrator_Unit_BaseT
_params.resolutionParams.request,
_params.resolutionParams.response,
_params.resolutionParams.dispute,
_accessControl
_createAccessControl(address(councilArbitrator))
)
)
);
Expand All @@ -231,7 +229,12 @@ contract CouncilArbitrator_Unit_ArbitrateDispute is CouncilArbitrator_Unit_BaseT
vm.expectCall(
address(oracle),
abi.encodeCall(
IOracle.finalize, (_params.resolutionParams.request, _params.resolutionParams.response, _accessControl)
IOracle.finalize,
(
_params.resolutionParams.request,
_params.resolutionParams.response,
_createAccessControl(address(councilArbitrator))
)
)
);
councilArbitrator.arbitrateDispute(_params.disputeId, IOracle.DisputeStatus(_params.award));
Expand All @@ -248,7 +251,12 @@ contract CouncilArbitrator_Unit_ArbitrateDispute is CouncilArbitrator_Unit_BaseT
vm.expectCall(
address(oracle),
abi.encodeCall(
IOracle.finalize, (_params.resolutionParams.request, _params.resolutionParams.response, _accessControl)
IOracle.finalize,
(
_params.resolutionParams.request,
_params.resolutionParams.response,
_createAccessControl(address(councilArbitrator))
)
)
);
councilArbitrator.arbitrateDispute(_params.disputeId, IOracle.DisputeStatus(_params.award));
Expand Down

0 comments on commit 25c3341

Please sign in to comment.