Unterstützt die Bitcoin Core API eine hochpräzise Kontostandsanzeige?

Ich arbeite derzeit mit einer Reihe von Altcoins und muss Ein- und Auszahlungen in Währungen mit sehr großer Obergrenze für die Münzanzahl wie Dogecoin unterstützen. Ich frage mich, ob der Bitcoin Core-Client, der die Grundlage für solche Altcoin-Clients bildet, solche Währungen mit hohem Nennwert intern und in seiner API unterstützt ( getbalancekann er beispielsweise beim Aufrufen von Guthaben von 10^12 Münzen mit einer Genauigkeit von 1 Satoshi anzeigen?), oder gibt es eine Grenze für die verwendete Genauigkeit?

Antworten (2)

Wie Gracchus sagte, verwendet Bitcoin intern 64-Bit-Ganzzahlen. Die JSON-Schnittstelle von Bitcoin hingegen verwendet Doubles, die nur eine Genauigkeit von 52 Bit ergeben. Beide Arten sind groß genug für Bitcoin (Double nur für den Datenaustausch, die Genauigkeit von Doubles reicht für tatsächliche Berechnungen nicht aus).

Im speziellen Fall von Dogecoin ist die Genauigkeit der JSON-Schnittstelle (und Teilen der GUI) ein bekanntes Problem, das wir hoffentlich in Zukunft beheben werden. Darunter leidet derzeit der Umgang mit Werten im Bereich von mehreren hundert Millionen Dogecoins.

Die intern verwendeten 64-Bit-Ganzzahlen sind auch ein Problem für Dogecoin, das verfolgt wird. Dies ist vor allem ein Problem, wenn jemand jemals mindestens 2^64 Koinu (Satoshi) in einer einzigen Brieftasche ansammelt. Dieses Problem sollte auf die Brieftasche beschränkt werden, auf Protokollebene ist die Größe der Transaktionen auf 10 Milliarden Dogen begrenzt.

Wie andere Coins das handhaben, weiß ich nicht. Es gibt mindestens eine Münze, die beliebige Präzision unterstützt, aber ich habe ihren Namen vergessen.

@Gracchus Floats sind die Lehrbuch-No-Nos. Doppelt weniger. Sie scheinen eine Genauigkeit von 15 signifikanten Ziffern zu haben, also wenn Sie nicht 10^7 Münzen haben, sind Sie immer noch bei einem Satoshi.
Doubles sind als internes Format für Bitcoins unbrauchbar (Präzisionsverlust durch Operationen), aber sie sind gerade groß genug, um eine Zahl in Satoshis in eine Zahl in BTC umzuwandeln oder umgekehrt. Sie sind praktisch genug, um von Bitcoin Core dafür „missbraucht“ zu werden.

Es sieht so aus , als würde der offizielle Client verwenden qint64, also gibt es keine Auflösung nach dem Dezimalkomma. Der Maximalwert ist größer als das erwartete Maximum von Bitcoin.

Verwenden Sie einfach die gleichen Datentypen wie die fraglichen Münzen, und Sie sollten in Ordnung sein.

Sie könnten Mikrowaagen in Ihrer eigenen App mit beliebiger Genauigkeit verwenden, aber Sie können sie nicht auf die offizielle Blockchain übertragen. Andere unterstützen möglicherweise willkürliche Genauigkeit, aber ich habe noch keine gesehen, die dies tut.

Nun, die JSON-API zeigt Salden nicht in Satoshis, sondern in BTC an. Wie wird das gehandhabt?