public async Task StartReissuanceAsync(BobClient bobClient, IEnumerable <long> amounts, IEnumerable <long> vsizes, CancellationToken cancellationToken) { await Task.WhenAll(AmountCredentialToPresentTasks.Concat(VsizeCredentialToPresentTasks)).ConfigureAwait(false); IEnumerable <Credential> inputAmountCredentials = AmountCredentialToPresentTasks.Select(x => x.Result); IEnumerable <Credential> inputVsizeCredentials = VsizeCredentialToPresentTasks.Select(x => x.Result); var amountsToRequest = AddExtraCredentialRequests(amounts, inputAmountCredentials.Sum(x => x.Value)); var vsizesToRequest = AddExtraCredentialRequests(vsizes, inputVsizeCredentials.Sum(x => x.Value)); (IEnumerable <Credential> RealAmountCredentials, IEnumerable <Credential> RealVsizeCredentials)result = await bobClient.ReissueCredentialsAsync( amountsToRequest, vsizesToRequest, inputAmountCredentials, inputVsizeCredentials, cancellationToken).ConfigureAwait(false); // TODO keep the credentials that were not needed by the graph var(amountCredentials, _) = SeparateExtraCredentials(result.RealAmountCredentials, amounts); var(vsizeCredentials, _) = SeparateExtraCredentials(result.RealVsizeCredentials, vsizes); foreach (var(tcs, credential) in AmountCredentialTasks.Zip(amountCredentials)) { tcs.SetResult(credential); } foreach (var(tcs, credential) in VsizeCredentialTasks.Zip(vsizeCredentials)) { tcs.SetResult(credential); } }
public async Task StartOutputRegistrationAsync( BobClient bobClient, Script scriptPubKey, CancellationToken cancellationToken) { await Task.WhenAll(AmountCredentialToPresentTasks.Concat(VsizeCredentialToPresentTasks)).ConfigureAwait(false); IEnumerable <Credential> inputAmountCredentials = AmountCredentialToPresentTasks.Select(x => x.Result); IEnumerable <Credential> inputVsizeCredentials = VsizeCredentialToPresentTasks.Select(x => x.Result); await bobClient.RegisterOutputAsync( scriptPubKey, inputAmountCredentials, inputVsizeCredentials, cancellationToken).ConfigureAwait(false); }