Skip to content
This repository has been archived by the owner on Sep 9, 2024. It is now read-only.

Commit

Permalink
Merge pull request #168 from api3dao/v3
Browse files Browse the repository at this point in the history
v3
  • Loading branch information
bbenligiray authored Dec 9, 2023
2 parents b45d225 + 3d697d6 commit 95b4316
Show file tree
Hide file tree
Showing 211 changed files with 14,742 additions and 32,372 deletions.
29 changes: 0 additions & 29 deletions contracts/access-control-registry/AccessControlRegistry.sol
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

import "@openzeppelin/contracts/metatx/ERC2771Context.sol";
import "@openzeppelin/contracts/access/AccessControl.sol";
import "../utils/ExpiringMetaTxForwarder.sol";
import "../utils/SelfMulticall.sol";
import "./RoleDeriver.sol";
import "./interfaces/IAccessControlRegistry.sol";
Expand All @@ -18,16 +16,11 @@ import "./interfaces/IAccessControlRegistry.sol";
/// roles and grant these to accounts. Each role has a description, and roles
/// adminned by the same role cannot have the same description.
contract AccessControlRegistry is
ERC2771Context,
AccessControl,
ExpiringMetaTxForwarder,
SelfMulticall,
RoleDeriver,
IAccessControlRegistry
{
/// @dev AccessControlRegistry is its own trusted meta-tx forwarder
constructor() ERC2771Context(address(this)) {}

/// @notice Initializes the manager by initializing its root role and
/// granting it to them
/// @dev Anyone can initialize a manager. An uninitialized manager
Expand Down Expand Up @@ -95,26 +88,4 @@ contract AccessControlRegistry is
}
grantRole(role, _msgSender());
}

/// @dev See Context.sol
function _msgSender()
internal
view
virtual
override(Context, ERC2771Context)
returns (address)
{
return ERC2771Context._msgSender();
}

/// @dev See Context.sol
function _msgData()
internal
view
virtual
override(Context, ERC2771Context)
returns (bytes calldata)
{
return ERC2771Context._msgData();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,9 @@
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/access/IAccessControl.sol";
import "../../utils/interfaces/IExpiringMetaTxForwarder.sol";
import "../../utils/interfaces/ISelfMulticall.sol";

interface IAccessControlRegistry is
IAccessControl,
IExpiringMetaTxForwarder,
ISelfMulticall
{
interface IAccessControlRegistry is IAccessControl, ISelfMulticall {
event InitializedManager(
bytes32 indexed rootRole,
address indexed manager,
Expand Down
11 changes: 4 additions & 7 deletions contracts/allocators/Allocator.sol
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ abstract contract Allocator is IAllocator {
bytes32(0)
) {
_resetSlot(airnode, slotIndex);
emit ResetSlot(airnode, slotIndex, _msgSender());
emit ResetSlot(airnode, slotIndex, msg.sender);
}
}

Expand Down Expand Up @@ -70,15 +70,15 @@ abstract contract Allocator is IAllocator {
_resetSlot(airnode, slotIndex);
airnodeToSlotIndexToSlot[airnode][slotIndex] = Slot({
subscriptionId: subscriptionId,
setter: _msgSender(),
setter: msg.sender,
expirationTimestamp: expirationTimestamp
});
emit SetSlot(
airnode,
slotIndex,
subscriptionId,
expirationTimestamp,
_msgSender()
msg.sender
);
}

Expand All @@ -87,12 +87,9 @@ abstract contract Allocator is IAllocator {
/// @param slotIndex Index of the subscription slot to be reset
function _resetSlot(address airnode, uint256 slotIndex) private {
require(
slotCanBeResetByAccount(airnode, slotIndex, _msgSender()),
slotCanBeResetByAccount(airnode, slotIndex, msg.sender),
"Cannot reset slot"
);
delete airnodeToSlotIndexToSlot[airnode][slotIndex];
}

/// @dev See Context.sol
function _msgSender() internal view virtual returns (address sender);
}
16 changes: 1 addition & 15 deletions contracts/allocators/AllocatorWithAirnode.sol
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

import "@openzeppelin/contracts/metatx/ERC2771Context.sol";
import "../access-control-registry/AccessControlRegistryAdminned.sol";
import "./Allocator.sol";
import "./interfaces/IAllocatorWithAirnode.sol";

/// @title Contract that Airnode operators can use to temporarily
/// allocate subscription slots for the respective Airnodes
contract AllocatorWithAirnode is
ERC2771Context,
AccessControlRegistryAdminned,
Allocator,
IAllocatorWithAirnode
Expand All @@ -23,7 +21,6 @@ contract AllocatorWithAirnode is
address _accessControlRegistry,
string memory _adminRoleDescription
)
ERC2771Context(_accessControlRegistry)
AccessControlRegistryAdminned(
_accessControlRegistry,
_adminRoleDescription
Expand All @@ -43,7 +40,7 @@ contract AllocatorWithAirnode is
uint32 expirationTimestamp
) external override {
require(
hasSlotSetterRoleOrIsAirnode(airnode, _msgSender()),
hasSlotSetterRoleOrIsAirnode(airnode, msg.sender),
"Sender cannot set slot"
);
_setSlot(airnode, slotIndex, subscriptionId, expirationTimestamp);
Expand Down Expand Up @@ -100,15 +97,4 @@ contract AllocatorWithAirnode is
airnodeToSlotIndexToSlot[airnode][slotIndex].setter
);
}

/// @dev See Context.sol
function _msgSender()
internal
view
virtual
override(Allocator, ERC2771Context)
returns (address)
{
return ERC2771Context._msgSender();
}
}
16 changes: 1 addition & 15 deletions contracts/allocators/AllocatorWithManager.sol
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

