Чтение онлайн

ЖАНРЫ

Биткоин для всех. Популярно о первой распределенной одноранговой денежной системе
Шрифт:

Появившаяся 16 декабря 2009 года новая версия Bitcoin Core 0.2 была в значительной мере написана самим Малми. Так он стал, по сути, основным разработчиком кода Биткоина.

К концу 2009 года количество работающих майнинговых узлов в сети Биткоина стало таким, что пришлось впервые увеличить сложность решаемой криптографической задачи майнинга.

Это произошло 30 декабря 2009 года при добавлении блока №32256. При этом сложность возросла с 1,0 до 1,18289953.

Так состоялось рождение Биткоина, как распределенной и децентрализованной сети электронных денежных расчетов.

Хронология:

– 18 августа 2008 года – зарегистрирован домен bitcoin.org

– 31 октября 2008 года –

Сатоши Накамото обнародовал доклад Bitcoin: A Peer-to-Peer Electronic Cash System («Биткоин: Одноранговая электронная денежная система»), в котором описывалась технология новой денежной системы.

– 9 ноября 2008 года – проект Bitcoin был зарегистрирован на сайте разработчиков SourceForge.net

– 3 января 2009 года – Сатоши Накамото сгенерировал первый блок Биткоина (Genesis) и получил на свой биткоин-адрес первые 50 монет. В первый блок был включен текст: «The Times 03/Jan/2009 Chancellor on brink of second bailout for banks.»

– 9 января 2009 года – Сатоши Накамото опубликовал первый релиз программы Bitcoin Core v.0.1. в в списке рассылки Cypherpunks.

– 10 января 2009 года – в сети появился узел №2 Биткоина. Вторым пользователем Биткоина стал Хэл Финни. В этот же день он сгенерировал блок №78 и получил первые 50 монет на свой биткоин-адрес.

– 12 января 2009 года – первая в истории транзакция по переводу биткоина – Сатоши Накамото отправил на биткоин-адрес Хэла Финни 10 монет. Это зафиксировано в блоке №170.

– 5 октября 2009 года – на сайте New Liberty Standard опубликован первый обменный курс биткоина к доллару США.

– 12 октября 2009 года – заработал чат-канал #bitcoin-dev в IRC.

– 16 декабря 2009 года – вышла версия Bitcoin Core 0.2.

– 30 декабря 2009 года – впервые увеличена сложность майнинга.

Популярно об основах криптографии, используемой в протоколе Биткоина

В основе Биткоина лежит криптография – наука о методах обеспечения конфиденциальности (невозможности прочтения информации посторонним), целостности данных (невозможности незаметного изменения информации) и аутентификации (проверки подлинности авторства или иных свойств объекта).

Биткоин построен на трех основных криптографических технологиях – хэшировании, асимметричной криптографии и электронной цифровой подписи (ЭЦП). Собственно, эти технологии лежат и в основе самой криптографии, позволяя обеспечивать конфиденциальность, целостность данных и аутентификацию.

Разумеется, для понимания работы Биткоина необходимо понимать, как же работают технологии, на которых он базируется. Я просто и наглядно расскажу об этом.

Хэширование: Просто и наглядно

Хэширование, или хэш-функция – одна из основных составляющих современной криптографии и протокола Биткоина.

Но, что это такое? Как наглядно представить сущность хэша?

Начнем с того, что хэширование – это особое преобразование любого массива информации, в результате которого получается его некое отображение, образ или дайджест, называемый хэшем (hash) – уникальная короткая символьная строка, которая присуща только этому массиву входящей информации.

Из этого следует, что для любого объема информации, будь-то одна буква или, например, роман Льва Толстого «Война и мир» (или даже всё Полное собрание сочинений этого автора) существует уникальный и неповторимый хэш – короткая символьная строка. Причем, если в той же «Войне и мире» изменить хотя бы один символ, добавить один лишь знак, – хэш изменится кардинально до неузнаваемости.

Как такое может быть? Целый многотомный роман и короткая строчка, которая отражает его!

В этом смысле хэш подобен отпечатку пальца

человека или его ДНК 9 . Хотя последняя аналогия не полностью передает суть хэша 10 .

Хэш подобен отпечатку пальца человека

Как известно, отпечаток пальца уникален и в природе не существует людей с одинаковыми отпечатками. Даже у близнецов отпечатки пальцев разные. Это же касается и структуры ДНК человека. Она уникальна! Нет людей с одинаковой структурой ДНК.

9

ДНК – Дезоксирибонуклеиновая кислота – макромолекула, обеспечивающая хранение, передачу из поколения в поколение и реализацию генетической программы развития и функционирования живых организмов.

10

Хэш-функция, в отличие от ДНК, необратима. Невозможно по хэшу восстановить исходный массив информации. В то же время, ДНК является носителем всей информации об организме.

Но ведь ДНК, а тем более отпечаток пальцев – относительно короткие наборы информации. И, тем не менее, они являются неким кодом, присущим конкретному человеку. Можно считать, что это и есть «хэши» этого человека. С тем лишь отличием, что эти «хэши» не меняются с возрастом человека.

Итак, первое свойство хэша – его уникальность:

Каждому набору (массиву) информации присущ строго определенный, уникальный хэш.

Тем не менее, иногда встречаются т.н. коллизии – случаи, когда хеш-функция для разных входных блоков информации вычисляет одинаковые хэш-коды.

Математики-криптографы стараются создать такие хэш-функции, вероятность коллизий в которых стремилась бы к нулю.

Следует отметить, что функций, которые вычисляют хэш, существует множество. Но наиболее распространена (в частности, используется в протоколе блокчейна Биткоина) хэш-функция под названием SHA-256 (от Secure Hash Algorithm – безопасный алгоритм хеширования). Эта хэш-функция формирует хэш в виде строки из 64 символов (длина – 256 бит или 32 байта).

Попробуем при помощи функции SHA-256 получить хэш для заголовка этой главы («Хэширование: Просто и наглядно»).

Это будет:

ef3c82303f3896044125616982c715e7757d4cd1f84c…

Примечание: Здесь и далее с целью удобства представления на странице будем обрезать хэш до 44 символов, заканчивая троеточием.

А теперь изменим заголовок всего лишь на один символ – добавим знак восклицания в конце («Хэширование: Просто и наглядно!»).

Получилось:

a6123e137d1d7f0aad800cdbc0918a65bb7a778a607c…

Как видите, изменение всего лишь на один знак исходного массива информации привело к кардинальному изменению его хэша!

И это второе важное свойство хэша:

– при самом незначительном изменении входной информации её хэш меняется кардинально.

Это свойство важно при использовании хэширования в цифровой подписи, так как позволяет удостовериться, что подписанная информация не была изменена во время её передачи по каналам связи.

Третье важное свойство хэша вытекает из того, что хэш-функция необратима. Другими словами:

– не существует обратной функции, которая из хэша может восстановить исходный массив информации.

Из этого следует, что восстановить по хэшу соответствующий ему массив информации возможно только перебором всех возможных вариантов. Что практически невозможно, поскольку количество информации бесконечно!

Это свойство важно, поскольку делает взлом хэша (восстановление исходной информации по её хэшу) или невозможным, или весьма дорогостоящим занятием.

Поделиться с друзьями: