Билесизби: эки Bitcoin блоктордун ортосундагы күтүлгөн убакыт орточо \(10\) мүнөт. Эми сиз маанилүү Bitcoin транзакциясын жасап жатасыз жана ал кийинки блокто качан пайда болоорун чыдамсыздык менен күтүп жатабыз:
e50bfacc95975a4e7545d83d8954645f
Мурунку блок качан аяктаганын текшербегендиктен, күтүү убактысынын орточо \( \frac{t}{2} = \frac{10}{2} = 5 \) мүнөттү күтөт. \(5\) узак мүнөттөр өткөндөн кийин, акыркы блок качан аяктаганын текшериңиз:
e50bfacc95975a4e7545d83d8954645f
Акыркы блок \(7\) мүнөт мурун бүттү. Эми сизде бул маалымат бар болгондуктан, күтүлгөн убакыт \(5\) мүнөттөн жалпысынан \(10\) мүнөткө өзгөрөт. Демек, ал болжол менен \(3\) мүнөттө бүтөт. Сиз буйрукту кайра-кайра бересиз. Анан күтө турасыз. Дагы \(10\) мүнөттөн кийин, бир нерсе туура эмес болуп жаткандай сезим пайда болот.
Бирок кийин муну эстейсиң Күтүү парадокс:
Эгерде автобустар орто эсеп менен \(t\) мүнөт сайын жүрсө, аялдамада кокустук келүү убактысын күтүү \(\frac{t}{2}\) мүнөткө туура келбейт, бирок экспоненциалдуу түрдө бөлүштүрүлгөн учурда аралыктар \(t\) .
Bitcoin блоктордун көрүнүштөрү Пуассон процесси болуп саналат жана ошондуктан экспоненциалдуу түрдө бөлүштүрүлөт. Пуассон процесстери эс тутумсуз болгондуктан, кийинки блок да орто эсеп менен \(10\) мүнөттө бүтөт. Бул ар дайым тиешелүү - биз канча убакыт күтпөгөнүбүзгө карабастан. Эс тутумсуздук сапаты убакыттын артына да, алдыга да колдонулат.
Бул кантип болушу мүмкүн?
Бул үчүн биз төмөнкү эки билдирүүнү карап чыгабыз:
- А) эки блоктун ортосунда айкын орточо күтүү убакыт \(10\) мүнөт эмес, \(20\) мүнөт.
- B) Эгерде убакыттын кокустук чекити тандалса, биз мурунку блок \(10\) мүнөт өткөндө жана кийинки блок \(10\) келечекте болот деп күтөбүз. Ошентип, блоктордун ортосунда \(20\) мүнөт күтө алабыз.
Биз эки билдирүүнү тең текшеребиз.
Бул үчүн, биз адегенде тиешелүү маалыматтарды, тактап айтканда блоктор аяктаган убакыттарды TXT файлына чыгарабыз (bitcoind негизинде жергиликтүү иштеп жаткан толук түйүн менен аткарылат ):
e50bfacc95975a4e7545d83d8954645f
Бул бизге төмөнкү текст файлын берет , биз азыр андан ары иштетип, /time.txt ичинде сактайбыз . Бул үчүн төмөнкү Rust программасы /Cargo.toml файлы менен колдонулат:
e50bfacc95975a4e7545d83d8954645f
/src/main.rs файлы чыныгы тест логикасын камтыйт:
e50bfacc95975a4e7545d83d8954645f
Биз көз карандылыктарды орнотуп, программаны куруп, аны баштайбыз:
e50bfacc95975a4e7545d83d8954645f
Чынында эле, биз жыйынтыкты талдоодо эки билдирүү тең туура:
e50bfacc95975a4e7545d83d8954645f
Муну ошондой эле интуитивдик түрдө төмөнкүчө түшүндүрсө болот: Эгерде блоктоо убактысы олуттуу түрдө өзгөрсө, күтүү убактысы өзгөрөт - эгерде транзакцияны убакыттын кокустук учурунда жүргүзсөк, анда биз бүтүрүү ыктымалдыгы жогору болот. күтүү убактысы 10 мүнөттөн көп, анткени бул интервалдар дагы узак убакытка байланыштуу хронологияда көбүрөөк орун ээлейт.