Как работают такие API, как Blockchain.info и BlockExplorer?

Когда я запрашиваю адрес с помощью любой службы, они просто запрашивают последний добытый блок?

Или у этих сервисов есть узлы в сети, которые собирают данные, которые еще не кодифицированы в блок?

Иногда мои запросы почти мгновенно возвращают «правильную» информацию, но иногда для отражения самых последних транзакций требуется много времени — интересно, почему это так. Кажется странным, что я мог отправить биткойны, получить запрос на адрес получения, чтобы вернуть актуальный баланс в течение 3 секунд, а затем немедленно совершить еще одну транзакцию и сделать успешный запрос, тогда как в другое время запрос API не будет отражать последняя транзакция в течение длительного времени. Понимание ценится.

Ответы (1)

Общедоступные сервисы проверки биткойнов, такие как BlockExplorer и BlockChain.info , работают почти так же, как и обычный биткойн-клиент .

Они работают как узел в сети Биткойн и поэтому, как и все другие узлы, хранят полную цепочку блоков. Эта цепочка блоков состоит из всех когда-либо совершенных транзакций и используется для расчета баланса адреса.

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

В зависимости от того, кэширует ли служба информацию , может пройти некоторое время между поступлением транзакции узла и временем ее появления на веб-сайте. Вы, вероятно, понимаете, что когда вы запрашиваете одни и те же данные 10 раз вскоре друг за другом, очень дорого выполнять один и тот же поиск в индексе цепочки блоков несколько раз. Из-за этого, я думаю, вполне вероятно, что большинство этих клиентов выполняют какое-то кэширование, но не слишком обширное. Вероятно, максимум минуту, потому что они знают, что при обработке биткойн-транзакций за это время может произойти многое.

Кроме того, время загрузки также может зависеть от загрузки сервера . Когда несколько пользователей одновременно пытаются получить доступ к балансу своего адреса, некоторым из них, скорее всего, придется подождать.