relayer-registry/contracts/RelayerRegistry.sol

33 lines
834 B
Solidity

// SPDX-License-Identifier: MIT
pragma solidity ^0.6.12;
contract RelayerRegistry {
address public immutable governance;
mapping(bytes32 => bool) public isRelayer;
event RelayerAdded(bytes32 indexed relayer);
event RelayerRemoved(bytes32 indexed relayer);
modifier onlyGovernance() {
require(msg.sender == governance, "unauthorized");
_;
}
constructor(address _governance) public {
governance = _governance;
}
function add(bytes32 _relayer) public onlyGovernance {
require(!isRelayer[_relayer], "The relayer already exists");
isRelayer[_relayer] = true;
emit RelayerAdded(_relayer);
}
function remove(bytes32 _relayer) public onlyGovernance {
require(isRelayer[_relayer], "The relayer does not exist");
isRelayer[_relayer] = false;
emit RelayerRemoved(_relayer);
}
}