33 lines
834 B
Solidity
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);
|
|
}
|
|
}
|