В РПЦ заявили о поддержке внутри Церкви идеи возвращения монархии

суббота, 1 июля 2017 г.
Читать далее ...

Блокчейн и майнинг своими руками

суббота, 1 июля 2017 г.

Читатель TJ объясняет, что такое блокчейн, как он работает и что можно построить на основе этих идей.

Люди, связанные с индустрией блокчейна, традиционно считают своё детище чем-то, существующим на границе технологической сингулярности, и, следовательно, слишком сложным для понимания простыми смертными. Поэтому, объясняя принципы работы, оперируют понятными гуманитарными понятиями, такими как «доверие», «уверенность» и «подконтрольность», тем самым только всех запутывая и ничего не объясняя на самом деле.

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

Я покажу, что на самом деле всё там очень просто, и доступно даже пятикласснику. Не верите? Просто читайте дальше. Но для этого сначала нужно пояснить, что такое хэш. Без этого никак, увы.

Хэш

Ключевое понятие в криптографии. Оно может означать, в зависимости от контекста, две вещи: функцию хэширования, или результат выполнения такой функции. Если совсем просто, хэш-функция — это алгоритм, который принимает на вход любые данные (файл, текст, картинка, двоичный код) и генерирует из него последовательнсоть букв и цифр фиксированной длины.

Генерирует при этом так, что одинаковые файлы всегда дают в результате одинаковый хэш, а разные — в идеале, разный (случай, когда две разных последовательности входных данных дают одинаковые хэши, называется коллизией криптографической функции и считается уязвимостью).

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

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

Например, хэш от слова TJournal:

7db3a63e07638d7c795ee95210497048a7cc976f98f11ca8d5e2fc10b4dc374f

А вот от tjournal:

c3ea30a9f5a650ee53db452cf17209412abbcee72b264ebfb1c7fa49b57fd8c9

Вбейте данные сами в любом онлайн-калькуляторе, и вы получите ровно те же результаты, что и я: одинаковые для одинаковых строк, и разные — для разных.

Сделай сам

Всё. Этих знаний уже достаточно чтобы создать простой блокчейн. Удивительно, правда? Блокчейн — цепочка криптографически связанных блоков.

Давайте создадим первый «блок». В нём может быть что угодно, но мы уже придерживаемся аналогии с биткоином и транзакциями, поэтому будет тоже записывать денежные отношения.

Открываем ваш любимый блокнот и создаём первый файл:

Маша → Ваня :: 10 рублей

Ваня → Лиза :: 20 рублей

Маша → Саша :: 50 рублей

Хэш тут не для чего считать, поэтому всё. Сохраняем его с именем 1.txt в специальной папочке (FYI: в блокчейне криптовалют такой блок называется Genesis block, и да, там его тоже прописывают вручную). Сохранили? Идём на один из прежде нагугленных сайтов (можно догадаться, что настоящие блокчейны ни на какие сайты не ходят, а вызывают заранее запрограмированные в них функции, но для нашего простейшего случая сделаем всё вручную), и считаем хэш для этого файла.

У меня получилось 7f17d67621afd2a661bc0a552735745b8a2c424cff28e523b94f1d1b4615f591, у вас может получиться другое, в зависимости от содержимого файла, кодировки, лишних или недостающих пробелов, переносов и тому подобного. Совершенно не важно, что у вас получилось, просто сохраните эту строку.

Теперь создайте следующий файл и назовите его 2.txt. Запишите в него несколько новых «транзакций»:

Таня → Катя :: 10 рублей

Макс → Витя :: 10 рублей

И последней строчкой добавьте результат хэширования предыдущего файла. Вот так:

Таня → Катя :: 10 рублей

Макс → Витя :: 10 рублей

7f17d67621afd2a661bc0a552735745b8a2c424cff28e523b94f1d1b4615f591

Готово? Сохраняем, и считаем хэш уже от этого, нового файла ЦЕЛИКОМ. У меня получилось db45d94b529fbf8c5fb1decd89f5d0ff62bbca86a02bc4f943eac42ff33dd486.

По аналогии создаём третий файл:

Митя -> Тёма :: 90 рублей

Жора -> Вася :: 10 рублей

Анна -> Люда :: 60 рублей

db45d94b529fbf8c5fb1decd89f5d0ff62bbca86a02bc4f943eac42ff33dd486

