/// <summary> /// Calls a contract method and returns the response. /// </summary> /// <param name="instance">The <see cref="IEtherscanApiClient"/> being extended.</param> /// <param name="to"></param> /// <param name="fn"></param> /// <param name="buildCall"></param> /// <param name="tag"></param> /// <returns></returns> public static async Task <EtherscanResponseMessage <string> > Call(this IEtherscanApiClient instance, string to, string fn, Action <ContractCallDataBuilder> buildCall, string tag = default(string)) { var builder = new ContractCallDataBuilder(fn); buildCall(builder); var message = new CallRequestMessage { To = to, Data = builder.EncodeData(), Tag = tag ?? "latest" }; return(await instance.Call(message)); }