Ejemplo n.º 1
0
        public async Task <bool> IsVerifiedAsync(Keccak dataAssetId, Address address)
        {
            var id = Keccak.Compute(Rlp.Encode(Rlp.Encode(dataAssetId), Rlp.Encode(address)).Bytes);
            var depositApproval = await _depositApprovalRepository.GetAsync(id);

            if (depositApproval is null)
            {
                if (_logger.IsError)
                {
                    _logger.Error($"Deposit approval for data asset: '{dataAssetId}' was not found.");
                }

                return(false);
            }

            if (depositApproval.State != DepositApprovalState.Confirmed)
            {
                if (_logger.IsInfo)
                {
                    _logger.Info($"Deposit approval for data asset: '{dataAssetId}' has state: '{depositApproval.State}'.");
                }

                return(false);
            }

            if (_logger.IsInfo)
            {
                _logger.Info($"Deposit approval for data asset: '{dataAssetId}' was confirmed, required KYC is valid.");
            }

            return(true);
        }
Ejemplo n.º 2
0
        public async Task <Keccak?> RequestAsync(Keccak assetId, Address consumer, string kyc)
        {
            if (_logger.IsInfo)
            {
                _logger.Info($"Requesting a deposit approval for data asset: '{assetId}', consumer: '{consumer}'...");
            }
            var dataAsset = _dataAssetService.GetDiscovered(assetId);

            if (dataAsset is null)
            {
                if (_logger.IsError)
                {
                    _logger.Error($"Data asset: '{assetId}' was not found.");
                }
                return(null);
            }

            if (string.IsNullOrWhiteSpace(kyc))
            {
                if (_logger.IsError)
                {
                    _logger.Error("KYC cannot be empty.");
                }
                return(null);
            }

            if (kyc.Length > MaxKycChars)
            {
                if (_logger.IsError)
                {
                    _logger.Error($"Invalid KYC (over {MaxKycChars} chars).");
                }
                return(null);
            }

            var providerPeer = _providerService.GetPeer(dataAsset.Provider.Address);

            if (providerPeer is null)
            {
                if (_logger.IsError)
                {
                    _logger.Error($"Provider for address: '{dataAsset.Provider.Address}' was not found.");
                }
                return(null);
            }

            var id       = Keccak.Compute(Rlp.Encode(Rlp.Encode(assetId), Rlp.Encode(consumer)).Bytes);
            var approval = await _depositApprovalRepository.GetAsync(id);

            if (approval is null)
            {
                approval = new DepositApproval(id, assetId, dataAsset.Name, kyc, consumer,
                                               dataAsset.Provider.Address, _timestamper.EpochSeconds, DepositApprovalState.Pending);
                await _depositApprovalRepository.AddAsync(approval);
            }

            providerPeer.SendRequestDepositApproval(assetId, consumer, kyc);
            if (_logger.IsInfo)
            {
                _logger.Info($"Requested a deposit approval for data asset: '{assetId}', consumer: '{consumer}'.");
            }

            return(id);
        }