Почему вызовы Bitcoin RPC используют десятичные дроби для количества монет?

Биткойн RPC требует, чтобы все использовали 8-значные десятичные числа («действительные») для кодирования количества сатоши. Например, если я получу вывод транзакции, это может выглядеть так:

{
  «значение»: 0,00050000,
  "н": 1,
  "scriptPubKey": {
  "asm": "OP_HASH160 c6e0b29d2aa23b6436cec99e65dfeed2c64a2cad OP_EQUAL",
  "шестнадцатеричный": "a914c6e0b29d2aa23b6436cec99e65dfeed2c64a2cad87",
  "рексигс": 1,
  "тип": "скриптхэш",
  "адреса": [
    "3KpatoAjz3H5huJJieSpH4j7qFUeTXMnFC"
  ]
}

Есть ли причина, по которой разработчики решили работать с «0,00050000» вместо «50000»? Кажется, что целое число было бы лучше для компьютеров.


РЕДАКТИРОВАТЬ: я предполагаю, что другая половина этого заключается в том, что если вызовы RPC используются человеком, то его легче использовать с суммами в десятичных дробях (человек может определить разницу между 5,5 и 0,55 намного проще, чем 55000000 и 5500000 ). Итак, я думаю, настоящий вопрос заключается в том, предназначен ли интерфейс RPC для использования в командной строке человеком или для использования в приложениях для кодирования?

Ответы (1)

Я бы сказал, что интерфейс RPC предназначен в основном как интерфейс приложения, но он также должен быть достаточно простым для использования человеком. И компьютер заботится меньше, чем вы думаете.

Для пользователей использование десятичных биткойнов (а не целочисленных сатоши) значительно облегчает жизнь. Для людей, пишущих программное обеспечение для взаимодействия с ним, это лишь бесконечно усложняет их жизнь (вам нужно написать, возможно, одну дополнительную строку кода, чтобы вставить и проанализировать десятичную точку). Компьютеру, на котором он запущен, требуется еще несколько наносекунд для запуска кода, чего никто не заметит. Таким образом, кажется, что больше пользы достигается за счет включения десятичной точки, чем без нее.