¿La API de Bitcoin Core admite la visualización de saldos de alta precisión?

Actualmente estoy trabajando con una cantidad de altcoins y necesito respaldar depósitos y retiros en monedas con un límite de número de moneda muy grande como Dogecoin. Me pregunto si el cliente Bitcoin Core que es la base para tales clientes de altcoin admite monedas de tan alta denominación internamente y en su API (por ejemplo, al llamar, getbalance¿puede mostrar saldos de 10 ^ 12 monedas con una precisión de 1 satoshi?), o hay un límite a la precisión utilizada?

Respuestas (2)

Como dijo Gracchus, Bitcoin usa internamente números enteros de 64 bits. La interfaz JSON de Bitcoin, por otro lado, usa dobles, que solo brindan una precisión de 52 bits. Ambos tipos son lo suficientemente grandes para bitcoin (el doble solo para el intercambio de datos, la precisión de los dobles no es suficiente para los cálculos reales).

En el caso específico de Dogecoin, la precisión de la interfaz JSON (y partes de la GUI) es un problema conocido que esperamos solucionar en el futuro. El manejo de valores en el rango de cientos de millones de dogecoin sufre de esto actualmente.

Los enteros de 64 bits utilizados internamente también son un problema para Dogecoin, que está siendo rastreado. Esto es principalmente un problema si alguien acumula al menos 2 ^ 64 Koinu (Satoshi) en una sola billetera. Este problema debe limitarse a la billetera, a nivel de protocolo, el tamaño de las transacciones está limitado a 10 mil millones de dólares.

No sé cómo otras monedas manejan esto. Hay al menos una moneda que admite precisión arbitraria, pero olvidé su nombre.

@Gracchus Floats son los libros de texto no-nos. Se duplica menos. Parecen tener 15 dígitos significativos de precisión, por lo que, a menos que tenga 10 ^ 7 monedas, todavía tiene un satoshi.
Los dobles no se pueden usar como formato interno para Bitcoins (pérdida de precisión debido a las operaciones), pero son lo suficientemente grandes como para convertir un número en Satoshis en un número en BTC o viceversa. Son lo suficientemente convenientes como para ser "abusados" por Bitcoin Core.

Parece como si el cliente oficial estuviera usando ,qint64 por lo que no habrá resolución más allá del punto decimal. El valor máximo es mayor que el máximo esperado de Bitcoin.

Simplemente use los mismos tipos de datos que las monedas en cuestión, y debería estar bien.

Puede usar una precisión arbitraria para las microbalanzas en su propia aplicación, pero no podrá transferirlas en la cadena de bloques oficial. Otros pueden admitir precisión arbitraria, pero todavía no he visto uno que lo haga.

Bueno, la API JSON no muestra saldos en satoshis, sino en BTC. ¿Cómo se maneja eso?