Время блока биткойнов

Вы знаете: ожидаемое время между двумя блоками биткойнов составляет в среднем \(10\) минут. Теперь вы совершаете важную биткойн-транзакцию и с нетерпением ждете, чтобы увидеть, появится ли она в следующем блоке и когда.:

e50bfacc95975a4e7545d83d8954645f


Поскольку вы не проверили, когда был завершен предыдущий блок, вы фактически ожидаете в среднем \( \frac{t}{2} = \frac{10}{2} = 5 \) минут ожидания. По истечении \(5\) длинных минут проверьте, когда последний блок был фактически завершен:

e50bfacc95975a4e7545d83d8954645f

Последний блок был уже завершен \(7\) минут назад. Теперь, когда вы знаете эту информацию, ожидаемое время изменится с \(5\) минут до \(10\) минут. Это означает: примерно через \(3\) минут это будет так далеко. Вы отдаете команду снова и снова. И ждать. Еще через \(10\) минут вы почувствуете, что что-то не так.

Но потом вы помните, что Ожидание парадокс:

Если автобусы ходят в среднем каждые \(t\) минут, время ожидания случайного времени прибытия на автобусную остановку не соответствует \(\frac{t}{2}\) минутам, но в случае экспоненциально распределенных расстояния \(t\) .

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

Как это может быть?

Для этого рассмотрим следующие два утверждения.:

  • A) Фактическое среднее время ожидания между двумя блоками составляет \(10\) минут, а не \(20\) минут.
  • Б) Если выбран случайный момент времени, мы ожидаем, что предыдущий блок \(10\) минут в прошлом и следующий блок \(10\) минут в будущем. Таким образом, мы можем ожидать, что время ожидания между блоками составит \(20\) минут.

Проверяем оба утверждения.

Для этого мы сначала извлекаем соответствующие данные, в частности время, в которое блоки были завершены, в файл TXT (который будет выполняться с локально работающим полным узлом на основе биткойн ).:

e50bfacc95975a4e7545d83d8954645f

Это дает нам следующий текстовый файл , который мы теперь обрабатываем и сохраняем в /time.txt . Для этого используется следующая программа на Rust с файлом /Cargo.toml:

e50bfacc95975a4e7545d83d8954645f

Файл /src/main.rs содержит фактическую логику тестирования.:

e50bfacc95975a4e7545d83d8954645f

Устанавливаем зависимости, собираем программу и запускаем:

e50bfacc95975a4e7545d83d8954645f

Действительно, оба утверждения верны, когда мы анализируем вывод:

e50bfacc95975a4e7545d83d8954645f

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

Назад