И все последующие. Их может быть сколько угодно. В блокчейне биткоина по состоянию на 27.06.17 находится 473011 блоков, в которых записана информация о почти 250 миллионах транзакций. Это много. В 250 раз больше, чем комментов на TJ с момента его основания.

На правах «знаете ли вы, что?»: цепочка биткоина действительно большая, и там не всё так радужно и гладко, как некоторым хотелось бы представлять. Например, даже в середине цепи есть прописанные и подтверждённые вручную блоки. Это не то чтобы компрометирует инструмент, но и скрывать сам факт было бы неправильно. Такие дела.

И снова к нашим баранам. Можете создать все файлы самостоятельно, а можете скачать мой архив из 10 файлов и контрольного, содержащего только хэш последнего «блока» и ничего больше.

Блокчейн готов? Почти. Тело готово. Не хватает самого главного — функции проверки целостности, которая бы сказала, всё с ним в порядке, или же кто-то вмешивался в эти файлы. Мы можем проверить и вручную. Элементарно. Пройдитесь подряд по всем файлам, найдите хэш каждого и сравните с записанным в следующий по порядку файл значением. Если хотя бы один не сходится — значит цепь повреждена. Но удобнее и надёжнее это делать программными инструментами.

Я сделал наипримитивнейший скриптик с пояснениями, можете посмотреть его по ссылке, а без пояснений он включён в вышеуказанных архив. Написан он на самом популярном в терминах проникновения языке в мире — баше, а значит у пользователей GNU/Linux, MacOS, Android (окружение Termux) — не возникнет проблем с запуском.

Пользователям Windows можно посоветовать установить cygwin или Linux subsystem for windows, появившийся в Windows 10.

Можно заметить, что в коде нет ничего, проверяющего напрямую содержимое файлов

Итак, после запуска скрипта должны получить что-то вроде:

10 blocks

chain is flawless

final hash = 23cbc83ca6a2cf2e75ae5ca76fb087ef11ff36fb0065c301557c8152a5bc530f

Это значит, что всё в порядке, данные представлены в исходном виде, в цепь никто не вмешивался. Теперь попробуйте открыть в блокноте любой файл и поменять что угодно: убрать пробел, изменить цифру, имя, добавить что-то. Результат повторного исполнения скрипта после подобных операций будет бескомпромиссен:

chain is corrupted

Верните всё на место и цепь будет снова проходить проверку. Магия? Магия.

Майнинг

Теперь, чтобы два раза не вставать, покажу майнинг. Не беспокойтесь, всё так же просто и на пальцах. С разрешения автора публикую самое простое объяснение, которое видел в своей жизни.

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

Настя Иванова

Возьмём теперь нашу цепь и усложним её немного. Добавим в первую строку немного случайных данных: пусть это будет число из десяти цифр. В реализации блокчейна биткоина это поле называется Nonce. Вот так:

0000000000

Маша -> Ваня :: 10 Рублей

Ваня -> Лиза :: 20 Рублей

Маша -> Саша :: 5 Рублей

Теперь идём на наш сайт и снова считаем хэш. У меня получилось 361d413d08c614ff63290943bb184aadaaaae84171caef4bfb2344a3223cd104. Но он не подходит. Как так? А вот так. В официальной документации биткоина (допустим) сказано, что для первых десяти блоков принимаются только хэши, начинающиеся с нуля, а остальные не подходят, и все, включая саму программу bitcoin core, сочтут нас за жуликов, если мы сгенерируем такое.

Ну ладно, говорим мы, и добавляем единичку к нашему числу (мы не можем предсказать заранее, какой хэш получится на выходе, кто сможет — получит нобелевку, так что самый тупой выход здесь одновременно и единственно верный). Получается 0000000001. Идём и хэшируем снова. 44364a819eca9616dd56c21f6ba9a570d8a27ca54b95f67585cd36da2e4bf9f6. Чёрт. Это может затянуться.

Отсылка к известному мысленному эксперименту

Как хорошо, что мы снова можем написать перебирающий скрипт! В нём две главные переменные: LENGTH — количество цифр подряд с начала, которые должны соответствовать критерию, и GOAL — чему именно эти цифры должны быть равны. Сложность подбора при этом растёт вместе с количеством символов экспоненционально.

