Перейти к содержимому


Свернуть чат Чат Открыть чат во всплывающем окне

@  АСМ : (09 Январь 2017 - 12:05 ) С Новым Годом, господа ))
@  Logos : (09 Январь 2017 - 01:27 ) Всем привет!

Фотография

Блокчейн и майнинг на пальцах

блокчейн и майнинг блокчейн майнинг на пальцах

  • Авторизуйтесь для ответа в теме
В этой теме нет ответов

#1 АСМ

АСМ

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 999 сообщений

Отправлено 05 Июль 2017 - 11:12

Что можно построить на основе блокчейна
 
 
Прикрепленный файл  На пальцах.png   393,7К   0 Количество загрузок:
 
Сегодня мы будем строить свой, простейший, концептуальный, но тем не менее полностью рабочий блокчейн. Прямо у вас на компьютере, без начальной подготовки, буквально вручную мышкой.
 
На самом деле всё там очень просто, и доступно даже пятикласснику. Для этого сначала нужно пояснить, что такое хэш. 
 
Хэш
 
Ключевое понятие в криптографии. Оно может означать, в зависимости от контекста, две вещи: функцию хэширования, или результат выполнения такой функции. Если совсем просто, хэш-функция — это алгоритм, который принимает на вход любые данные (файл, текст, картинка, двоичный код) и генерирует из него последовательность букв и цифр фиксированной длины.
 
Генерирует при этом так, что одинаковые файлы всегда дают в результате одинаковый хэш, а разные — в идеале, разный (случай, когда две разных последовательности входных данных дают одинаковые хэши, называется коллизией криптографической функции и считается уязвимостью).
 
Хэш-функций существует великое множество, и для каждой из функций существует множество реализаций. Но все они, строго говоря, делают одно и то же: позволяют гарантировать, что несколько файлов одинаковые, не имея на руках самих файлов.
 
А теперь, чтобы стало ещё понятнее, продемонстрирую на практике. Вбейте в гугле «sha256 онлайн» (именно эту функцию мы будем использовать во всех примерах). Например этот онлайн-конвертер.  Поиграйте с ней, вбивая разные данные. 
 
Например, хэш от слова TJournal:
 
7db3a63e07638d7c795ee95210497048a7cc976f98f11ca8d5e2fc10b4dc374f
 
А вот от tjournal:
 
c3ea30a9f5a650ee53db452cf17209412abbcee72b264ebfb1c7fa49b57fd8c9
 
Вбейте данные сами в любом онлайн-калькуляторе, и вы получите ровно те же результаты, что и я: одинаковые для одинаковых строк, и разные — для разных.
 
Сделай сам
 
Всё. Этих знаний уже достаточно чтобы создать простой блокчейн. Удивительно, правда? Блокчейн — цепочка криптографически связанных блоков.
 
Давайте создадим первый «блок». В нём может быть что угодно, но мы уже придерживаемся аналогии с биткоином и транзакциями, поэтому будет тоже записывать денежные отношения.
 
Открываем ваш любимый блокнот и создаём первый файл:
 
Маша → Ваня :: 10 рублей
 
Ваня → Лиза :: 20 рублей
 
Маша → Саша :: 50 рублей
 
Прикрепленный файл  Блокчейн на своем компьютере.png   120,17К   0 Количество загрузок:
 
Хэш тут не для чего считать, поэтому всё. Сохраняем его с именем 1.txt в специальной папочке (FYI: в блокчейне криптовалют такой блок называется Genesis block, и да, там его тоже прописывают вручную). Сохранили? Идём на один из прежде нагугленных сайтов (можно догадаться, что настоящие блокчейны ни на какие сайты не ходят, а вызывают заранее запрограмированные в них функции, но для нашего простейшего случая сделаем всё вручную), и считаем хэш для этого файла.
 
