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); }
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); }