Dificultad y recompensa de Litecoin

¿Cómo puedo saber el difficultyvalor y rewardla red de Litecoin?

Estoy buscando un sitio web como

para obtener dificultad y recompensa por la red Litecoin (en lugar de la red Bitcoin)

Estoy buscando una manera de obtener dificultad y recompensa usando una API que se puede consultar cada 15 minutos para hacer mi propia calculadora de ganancias mineras.

La dificultad actual es de alrededor de 100 y la recompensa actual es de 25 LTC.

Respuestas (4)

La última versión de Abe admite getdifficulty, por lo que puede ejecutarlo usted mismo o convencer al administrador del explorador para que actualice. Pero esta será la dificultad a partir del último bloque resuelto. Esperaría que "litecoind getinfo" proporcione un número más preciso durante los ajustes de dificultad, y esto no requiere Abe o un sitio web.

En cuanto a la recompensa del bloque, a Abe le falta bcperblock. Quizás la ruta más fácil sea obtener el número de bloque actual (también disponible a través de getinfo) y calcular la recompensa. Según litecoin.org, la recompensa comienza en 50 LTC y se reduce a la mitad cada 840 000 bloques. En Python:

def reward(blocknumber):
    return 50.0 / (2 ** int((blocknumber + 1) / 840000))

Agregar 1 al número de bloque te da la recompensa del siguiente bloque, que es lo que les importa a los mineros.

Las versiones actuales de Abe admiten la llamada a la API getdifficulty. Por ejemplo, http://yacexplorer.tk/chain/Yacoin/q/getdifficulty devuelve la dificultad actual de Yacoin. El problema con Litecoin es que tanto explorer.litecoin.net como litecoinscout.com ejecutan versiones obsoletas de Abe.

Para estas versiones anteriores de Abe, está disponible la dificultad en el momento en que se resuelve un bloque; por lo general, debería estar lo suficientemente cerca de la dificultad actual. Aquí hay un enfoque alternativo que implementé para obtener la dificultad de Litecoin:

  1. obtener la altura de la cadena de bloques (/chain/name/q/getblockcount)
  2. obtener información del bloque (/search?q=blocknum)
  3. obtener dificultad

El paso 2 devuelve HTML que tendrá que raspar. Aquí hay algo de C# que armé:

private double GetDifficultyAbeAlt(string url_prefix, string chain_name)
{
    WebClient wc = new WebClient();
    int blockcount = Convert.ToInt32(wc.DownloadString(url_prefix + "/chain/" + chain_name + "/q/getblockcount"));
    string blockinfo = wc.DownloadString(url_prefix + "/search?q=" + blockcount.ToString());
    double difficulty = 0;
    foreach (string line in blockinfo.Split(new char[] { '\n' }))
        if (line.Contains("Difficulty") && !line.Contains("Cumulative"))
            difficulty = Convert.ToDouble(line.Split(new char[] { ' ' })[1]);
    return difficulty;
}

Para la recompensa del bloque, este es el enfoque que tomé y que debería funcionar con cualquier versión de Abe:

  1. obtener la altura de la cadena de bloques (/chain/name/q/getblockcount)
  2. obtener información del bloque (/search?q=blocknum)
  3. obtener el valor de la transacción de generación; restarle las tarifas pagadas por las otras transacciones en el bloque

Como arriba, el paso 2 devuelve HTML que tendrás que raspar. Aquí hay algo de C# que armé:

private decimal GetRewardAbe(string url_prefix, string chain_name)
{
    WebClient wc = new WebClient();
    int blockcount = Convert.ToInt32(wc.DownloadString(url_prefix + "/chain/" + chain_name + "/q/getblockcount"));
    string blockinfo = wc.DownloadString(url_prefix + "/search?q=" + blockcount.ToString());
    int tx_index = 0;
    decimal reward = 0;
    foreach (string line in blockinfo.Split(new char[] { '\n' }))
        if (line.Contains("<tr>") && !line.Contains("<table>"))
        {
            string[] fields = line.Split(new string[] { "<td>", "</td>", "<tr>", "</tr>" }, StringSplitOptions.RemoveEmptyEntries);
            if (tx_index == 0)
            {
                reward = Convert.ToDecimal(fields[3].Split(new char[] { ' ' })[1]);
                if (fields[3].Contains("+"))
                    break;
            }
            else
                reward -= Convert.ToDecimal(fields[1]);
            tx_index++;
        }
    return reward * (decimal)100000000;
}

El valor devuelto está en satoshis, de acuerdo con lo que devuelven blockexplorer.com o blockchain.info para Bitcoin.

La wiki de litecoin en github enumera los sitios de exploración de bloques .

La API explorer.litecoin.net parece ser lo que está buscando, la dificultad correspondiente podría recuperarse utilizando el nethashcomando de la API. La página específica que está buscando debe ser esta URL , consulte mi comentario para obtener más explicaciones.

Gracias, pero no entiendo qué parámetro debo pasar para obtener la dificultad actual. Probé este explorer.litecoin.net/q/nethash
Tanto explorer.litecoin.net como litecoinscout.com se basan en la API de Abe. Para obtener la dificultad actual, consulta esta URL: explorer.litecoin.net/chain/Litecoin/q/nethash/1/-1 La 'CADENA' es 'Litecoin', el 'INTERVALO' es '1' (cada bloque), y el INICIO es '-1' (último bloque). Su valor (actualmente alrededor de 150) está entre la segunda y la tercera última coma. Tendrás que encontrar una manera de extraer eso en tu calculadora. No parece haber un explorer.litecoin.net/chain/Litecoin/q/difficulty
¡Será un dolor analizar eso! ¿Por qué no están usando una API JSON? o YAML?
@working4coins No tengo idea, pero puede contactar a los creadores de los sitios del explorador. Debería ser fácil implementar una llamada API de 'dificultad' . De lo contrario, podrías correr solo .
Todavía estoy buscando una forma de saber la recompensa por bloque (ahora son 25 LTC) Antes eran 50 LTC
La recompensa del bloque no cambiará por un tiempo. El recuento de bloques actual es de alrededor de 330 000, y se supone que la recompensa se reducirá a la mitad en 840 000. Debería ser bueno configurando 25 LTC como un valor estático por ahora.

Puede ver la dificultad de Litecoin en Litecoin block explorer - blockr.io