/// <summary>
        /// Método que pega saldo de determinado endereço
        /// </summary>
        /// <returns> O saldo da chave </returns>
        internal static string PegarSaldo()
        {
            string chavePrivada  = "cUaDX2ECmotrvVH71puhfmRHSTCjUxUtV5cUipqkMnfLGhzLKHAn";
            var    bitcoinSecret = new BitcoinSecret(chavePrivada);
            var    rede          = bitcoinSecret.Network;
            var    saldo         = "0";

            try
            {
                saldo = ExploradorBlockchain.RetornarSaldo(bitcoinSecret, rede);
            }catch (Exception)
            {
                saldo = "Erro ao buscar o saldo";
            }
            return(saldo);
        }
        /// <summary>
        /// Método que envia valor para para determinado endereço
        /// </summary>
        public static bool Enviar(string destino, decimal valorAEnviar)
        {
            valorAEnviar = 0.00000001m;
            destino      = "2N8MhUSTiw5JX8QCD4XoAZ2Qb5DcX9E5Qf6";
            var bitcoinSecret = RetonaPrivateKey();                                                                                               //TODO: Retorna private key, verifica saldo do outpoint e pega mais uma se não for o suficiente ou erro se não tiver
            var rede          = bitcoinSecret.Network;

            var transacao = Transaction.Create(rede);

            var coinsDaTransacao = ExploradorBlockchain.PegarCoins(bitcoinSecret.ScriptPubKey, rede);

            var outPointAGastar = PegarOutpointOrigem(coinsDaTransacao, bitcoinSecret.ScriptPubKey);

            transacao.Inputs.Add(new TxIn()
            {
                PrevOut = outPointAGastar
            });

            var enderecoDestino = BitcoinAddress.Create(destino, rede);
            //Gerado= {2N8MhUSTiw5JX8QCD4XoAZ2Qb5DcX9E5Qf6}

            var taxaDeMineracao = new Money(0.00008000m, MoneyUnit.BTC); //Taxa fixa em 80 bit ou 8000 satoshis

            var quantiaTxInDisponivel = (Money)coinsDaTransacao[(int)outPointAGastar.N].Amount;

            var valor = new Money(valorAEnviar, MoneyUnit.BTC);

            if (quantiaTxInDisponivel < valor)
            {
                throw new Exception("Não há valor disponível para a transação.");
            }
            if (quantiaTxInDisponivel - valor < taxaDeMineracao)
            {
                throw new Exception("A quantia disponivel para envio não é suficiente para arcar com a taxa de mineração.");
            }

            var troco = quantiaTxInDisponivel - valor - taxaDeMineracao;

            TxOut txOut = new TxOut()
            {
                Value        = valor,
                ScriptPubKey = enderecoDestino.ScriptPubKey
            };

            TxOut trocoTxOut = new TxOut()
            {
                Value        = troco,
                ScriptPubKey = bitcoinSecret.ScriptPubKey
            };

            transacao.Outputs.Add(txOut);
            transacao.Outputs.Add(trocoTxOut);

            var mensagem = "Primeira transacao Arbitro Bitcoin!";
            var bytes    = Encoding.UTF8.GetBytes(mensagem);

            transacao.Outputs.Add(new TxOut()
            {
                Value        = Money.Zero,
                ScriptPubKey = TxNullDataTemplate.Instance.GenerateScriptPubKey(bytes)
            });

            transacao.Inputs[0].ScriptSig = bitcoinSecret.ScriptPubKey;

            transacao.Sign(bitcoinSecret, coinsDaTransacao.ToArray());

            var txId = transacao.GetHash();

            return(ExploradorBlockchain.PropagarTransacao(transacao, bitcoinSecret.Network));
        }