Сегодня мы собираемся объяснить, что такое хеширование и цифровая подпись в блокчейне.
Что такое хеширование в блокчейне?
Хеширование относится к концепции взятия произвольного количества входных данных, применения к ним некоторого алгоритма и генерации выходных данных фиксированного размера, называемых хешем. Входными данными может быть любое количество битов, которые могут представлять один символ, файл MP3, целый роман, электронную таблицу вашей банковской истории или даже весь Интернет.
Дело в том, что вход может быть бесконечно большим. Алгоритм хеширования можно выбрать в зависимости от ваших потребностей, и существует множество общедоступных алгоритмов хеширования. Дело в том, что алгоритм принимает бесконечное количество битов, применяет к ним некоторые вычисления и производит конечное число битов. Например, 256 бит.
Для чего можно использовать этот хеш?
Сегодня хэши часто используются для снятия отпечатков пальцев с файлов, также известных как зоны проверки. Это означает, что хеш используется для проверки того, что файл не был изменен или изменен автором каким-либо непреднамеренным образом. Если WikiLeaks, например, публикует набор файлов вместе с их хэшами MD5, тот, кто загружает эти файлы, может проверить, что они действительно получены из WikiLeaks, вычислив хеш MD5 загруженных файлов, и если хеш не соответствует тому, что было опубликовано WikiLeaks, тогда вы знаете, что файл был каким-то образом изменен.
Как блокчейн использует хеш?
Хеши используются в блокчейнах для представления текущего состояния мира. Входные данные – это полное состояние цепочки блоков, то есть все транзакции, которые имели место до сих пор, а результирующий выходной хэш представляет текущее состояние цепочки блоков. Хеш используется, чтобы согласовать между всеми сторонами, что глобальное состояние является одним и тем же, но как эти хеши на самом деле рассчитываются?
Первый хэш вычисляется для первого блока или блока Genesis с использованием транзакций в этом блоке. Последовательность начальных транзакций используется для вычисления хэша блока для блока Genesis. Для каждого нового блока, который создается впоследствии, хэш предыдущего блока, а также его собственные транзакции также используются в качестве входных данных для определения его хэша блока. Так формируется цепочка блоков: каждый новый хэш блока указывает на хэш блока, который был ранее.
Эта система хеширования гарантирует, что ни одна транзакция в истории не может быть изменена, потому что, если какая-либо часть транзакции изменяется, то же самое происходит с хешем блока, которому она принадлежит, и в результате с любыми последующими хэшами блоков. В результате было бы довольно легко поймать любую манипуляцию, поскольку сравнивать можно только хеши. Это здорово, потому что всем участникам блокчейна нужно согласовать только 256 бит, чтобы представить потенциально бесконечное состояние блокчейна. Блокчейн Ethereum в настоящее время составляет десятки гигабайт, но текущее состояние блокчейна на момент этой записи – это шестнадцатеричный хэш, представляющий 256 бит.
Что такое цифровые подписи в цепочке блоков?
Цифровые подписи, как и настоящие подписи, – это способ доказать, что кто-то является тем, кем они себя называют, за исключением того, что мы используем криптографию или математику, которые более безопасны, чем собственноручные подписи, которые можно легко подделать. Цифровая подпись – это способ доказать, что сообщение исходит от конкретного человека и никого другого, например хакера.
Цифровые подписи сегодня используются повсюду в Интернете. Каждый раз, когда вы посещаете веб-сайт через ACTPS, вы используете SSL, который использует цифровые подписи для установления доверия между вами и сервером. Это означает, что когда вы посещаете Facebook.com, ваш браузер может проверить цифровую подпись, которая идет вместе с веб-страницей, чтобы убедиться, что она действительно создана Facebook, а не каким-то хакером.
В системах асимметричного шифрования пользователи генерируют так называемую пару ключей, которая представляет собой открытый ключ и закрытый ключ, используя известный алгоритм. Открытый ключ и закрытый ключ связаны друг с другом некоторым математическим соотношением. Открытый ключ предназначен для публичного распространения и служит адресом для получения сообщений от других пользователей, например IP-адресом или домашним адресом.
Закрытый ключ должен храниться в секрете и используется для цифровой подписи сообщений, отправляемых другим пользователям. Подпись включается в сообщение, чтобы получатель мог проверить ее, используя открытый ключ отправителя. Таким образом, получатель может быть уверен, что только отправитель мог отправить это сообщение. Создание пары ключей аналогично созданию учетной записи в цепочке блоков, но без необходимости где-либо регистрироваться. Довольно круто. Кроме того, каждая транзакция, выполняемая в цепочке блоков, подписывается отправителем цифровой подписью.
Чтобы связать все это воедино, не может быть блокчейна без хеширования и цифровых подписей. Хеширование позволяет каждому участнику блокчейна согласовать текущее состояние мира, а цифровые подписи позволяют гарантировать, что все транзакции совершаются только законными владельцами. Мы полагаемся на эти два свойства, чтобы гарантировать, что цепочка блоков не была повреждена или взломана.