Skip to content

PoSe score increase: table says 2/3, prose on the same page says 66% (implementation uses 66%) #584

Description

@DashBot-0001

The "PoSe Score Calculation" section of docs/core/guide/dash-features-proof-of-service.md states the per-failure score increase two different ways, and the two disagree.

Table:

PoSe Parameter Value Example Value
PoSe Score Increases Maximum PoSe Score * 2/3 3333

Prose, immediately below the same table:

The current PoSe scoring algorithm increases the PoSe score by 66% of the maximum score for each failed DKG session.

Since 2/3 = 66.67%, these produce different numbers, and a reader has no way to tell which one to trust.

The implementation uses an integer percentage:

// src/evo/deterministicmns.cpp
int CDeterministicMNList::CalcPenalty(int percent) const {
    assert(percent > 0);
    return (CalcMaxPoSePenalty() * percent) / 100;
}

// src/evo/specialtxman.cpp — the only call site
mnList.PoSePunish(members[i]->proTxHash, mnList.CalcPenalty(66), debugLogs);

So the prose is correct and the table is not. For the table's own example of 5000 masternodes, the increase is 5000 * 66 / 100 = 3300, not 3333.

Scope, to be clear about how much this matters: I re-ran the worked example that follows the table under both formulas, and every Valid/PoSe-Banned outcome in it is unchanged. So this is a consistency problem rather than a wrong conclusion. It's still worth fixing because the page currently contradicts itself, and an operator working out how much recovery time they have left after a DKG failure has no way to know which figure applies.

Suggested fix: change the table row to Maximum PoSe Score * 66% with example value 3300. The score columns in the worked example below would shift slightly as a result, though as noted the outcomes stay the same.

Reported with assistance from Claude (Anthropic).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions