Thời gian khối bitcoin

Bạn biết đấy: Thời gian dự kiến ​​giữa hai khối Bitcoin trung bình là \(10\) phút. Bây giờ bạn đang thực hiện một giao dịch Bitcoin quan trọng và háo hức chờ xem liệu nó có xuất hiện trong khối tiếp theo hay không:

e50bfacc95975a4e7545d83d8954645f


Vì bạn chưa kiểm tra thời điểm hoàn thành khối trước, nên bạn thực sự mong đợi thời gian chờ trung bình \( \frac{t}{2} = \frac{10}{2} = 5 \) phút. Sau khi \(5\) phút dài trôi qua, hãy kiểm tra xem khi nào khối cuối cùng đã thực sự hoàn thành:

e50bfacc95975a4e7545d83d8954645f

Khối cuối cùng đã được hoàn thành \(7\) phút trước. Giờ bạn đã biết thông tin này, thời gian dự kiến ​​thay đổi từ \(5\) phút thành tổng số \(10\) phút. Điều đó có nghĩa là: Trong khoảng \(3\) phút nữa, nó có thể là rất xa. Bạn ra lệnh lặp đi lặp lại. Và chờ đợi. Sau \(10\) phút nữa, bạn có cảm giác rằng có điều gì đó không ổn.

Nhưng sau đó bạn nhớ rằng Nghịch lý chờ đợi:

Nếu xe buýt chạy trung bình mỗi \(t\) phút, thời gian chờ cho thời gian đến ngẫu nhiên tại trạm xe buýt không tương ứng với \(\frac{t}{2}\) phút, nhưng trong trường hợp phân bổ theo cấp số nhân khoảng cách \(t\) .

Các lần xuất hiện của khối bitcoin là một quá trình Poisson và do đó được phân phối theo cấp số nhân. Vì các quy trình Poisson không có bộ nhớ, khối tiếp theo cũng được hoàn thành trung bình trong \(10\) phút. Điều đó luôn áp dụng - bất kể chúng tôi đã chờ đợi bao lâu. Chất lượng của tình trạng không nhớ áp dụng cả ngược và xuôi theo thời gian.

Làm thế nào mà có thể được?

Để làm điều này, chúng tôi xem xét hai câu lệnh sau:

  • A) Thời gian chờ trung bình thực tế giữa hai khối là \(10\) phút, không phải \(20\) phút.
  • B) Nếu một thời điểm ngẫu nhiên được chọn, chúng tôi hy vọng rằng khối trước \(10\) phút trong quá khứ và khối tiếp theo \(10\) phút trong tương lai. Vì vậy, chúng tôi có thể mong đợi thời gian chờ \(20\) phút giữa các khối.

Chúng tôi kiểm tra cả hai báo cáo.

Để thực hiện việc này, trước tiên chúng tôi trích xuất dữ liệu có liên quan, cụ thể là thời gian các khối được hoàn thành, vào một tệp TXT (được thực hiện với một nút đầy đủ đang chạy cục bộ dựa trên bitcoind ):

e50bfacc95975a4e7545d83d8954645f

Điều này cung cấp cho chúng tôi tệp văn bản sau, hiện chúng tôi xử lý thêm và lưu trữ trong /time.txt . Chương trình Rust sau được sử dụng cho việc này với tệp /Cargo.toml:

e50bfacc95975a4e7545d83d8954645f

Tệp /src/main.rs chứa logic kiểm tra thực tế:

e50bfacc95975a4e7545d83d8954645f

Chúng tôi cài đặt các phụ thuộc, xây dựng chương trình và khởi động nó:

e50bfacc95975a4e7545d83d8954645f

Thật vậy, cả hai phát biểu đều đúng khi chúng ta phân tích kết quả đầu ra:

e50bfacc95975a4e7545d83d8954645f

Điều này cũng có thể được giải thích một cách trực quan như sau: Nếu thời gian khối thay đổi đáng kể, thời gian chờ cụ thể thay đổi - nếu chúng tôi thực hiện giao dịch tại một thời điểm ngẫu nhiên, thì khả năng cao hơn là chúng tôi sẽ kết thúc trong khoảng thời gian Thời gian chờ lâu hơn 10 phút là do những khoảng thời gian này cũng chiếm nhiều dung lượng hơn trên dòng thời gian vì thời gian dài hơn.

Trở lại