Запустите скрипт: ./block_mine.sh 1.txt и он отработает довольно быстро. Измените LENGTH на 3, и GOAL на 000, и вы заметите бегущие циферки. Замените LENGTH на 10, и GOAL на 0000000000 — и вы результатов выполнения на своём компьютере уже не дождётесь.

Я «намайнил» вам для примера цепь со «сложностью», соответствующей правилу «три нуля в начале каждого хэша». Попробуйте подделать или подменить так, чтобы итоговый хэш непременно начинался с 000, и цепь при этом проходила проверку, не перемайнивая всю цепь от начала до конца. Отпишитесь о результатах в комментариях. Бгг.

Именно таким примитивным действом и является майнинг. «Профессиональные» блокчейны отличаются только количеством разных данных, которые хранятся в блоке, алгоритмом хэширования, и набором правил, которым должен соответствовать хэш. Всё.

В целом всё разнообразие работает на основе тех самых принципов, что я описал. Только ещё и майнинг не во всех случаях обязателен. В большинстве случаев не обязателен, скажем так.

Значит, это легко подделать

Да, достаточно перемайнить всю цепь от начала до конца быстрее остальных, и если у вас в распоряжении станет больше блоков, соответствующих условиям, чем у ведущих майнеров, сеть примет ваш вариант, и вы станете королём биткоина. Перемайнивайте. Удачи.

При чём тут биткоин

Если говорить в терминах понятных аналогий, идеи блокчейна — электричество, биткоин и прочие криптовалюты — лампочка над вашей головой. Биткоин всего лишь один из множества способов применения идей блокчейна, и даже, на мой взгляд, не самый важный.

Гораздо интереснее его экономическая сущность, и об этом стоит сказать подробнее. Во-первых, запомните, проанализируйте, или просто примите на веру: на сегодня это спекулятивный экономический пузырь. Это дефицитный товар, который покупают/добывают/приобретают преимущественно в расчёте на быструю прибыль в краткосрочном периоде. Это не плохо и не хорошо, это привычная ситуация для любого фондового рынка, да и в целом для экономики. Интернет был таким же (гугл: пузырь доткомов).

То есть воспринимать как игрушку, а не как средство накопления, быть готовым к обвалу в 2-10 раз меньше чем за сутки (или аналогичному взлёту, тут уж как повезёт), сглаживать риски портфелями, и так далее (да вы всё и без меня знаете, если работаете в сфере финансов или увлекаетесь игрой на бирже, а если не работаете и не увлекаетесь, лучший совет: не лезть, ждать стабилизации курса). Это не пост пиара биткоина, это ликбез по блокчейну, так что могу себе позволить сказать всё как есть, лол.

Зачем это нужно

Тут по порядку, иначе совсем запутаемся.

В: Зачем нужно разбивать цепь на блоки, если можно с сопоставимой степнью надёжности считать хэш прямо от всего большого файла?

О: Для того чтобы удобно было находить ошибки в цепи. Очень легко определить, какой блок повреждён, но невозможно выяснить, где именно закралась ошибка в огромном файле, зная только, что изменился его хэш.

В: Зачем вообще этот хэш? Разве просто передать данные недостаточно?

О: Гугл: Задача византийских генералов. Вкратце, это когда нужно убедиться, что данные не повреждены и не изменены в условиях скомпрометированного канала их передачи. Ещё полвека назад эта задача считалась концептуально нерешаемой, а сейчас ЭЦП в паре с секретным ключом — стандарт даже в консервативной сфере госуслуг. То есть эти «хэши» давно прочно проникли в нашу жизнь, им доверяют и ими пользуются. Если вы ещё не в курсе, что оно и как работает, это только ваша проблема.

В: Хорошо-хорошо, а где используется блокчейн, кроме нашумевших криптовалют?

О: Распределённые базы данных, виртуальный каталог книг project Alexandria, социальные сети, платформы для голосования (согласитесь, приятно было бы знать, что подтасовка результатов выборов невозможна математически), и даже эксперимент по имплементации подобия госуслуг и государства Bitnation. Венчурные проекты появляются как грибы после дождя.

На самом деле это тема тянет на ещё одну статью, которая может даже появится, если мне того захочется, и если людям будет интересно. Не знаю. Если дочитали до этого места — сообщите в комментах, интересно вам продолжение или нет.

