Блокчейн и майнинг своими руками |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2017-08-24 19:30 Блокчейн и майнинг своими руками. В этой статье мы займемся построением простейшего, концептуального, однако полноценно работающего блокчейна своими руками. Вам потребуется только компьютер и мышка. Для начала, разберемся с хешем. Хеш Является ключевым понятием в криптографическом мире. С учетом контекста хеш может служить обозначением либо функции хеширования, либо результата исполнения этой функции. В качестве функции хеш работает как алгоритм, принимающий на вход все возможные данные (от файлов и картинок до двоичного кода и текста) и генерирующий из них последовательность цифр и букв определенной длины. Генерирование осуществляется таким образом, что у одинаковых файлов хеш всегда окажется одинаковым. У разных он будет различным. Многочисленные хеш функции могут быть реализованы по-разному. Однако конечная задача состоит в том, чтобы гарантировать идентичность нескольких файлов, при отсутствии их на руках. Не слишком понятно, поэтому попробуем рассмотреть обычный пример. Внесите в строку поиска «sha256 онлайн» (эта функция будет использована нами в дальнейшем в каждом примере). Поэкспериментируйте, вбивая разнообразные данные. Допустим, хешем от «CCG» окажется: f8f5cb9dbb4e77e8e0f74b60f8583ab213d02f2cdc235ef8c36e6563aff3ed0d От ccg: 18c848ac24402a227a4cd3dc3871fedadfaf59cc126965b5cdcad981997093b2 Используйте любой виртуальный калькулятор, и ваш результат будет аналогичным моему. Понимания этого уже хватает для создания простого блокчейна, так как на деле он является цепочкой связанных криптоблоков. Займемся созданием первого блока. Допустим, с записью денежных отношений. Откройте блокнот и создайте первый блок: Миша -> Вера:: 20 рублей Вера -> Леня:: 30 рублей Миша -> Сара:: 60 рублей Хеш тут не считается. Сохраните блок, назвав его 1.txt, в отдельную папку. Заходите на нагугленный сайт, способный считать хеш для первого блока. Вы получите фразу вида: 7f17d67621afd2a651bc0a552735745b8a2c424cff28e523b94f1d1b4615f591 Сохраните эту строчку. Создайте второй блок под названием 2.txt. Тут будут указаны новые «транзакции»: Тина -> Яна:: 20 рублей Мэри -> Валя:: 20 рублей Последняя строчка должна быть результатом хеширования прошлого файла: Тина -> Яна:: 20 рублей Мэри -> Валя:: 20 рублей 7f17d67621afd2a651bc0a552735745b8a2c424cff28e523b94f1d1b4615f591 Сохраните и сосчитайте хеш этой новой записи ПОЛНОСТЬЮ. Вы получите что-то вроде db45d94b629fbf8c5fb1decd89f5d0ff62bbca86a02bc4f943eac42ff33dd486. Все остальные блоки создавайте по той же схеме и в любых количествах. Блокчейн биткойна на 06.17 содержит больше 473 тысяч таких блоков с записями практически о 250 млн. транзакций. С цепочкой биткойна на самом деле не все так гладко и беспроблемно, как некоторые полагают. Допустим, даже середина цепочки содержит блоки, которые были прописаны и подтверждены вручную. Нельзя говорить о том, что этот факт компрометирует биткойн-технологию. Однако определенное значение он все-таки имеет. Но пока о другом. Созданием всех файлов можно заниматься вручную. А можно ускорить процесс, скачав мой архив из 10 блоков и 1 контрольного блока, в котором содержится лишь хеш последней записи. Итак, подготовка тела блокчейна прошла вполне успешно. Осталось самое важное — нам нужна функция проверки целостности, которая укажет, что с блоком все хорошо или заявит о том, что в него кто-то попытался вмешаться. Проверку можно провести своими руками. Все просто. Пробегитесь по всем записям подряд, отыщите хеш каждой и сравните с записью в дальнейшем по порядку хеш-значением. При наличии хотя бы одного расхождения можно уверенно говорить о разрыве цепочки. Данный процесс удобнее и проще осуществлять при помощи программных инструментов. Вы можете воспользоваться моим примитивным скриптиком, написанным на баше (благодаря этому языку, пользователи Андроид, MacOS, GNU/Linux не будут испытывать сложностей с запуском). Если вы пользуетесь Windows, я рекомендую вам установку Linux subsystem for windows (доступно в десятой Винде) или cygwin. Код не содержит ничего, что могло бы проверять содержимое файлов прямиком. Запустите скрипт, и вы получите нечто в виде: 11 blocks chain is flawless final hash = 22cbc83ca6a2cf2e75ae5ca76fb087ef11ff36fb0065c301557c8152a5bc530f Это будет говорить о том, что информация предоставлена в неизмененной форме, в цепочку никто не внес изменений. Сейчас откройте в блокноте любой файл и измените в нем имя, цифру, уберите пробел и выполните любые другие действия по своему желанию. В результате такого вмешательства вы увидите бескомпромиссную надпись: chain is corrupted Возвратите все на обратные позиции, и цепочка снова сможет пройти ваши проверки. Ничего волшебного в этом нет. Особенности майнинга Сейчас разберемся с тем, что представляет собой майнинг. Существует монета, она скрыта в коробочке и ваша задача — открыть эту коробку. Но сделать это возможно только решив пример, написанный на коробке, а таких коробок миллиарды, но монета есть лишь в одной. Искать монету необходимо с помощью миллиона китайцев, у каждого из которых есть калькулятор в руках. Для примера попробуем усложнить какую-либо цепочку, добавив в ее первую строчку случайные данные — допустим, числовую комбинацию из 10 цифр. В блокчейн-технологии биткойна это поле будет называться нонс. Вид следующий: 0000000000 Миша -> Варя:: 20 Рублей Вася -> Лена:: 30 Рублей Миша -> Сара:: 60 Рублей Отправляемся на нагугленный нами прежде сайт и считаем хеш. Получаем фразу типа 361d313d08c614ff63290943bb184aadaaaae84171caef4bfb2344a3223cd104. Однако она не подходит. Но почему? Все достаточно просто. Официальная документация биткойна (предположим) указывает, что первые десять блоков принимают только те хеши, которые начинаются на 0. Все прочие не подойдут и все, в том числе, сама программа хеширования, выбранная нами, считает нас жуликами при попытках генерировать такое. Мы принимаем решение добавить к нашему числу двоечку (мы не знаем заранее, какой хеш в результате получим, если вы обладаете такими знаниями, то вам пора отправляться за Нобелевской премией). Все, что мы можем, это экспериментировать. В результате мы получаем 0000000002. Хешируем эти цифры заново. Результат: 44364a819eca9616dd56c21f6ba9a570d8a27ca54b95f67585cd36da2e4bf9f5. Снова отсутствие ноля. Но у нас есть новая попытка написания перебирающего скрипта. Здесь присутствует несколько главных переменных. Одна из них — GOAL, указывающая, чему должны быть равны цифры, и вторая — LENGTH, обозначающая количество цифр подряд с самого начала, которые должны отвечать критерию. Выполните запуск скрипта./block_mine. sh 1.txt — его работа осуществляется в достаточно оперативном режиме. После этого укажите вместо GOAL — 000, а вместо LENGTH — 3, и вы увидите цифры, которые куда-то бегут. Замените GOAL на 0000000000 и LENGTH на 10, и результата исполнения ваш компьютер уже не даст. Я показал вам пример расчета цепи с уровнем сложности «3 ноля в начале всех хешей». Осуществите подмену или подделку таким образом, чтобы в результате в начале хеша обязательно стояли три ноля, и цепочка при этом могла успешно пройти проверку, не пытайтесь при этом перемайнить всю цепочку. Такое примитивное действие и будет называться майнингом. У профессионально сделанных блокчейнов разное количество всевозможных данных, хранящихся в блоке, свои наборы правил для хешей и определенные алгоритмы хеширования. Насколько легко осуществить подделку? Все, что необходимо сделать — провести полный майнинг всей цепочки от начала до конца, и сделать это раньше, чем остальные майнеры. И если у вас окажется больше блоков, которые соответствуют условиям, чем у прочих майнеров, сеть согласиться с вашим вариантом, и вы завладеете биткойном единолично. Естественно, что такая задумка сложно осуществимая. Разбираемся с биткойнами Если говорить самыми простыми словами, то блокчейн будет электричеством, а биткойн и другие криптографические валюты окажутся лампочкой, которая питается от этого электричества. Биткойн только один из вероятных методов использования идей блокчейн-технологии, и как мне кажется, не имеющий ключевого и наиболее важного значения. Но об его экономисткой сущности все-таки следует поговорить подробнее. Итак, поверьте, что сейчас мы ведем разговор о спекулятивном экономическом пузыре. То есть, о дефицитном товаре, который приобретают и добывают для того, чтобы получить быстрый доход за краткий период времени. Ничего плохого или хорошего в этом нет. Такие ситуации привычных для всех фондовых рынков и всей экономики целиком. Изначально глобальная паутина также была пузырем. Я советую вам воспринимать биткойны в качестве финансового развлечения, а не в качестве средства накопления материальных средств. Будьте готовы к тому, что меньше чем за день курс криптовалюты обвалиться в 5-10 раз. Но также вероятно и то, что вы увидите аналогичный взлет, все зависит от вашей удачи. Для чего? С этим вопросом необходимо разбираться последовательно. В противном случае здесь можно попросту запутаться. Итак: Для чего мы разбиваем цепочку на блоки, при возможности хешировать большие файлы целиком? Благодаря этому ходу, обнаружить изменения в цепочке можно легче и быстрее. Мы с легкостью определим повреждения блока в любом случае. Однако понять, где именно они были проведены в большом файле возможно, только зная об изменении хеша. А есть ли необходимость в этом хеше? Почему бы не ограничиться простой передачей данных? Хеширование необходимо в случаях, когда следует удостовериться в том, что в данные не было внесено никаких изменений и данные не имеют повреждений. Ведь может возникнуть ситуация, при которой каналы передачи данных оказались скомпрометированы. Отмечу, что в недавнем прошлом такая возможность казалась нереальной. Однако сегодня хеши уже стали традиционной и привычной частью нашей жизни. Использование блокчейна где-то, кроме всем известных криптографических валют, сегодня где-то уже осуществляется? В качестве примера успешного использования можно привести такие венчурные проекты, как платформы для голосования (если результаты выборов невозможно будет подтасовать никаким образом, количество голосующих увеличиться в разы), соц. сети, электронный каталог с книгами project Alexandria, распределенные базы данных. Говорить о современном использовании блокчейна можно достаточно долго. По большей части, у проектов нет права рассчитывать на долгосрочное существование. Здесь следует вспомнить хотя бы о краудфандинговой платформе Koinify или с грохотом провалившейся из-за уязвимости инвестиционной платформе The DAO. Но сфера действительно перспективная, и в ней удается выполнять вещи, которые прежде казались фантастическими. Есть все основания полагать, что блокчейн лихорадка окажется новым витком прогресса. Я не работаю программистом и вообще не связан с высокими технологиями, следовательно, блокчейн для меня просто неинтересен? Такое рассуждение кажется столь же странным, как если бы вы сказали — я не писарь, поэтому обучаться чтению и правописанию не стану совсем. Сравнивать программирование с профессией или особым талантом не стоит. Мы говорим о более гибком и мощном способе применения вашей компьютерной системы, и только. Не следует опасаться чего-то чрезмерно трудного. Сама мысль переписать что-то вручную в скором будущем окажется попросту абсурдной. Каждый первоклашка сможет пользоваться более эффективными инструментами для того, чтобы профессионально реализовать нужную идею. Вы сможете забыть о том, например, чтобы переписывать что-то из книги своими руками. Комментарии: |
|