Ein Problem zur Schwierigkeitsgleichung

Wenn ich dieses Buch Master Bitcoin lese , habe ich ein Problem damit, die „Schwierigkeit“ in Kapitel 8 zu verstehen.

Es gibt eine Schwierigkeitsgleichung:

New Difficulty = Old Difficulty * (Actual Time of Last 2016 Blocks / 20160 minutes)

Ich bin verwirrt. Wenn die tatsächliche Zeit
gemäß der Formel länger als 20160 Minuten wäre , wäre die neue Schwierigkeit größer als die alte Schwierigkeit , und die tatsächliche Zeit wäre immer länger.

Es sieht sehr seltsam aus. Für mich sollte die Gleichung lauten:

New Difficulty = Old Difficulty * (20160 minutes / Actual Time of Last 2016 Blocks)

Ich fand jedoch, dass diese Formel mit der im Bitcoin-Code übereinstimmt.

unsigned int CalculateNextWorkRequired(const CBlockIndex* pindexLast, int64_t nFirstBlockTime, const Consensus::Params& params)
{
    if (params.fPowNoRetargeting)
        return pindexLast->nBits;

    // Limit adjustment step
    int64_t nActualTimespan = pindexLast->GetBlockTime() - nFirstBlockTime;
    if (nActualTimespan < params.nPowTargetTimespan/4)
        nActualTimespan = params.nPowTargetTimespan/4;
    if (nActualTimespan > params.nPowTargetTimespan*4)
        nActualTimespan = params.nPowTargetTimespan*4;

    // Retarget
    const arith_uint256 bnPowLimit = UintToArith256(params.powLimit);
    arith_uint256 bnNew;
    bnNew.SetCompact(pindexLast->nBits);
    bnNew *= nActualTimespan;
    bnNew /= params.nPowTargetTimespan;

    if (bnNew > bnPowLimit)
        bnNew = bnPowLimit;

    return bnNew.GetCompact();
}

Dann fand ich diese Antwort .
Das ist, was ich verstehe, aber warum unterscheidet es sich von der Gleichung des Buches und des Codes.

aktualisieren

Ich denke, das war nur ein mehrdeutiger Ausdruck.
Der bessere Ausdruck sollte sein:

New Difficulty Target = Old Difficulty Target * (Actual Time of Last 2016 Blocks / 20160 minutes)

Antworten (1)

Der Code, den Sie zitieren, befasst sich nicht wirklich mit Schwierigkeiten. Es geht um Zielvorgaben . Das Ziel ist der maximale 256-Bit-Wert, den der Block-Hash haben darf.

Die Schwierigkeit ist definiert als 2^208 * 65535 / Ziel .

Was das Buch betrifft, sieht das in der Tat falsch aus.

Danke für die Antwort, wie Sie sagten, ist die Beschreibung des Buches falsch?
Das Buch ist falsch.