import "@openzeppelin/contracts/metatx/ERC2771Context.sol";
import "../access-control-registry/AccessControlRegistryAdminnedWithManager.sol";
import "./Allocator.sol";
import "./interfaces/IAllocatorWithManager.sol";

/// @title Contract that Airnode operators can use to temporarily
/// allocate subscription slots for Airnodes
contract AllocatorWithManager is
ERC2771Context,
AccessControlRegistryAdminnedWithManager,
Allocator,
IAllocatorWithManager
Expand All @@ -25,7 +23,6 @@ contract AllocatorWithManager is
string memory _adminRoleDescription,
address _manager
)
ERC2771Context(_accessControlRegistry)
AccessControlRegistryAdminnedWithManager(
_accessControlRegistry,
_adminRoleDescription,
Expand All @@ -51,7 +48,7 @@ contract AllocatorWithManager is
uint32 expirationTimestamp
) external override {
require(
hasSlotSetterRoleOrIsManager(_msgSender()),
hasSlotSetterRoleOrIsManager(msg.sender),
"Sender cannot set slot"
);
_setSlot(airnode, slotIndex, subscriptionId, expirationTimestamp);
Expand Down Expand Up @@ -84,15 +81,4 @@ contract AllocatorWithManager is
airnodeToSlotIndexToSlot[airnode][slotIndex].setter
);
}

/// @dev See Context.sol
function _msgSender()
internal
view
virtual
override(Allocator, ERC2771Context)
returns (address)
{
return ERC2771Context._msgSender();
}
}
19 changes: 8 additions & 11 deletions contracts/authorizers/RequesterAuthorizer.sol
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ abstract contract RequesterAuthorizer is IRequesterAuthorizer {
airnode,
requester,
expirationTimestamp,
_msgSender()
msg.sender
);
}

Expand All @@ -88,7 +88,7 @@ abstract contract RequesterAuthorizer is IRequesterAuthorizer {
airnode,
requester,
expirationTimestamp,
_msgSender()
msg.sender
);
}

