Как посчитать сложность proof of work для приёма события релеем Nostr

Два релея с порогом десять бит по-разному принимают одну заметку. Причина может быть в подсчёте только целых нулевых шестнадцатеричных цифр без учёта следующей цифры.

Считайте биты проверенного ID

Учебный ID начинается с 003. Два нуля дают восемь нулевых битов, а цифра 3 добавляет ещё два. Пример выводит десять. В настоящем обработчике сначала вычислите ID из подписанного события. Для полностью нулевой строки отдельно обработайте случай, когда первый единичный бит отсутствует.

const id = "003" + "f".repeat(61);
const bits = [...id].map(c => parseInt(c, 16).toString(2).padStart(4, "0")).join("");
console.log(bits.indexOf("1"));

Отдельно проверьте заявленную цель

Тег nonce может указывать сложность, к которой стремился издатель. Если политика требует десять бит и в результате, и в заявленной цели, удачный хеш при цели восемь пройдёт только первую проверку. Различайте эти причины в ответе об отказе. Такое доказательство удорожает рассылку событий Nostr и не связано с получением награды за блок.

github.com NIP-13