Tag-Beschreibung samsung-kies
Antwort schamlos gestohlen von stackexchange:
Schwierigkeit der Kodierung ausführlich dargestellt hier.
Hexadezimale Darstellung, wie
0x182815ee
besteht aus zwei teilen:
0x18
-- Anzahl der bytes, die in einer Ziel -0x2815ee
-- target-PräfixDies bedeutet, dass gültige hash-sollte weniger als
0x2815ee000000000000000000000000000000000000000000
(es ist genau0x18
= 24 bytes lang).Floating-point-Darstellung der Schwierigkeitsgrad zeigt an, wie viel Strom Ziel ist schwieriger, als in der genesis-block.
Satoshi beschlossen,
0x1d00ffff
als eine Schwierigkeit für die genesis block, so dass das Ziel war0x00ffff0000000000000000000000000000000000000000000000000000
.Und 50810339.04827648 ist, wie viel Strom Ziel größer ist als die erste.
Wie der Bitcoin client konvertiert von bits -> Schwierigkeit:
uint256& uint256::SetCompact(uint32_t nCompact, bool *pfNegative, bool *pfOverflow)
{
int nSize = nCompact >> 24;
uint32_t nWord = nCompact & 0x007fffff;
if (nSize <= 3) {
nWord >>= 8*(3-nSize);
*diese = nWord;
} else {
*diese = nWord;
*dieser <<= 8*(nSize-3);
}
wenn (pfNegative)
*pfNegative = nWord != 0 && (nCompact & 0x00800000) != 0;
wenn (pfOverflow)
*pfOverflow = nWord != 0 && ((nSize > 34) ||
(nWord > 0xff && nSize > 33) ||
(nWord > 0xffff && nSize > 32));
Rückkehr *diese;
}
Wie der Bitcoin client konvertiert vom Schwierigkeitsgrad -> bits:
uint32_t uint256::GetCompact(bool fNegative) const
{
int nSize = (bits() + 7) / 8;
uint32_t nCompact = 0;
if (nSize <= 3) {
nCompact = GetLow64() << 8*(3-nSize);
} else {
uint256 bn = *dieser >> 8*(nSize-3);
nCompact = bn.GetLow64();
}
// Die 0x00800000 bit kennzeichnet das Vorzeichen.
// So, wenn es bereits gesetzt ist, teilen Sie die Mantisse von 256 und erhöhen Sie die Exponenten.
wenn (nCompact & 0x00800000) {
nCompact >>= 8;
nSize++;
}
assert((nCompact & ~0x007fffff) == 0);
assert(nSize < 256);
nCompact |= nSize << 24;
nCompact |= (fNegative && (nCompact & 0x007fffff) ? 0x00800000 : 0);
zurück nCompact;
}
Die Umwandlung von Ziel zu Schwierigkeiten in der Schale. Erstellen Sie die Datei target-to-difficulty.sh
:
#!/bin/bash
echo "ibase=16;FFFF0000000000000000000000000000000000000000000000000000 / $1" | bc -l
Verwendung:
$ ./target-to-difficulty.sh 000000000000000024DBE9000000000000000000000000000000000000000000
29829733124.04041574884510759883