public Task <ChannelVerify> ChannelVerify(ChannelVerifyRequest request) { var command = JsonConvert.SerializeObject(request, serializerSettings); TaskCompletionSource <ChannelVerify> task = new TaskCompletionSource <ChannelVerify>(); TaskInfo taskInfo = new TaskInfo(); taskInfo.TaskId = request.Id; taskInfo.TaskCompletionResult = task; taskInfo.Type = typeof(ChannelVerify); tasks.TryAdd(request.Id, taskInfo); client.SendMessage(command); return(task.Task); }
/// <summary> /// The channel_verify method checks the validity of a signature that can be used to redeem a specific amount of XRP from a payment channel. /// </summary> public async Task <bool> ChannelVerify(ChannelVerifyRequest request, CancellationToken cancellationToken = default) { jsonBuffer.Clear(); jsonWriter.Reset(); jsonWriter.WriteStartObject(); var requestId = WriteHeader(jsonWriter, "channel_verify"); jsonWriter.WriteString("channel_id", request.ChannelId.ToString()); jsonWriter.WriteString("amount", request.Amount.Drops.ToString()); jsonWriter.WriteBase16String("public_key", request.PublicKey.GetCanoncialBytes()); jsonWriter.WriteBase16String("signature", request.Signature.Span); WriteFooter(jsonWriter); jsonWriter.WriteEndObject(); jsonWriter.Flush(); var response = await SendReceiveAsync(requestId, jsonBuffer.WrittenMemory, cancellationToken); return(response.GetProperty("signature_verified").GetBoolean()); }