private async Task ProcessBroadcastedCommitment(ICommitment commitment, ICoin spendingCoin)
        {
            var lastCommitment = await _commitmentRepository.GetLastCommitment(commitment.Multisig, commitment.AssetId, commitment.Type);

            if (lastCommitment.CommitmentId == commitment.CommitmentId)
            {
                await _logger.WriteInfoAsync("OffchainCommitmentMonitoringFunction", "ProcessBroadcastedCommitment",
                                             $"CommitmentId: {commitment.CommitmentId}", "Last commitment was broadcasted");

                await _offchainService.CloseChannel(commitment);

                await _commitmentBroadcastRepository.InsertCommitmentBroadcast(commitment.CommitmentId, spendingCoin.Outpoint.Hash.ToString(),
                                                                               CommitmentBroadcastType.Valid, commitment.ClientAmount, commitment.HubAmount, commitment.ClientAmount, commitment.HubAmount, null);

                return;
            }
            await _logger.WriteWarningAsync("OffchainCommitmentMonitoringFunction", "ProcessBroadcastedCommitment",
                                            $"CommitmentId: {commitment.CommitmentId}", "Commitment is not last.");

            if (commitment.Type == CommitmentType.Client)
            {
                var assetSettings = await _offchainService.GetAssetSetting(commitment.AssetId);

                var hash = await _offchainService.SpendCommitmemtByMultisig(commitment, spendingCoin, !string.IsNullOrEmpty(assetSettings.ChangeWallet)?assetSettings.ChangeWallet : assetSettings.HotWallet);

                await _offchainService.CloseChannel(commitment);

                await _commitmentBroadcastRepository.InsertCommitmentBroadcast(commitment.CommitmentId, spendingCoin.Outpoint.Hash.ToString(),
                                                                               CommitmentBroadcastType.Revoked, commitment.ClientAmount, commitment.HubAmount, lastCommitment.ClientAmount, lastCommitment.HubAmount, hash);
            }
            else
            {
                await _slackNotifier.WarningAsync($"Hub commitment with id {commitment.CommitmentId} was broadcasted but it's not last");
            }
        }
示例#2
0
        public async Task Process()
        {
            var maxAmount    = new Money(_baseSettings.MaxExtraAmount, MoneyUnit.BTC);
            var extraAmounts = await _extraAmountRepository.GetData();

            foreach (var extraAmount in extraAmounts)
            {
                if (extraAmount.Amount > maxAmount)
                {
                    await _slackNotifier.WarningAsync($"Address [{extraAmount.Address}] already has [{extraAmount.Amount}] extra satoshi!");
                }
            }
        }
        public async Task Execute()
        {
            try
            {
                string hash = await _exchangeContractService.PingMainExchangeContract();

                await _log.WriteInfoAsync("PingContractsJob", "Execute", "", $"MainExchange has been pinged trHash {hash}", DateTime.UtcNow);

                await _slackNotifier.WarningAsync($"Main Exchange conrtract was pinged {DateTime.UtcNow} - utc, {hash} - trHash");
            }
            catch (Exception e)
            {
                await _log.WriteErrorAsync("PingContractsJob", "Execute", "", e, DateTime.UtcNow);
            }
        }