Классический блокчейн. Как это работает. на Capitalogy.io
Криптовалюта
Классический блокчейн. Как это работает.
Мария Темникова
Начало > Криптовалюта
#Криптовалюта

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



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

У такого процесса есть сильные стороны:

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

• Удобство администрирования превращается в минус вследствие того, что если что-то пойдет не так с центральным сервером, то все порушится: кто-то проникнет или может случиться пожар. И все внешние пользователи перестанут доверять этому центральному компьютеру.

• Недостаток – опасность взлома.

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

В 1980-х гг. появлялись первые протоколы согласования - задача византийского согласия в сети узлов, среди которых могут быть предатели. История развивалась, появлялись протоколы. Особое развитие произошло с работой Сатоши Накомото, где была предложена технология блокчейн – ведения распределенной базы данных в условиях полного недоверия узлов друг к другу.

Таким образом, появился блокчейн, который по своей структуре опирается на три кита:

• криптографическая кеш функция

• подпись

• открытый консенсус



Криптография – наука математических методов, с помощью которой некоторую информацию можно хранить в секрете. Функция – некий алгоритм, который производит преобразование некого входного значения в выходное значение. Банальный пример функции: функция F берет аргумент X и к нему прибавляет 2.

Существует хеш функция, когда на вход можно давать произвольное число или сообщение, потому что любое сообщение можно прочитать в виде числа. На выходе получаете число из фиксированного диапазона. В случае со строкой, вы получаете фиксированную строку. Давайте разберем на конкретном примере. Остаток от деления числа на 2. Подаем 0 на 2 = 0. Подаем пятерку, получаем единицу. Подаем число, остаток будет 1, потому что число не четное. Идея в том, что какое бы число вы не подавали, на выходе вы всегда будете получать либо 0, либо 1. Выход строго в фиксированном диапазоне.



Криптографическая кешфункция – это кешфункция преобразования входного сообщения в выходное, которое является очень сложным и замудренным. Идея в том, что по результатам выполнения кешфункции невозможно подобрать код - такой входной сигнал, чтобы на выходе давал данный выходной сигнал. Конкретно в биткоине используюся 2 хешфункции, они названы странными названиями. Числа 160 и 256. Первая хешфункция всегда возвращает на выходе последовательность из 165, чтобы вы не подавали. Шаг 165: функции прописаны. Алгоритм функции 200, который очень запутанный. Распутать обратно не представляется возможным. Шаг 256: подал сообщение (число) и получил 256 бит -последовательность букв и цифр. Если в этом ходе вы поменяете букву, то получите другие 256 бит. Корреляции между этими выходами нет никакой. Любое изменение входа, приводит к изменению выхода. Каждый запуск кешфункции, приводит к изменению входа. Никакой случайности нет. Алгоритм детерминированный.

Электронно-цифровая подпись.
Существуют участники, а значит и подписи. У каждого участника есть образцы подписи всех остальных. К примеру, пользователь А делает запись о том, что он переводит монеты, затем он ставит подпись. Пользователь В видит, что это точно Пользователь А и отдает бумажку Пользователю С, который видит, что подпись Пользователя А верна. Таким образом, мы понимаем, что у всех участников база данных одинаковая.

Аналогичная механика задействована и в цифровом формате: ключ – число – набор цифр и букв.

Для компьютера это число. ЭЦП работает следующим образом: пользователь пускает алгоритм, он выдает ему 2 ключа. Наборы букв и цифр. Закрытый ключ и открытый ключ. На джаксе происходит тоже самое, когда вы регистрируете там свой кошелек. Закрытый ключ нужно хранить в секрете, чтобы его никто не узнал. Если кто-то узнает, то будет гарантированный взлом кошелька. Конечно, у вас возникает опрос о том, где хранить ключ. Вы можете хранить его на бумажке, либо в горах в холодном хранилище. Открытый ключ можно отдавать всем остальным, пользователи при желании могут им обменяться. Предположим, что пользователь А хочет сделать заявление. Тогда он пишет сообщение и подписывает его. Для подписи ему необходимо сделать следующее: запустить алгоритм, с которого приходит сообщение от пользователя А. Кроме того, подается закрытый ключ, про который никто не должен знать. В итоге получается набор букв и цифр – подпись. Сообщение с подписью отдается другим пользователям. Есть открытый ключ, который они знают и дальше могут его верифицировать. Пользователи запускают алгоритм, которому скармливается открытый ключ. Одновременно с другой стороны скармливается сообщение, а с третьей стороны скармливается подпись. И на выходе этот алгоритм говорит верна подпись или нет.

Если в процессе передачи кто-то изменил сообщение, то подпись становится неверна. Все остальные увидят. И подпись не будет верифицирована.



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

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

Онлайн мастер-класс по криптовалютам. Записывайся!
Записаться на мастер-класс
9 февраля 2018