Contract Source Code:
File 1 of 3 : NetworkMiddlewareService.sol
// SPDX-License-Identifier: BUSL-1.1 pragma solidity 0.8.25; import {INetworkMiddlewareService} from "src/interfaces/service/INetworkMiddlewareService.sol"; import {IRegistry} from "src/interfaces/common/IRegistry.sol"; contract NetworkMiddlewareService is INetworkMiddlewareService { /** * @inheritdoc INetworkMiddlewareService */ address public immutable NETWORK_REGISTRY; /** * @inheritdoc INetworkMiddlewareService */ mapping(address network => address value) public middleware; constructor(address networkRegistry) { NETWORK_REGISTRY = networkRegistry; } /** * @inheritdoc INetworkMiddlewareService */ function setMiddleware(address middleware_) external { if (!IRegistry(NETWORK_REGISTRY).isEntity(msg.sender)) { revert NotNetwork(); } if (middleware[msg.sender] == middleware_) { revert AlreadySet(); } middleware[msg.sender] = middleware_; emit SetMiddleware(msg.sender, middleware_); } }
File 2 of 3 : INetworkMiddlewareService.sol
// SPDX-License-Identifier: BUSL-1.1 pragma solidity 0.8.25; interface INetworkMiddlewareService { error AlreadySet(); error NotNetwork(); /** * @notice Emitted when a middleware is set for a network. * @param network address of the network * @param middleware new middleware of the network */ event SetMiddleware(address indexed network, address middleware); /** * @notice Get the network registry's address. * @return address of the network registry */ function NETWORK_REGISTRY() external view returns (address); /** * @notice Get a given network's middleware. * @param network address of the network * @return middleware of the network */ function middleware(address network) external view returns (address); /** * @notice Set a new middleware for a calling network. * @param middleware new middleware of the network */ function setMiddleware(address middleware) external; }
File 3 of 3 : IRegistry.sol
// SPDX-License-Identifier: BUSL-1.1 pragma solidity 0.8.25; interface IRegistry { error EntityNotExist(); /** * @notice Emitted when an entity is added. * @param entity address of the added entity */ event AddEntity(address indexed entity); /** * @notice Get if a given address is an entity. * @param account address to check * @return if the given address is an entity */ function isEntity(address account) external view returns (bool); /** * @notice Get a total number of entities. * @return total number of entities added */ function totalEntities() external view returns (uint256); /** * @notice Get an entity given its index. * @param index index of the entity to get * @return address of the entity */ function entity(uint256 index) external view returns (address); }
Please enter a contract address above to load the contract details and source code.
This website uses cookies to improve your experience. By continuing to use this website, you agree to its Terms and Privacy Policy.