Как я могу рассчитать, сколько времени потребовалось для подтверждения транзакции?

Можно ли рассчитать — или хотя бы разумно оценить — сколько времени потребовалось для включения транзакции в блок после ее первого создания?

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

В настоящее время я создаю проект, который очищает данную цепочку блоков для любой информации/атрибутов, которые пожелает пользователь. Вы можете проверить это здесь — имейте в виду, что это далеко не готово к производству и даже еще не в версии 1 — но ветвь разработки приближается.

Насколько я понимаю из документов и ответа на этот вопрос, атрибут времени получения - это не время, как некоторые могут подумать, время, когда транзакция была "получена в блок", а время, когда мой клиент впервые заметил транзакцию - этот атрибут также недоступно при использовании getrawtransaction. Так что это беспроигрышный вариант.

В идеале я ищу время создания (отправки) транзакции и время ее включения (подтверждения) в блок.

Основываясь на приведенной выше информации, моя идея такова:

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

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

Я хотел бы сделать это для существующих, подтвержденных транзакций, если это возможно.

Спасибо за ваше время.

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

Ответы (1)

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

В противном случае ваш клиент будет просто использовать метку времени блока для каждой транзакции.

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

Было бы здорово, если бы кто-нибудь это подтвердил. Я сделаю это сам, если у меня будет возможность проверить это, но это может произойти не скоро.