Большинcтво из них умрут (как уже умерла краудфандинговая платформа Koinify, как с треском провалилась из-за найденной уязвимости инвестиционная платформа The DAO, как умерло большинство известных на заре интернета сайтов). Однако это перспективная отрасль, которая сделала возможными некоторые ранее немыслимые вещи, и вполне вероятно, блокчейн-лихорадка — новый виток прогресса, похожий на историю упомянутого ранее, и сегодня всеми любимого World Wide Web.

В: Зачем мне это всё, я не программист?

О: Для меня этот вопрос звучит так же странно, как и «Зачем мне читать и писать, я не писарь?». Программирование — это не профессия и не особый талант, это всего лишь немного более гибкий и мощный способ использования вашего компьютера — вот и всё. Его не нужно бояться или избегать, как чего-то «сложного». И да, я считаю, что в будущем, не таком далёком как кажется, сама идея специального человека, набирающего код, станет такой же абсурдной, как идея специального человека, переписывающего от руки книги. Это будут во-первых, уметь все с первого класса школы, во-вторых появятся более эффективные инструменты для профессиональной реализации нужных идей.

В: Зачем было всё это писать?

О: Затем.

Послесловие

Как и в прошлый раз, тема не раскрыта полностью по причине tl;dr, моей лени, обширности самой темы, да и всего в общем сразу. Что заинтересовало, что не понятно, заметили ошибку — пишите в комментариях. Я, как обычно, отвечаю на все вопросы, и признаю/исправляю ошибки. Все мы люди, все имеем на них право.

P.S: Спасибо за моральную и информационную поддержку Alex Kotenko, спасибо за проверку текста на понятность обывателю Musalav Alibekov. Без этих ребят всё было бы намного хуже.

Let's block ads! (Why?)

Читать далее ...

Трагедия фестиваля Ballonfest 1986 в нарезке из телерепортажей

суббота, 1 июля 2017 г.
Читать далее ...

Блокчейн

суббота, 1 июля 2017 г.

Ещё один ликбез позаявкам читателей, на этот раз касающийся темы блокчейна. Что это такое, как работает, что на основе этих идей можно построить, и так далее — всё, что вы хотели знать, но боялись спросить.

Люди, связанные с индустрией блокчейна, традиционно считают своё детище чем-то, существующим на границе технологической сингулярности, и, следовательно, слишком сложным для понимания простыми смертными. Поэтому, объясняя принципы работы, оперируют понятными гуманитарными понятиями, такими как «доверие», «уверенность», «подконтрольность» и т.д., тем самым только всех запутывая и ничего не объясняя на самом деле.

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

Прямо у вас на компьютере, без начальной подготовки, буквально вручную мышкой. Этим я покажу, что на самом деле всё там очень просто, и доступно даже пятикласснику. Не верите? Просто читайте дальше. Но для этого сначала нужно пояснить, что такое хэш. Без этого никак, увы.

Хэш

Ключевое понятие в криптографии. Оно может означать, в зависимости от контекста, две вещи: функцию хэширования, или результат выполнения такой функции. Если совсем просто, хэш-функция — это алгоритм, который принимает на вход любые данные (файл, текст, картинка, двоичный код, ...) и генерирует из него последовательнсоть букв и цифр фиксированной длины.

Генерирует при этом так, что одинаковые файлы ВСЕГДА дают в результате одинаковый хэш, а разные — в идеале, разный (случай, когда две разных последовательности входных данных дают одинаковые хэши, называется коллизией криптографической функции и считается уязвимостью).

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

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

Например, хэш от TJournal — 7db3a63e07638d7c795ee95210497048a7cc976f98f11ca8d5e2fc10b4dc374f. А от tjournal — c3ea30a9f5a650ee53db452cf17209412abbcee72b264ebfb1c7fa49b57fd8c9. Снова от TJournal — снова 7db3a63e07638d7c795ee95210497048a7cc976f98f11ca8d5e2fc10b4dc374f. Вбейте данные сами в любом онлайн-калькуляторе, и вы получите ровно те же результаты, что и я: одинаковые для одинаковых строк, и разные — для разных.

Сделай сам

