Bitcoin бөгөттөө убактысы

Билесизби: эки 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 мүнөттөн көп, анткени бул интервалдар дагы узак убакытка байланыштуу хронологияда көбүрөөк орун ээлейт.

Артка