Идея 1:
- По умолчанию, все коммуникации использует номера JSON, представляющие количество interger из Bitcoin единиц (1Е-8 BTC)
- Сервера JSON-RPC (будучи Bitcoin, bitcoind, некоторые прокси, некоторые другие реализации) могут дополнительно ввод поддержки с использованием других кодировки для цифр, которые должны быть представлены в виде строки JSON, заканчивающийся в виде суффикса, обозначающее кодирование (например. Окончание строки с " BTC" означает десятичное представление Bitcoin - которое может кстати быть полностью разобрано с блоками без плавающей точки коды). Использование неподдерживаемого кодирования должно вызывать сообщение об ошибке четкого.
- Клиент JSON-RPC может запросить сервер для конкретного кодирования в качестве аргумента функции RPC называется, вызывая ошибку, если что кодирование не поддерживается.
- Интерфейс Bitcoin CLI может использовать " BTC" Кодировка по умолчанию.
- Дополнительные кодировок могут быть легко добавлены, или предоставляемые сценарии оболочки, ..., лишь требуя, чтобы все серверы и клиенты должны поддерживать число кодируемых чисел.
- Некоторые имена функций или аргументы должны быть изменены, чтобы гарантировать, что ни одна программа, использующая старый API accidentaly посылает 0.00000050 BTC вместо 50 BTC.
Идея 2
С другой стороны, может быть, это не является обязанностью сервера для поддержки различных кодировок сумм. Поскольку основная цель интерфейса JSON RPC является IMHO стандартным способом общения с программным обеспечением (не человек), взаимодействующего с Bitcoin, она должна быть максимально простой / безопасно, насколько это возможно, и использовать целые числа (так как это имеет наименьший шанс вызвать ошибки округления в клиентском программном обеспечении, как объяснено другими в этой теме), и дать ответственность форматирования чисел для клиентского программного обеспечения (которое следует использовать целые числа для представления количества внутренне в любом случае, если это делает какой-либо форме обработки на них). Интерфейс командной строки может затем позаботиться о предоставлении схемы опциональной-кодировки, описанной выше.
Лично я предпочитаю вторую идею.