Всё. Этих знаний уже достаточно чтобы создать простой блокчейн. Удивительно, правда? Блокчейн — цепочка криптографически связаных блоков. Давайте создадим первый «блок». В нём может быть что угодно, но мы уже придерживаемся аналогии с биткоином и транзакциями, поэтому будет тоже записывать денежные отношения.

Открываем ваш любимый блокнот и создаём первый файл:

Маша -> Ваня :: 10 рублей

Ваня -> Лиза :: 20 рублей

Маша -> Саша :: 50 рублей

Хэш тут не для чего считать, поэтому всё. Сохраняем его с именем 1.txt в специальной папочке. (FYI: В блокчейне криптовалют такой блок называется Genesis block, и да, там его тоже прописывают вручную) Сохранили? Идём на один из прежде нагугленных сайтов (можно догадаться, что настоящие блокчейны ни на какие сайты не ходят, а вызывают заранее запрограмированные в них функции, но для нашего простейшего случая сделаем всё вручную), и считаем хэш для этого файла.

У меня получилось 7f17d67621afd2a661bc0a552735745b8a2c424cff28e523b94f1d1b4615f591, у вас может получиться другое, в зависимости от содержимого файла, кодировки, лишних/недостающих пробелов/переносов и т.д. Совершенно не важно, что у вас получилось, сохраните эту строку.

Теперь создайте следуюий файл, и назовите его 2.txt. Запишите в него несколько новых «транзакций»:

Таня -> Катя :: 10 рублей

Макс -> Витя :: 10 рублей

И последней строчкой добавьте результат хэширования предыдущего файла. Вот так:

Таня -> Катя :: 10 рублей

Макс -> Витя :: 10 рублей

7f17d67621afd2a661bc0a552735745b8a2c424cff28e523b94f1d1b4615f591

Готово? Сохраняем, и считаем хэш уже от этого, нового файла ЦЕЛИКОМ. У меня получилось db45d94b529fbf8c5fb1decd89f5d0ff62bbca86a02bc4f943eac42ff33dd486.

По аналогии создаём третий файл:

Митя -> Тёма :: 90 рублей

Жора -> Вася :: 10 рублей

Анна -> Люда :: 60 рублей

db45d94b529fbf8c5fb1decd89f5d0ff62bbca86a02bc4f943eac42ff33dd486

И все последующие. Их может быть сколько угодно. В блокчейне биткоина состоянием на 27.06.17 — 473,011 блоков, в которых записана информация о почти 250 миллионах транзакций. Это много. В 250 раз больше чем комментов на TJ с момента основания.

На правах «знаете ли вы, что?»: Цепочка биткоина действительно большая, и там не всё так радужно и гладко, как некоторым хотелось бы представлять. Например, даже в середине цепи есть прописанные и подтверждённые вручную блоки. Это не то чтобы компрометирует инструмент, но и скрывать сам факт было бы неправильно. Такие дела.

И снова к нашим баранам. Можете создать все файлы самостоятельно, а можете скачать мой архив из 10 файлов и контрольного, содержащего только хэш последнего «блока» и ничего больше.

Блокчейн готов? Почти. Тело готово. Не хватает самого главного — функции проверки целостности, которая бы сказала, всё с ним в порядке, или же кто-то вмешивался в эти файлы. Мы можем проверить и вручную. Элементарно. Пройдитесь подряд по всем файлам, найдите хэш каждого и сравните с записанным в следующий по порядку файл значением. Если хотя бы один не сходится — значит цепь повреждена. Но удобнее и надёжнее это делать программными инструментами.

Я сделал наипримитивнейший скриптик с пояснениями, можете посмотреть его по ссылке, а без пояснений он включён в вышеуказанных архив. Написан он на самом популярном в терминах проникновения языке в мире — баше, а значит у пользователей GNU/Linux, MacOS, Android (окружение Termux) — не возникнет проблем с запуском.

Пользователям Windows можно посоветовать установить cygwin или Linux subsystem for windows, появившийся в Windows 10.

Можно заметить, что в коде нет ничего, проверяющего напрямую содержимое файлов

Итак, после запуска скрипта должны получить что-то вроде:

10 blocks

chain is flawless

final hash = 23cbc83ca6a2cf2e75ae5ca76fb087ef11ff36fb0065c301557c8152a5bc530f