У меня получилось 7f17d67621afd2a661bc0a552735745b8a2c424cff28e523b94f1d1b4615f591, у вас может получиться другое, в зависимости от содержимого файла, кодировки, лишних или недостающих пробелов, переносов и тому подобного. Совершенно не важно, что у вас получилось, просто сохраните эту строку.
 
Теперь создайте следующий файл и назовите его 2.txt. Запишите в него несколько новых «транзакций»:
 
Таня → Катя :: 10 рублей
 
Макс → Витя :: 10 рублей
 
И последней строчкой добавьте результат хэширования предыдущего файла. Вот так:
 
Таня → Катя :: 10 рублей
 
Макс → Витя :: 10 рублей
 
7f17d67621afd2a661bc0a552735745b8a2c424cff28e523b94f1d1b4615f591
 
Готово? Сохраняем, и считаем хэш уже от этого, нового файла ЦЕЛИКОМ. У меня получилось db45d94b529fbf8c5fb1decd89f5d0ff62bbca86a02bc4f943eac42ff33dd486.
 
Прикрепленный файл  Блокчейн на своем компьютере 2.png   42,22К   0 Количество загрузок:
 
 
По аналогии создаём третий файл:
 
Митя -> Тёма :: 90 рублей
 
Жора -> Вася :: 10 рублей
 
Анна -> Люда :: 60 рублей
 
db45d94b529fbf8c5fb1decd89f5d0ff62bbca86a02bc4f943eac42ff33dd486
 
И все последующие. Их может быть сколько угодно. В блокчейне биткоина по состоянию на 27.06.17 находится 473011 блоков, в которых записана информация о почти 250 миллионах транзакций. Это много. 
 
На правах «знаете ли вы, что?»: цепочка биткоина действительно большая, и там не всё так радужно и гладко, как некоторым хотелось бы представлять. Например, даже в середине цепи есть прописанные и подтверждённые вручную блоки. Это не то чтобы компрометирует инструмент, но и скрывать сам факт было бы неправильно. Такие дела.
 
И снова к нашим баранам. Можете создать все файлы самостоятельно, а можете скачать мой архив из 10 файлов и контрольного, содержащего только хэш последнего «блока» и ничего больше.
 
Прикрепленный файл  Блокчейн на своем компьютере 3.png   83,65К   0 Количество загрузок:
 
 
Блокчейн готов? Почти. Тело готово. Не хватает самого главного — функции проверки целостности, которая бы сказала, всё с ним в порядке, или же кто-то вмешивался в эти файлы. Мы можем проверить и вручную. Элементарно. Пройдитесь подряд по всем файлам, найдите хэш каждого и сравните с записанным в следующий по порядку файл значением. Если хотя бы один не сходится — значит цепь повреждена. Но удобнее и надёжнее это делать программными инструментами.
 
Я сделал наипримитивнейший скриптик с пояснениями, можете посмотреть его по ссылке, а без пояснений он включён в вышеуказанных архив. Написан он на самом популярном в терминах проникновения языке в мире — баше, а значит у пользователей GNU/Linux, MacOS, Android (окружение Termux) — не возникнет проблем с запуском.
 
Пользователям Windows можно посоветовать установить cygwin или Linux subsystem for windows, появившийся в Windows 10.
 
Прикрепленный файл  Блокчейн на своем компьютере 4.png   92,94К   0 Количество загрузок:
Можно заметить, что в коде нет ничего, проверяющего напрямую содержимое файлов
 
Итак, после запуска скрипта должны получить что-то вроде:
 
10 blocks
 
chain is flawless
 
final hash = 23cbc83ca6a2cf2e75ae5ca76fb087ef11ff36fb0065c301557c8152a5bc530f
 
Прикрепленный файл  Блокчейн на своем компьютере 5.png   33,55К   0 Количество загрузок:
 
Это значит, что всё в порядке, данные представлены в исходном виде, в цепь никто не вмешивался. Теперь попробуйте открыть в блокноте любой файл и поменять что угодно: убрать пробел, изменить цифру, имя, добавить что-то. Результат повторного исполнения скрипта после подобных операций будет бескомпромиссен:
 
