Receive event
pragma solidity ^0.8.0;
contract MsgReceiver {
event MyMessageReceived(string message);
ISignersRegistry signersRegistry;
constructor(address _signersRegistry) {
signersRegistry = ISignersRegistry(_signersRegistry);
}
function receiveMyMessage(
bytes calldata _signature,
string memory _message,
address _msgSender,
uint256 _chainId,
bytes calldata _transactionHash
) external {
bytes32 eventHash = keccak256(abi.encodePacked("MyMessage", _chainId, _msgSender, _transactionHash, _message));
address signer = eventHash.recover(_signature);
bool isSignerWhitelisted = signersRegistry.isPublicWhitelisted(signer);
require(isSignerWhitelisted, "Signer is not whitelisted");
emit MyMessageReceived(_message);
}
}
Last updated