Что такое блокчейн, нужно определится в самом начале статьи. Когда в разговоре слышишь слово блокчейн, сразу понимаешь — собрались майнеры, трейдеры, инвесторы — люди зарабатывают на криптовалютах. Однако это понятие уже давно вышло из узкой среды профессионалов, и теперь им оперируют многие. Если вы до сих пор не разобрались, что это такое, читайте нашу статью, где мы простыми словами расскажем про блокчейн.
Предприятия-посредники осложняют жизнь, затрудняют операции и тратят наше время. Возьмем, к примеру, банк — мало того, что для многих операций будет запрашиваться личная информация, так вы еще потратите много времени и денег — банки живут на проценты от финансов, крутящихся в системе.
Во время глобализации появление криптовалют и блокчейна закономерно и оправдано. Те, кто «в теме», называют эту систему прорывом века и новым шагом в развитии общества. Те же, кто не посвящен в нюансы криптомира, относятся к блокчейну, биткоину, майнингу и криптовалютам настороженно, ожидая, что «мыльный пузырь» лопнет со дня на день.
Блокчейн самыми простыми словами
Допустим, вы ведете личный дневник учета. Вы записываете в него, что делали, как потратили деньги, сколько заработали. Обычно этот дневник имеется в одном экземпляре.
С блокчейном иначе — записи о транзакциях зашифрованы, а сам дневник (его копии) одновременно хранится у всех ваших знакомых. Записи в нем постоянно обновляются, информация актуальна, и риски потерять дневник отсутствуют – вы можете восстановить его заново.
Блокчейн (перевод с английского «цепочка блоков») – это, если говорить простыми словами, тот же дневник или база данных, которые представлены в виде блоков, которые хранятся на большом количестве компьютеров. Новые элементы появляются постоянно — по мере накопления информации. В каждом блоке содержится вся накопившаяся информация (то есть записи транзакций).
Безопасность, децентрализация, доступность данных в любое время суток и в любом месте – это блокчейн.
Structure
Привычным движением руки открываем спецификацию протокола и смотрим на структуру блока.
- version — версия блока
- prev_block — хэш предыдущего блока (parent block)
- merkle_root — если упрощенно, то это хэш всех транзакций в блоке
- timestamp — дата и время создания блока
- bits, nonce — про эти параметры я подробно расскажу в главе Bitcoin in a nutshell — Mining
- txn_count, txns — число транзакций в блоке и их список
Первые шесть параметров (все кроме txn_count и txns) образуют заголовок блока (header). Именно хэш заголовка называют хэшем блока, то есть сами транзакции непосредственного участия в хэшировании не принимают.
Вместо этого они заносятся в особую структуру — дерево Меркла, про которую я расскажу ниже.
Blockchain: зачем он нужен
Вся информация об операциях, транзакциях, выплатах и других действиях где-то хранится. Чаще всего это сервера банков, государственных организаций, предприятий. Эту информацию можно изменить, чем пользуются недобросовестные люди. Технология blockchain или же цепь блоков, если нужен перевод с английского, гораздо надежнее. История операций не хранится в одном месте — она распределена по тысячам компьютеров в мире. В таком виде данные хранить надежнее — они не пропадут, не потеряются, не исчезнут.
В этом и есть смысл blockchain — создать такую систему хранения данных, которая была бы прозрачна, безопасна. У системы имеются главные признаки:
- Безопасность;
- Открытость;
- Распределенность.
Вся информация в системе закодирована, и подобрать код нереально — он слишком сложен, и это экономически нецелесообразно.
Чтобы похитить или изменить данные, придется не просто раскодировать и поменять данные на одном сервере или компьютере, а на всех, входящих в систему. Еще один вариант —обладать контролем над 51% мощностями майнинга биткоина.
Учитывая, что компьютеров может быть как несколько сотен тысяч, так и несколько миллионов, поменять информацию на всех устройствах практически невозможно. Даже в подписи присутствует два ключа — публичный и приватный. Только ключ позволяет открыть доступ к данным участника.
Цифровые данные распространяются по цепочкам без необходимости копирования. Данное качество привело к тому, что технология blockchain стала фундаментом нового типа интернета. Blockchain изначально был разработан в качестве основы для криптовалюты bitcoin, однако специалисты в области цифровых технологий пророчат ему большое будущее, находя все новые перспективы использования.
Возьмем еще один пример — Википедия. Она была создана не одним пользователем, а многими, и каждый может вносить в нее новую информацию, следить за ней и контролировать записи. Нечто подобное существует и в блокчейне: цепочки блоков — не продукт создания отдельного человека, а результат действия людей, участвующих в сети. В этом заключается принцип распределения — каждый участник является и создателем, и контролером.
Регистрация и вход в свой аккаунт на Блокчейн.инфо
Итак, сначала нужно будет создать свой аккаунт в сервисе BlockChain.info. Для этого жмете на кнопку «Get A Free Wallet» и заполняете простейшую форму регистрации (не сложнее чем на любом обычном сервисе — вот только о хранении пароля в защифрованном виде позаботьтесь, ибо это доступ к деньгам):
И все. Останется лишь в почтовый ящик заглянуть и перейти по ссылке для подтверждения указанного при регистрации Емайла. А вы думали? Я же говорил — проще некуда.
Важный момент! В письме (а так же в личном кабинете) вы увидите набор цифро-букв с указанием, что это есть «Ваш идентификатор кошелька». Очень важно, чтобы вы понимали — это не адрес вашего кошелька (и уже тем более не приватный ключ, т.е. пароль от него). Это всего навсего лишь ваш логин для входа на сайт BlockChain.info и более ничего.
Чтобы войти в свой аккаунт, нужно на официальном сайте сервиса перейти из верхнего меню на вкладку «Wallet«, после чего ввести свой логин (тот самый идентификатор) и пароль.
Суть технологии блокчейн
Что такое блокчейн биткоина? В рамках сети создается таблица, которая повторяется много раз (миллионы и тысячи) на компьютерах, подключенных к этой сети. Каждый компьютер следит за информацией и может ее контролировать, однако попытка изменения этой таблицы на одном компьютере сразу раскроется. Это сразу будет замечено другими пользователями, у которых хранится не измененная таблица. Сеть защищена от мошенников и фальсификаций.
Открытость информации для пользователей сети является принципом данной технологии. Важным преимуществом распределения стало отсутствие посредников. Да, иногда можно услышать, что Национальный банк через некоторое время станет своеобразным гарантом, выполняя функцию посредника, но на практике места посреднику нет.
Как работает блокчейн сети биткоин
Несмотря на обилие информации, разобраться с blockchain, даже если это объяснять простыми словами, довольно сложно. В чем же заключается самая суть — проще рассмотреть на примере.
- У вас есть некоторая сумма денег, которую вы хотите отправить своему другу из России в Штаты. Вы можете воспользоваться банком, но он снимет с вас комиссию, и скорее всего немалую, а кроме того – потребуется время. Если нет желания ждать неделю или переплачивать проценты, воспользуйтесь блокчейном.
- Вы создаете кошелек и покупаете на нужную сумму биткоины. Ваш приятель также создает кошелек, на который вы должны будете отправить сумму в биткоинах.
- Майнеры создают блок, в который входят транзакции. Он выстраивается в цепочку. Для создания используется хеш предыдущего блока, хеш всех транзакций и переменная nonce. Эти значения прогоняются через определенный алгоритм, и на выходе получается хеш нового блока. Так происходит процесс майнинга.
- Транзакция подтверждается, и ваш знакомый получает на кошелек биткоины на нужную сумму. Биткоины можно перевести в фиатные деньги, обменять на другую криптовалюту (альткоины). Основной смысл в том, что blockchain позволил быстро перевести деньги.
Величина комиссии может быть различной — ее сумму устанавливает создатель перевода. Транзакция с маленькой комиссией происходит медленнее — ведь все майнеры заинтересованы в большем вознаграждении, они настраивают оборудование с приоритетом на наибольшую комиссию. Чтобы операции с маленькими комиссиями также переводились быстро, структура блока позволяет обрабатывать только 10% супервыгодных переводов.
Blockchain for dummies
Сам по себе блокчейн — это крайне простая штука. Его проще всего проиллюстрировать на примере книги бухгалтерского учета, в которую записываются все транзакции в сети Bitcoin. Более того, такая книга присутствует у каждого участника сети, а значит любой, при желании, может проверить, была та или иная транзакция в реальности или нет.
И если блокчейн целиком — это книга, то отдельные блоки можно представлять как страницы, на которых «записываются» транзакции. Кажый блок «ссылается» на предыдущий и так до самого первого блока (genesis block). Именно это и создает такую интересную особенность блокчейна, как неизменяемость. Нельзя взять и изменить блок #123 так, чтобы этого никто не заметил. Потому что блокчейн устроен таким образом, что это повлечет изменение блока #124, потом #125 и так далее, до самого верха.
Что надо знать о хешировании
Выше мы писали о хешировании, но подробно этот термин не рассматривали.
Хеширование — основной элемент криптографии, без которого вся работа системы не была бы возможна.
Хеширование представляет собой проверку целостности цифрового или буквенного сообщения и выполняется с помощью специального алгоритма. Прогоняя сообщение через этот алгоритм, участник системы его хеширует, в результате чего получает хеш. Этот хеш своего рода код, который состоит из 60 символов — букв или цифр.
Хеш вместе с сообщением отправляется получателю. Получатель прогоняет его через этот же алгоритм, то есть раскодирует сообщение. Получается хеш, идентичный тому, который был отправлен ему раннее. Такая кодировка (иными словами хеширование) подтверждает, что никаких изменений в сообщение не вносилось. Хеширование — процесс необратимый. Сообщение нельзя дехешировать. Если сообщение уже получено и подтверждено, снова хешировать нельзя.
Основатель биткоина Сатоши Накамото (кстати, до сих пор не ясно, один ли это человек или группа лиц под псевдонимом) решил соединить хеши в цепочку, получив цепочку блоков.
Транзакции в блокчейне и роль приватных ключей
Выше мы говорили о создании биткоин кошелька, но на самом деле то, что считается кошельком, как таковым не является. Если говорить о кошельке WebMoney или другой виртуальной валюте, то в блокчейне биткоины хранятся по другому принципу. Контроля над финансовым балансом не происходит. Но как же система узнает, достаточно ли у вас средств, чтобы отправить, к примеру, 100 биткоинов вашим знакомым?
Рассмотрим подробнее, как происходят транзакции. Сумма биткоинов значится только у вас в кошельке, то есть она записана только у вас, к примеру, на телефоне в виде хеша. Blockchain эту информацию не знает — он ее не хранит, не записывает, не проверяет. Если необходимо отправить кому-то 100 btc, сеть блокчейна будет искать поступления на кошелек, чтобы сумма поступлений составляла 100 биткоинов. Допустим, на кошелек приходила тысяча транзакций по 0,1 биткоину — система сложит эти транзакции, получит нужную сумму и поймет, что у вас достаточно средств, которые можно отправить, кому захотите.
Raw block
Если у вас до сих остались какие-то вопросы по структуре блока, то предлагаю вам посмотреть на них в «сыром» виде. Самый очевидный способ это сделать — запустить на пару часов bitcoind —daemon, а потом исследовать уже скачанные блоки. Но, во-первых, не у всех есть время / желание синхронизировать блокчейн. Во-вторых, в Bitcoin блоки хранятся в крайне специфической базе данных LevelDB, еще и довольно странным образом. А так как книга расчитана не только на опытных разработчиков, то я пойду уже проверенным путем и снова использую протокол в его первозданном виде.
Для получения блока отправим сообщение getdata, в котором укажем type : MSG_BLOCK и hash : 000000000003ba27aa200b1cecaad478d2b00432346c3f1f3986da1afd33e506 — это хэш блока #100.000. Весь код целиком можете посмотреть здесь.
def getdataMessage(): block_hash = ‘000000000003ba27aa200b1cecaad478d2b00432346c3f1f3986da1afd33e506’ count = struct.pack(»
Развитие технологии Blockchain
Майнеры, обрабатывая транзакции, выпускают новые блоки и новую порцию биткоинов, за что получают награду. Простота и возможность получить криптовалюту практически из воздуха – вот основные причины, почему биткоин и блокчейн стали так популярны.
Blockchain или же цепочка блоков, как говорит перевод с английского, с самого начала позиционировал себя как простая, прозрачная и быстрая технология. Ее прародина — Япония, и уже потом она пришла в другие страны. Изначально она была задумана, как противостояние несовершенной банковской системе, поэтому разработки преимущественно используются в сфере финансов. Однако если раньше с ней работали только узкие специалисты, то сегодня эта технология входит в нашу жизнь семимильными шагами, и отмахнуться от нее уже не получится. Да и стоит ли? Многие современные экономисты считают, что за блокчейном будущее, а отражение этого мы находим в новостях мира криптовалют.
Безопасность, быстрота, открытость транзакций и принципы анонимности привели к тому, что даже представители государств и госструктур больше не могут закрывать глаза на технологии блокчейна, используемые в криптовалютах.
А за рубежом виртуальные деньги применяют не только для проведения транзакций, но и для приобретения почти любых товаров:
- интернет-магазины Amazon и eBay;
- некоторые рестораны сети Subway;
- за битки можно купить билет на самолеты airBaltic;
- на Кипре можно оплатить обучение криптой;
- Dell стала принимать платежи за технику криптовалютой одной из первых.
Merkle tree
Technical side
Дерево Меркла — это структура данных, также известная как бинарное дерево хэшей. В случае Bitcoin оно строится следующим образом:
- Сначала считаются хэши всех транзакций в блоке hash_A = SHA256(SHA256(A))
- Потом считаются хэши от суммы хэшей транзакций hash_AB = SHA256(SHA256(hash_A + hash_B))
- Точно также считаем хэши от суммы получившихся хэшей hash_ABCD = SHA256(SHA256(hash_AB + hash_CD)) и далее по рекурсии. Лирическое отступление — так как дерево бинарное, то на кажом шаге должно быть четное число элементов. Поэтому если, например, у нас только три транзакции, то последняя транзакция просто дублируется:
- Процесс продолжается до тех пор, пока не получится один единственный хэш — он и называется merkle_root (третье поле в header блока)
Ниже приведена реализация дерева Меркла, можете проверить ее на каком-нибудь блоке.
import hashlib # Hash pairs of items recursively until a single value is obtained def merkle(hashList): if len(hashList) == 1: return hashList[0] newHashList = [] # Process pairs. For odd length, the last is skipped for i in range(0, len(hashList)-1, 2): newHashList.append(hash2(hashList
, hashList[i+1])) if len(hashList) % 2 == 1: # odd, hash last item twice newHashList.append(hash2(hashList[-1], hashList[-1])) return merkle(newHashList) def hash2(a, b): # Reverse inputs before and after hashing # due to big-endian / little-endian nonsense a1 = a.decode(‘hex’)[::-1] b1 = b.decode(‘hex’)[::-1] h = hashlib.sha256(hashlib.sha256(a1 + b1).digest()).digest() return h[::-1].encode(‘hex’)
Immutability
Теперь о том, зачем это нужно в Bitcoin. Я думаю, вы понимаете, что если изменить хотя бы одну транзакцию, то merkle_root также изменится. Поэтому такая структура данных позволяет обеспечить «неподделываемость» транзакций в блоке. То есть не может произойти следующей ситуации:
Кто-то из майнеров нашел новый блок и начал раскидывать его по сети. В это время злоумышленник перехватывает блок и, например, удаляет из блока какую-нибудь транзакцию, после чего распостраняет уже измененный блок.
Для проверки достаточно посчитать merkle_root самостоятельно и сравнить его с тем, что записан в header блока.
SPV
Но здесь можно резонно возразить, что, во-первых, такие сложности совершенно ни к чему. Достаточно просто посчитать хэш от суммы всех транзакций в блоке txns_hash = SHA256(SHA256(sum(txns))) — он точно также изменится после любых манипуляций с транзакциями. А, во-вторых, что мешает злоумышленнику подменить merkle_root в блоке? На второй вопрос отвечу сразу: на самом деле в блоке вообще нельзя ничего изменить, потому что блок тут же станет невалидным (это вы поймете после прочтения следующей главы Bitcoin in a nutshell — Mining).
А дерево Меркла нужно на самом деле для того, чтобы иметь возможность создавать SPV nodes (Simplified Payment Verification). Такие ноды синхронизируют только заголовки блоков, без самих транзакций. В результате блокчейн занимает на порядок меньше места (для красоты возьмем высоту в 500.000 блоков, размер header фиксирован — 80 байт):
500.000 * 80 / 1024 / 1024 ≈ 40 Мб
Такой блокчейн уже можно без проблем уместить на телефоне, планшете или каком-нибудь IoT. Что в перспективе должно дать большую децентрализацию, безопасность сети и так далее.
Суть упрощенной верификации платежей в следующем: пусть у вас есть SPV нода. У меня же есть весь блокчейн целиком и мне нужно вас убедить, что какая-нибудь транзакция действительно была (на картинке это транзакция K). В этом случае, мне достаточно всего лишь предоставить вам несколько хэшей: H_L, H_IJ, H_MNOP, H_ABCDEFGH, они еще называются authentication path.
После чего вы сначала считаете H_K = SHA256(SHA256(K)), потом H_KL = SHA256(SHA256(H_K + H_L)) и так до самого верха. Если в итоге вы находите у себя блок с таким же merkle_root, то факт существования транзакции считается подтвержденным.
BTW Ральф Меркл даже запатентовал свою структуру данных, о чем свидетельствует патент US4309569 A.
Отличие эфириума от биткоина
Биткоин (bitcoin) и эфириум (ethereum) — основные криптовалюты, о которых слышал, наверное, каждый продвинутый пользователь интернета. Кто-то считает их конкурентными системами, кто-то – аналогами. Эфириум и биткоин постоянно сравнивают по выгоде, капитализации и популярности. Сегодня с отрывом выигрывает биткоин, однако ситуация может поменяться. В блокчейне биткоина и эфира применен метод достижения распределенного консенсуса PoW (Proof of Work), именно майнеры благодаря PoW обеспечивают безопасность сети.
Что такое блокчейн Ethereum? С эфириумом все сложнее, он изначально создавался как платформа, которая должна была превзойти биткоин. Эфириум — некая экосистема для интеграции новых децентрализованных приложений, своеобразный сервисный комплекс и основа для создания программного продукта с возможностью майнинга монет эфира.
Новым технологиям есть куда развиваться, а закономерные подъемы курсов криптовалют подтверждают тот факт, что blockchain сегодня нужен, и со временем он будет только набирать обороты. Есть уверенность, что скоро мы увидим его во многих сферах нашей жизни, не только в финансовой. Повсеместное распространение – только дело времени. Совсем скоро уже каждый школьник будет знать о технологии блокчейн.
Отличная статья 7