chain is corrupted
 
Верните всё на место и цепь будет снова проходить проверку. Магия? Магия.
 
 
Майнинг
 
Теперь, чтобы два раза не вставать, покажу майнинг. Не беспокойтесь, всё так же просто и на пальцах. С разрешения автора публикую самое простое объяснение, которое видел в своей жизни.

Я тоже нихрена не понимаю, но в моей голове это выглядит так. Есть монетка, она спрятана в коробочку, коробку можно открыть, если решить пример, который написан на коробочке, но таких коробочек миллиард, а монетка лежит только в одном. Собственно для того, чтобы найти монетку, нам нужен миллион китайцев с калькуляторами, которые будут «майнить» монетку.
Настя Иванова

 

 
 
Возьмём теперь нашу цепь и усложним её немного. Добавим в первую строку немного случайных данных: пусть это будет число из десяти цифр. В реализации блокчейна биткоина это поле называется Nonce. Вот так:
 
0000000000
 
Маша -> Ваня :: 10 Рублей
 
Ваня -> Лиза :: 20 Рублей
 
Маша -> Саша :: 5 Рублей
 
Теперь идём на наш сайт и снова считаем хэш. У меня получилось 361d413d08c614ff63290943bb184aadaaaae84171caef4bfb2344a3223cd104. Но он не подходит. Как так? А вот так. В официальной документации биткоина (допустим) сказано, что для первых десяти блоков принимаются только хэши, начинающиеся с нуля, а остальные не подходят, и все, включая саму программу bitcoin core, сочтут нас за жуликов, если мы сгенерируем такое.
 
Ну ладно, говорим мы, и добавляем единичку к нашему числу (мы не можем предсказать заранее, какой хэш получится на выходе, кто сможет — получит нобелевку, так что самый тупой выход здесь одновременно и единственно верный). Получается 0000000001. Идём и хэшируем снова. 44364a819eca9616dd56c21f6ba9a570d8a27ca54b95f67585cd36da2e4bf9f6. Чёрт. Это может затянуться.
 
Прикрепленный файл  Блокчейн на своем компьютере 6.png   79,64К   0 Количество загрузок:
Отсылка к известному мысленному эксперименту
 
Как хорошо, что мы снова можем написать перебирающий скрипт! В нём две главные переменные: LENGTH — количество цифр подряд с начала, которые должны соответствовать критерию, и GOAL — чему именно эти цифры должны быть равны. Сложность подбора при этом растёт вместе с количеством символов экспоненционально.
 
Запустите скрипт: ./block_mine.sh 1.txt и он отработает довольно быстро. Измените LENGTH на 3, и GOAL на 000, и вы заметите бегущие циферки. Замените LENGTH на 10, и GOAL на 0000000000 — и вы результатов выполнения на своём компьютере уже не дождётесь.
 
Прикрепленный файл  Блокчейн на своем компьютере 7.png   70,94К   0 Количество загрузок:
 
Я «намайнил» вам для примера цепь со «сложностью», соответствующей правилу «три нуля в начале каждого хэша». Попробуйте подделать или подменить так, чтобы итоговый хэш непременно начинался с 000, и цепь при этом проходила проверку, не перемайнивая всю цепь от начала до конца. Отпишитесь о результатах в комментариях  ))
 
Именно таким примитивным действом и является майнинг. «Профессиональные» блокчейны отличаются только количеством разных данных, которые хранятся в блоке, алгоритмом хэширования, и набором правил, которым должен соответствовать хэш. Всё.
 
В целом всё разнообразие работает на основе тех самых принципов, что я описал. Только ещё и майнинг не во всех случаях обязателен. В большинстве случаев не обязателен, скажем так.
 
 
Значит, это легко подделать
 
