public async Task AddSharingInformationAsync(LogEvent logEvent) { try { var selfPubkey = (await _accountService.GetPublicKeyAsync()).ToHex(); var secretSharingInformation = new SecretSharingInformation(); secretSharingInformation.MergeFrom(logEvent); if (!secretSharingInformation.PreviousRound.RealTimeMinersInformation.ContainsKey(selfPubkey)) { return; } var newInValue = await GenerateInValueAsync(secretSharingInformation); Logger.LogInformation( $"Add in value {newInValue} for round id {secretSharingInformation.CurrentRoundId}"); _inValueCache.AddInValue(secretSharingInformation.CurrentRoundId, newInValue); if (secretSharingInformation.PreviousRound.RealTimeMinersInformation.Count == 1) { return; } await CollectPiecesWithSecretSharingAsync(secretSharingInformation, newInValue, selfPubkey); RevealPreviousInValues(secretSharingInformation, selfPubkey); } catch (Exception e) { Logger.LogError($"Error in AddSharingInformationAsync.\n{e.Message}\n{e.StackTrace}"); } }