Головна » Статті » Мої статті |
Біткоіни зсередини для нерозуміючих Безліч неоднозначних статей написаних про біткойн спонукали написати мене статтю про внутрішній устрій цієї системи. Мене здивувало , що деякі автори писали про цифрових монетах без розуміння внутрішнього устрою , і сенс тривалих міркувань був безуспішною спробою дізнатися лохотрон чи це так. Сподіваюся після даної статті віра чи довіра bitcoin перейде у впевненість і усвідомленість . Я не буду розкривати в цій статті суспільно - економічного впливу цифрових монет , а зосереджуся виключно на внутрішніх алгоритмах . Електронний цифровий підпис (ЕЦП) На жаль , я не знайшов підходящих простих образів , щоб показати як зсередини працює криптографія на еліптичних кривих. Візьмемо цей інструмент « на віру». Ті ж алгоритми використовуються в банківському секторі (і не тільки) , тому крах ЕЦП призведе до кризи багатьох галузей. Отже , закритим ключем ми підписуємо «листи передачі прав власності» ( транзакції) , і тим самим віддаємо свої монети комусь іншому. Відкритим ключем ми перевіряємо справжність чужих транзакцій. хешування Якщо Вам зрозумілий процес хешування , пропустіть цей розділ. Показати хеширование досить просто. Візьмемо деяке число ... наприклад номер телефону +7 ( 495 ) 606-36-02 . Складемо всі цифри разом , кілька разів: 7 +4 +9 +5 +6 +0 +6 +3 +6 +0 +2 = 48 => 4 +8 = 12 => 1 +2 = 3 Так можна однозначно зіставити будь-якого номеру телефону деяке число. Процес підсумовування називається хешуванням , сам спосіб - хеш функцією , отримане число - хеш- сумою або просто хешем . Зазвичай домагаються наступний властивостей від хеширования : - Знаючи хеш- суму (в нашому випадку 3 ) не можна визначити вихідний номер телефону. - Не можна підігнати номер телефону під заздалегідь відому суму (у нашому прикладі незастосовне , обов'язково для bitcoin ) . - Незначна зміна номера телефону призведе до кардинальної зміни хешу (у нашому прикладі незастосовне , але обов'язково для bitcoin ) . Також багато інших зрозумілих побутових прикладів хешування в wiki статті. Передача прав власності . Хеш - сума публічного ключа Bitcoin оперує хеш- сумою публічного ключа , як адреса для передачі монет. Оголосити чий-небудь bitcoin адресу привселюдно - нічого не варто. Дізнатися вихідний ключ за його хешу не надала можливим навіть учасникам «битви екстрасенсів». А сама пара ключів буде використана лише одного разу - під час передачі прав власності . На цьому життя пари ключів закінчується. PUB1 - публічний ключ PRIV1 - секретний ключ HASH1 або HASH ( PUB1 ) - хеш- сума публічного ключа ( біткойн -адресу). HASH2 або HASH ( PUB2 ) - хеш публічного ключа наступного власника . Відволічемося на деякий час від монет. Візьмемо, наприклад , власника автомобіля , власність якого не викликає сумнівів. - Власник на публічному зборах ( ярмарку , телевізійному шоу) показує всім хеш свого публічного ключа HASH ( PUB1 ) , заводський номер автомобіля, і всі погоджуються з цим - ніхто не пред'являє претензій. - До моменту продажу обидва ключі PUB1 , PRIV1 продавця залишаються в секреті. Відомий тільки HASH ( PUB1 ) і соответсвующий йому заводський номер автомобіля. - Як тільки власник хоче продати автомобіль якомусь покупцеві - він пише відкритого листа , в якому вказує заводський номер і хеш- суму публічного ключа другого власника HASH ( PUB2 ) . І звичайно ж підписує листа своїм секретним ключем PRIV1 , докладаючи публічний ключ PUB1 . - Після передачі власності секретний ключ перестає бути актуальним - другого такого листа бути не може (див. «Єдина історія») . Публічним ключем можна перевірити сам лист , засвідчити другого власника. - О другій власника нічого невідомо окрім HASH ( PUB2 ) , до тих пір поки він не передасть права третьому власникові . І цей ланцюжок може бути нескінченною. - Підписуючи передачу прав з використанням ЕЦП , власник не тільки засвідчує себе , а й накладає на себе зобов'язання передачі . Як кажуть: « слово - не горобець , вилетить - не спіймаєш ». - Завдяки HASH ( PUB ) виходить подвійний захист . Перша загадка - дізнатися публічний ключ за його хешу . Друга загадка - підписатися чужим секретним ключем. Якщо замінити автомобіль на bitcoin , то замість заводського номера виступає хеш попередньої транзакції. А весь ланцюжок власників зберігається публічно у кожного користувача . « А здачу! ? » Здачу треба залишити собі. Але так задумано , що секретний ключ використовується тільки один раз , а частину своїх монет пересилається на свій же новий, який не засвічений адресу. Через це важко зрозуміти скільки монет належить якому-небудь адресою , і важко судити про обсяг переданих монет за добу / місяць / рік . Єдина історія. Що ж копають Майнер . Щоб не було можливості двічі витратити монети , має бути єдина історія всіх угод. Тоді в журнал буде потрапляти тільки перша транзакція (лист передачі прав на монети) , або в крайньому випадку одна з декількох . Для цього транзакції об'єднуються в блоки і визнаються лише « красиві » блоки . «Красивий блок» важко знайти , це подібно до того як з тонн золотої руди попадається лише один стоїть самородок . У нашому випадку хеш- сума блоку повинна містити певну кількість нулів. Блок складається з попереднього блоку ( хеш- суми) , хеш- суми всіх включених транзакцій , і випадково перебираємо числа ( англ : nonce ) . Приклад bitcoin - блоку з сайту blockexplorer.com : * Hash : 00000000000001c21dbf4715d5da1a288061faa21e950dd8df6ae25c8b55d868 * Previous block ? : 000000000000056a7dcf283f627c2a17c55ffe1937a6ed2bc467d9c524311da2 * Difficulty : 1 690 895.8030 52 ( " Bits " : 1a09ec04 ) * Transactions : 184 * Total BTC : 4251.63216933 * Size: 58.913 kilobytes * Merkle root : 98c5d975bf556f0344770eee7ab31688a1c108223c14cea908ff99b0ab8fe947 * Nonce : 3723473450 Бачите скільки нулів на початку хеш- суми блоку ? Ось тому його так важко було знайти . Але кожен легко може перевірити справжність «краси» блоку. Кількість нулів хеше вибирається таким чином , щоб кожен блок з'являвся на світ приблизно раз на 6 10 хвилин. За знаходження блоку видається заохочення , зараз це 50 монет. Також нашедшему видаються всі збори від платежів ( transactions fees ) , за ті транзакції які включені до його блоку . Єдина історія досягається за рахунок того , що завжди перемагає найбільш довгий ланцюжок блоків. Не проблема , якщо від біткойн - мережі буде відколоти ізольований шматочок користувачів - згодом все відколені транзакції увійдуть до більш довгий ланцюжок (з урахуванням складності). тонкощі роботи - Під хешуванням зазвичай розуміється подвійний sha256 , тобто sha256 ( sha256 ( x )) . - Дивно , але bitcoin нічого не шифрує . Весь журнал транзакцій - повністю відкрита інформація. Будь-хто може перевірити цілісність всіх транзакцій , порахувати кількість монет в обігу. Немає жодних шансів для фальшивомонетництва . Єдина можливість для злодійств - лише призупинити роботу біткойн на деякий час. - При першому старті bitcoin -додаток створює пару ключів. Точніше він створює їх відразу 100 пар заздалегідь , тим самим можна зробити резервування гаманця ( backup ) не більше ніж на 100 операцій вперед. - Насправді в транзакції вказується алгоритм перевірки , крім самого біткойн - адреси. Усередині біткойн вбудований власний примітивний , навмисно обрізаний мова програмування , який дозволяє зробити складні транзакції. Наприклад можна запрограмувати , щоб гроші відправлені декільком адресатам (як сейфовая осередок з декількома ключами) . Або включити обмеження за часом на витрату грошей ( не раніше 2013 року ) і т.д. - Транзакції в блок укладаються у вигляді дерева хешів . Таким чином надалі можна буде викидати завершення транзакції для економії місця на диску , не порушуючи цілісності блоків. - Біткойнов - адреса містить в собі контрольну суму. Тому в адресі не можна помилитися пропустивши або замінивши одну або кілька символів. На закінчення Незалежно від курсу монети ( ображатися на систему можуть тільки спекулянти ), я вважаю , що bitcoin став дуже успішним у технічному відношенні. Тут є чому повчитися і використовувати отриманий досвід у подальшому. | |
Переглядів: 518 | Рейтинг: 0.0/0 |
Всього коментарів: 0 | |