Как сохранить точные показатели предложения SOL в системе метрик
Предложение SOL в лампортах может оказаться больше диапазона точных целых чисел обычного JSON-парсера. Потеря точности возможна ещё до преобразования числа в SOL.
Получите три показателя одним запросом
Запросите финализированные значения total, circulating и nonCirculating. Исключите список аккаунтов, чтобы сократить объём ответа при сборе одних итогов. Сохраните слот контекста, чтобы привязать изменение предложения в обращении к конкретному наблюдению.
{
"jsonrpc": "2.0",
"id": 1,
"method": "getSupply",
"params": [
{
"commitment": "finalized",
"excludeNonCirculatingAccountsList": true
}
]
}
Проверьте точность до пересчёта в SOL
Используйте парсер, который сохраняет большие целые числа из JSON без округления. Для проверки передайте 9007199254740993 лампорта и убедитесь, что последняя цифра осталась тройкой. Перевод в большое целое после округления числа с плавающей точкой потерянный лампорт не восстановит.
Сверьте внутри одного ответа сумму circulating и nonCirculating со значением total. Для отображения разделите сохранённое целое число лампортов на миллиард с помощью десятичной арифметики. Саму сверку выполняйте в минимальных единицах.