Я пытаюсь увидеть, сколько биткойнов я получил с помощью одного метода bitcoind, getreceivedbyaddress с указанием определенного адреса, и, узнав количество биткойнов, я вскоре понял, что такие службы, как обозреватель блоков, blockchain.info или blockcypher, указывают разные количество биткойнов. Интересно, что когда я указывал другой адрес, то и сервисы bitcoind, и block explorer указывали одинаковую сумму.
Поскольку я разрабатываю криптобиржу, мне нужно знать количество биткойнов, внесенных пользователем, чтобы правильно рассчитать, сколько у пользователя есть биткойнов, даже после того, как другие пользователи выведут свои биткойны.
Так что же именно правильно и надежно?
В общем, я бы доверял своему локальному узлу веб-сайту обозревателя блоков. Если вы запускаете биржу, вы должны запускать узел или, что более вероятно, несколько узлов на изолированных машинах, это позволит вам взаимодействовать с сетью, не доверяя никакому другому человеку или службе в предоставлении вам достоверной информации. Вам нужно будет построить систему для разрешения депозитов на основе информации, предоставленной вашими узлами.
Важный момент: биткойн не отслеживает «остатки на счетах», а система отслеживает «неизрасходованные выходы (UTXO)». Чтобы найти баланс для адреса, обозревателю блоков необходимо суммировать все текущие UTXO, связанные с этим адресом.
Таким образом, источник ошибки может заключаться в том, как конкретный обозреватель блоков выполняет эту операцию. Blockchain.info, например, сообщит сумму всех входов, которые когда-либо были оплачены на определенный адрес. Таким образом, если у вас было 0,1 биткойна, и вы неоднократно тратили его на один и тот же адрес 30 раз, blockchain.info, вероятно, сообщит об этом как о получении 3 биткойнов (пожизненно). Это может быть интересной статистикой, но она не обязательно имеет отношение к вашему вопросу о разрешении клиентских депозитов.
西田龍
Читрик