Это значит что всё в порядке, данные представлены в исходном виде, в цепь никто не вмешивался. Теперь попробуйте октрыть в блокноте любой файл и поменять что угодно: убрать пробел, изменить цифру, имя, добавить что-то... Результат повторного исполнения скрипта после подобных операций будет безкомпромисен:

chain is corrupted

Верните всё на место и цепь будет снова проходить проверку. Магия? Магия.

Майнинг

Теперь, чтобы два раза не вставать, покажу майнинг. Не беспокойтесь, всё так же просто и на пальцах. С разрешения автора публикую самое гениально простое объяснение, которое видел в своей жизни, цитата:

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

Настя Иванова

Возьмём теперь нашу цепь и усложним её немного. Добавим в первую строку немного случайных данных: пусть это будет число из десяти цифр. В реализации блокчейна биткоина это поле называется Nonce. Вот так:

0000000000

Маша -> Ваня :: 10 Рублей

Ваня -> Лиза :: 20 Рублей

Маша -> Саша :: 5 Рублей

Теперь идём на наш сайт и снова считаем хэш. У меня получилось 361d413d08c614ff63290943bb184aadaaaae84171caef4bfb2344a3223cd104. Но он не подходит. Как так? А вот так. В официальной документации биткоина (допустим) сказано, что для первых десяти блоков принимаются только хэши, начинающиеся с нуля, а остальные — не подходят, и все, включая саму программу bitcoin core сочтут нас за жуликов, если мы сгенерируем такое.

Ну ладно, говорим мы, и добавляем единичку к нашему числу (мы не можем предсказать заранее, какой хэш получится на выходе, кто сможет — получит нобелевку, так что самый тупой выход здесь одновременно и самый единственный). Получается 0000000001. Идём и хэшируем снова. 44364a819eca9616dd56c21f6ba9a570d8a27ca54b95f67585cd36da2e4bf9f6. Чёрт. Это может затянуться.

Отсылка к известному мысленному эксперименту

Как хорошо что мы снова можем написать перебирающий скрипт! В нём две главные перменные: LENGTH — количество цифр подряд с начала, которые должны соответствовать критерию, и GOAL — чему именно эти цифры должны быть равны. Сложность подбора при этом растёт вместе с количеством символов экспоненционально. Запустите скрипт: ./block_mine.sh 1.txt и он отработает довольно быстро. Измените LENGTH на 3, и GOAL на 000, и вы заметите бегущие циферки. Замените LENGTH на 10, и GOAL на 0000000000 — и вы результатов выполнения на своём компьютере уже не дождётесь.

Я «намайнил» вам для примера цепь со «сложностью», соответствующей правилу «три нуля в начале каждого хэша». Попробуйте подделать или подменить так, чтобы итоговый хэш непременно начинался с 000, и цепь при этом проходила проверку, не перемайнивая всю цепь от начала до конца. Отпишитесь о результатах в комментариях. Бгг.

Именно таким примитивным действом и является майнинг. «Профессиональные» блокчейны отличаются только количеством разных данных, которые хранятся в блоке, алгоритмом хэширования, и набором правил, которым должен соответствовать хэш. Всё. В целом всё разнообразие работает на основе тех самых принципов, что я описал. Только ещё и майнинг не во всех случаях обязателен. В большинстве случаев не обязателен, скажем так.

Значит это легко подделать

Да, достаточно перемайнить всю цепь от начала до конца быстрее остальных, и если у вас в распоряжении станет больше блоков, соовтетсвующих условиям, чем у ведущих майнеров, сеть примет ваш вариант, и вы станете королём биткоина. Перемайнивайте. Удачи.

При чём тут Биткоин

Если говорить в терминах понятных аналогий, идеи блокчейна — электричество, биткоин и прочие криптовалюты — лампочка над вашей головой. Биткоин всего лишь один из множества способов применения идей блокчейна, и даже, на мой взгляд, не самый важный.

Гораздо интереснее его экономическая сущность, и об этом стоит сказать подробнее. Во-первых, запомните, проанализируйте, или просто примите на веру: состоянием на сегодня это спекулятивный экономический пузырь. Это дефицитный товар, который покупают/добывают/приобретают преимущественно в рассчёте на быструю прибыль в краткосрочном периоде. Это не плохо и не хорошо, это привычная ситуация для любого фондового рынка, да и в целом для экономики. Интернет был таким же (гугл: пузырь доткомов).

