Криптовалюта: факты и заблуждения, или "мама, я купил 10 видеокарт и хочу биткойнтов!" part 3: Блокчейн
Добрый день! Подписчиков стало аж 41, и я рад, что мои статьи интересны людям!
Сегодняшняя тема поста - самое сложное, что есть в криптовалюте. И самое важное. Это технология blockchain, собственно, сделавшая криптовалюты возможными.
Итак, с чего бы начать...
А начать нужно с того, как сейчас работают денежные транзакции. Предположим, вы переводите со счета на счет деньги за работу. Пусть фрилансеру, живущему во Владивостоке, а вы сидите во Владикавказе. Физически наличные средства не передать, и вы прибегаете к посреднику - банку. Получается, что банк переложил свои деньги из одного кармана в другой, сказав Вам и фрилансеру, что у Вас денег стало меньше, а у него - больше.
Насколько комфортно наличие третьего лица, распоряжающегося вашими средствами? Не особо. А культ анонимности, развивавшийся в Интернете многие годы, такое вообще не приемлет. Да и в целом, сложно доверять тому, кто при собственном (или государства) желании может взять и забрать все ваши деньги.
И тогда неким Сатоши Накамото (причем неизвестно, реальная ли это личность, группа ученых под общим псевдонимом, или вообще госструктуры) было предложено обмениваться информацией между пользователями (плательщиками) посредством цепочки (важное условие - идеально синхронизированное время) из групп тразнакций - блоков.
Таким образом:
В блок 0 кодируются все самые старые транзакции (до предположим 1 МБ информации)
В блок 1 кодируются более новые транзакции плюс hash предыдущего блока
В блок 2 - еще более новые, и hash предыдущего блока, содержащий hash всех еще более ранних блоков. И так по цепочке.
Важно отметить, что транзакция считается подтвержденной, когда она заняла место в сформированном блоке (выпала монетка).
Это все хорошо, но найдется куча желающих, которые припишут в блок несуществующие транзакции - о том, как им дали кучу денег, например. Как определить, какие блоки зашифрованы правильно, а какие - нет?
Этот вопрос называется "задачей византийских генералов"
Картинка нагуглена в Интернетах, спасибо автору!
Соответственно, суть задачи в том, что нужно вычислить "предателей" - в нашем случае, некорректно зашифрованные блоки.
В случае с блокчейном решение очень простое: каждый пользователь сети передает информацию каждому другому. И по сути, голосованием, решается вопрос - "наступать" или "отступать", или является ли данный блок правильным.
Но! Число юзеров - это, конечно, хорошо, но любой мошенник может создать кучу фейковых айпи, и т.п. Однако доподлинно известно, что у честных юзеров больше мощности затрачивается на работу в сети. Таким образом, голосование происходит мощностями - 51% общей мощности системы однозначно определяет подлинность зашифрованного блока. Эта система называется proof of work.
В связи с этим, кстати, самый страшный кошмар биткоин-юзеров - это "атака 51" ситуация, когда 51% мощности сети будет контролироваться мошенниками. Но с учетом текущей мощности сети... Такое малореально, конечно =)
Итак, как же работает Proof of Work? А это и есть тот самый майнинг, на который уходят запасы видеокарт и все электричество (за которое, как известно, платит мамка).
В hash блока внедряется так называемый "NONCE" - четырехбайтное число. Это число нулей в начале hash'а.
Процесс майнинга - это процесс перебора значений "NONCE" в hash'е блока. По сути процесс аналогичен тому, когда вы, например, читаете договор и на каждой странице ставите подпись - доказываете, что вы с договором поработали и вообще всячески добросовестные ребята.
При этом реализуется защита от мошенничества - если, например, поверх хорошего блока, закодировался и честный, и нечестный блок, то, например, мошенники попытаются продолжить цепочку блоков из нечестных, а честные майнеры отбросят нечестный блок, т.к. у него в hash'е будет всякое нехорошее, и продолжат майнить поверх "честных" блоков.
Таким образом, более длинная цепь (в которую вложили больше работы) автоматически будет признана правильной. За всю историю биткоина, самая длинная мошенническая цепь составила... 5 блоков. А так-то в системе сейчас порядка 500.000 блоков (за каждый блок дается награда порядка 21 биткоина на данный момент).
Интересный факт, на поиск значения "NONCE" уходит всегда одно и то же время. Потому что сложность скалируется от числа участников поиска.
Собственно, процесс майнинга - процесс соревнования между участниками, кто быстрее соберет новый блок. Тот, кто собирает блок, сигнализирует остальной сети, что он молодец, и начинайте пользоваться новым блоком.
Таким образом, блокчейн - это не зависимая от внешних регуляторов система хранения и учета транзакций.
Майнинг криптовалюты - это эмиссия, одновременно поддерживающая систему транзакций.
А действия с намайненной в той или иной момент монеткой записываются также в блокчейн (оплата чего-то, например)
По одному блоку блокчейна можно определить всю историю блоков до него.
Вот как-то так, простенько и вкратце. Честно говоря, очень-очень сложно донести информацию в небольшом посте (вместо 2-3 часовой лекции). Поэтому жду много вопросов и споров в комментариях. Тем не менее, я надеюсь, что эта статья поможет лучше ориентироваться в том, что же такое блокчейн, почему он имеет ценность вне зависимости от хайпа вокруг крипт, и что он может применяться далеко не только в криптовалютах (чему нынче очень много примеров - финтех стартапов абсолютно разных направленностей).
В следующей статье (в пятницу) я постараюсь рассказать об организации фермы, а также бонусом - о том, как уязвимы бывают блокчейны на примере The DAO Attack (заодно расскажчу чем Эфир отличается от Биткоина). Stay tuned!
Картинки как всгеда натырены из интернетов, спасибо их создателям!
А чем обеспечен этот ваш блокчейн?!Шутка. Кстати, на днях была новость, нацбанк РБ внедряет блокчейн для передачи информации о выданных банковских гарантиях (ссылку не буду кидать, оно гуглится). Интересно, на сколько это распостранённая практика в мире.//Но с учетом текущей мощности сети... Такое малореально, конечно =)
Если удастся заразить "51%" вычислительной мощности сети(достаточный %) и исполнить на этих машинах свой код, то...не так и маловероятно. Особенно, если этот код будет закладкой в железе или ОС.
Так ли маловероятно?
Спрашивали или нет, не знаю. А что можешь сказать про облачный майнинг???