public async Task <bool> OnMessage(CouncilMessage message, NodeConnection connection) { if (_containers.TryGetValue(message.ChainId, out var container)) { var council = container.GetCouncil(message.ChainType, message.ChainIndex); if (council == null) { return(false); } var key = _coreChain.GetValidPublicChainKeyWithFlags(council.ChainId, council.ChainIndex, council.LocalKeyIndex, council.RequiresChainKeyFlags, Time.Timestamp); if (!message.IsValidCouncilMemberSignature(key?.PublicKey)) { return(false); } await council.OnMessage(message, connection); } return(false); }
public abstract Task OnMessage(CouncilMessage message, NodeConnection connection);