Да, достаточно перемайнить всю цепь от начала до конца быстрее остальных, и если у вас в распоряжении станет больше блоков, соответствующих условиям, чем у ведущих майнеров, сеть примет ваш вариант, и вы станете королём биткоина. Перемайнивайте. Удачи.
 
 
При чём тут биткоин
 
Если говорить в терминах понятных аналогий, идеи блокчейна — электричество, биткоин и прочие криптовалюты — лампочка над вашей головой. Биткоин всего лишь один из множества способов применения идей блокчейна, и даже, на мой взгляд, не самый важный.
 
Гораздо интереснее его экономическая сущность, и об этом стоит сказать подробнее. Во-первых, запомните, проанализируйте, или просто примите на веру: на сегодня это спекулятивный экономический пузырь. Это дефицитный товар, который покупают/добывают/приобретают преимущественно в расчёте на быструю прибыль в краткосрочном периоде. Это не плохо и не хорошо, это привычная ситуация для любого фондового рынка, да и в целом для экономики. Интернет был таким же (гугл: пузырь доткомов).
 
 
То есть воспринимать как игрушку, а не как средство накопления, быть готовым к обвалу в 2-10 раз меньше чем за сутки (или аналогичному взлёту, тут уж как повезёт), сглаживать риски портфелями, и так далее (да вы всё и без меня знаете, если работаете в сфере финансов или увлекаетесь игрой на бирже, а если не работаете и не увлекаетесь, лучший совет: не лезть, ждать стабилизации курса). Это не пост пиара биткоина, это ликбез по блокчейну, так что могу себе позволить сказать всё как есть, лол.
 
 
Зачем это нужно
 
Тут по порядку, иначе совсем запутаемся.
 
В: Зачем нужно разбивать цепь на блоки, если можно с сопоставимой степенью надёжности считать хэш прямо от всего большого файла?
 
О: Для того чтобы удобно было находить ошибки в цепи. Очень легко определить, какой блок повреждён, но невозможно выяснить, где именно закралась ошибка в огромном файле, зная только, что изменился его хэш.
 
В: Зачем вообще этот хэш? Разве просто передать данные недостаточно?
 
О: Гугл: Задача византийских генералов. Вкратце, это когда нужно убедиться, что данные не повреждены и не изменены в условиях скомпрометированного канала их передачи. Ещё полвека назад эта задача считалась концептуально нерешаемой, а сейчас ЭЦП в паре с секретным ключом — стандарт даже в консервативной сфере госуслуг. То есть эти «хэши» давно прочно проникли в нашу жизнь, им доверяют и ими пользуются. Если вы ещё не в курсе, что оно и как работает, это только ваша проблема.
 
В: Хорошо-хорошо, а где используется блокчейн, кроме нашумевших криптовалют?
 
О: Распределённые базы данных, виртуальный каталог книг project Alexandria, социальные сети, платформы для голосования (согласитесь, приятно было бы знать, что подтасовка результатов выборов невозможна математически), и даже эксперимент по имплементации подобия госуслуг и государства Bitnation. Венчурные проекты появляются как грибы после дождя.
 
На самом деле это тема тянет на ещё одну статью, которая может даже появится, если мне того захочется, и если людям будет интересно. Не знаю. Если дочитали до этого места — сообщите в комментах, интересно вам продолжение или нет.
 
Большинcтво из них умрут (как уже умерла краудфандинговая платформа Koinify, как с треском провалилась из-за найденной уязвимости инвестиционная платформа The DAO, как умерло большинство известных на заре интернета сайтов). Однако это перспективная отрасль, которая сделала возможными некоторые ранее немыслимые вещи, и вполне вероятно, блокчейн-лихорадка — новый виток прогресса, похожий на историю упомянутого ранее, и сегодня всеми любимого World Wide Web.
 
 
 
 

  • Наверх





Темы с аналогичным тегами блокчейн и майнинг, блокчейн, майнинг, на пальцах

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Яндекс.Метрика