Expand All @@ -112,11 +112,11 @@ abstract contract RequesterAuthorizer is IRequesterAuthorizer {
status &&
!airnodeToRequesterToSetterToIndefiniteAuthorizationStatus[airnode][
requester
][_msgSender()]
][msg.sender]
) {
airnodeToRequesterToSetterToIndefiniteAuthorizationStatus[airnode][
requester
][_msgSender()] = true;
][msg.sender] = true;
unchecked {
indefiniteAuthorizationCount++;
}
Expand All @@ -126,11 +126,11 @@ abstract contract RequesterAuthorizer is IRequesterAuthorizer {
!status &&
airnodeToRequesterToSetterToIndefiniteAuthorizationStatus[airnode][
requester
][_msgSender()]
][msg.sender]
) {
airnodeToRequesterToSetterToIndefiniteAuthorizationStatus[airnode][
requester
][_msgSender()] = false;
][msg.sender] = false;
unchecked {
indefiniteAuthorizationCount--;
}
Expand All @@ -142,7 +142,7 @@ abstract contract RequesterAuthorizer is IRequesterAuthorizer {
requester,
status,
indefiniteAuthorizationCount,
_msgSender()
msg.sender
);
}

Expand Down Expand Up @@ -181,7 +181,7 @@ abstract contract RequesterAuthorizer is IRequesterAuthorizer {
requester,
setter,
indefiniteAuthorizationCount,
_msgSender()
msg.sender
);
}
}
Expand All @@ -203,7 +203,4 @@ abstract contract RequesterAuthorizer is IRequesterAuthorizer {
authorizationStatus.indefiniteAuthorizationCount > 0 ||
authorizationStatus.expirationTimestamp > block.timestamp;
}

/// @dev See Context.sol
function _msgSender() internal view virtual returns (address sender);
}
20 changes: 3 additions & 17 deletions contracts/authorizers/RequesterAuthorizerWithAirnode.sol
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

import "@openzeppelin/contracts/metatx/ERC2771Context.sol";
import "../access-control-registry/AccessControlRegistryAdminned.sol";
import "./RequesterAuthorizer.sol";
import "./interfaces/IRequesterAuthorizerWithAirnode.sol";

/// @title Authorizer contract that Airnode operators can use to temporarily or
/// indefinitely authorize requesters for the respective Airnodes
contract RequesterAuthorizerWithAirnode is
ERC2771Context,
AccessControlRegistryAdminned,
RequesterAuthorizer,
IRequesterAuthorizerWithAirnode
Expand All @@ -35,7 +33,6 @@ contract RequesterAuthorizerWithAirnode is
address _accessControlRegistry,
string memory _adminRoleDescription
)
ERC2771Context(_accessControlRegistry)
AccessControlRegistryAdminned(
_accessControlRegistry,
_adminRoleDescription
Expand All @@ -57,7 +54,7 @@ contract RequesterAuthorizerWithAirnode is
require(
hasAuthorizationExpirationExtenderRoleOrIsAirnode(
airnode,
_msgSender()
msg.sender
),
"Cannot extend expiration"
);
Expand All @@ -79,7 +76,7 @@ contract RequesterAuthorizerWithAirnode is
require(
hasAuthorizationExpirationSetterRoleOrIsAirnode(
airnode,
_msgSender()
msg.sender
),
"Cannot set expiration"
);
Expand All @@ -97,7 +94,7 @@ contract RequesterAuthorizerWithAirnode is
bool status
) external override {
require(
hasIndefiniteAuthorizerRoleOrIsAirnode(airnode, _msgSender()),
hasIndefiniteAuthorizerRoleOrIsAirnode(airnode, msg.sender),
"Cannot set indefinite status"
);
_setIndefiniteAuthorizationStatus(airnode, requester, status);
Expand Down Expand Up @@ -227,15 +224,4 @@ contract RequesterAuthorizerWithAirnode is
account
);
}

/// @dev See Context.sol
function _msgSender()
internal
view
virtual
override(RequesterAuthorizer, ERC2771Context)
returns (address)
{
return ERC2771Context._msgSender();
}
}
Loading

0 comments on commit 95b4316

Please sign in to comment.