IEnumerator WhitelistTransaction(Transaction transaction, Action <string, string> onComplete)
    {
        var postDataObj = new WhitelistPostData(transaction);


        string reqUrl = baseURL + whitelistURL;

        WWWForm form = new WWWForm();

        form.AddField("envelope", postDataObj.envelope);
        form.AddField("networkId", postDataObj.network_id);
        form.AddField("network_id", postDataObj.network_id); //for forward compatibility


        var req = UnityWebRequest.Post(reqUrl, form);

        yield return(req.SendWebRequest());

        if (req.isNetworkError || req.isHttpError)
        {
            LogError(req.error);
            onComplete?.Invoke(null, null);
        }
        else
        {
            onComplete(req.downloadHandler.text, transaction.Id);
        }
    }
        /// <summary>
        /// whitelists a transaction
        /// </summary>
        /// <param name="transaction"></param>
        /// <param name="onComplete"></param>
        /// <returns></returns>
        public static IEnumerator WhitelistTransaction(Transaction transaction, Action <string> onComplete = null)
        {
            var postDataObj = new WhitelistPostData(transaction);
            var postData    = JsonUtility.ToJson(postDataObj);
            var rawPostData = Encoding.UTF8.GetBytes(postData);

            // UnityWebRequest does not work correclty when posting a JSON string so we use a byte[] and a hacky workaround
            var url = "http://34.239.111.38:3000/whitelist";
            var req = UnityWebRequest.Post(url, "POST");

            req.SetRequestHeader("Content-Type", "application/json");
            req.uploadHandler = new UploadHandlerRaw(rawPostData);

            yield return(req.SendWebRequest());

            if (req.isNetworkError || req.isHttpError)
            {
                Debug.Log(req.error);
                if (onComplete != null)
                {
                    onComplete(null);
                }
            }
            else
            {
                Debug.Log("response code: " + req.responseCode);
                Debug.Log(req.downloadHandler.text);
                if (onComplete != null)
                {
                    onComplete(req.downloadHandler.text);
                }
            }
        }