То есть воспринимать как игрушку, а не как средство накопления, быть готовым к обвалу в 2-10 раз меньше чем за сутки (или аналогичному взлёту, тут уж как повезёт), сглаживать риски портфелями, и так далее (да вы всё и без меня знаете, если работаете в сфере финансов или увлекаетесь игрой на бирже, а если не работаете и не увлекаетесь, лучший совет: не лезть, ждать стабилизации курса). Это не пост пиара биткоина, это ликбез по блокчейну, так что могу себе позволить сказать всё как есть, лол.

Зачем это нужно

Тут по порядку, иначе совсем запутаемся.

В: Зачем нужно разбивать цепь на блоки, если можно с сопоставимой степнью надёжности считать хэш прямо от всего большого файла?

О: Для того чтобы удобно было находить ошибки в цепи. Очень легко определить, какой блок повреждён, но невозможно выяснить, где именно закралась ошибка в огромном файле, зная только, что изменился его хэш.

В: Зачем вообще этот хэш? Разве просто передать данные недостаточно?

О: Гугл: Задача византийских генералов. Вкратце, это когда нужно убедиться, что данные не повреждены и не изменены в условиях скомпрометированного канала их передачи. Ещё полвека назад эта задача считалась концептуально нерешаемой, а сейчас ЭЦП в паре с секретным ключом — стандарт даже в консервативной сфере госуслуг. То есть эти «хэши» давно прочно проникли в нашу жизнь, им доверяют и ими пользуются. Если вы ещё не в курсе, что оно и как работает, это только ваша проблема.

В: Хорошо-хорошо, а где используется блокчейн, кроме нашумевших криптовалют?

О: Распределённые базы данных, виртуальный каталог книг project Alexandria, социальные сети, платформы для голосования (согласитесь, приятно было бы знать, что подтасовка результатов выборов невозможна математически), и даже эксперимент по имплементации подобия госуслуг и государства Bitnation. Венчурные проекты появляются как грибы после дождя.

На самом деле это тема тянет на ещё одну статью, которая может даже появится, если мне того захочется, и если людям будет интересно. Не знаю. Если дочитали до этого места — сообщите в комментах, интересно вам продолжение или нет.

Большинcтво из них умрут (как уже умерла краудфандинговая платформа Koinify, как с треском провалилась из-за найденной уязвимости инвестиционная платформа The DAO, как умерло большинство известных на заре интернета сайтов). Однако это перспективная отрасль, которая сделала возможными некоторые ранее немыслимые вещи, и вполне вероятно, блокчейн-лихорадка — новый виток прогресса, похожий на историю упомянутого ранее, и сегодня всеми любимого World Wide Web.

В: Зачем мне это всё, я не программист?

О: Для меня этот вопрос звучит так же странно, как и «Зачем мне читать и писать, я не писарь?». Программирование это не профессия и не особый талант, это всего лишь немного более гибкий и мощный способ использования вашего компьютера — вот и всё. Его не нужно бояться или избегать, как чего-то «сложного». И да, я считаю, что в будущем, не таком далёком как кажется, сама идея специального человека, набирающего код, станет такой же абсурдной, как идея специального человека, переписывающего от руки книги. Это будут во-первых, уметь все с первого класса школы, во-вторых появятся более эффективные инструменты для профессиональной реализации нужных идей.

В: Зачем было всё это писать?

О: Затем.

Послесловие

Как и в прошлый раз, тема не раскрыта полностью по причине tl;dr, моей лени, обширности самой темы, да и всего в общем сразу. Что заинтересовало, что не понятно, заметили ошибку — пишите в комментариях. Я, как обычно, отвечаю на все вопросы, и признаю/исправляю ошибки. Все мы люди, все имеем на них право.

PS: Спасибо за моральную и информационную поддержку Alex Kotenko, спасибо за проверку текста на понятность обывателю Musalav Alibekov. Без этих ребят всё было бы намного хуже.

Let's block ads! (Why?)

Читать далее ...

Какие законы в России вступили в силу 1 июля

суббота, 1 июля 2017 г.

Запрет на продажу больших бутылок пива, карты «Мир» для бюджетников и регулирование онлайн-кинотеатров.

