public static async Task <WalletClient> ConnectAsync(string networkAddress, string rootCertificate)
{
if (networkAddress == null)
{
throw new ArgumentNullException(nameof(networkAddress));
}
if (rootCertificate == null)
{
throw new ArgumentNullException(nameof(rootCertificate));
}
var channel = new Channel(networkAddress, new SslCredentials(rootCertificate));
var deadline = DateTime.UtcNow.AddSeconds(3);
try
{
await channel.ConnectAsync(deadline);
}
catch (TaskCanceledException)
{
await channel.ShutdownAsync();
throw new ConnectTimeoutException();
}
// Ensure the server is running a compatible version.
var versionClient = VersionService.NewClient(channel);
var response = await versionClient.VersionAsync(new VersionRequest(), deadline : deadline);
var serverVersion = new SemanticVersion(response.Major, response.Minor, response.Patch);
SemanticVersion.AssertCompatible(RequiredRpcServerVersion, serverVersion);
return(new WalletClient(channel));
}