Пиво

С 1 июля в магазинах России запрещена продажа пива и другой алкогольной продукции в пластиковых (ПЭТ) бутылках объёмом больше 1,5 литра. Норма закона прописана так, что бутылки объёмом ровно 1,5 литра по-прежнему разрешены.

Закон был принят летом 2016 года. По нему ещё с 1 января в России запретили производство и оборот такой продукции, но на розничную продажу это не распространялось. Пивовары связывают закон с «давлением алюминиевого лобби»: из-за него пиво в банках будут покупать чаще.

Зато с 4 июля алкоголь можно будет покупать по водительским правам, паспорту болельщика и ещё 12 видам документов.

Карты «Мир» для бюджетников

С 1 июля при открытии банковского счёта для получения бюджетных средств новым клиентом банки России обязаны выдавать им национальную платёжную карту «Мир». Положение касается работников муниципальных и госучреждений, получателей пенсий и стипендий, выплат денежного содержания.

В течение года такие карты должны получить все бюджетники. Для пенсионеров сделана отсрочка до 1 июля 2020 года.

Помимо этого, с 1 июля все банки должны обеспечивать приём карт «Мир» во всех своих расчётных устройствах, в том числе банкоматах.

Переводы по «Миру» также начала принимать соцсеть «ВКонтакте». Правда, по «Миру» и Visa она берёт 1% комиссии и не менее 50 рублей с каждого перевода, а по MasterCard и Maestro при переводах до 75 тысяч рублей в месяц с одной карты или страницы комиссия не взимается (и она меньше — 0,6% и минимум 20 рублей).

Онлайн-кинотеатры

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

Материалы онлайн-кинотеатров должны иметь возрастную маркировку (классифицировать контент кинотеатрам придётся самостоятельно), а транслировать материалы каналов, у которых нет регистрации СМИ.

Закон также обязывает проводить реорганизацию зарубежным онлайн-кинотеатрам, снижая долю иностранного капитала до 20%. Однако это касается только тех кинотеатров, у кого больше 100 тысяч уникальных посетителей в сутки в России (Netflix это вряд ли касается). Популярные в России ivi, Megogo и Okko выведены из-под действия этой нормы, так как у них более 50% аудитории — в России.

Электронные больничные

С 1 июля в России можно будет оформить больничный лист в электронном виде. В Фонде социального страхования (ФСС) заявили, что из 12 тысяч российских медучреждений лишь около 700 имеют техническую возможность выдавать такие больничные.

В ФСС позиционируют закон как упрощение документооборота: бумажные больничные проходят отдел кадров компании, а электронные можно посылать напрямую в ФСС, так как они защищены от подделки при помощи электронной подписи. Однако пока речи о полном переходе на электронные больничные листы не идёт, кроме того, по закону нельзя получить электронный больничный и бумажный одновременно.

МРОТ, ЖКХ и электрички

МРОТ, который используется для расчёта зарплат и социальных выплат, с 1 июля вырастает на 4% — с 7500 рублей до 7800 рублей. В Москве вырастут цены на ЖКХ — в среднем на 6,7%.

Цены на электрички поднимутся на 2 рубля за базовый тариф (до 34 рублей) и на полтора рубля за каждую зону (до 22 рублей): например, билет с Белорусского вокзала до станции «Одинцово» (третья зона) вместо 61,5 рубля будет стоить 66 рублей.

Твитнуть

Поделиться

Поделиться

Нашли опечатку? Выделите фрагмент и отправьте нажатием Ctrl+Enter.

Let's block ads! (Why?)

Читать далее ...

Организатора Fyre Festival арестовала ФБР, его обвинили в мошенничестве

суббота, 1 июля 2017 г.
Читать далее ...

Непогода в Москве стала причиной задержки 450 авиарейсов и массовых отключений электричества

суббота, 1 июля 2017 г.
Читать далее ...

Токийским школьницам запретили встречаться с мужчинами за деньги

суббота, 1 июля 2017 г.
Читать далее ...

В больнице Нью-Йорка врач устроил стрельбу, есть погибший

суббота, 1 июля 2017 г.
Читать далее ...

Неизвестный устроил стрельбу в больнице Нью-Йорка, есть погибший

суббота, 1 июля 2017 г.
Читать далее ...