Предисловие переводчика


Предлагаю читателям Хабрахабра перевод статьи «The Blockchain Explained to Web Developers, Part 1: The Theory» за авторством Francois Zaninotto. Эту статью я нашел в блоге компании Marmelab. Статья представляет собой отличное введение в технологию блокчейн «с нуля», но может оказаться интересной и для тех, кто уже «в теме». Она касается не только того, как работает блокчейн, но и перспектив его развития, а также с чего начать, если вы хотите создать свой проект, использующий блокчейн.

Объяснение блокчейна для веб-разработчиков, Часть первая: Теория


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

Для начала попытаемся понять что из себя представляет Блокчейн.

Что такое Блокчейн, Часть первая


Несмотря на то, что блокчейн создан для поддержки Bitcoin, идея блокчейна может быть определена независимо от экосистемы Биткоина. Литература обычно определяет блокчейн следующим образом:
Блокчейн – это журнал с фактами, реплицируемый на несколько компьютеров, объединенных в сеть равноправных узлов (P2P). Фактами может быть что угодно, от денежных операций и до подписания контента. Члены сети — анонимные лица, называемые узлами. Все коммуникации внутри сети используют криптографию, чтобы надежно идентифицировать отправителя и получателя. Когда узел хочет добавить факт в журнал, в сети формируется консенсус, чтобы определить, где этот факт должен появиться в журнале; этот консенсус называется блоком.

Я не знаю как у вас, но у меня после чтения этих определений все еще оставались проблемы с пониманием блокчейна. Давайте заглянем немного глубже.

Упорядочивание фактов


Децентрализованные сети с равноправными узлами не новы. Napster и BitTorrent — это P2P сети. Просто вместо обмена фильмами, участники сети блокчейна обмениваются фактами. Так в чем же реальная особенность блокчейна?

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

Возьмем, к примеру, проблему двойного расходования: у Алисы есть 10$ и она отсылает их дважды Бобу и Чарли. Кто будет иметь 10$ в итоге? Для того чтобы ответить на этот вопрос, лучший способ это упорядочить факты. Если два несовместимых факта появятся в сети, то победит тот, который будет первый записан.

image

В P2P сетях, два факта отправленные примерно в одно время могут прибыть в разном порядке в удаленные узлы. Тогда как всей сети согласовать какой же факт пришел первым? Чтобы гарантировать целостность в P2P сети, вам нужен способ согласования порядка фактов. Вам нужна система консенсуса.

Алгоритмы консенсуса для распределенных систем это очень активное поле для исследований. Возможно, вы слышали о алгоритмах Paxos или Raft. Блокчейн реализует другой алгоритм, консенсус, основанный на доказательстве выполнения работы (proof-of-work), использующий блоки.

Блоки


Блоки – это хитрый трюк, чтобы упорядочить факты в сети с недоверенными узлами. Идея проста: факты группируются в блоки, и есть только одна цепочка блоков, реплицируемая по всей сети. Каждый блок ссылается на предыдущий. То есть, если факт F находится в блоке 21, и факт E в блоке 22, то факт E рассматривается всей сетью как следующий за фактом F. Перед добавлением к блоку, факты находятся на рассмотрении, т.е. не подтверждены.

image

Майнинг


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

image

Но на самом деле узлы не просто бросают пару игральных костей. Задача, которую решают майнеры в блокчейне подразумевает бросок огромного количества игральных костей. По замыслу, обнаружение случайного ключа для проверки блока маловероятно. Это предотвращает мошенничество и делает сеть безопасной (до тех пор, пока злоумышленник не имеет контроль более чем над половиной узлов в сети). Как следствие, новые блоки будут публиковаться в цепь через фиксированный интервал времени. В Bitcoin блоки публикуются, в среднем, каждые 10 минут.

В Bitcoin, задача представляет из себя двойной SHA-256 хэш строки из непроверенных фактов, идентификатора предыдущего блока и случайной строки. Узел выигрывает, если его хэш содержит как минимум n ведущих нулей.

// проигрышный хэш для Bitcoin
787308540121f4afd2ff5179898934291105772495275df35f00cc5e44db42dd
// выигрышный хэш для Bitcoin, если n=10
00000000009f766c17c736169f79cb0c65dd6e07244e9468bc60cde9538b551e


Число n время от времени корректируется, чтобы сохранить длительность вычисления блока, несмотря на изменение количества узлов. Это число называется сложностью. Другие реализации блокчейна используют специальные методы хэширования, которые препятствуют использованию графических процессоров для вычислений (например, требуют передачи больших объемов памяти).


Процесс поиска блоков называется майнингом. Все дело в том, что так же как и добыча золота (прим. перев. Mining — добыча (англ.)), майнинг блоков приносит экономическое вознаграждение — некоторую форму денег. Вот почему людей, которые содержат узлы в блокчейне, называют майнерами.

Примечание: По умолчанию, узел не майнит – он просто получает блоки, которые майнят другие узлы. Это добровольный процесс — превращение узла в узел майнер.

Деньги и криптовалюты


Каждую секунду, каждый майнер тестирует тысячи случайных строк, чтобы сформировать новый блок. То есть работа майнера в блокчейне требует огромное количество компьютерных ресурсов (памяти и CPU). Вот почему вы должны платить, чтобы записывать факты в блокчейн. С другой стороны, чтение фактов бесплатно: вам достаточно запустить собственный узел и вы будете получать полную историю фактов созданную другими узлами. Итак, подведем итог:

  • Чтение данных бесплатно
  • За добавление фактов взимается небольшая комиссия
  • Майнинг блока приносит деньги в размере комиссионных за все факты, входящие в блок

Речь здесь идет не о реальных деньгах. Как факт, каждый блокчейн имеет свою собственную (крипто-)валюту. Она называется bitcoin (BTC) в сети Bitcoin, ether (ETH) в сети Ethereum, и т.д. Чтобы совершить платеж в сети Bitcoin, вы должны заплатить небольшую комиссионные в bitcoin'ах – так же как вы должны были бы заплатить комиссионные банку. Однако, откуда взялись первые деньги?

Майнеры получают вознаграждение за поддержание работы и безопасности сети. Каждый раз, когда они успешно формируют блок, они получают фиксированное количество криптовалюты. В Bitcoin вознаграждение – 25 BTC за блок, в Ethereum– 5 ETH за блок. Таким образом, блокчейн сам генерирует свои собственные деньги.

Криптовалюты быстро стали конвертируемы в реальные деньги. Их номинальная стоимость определяется только спросом и предложением, поэтому криптовалюта — это объект спекуляции. К моменту написания статьи, процесс майнинга bitcoin все еще требовал меньше расходов на энергию и оборудование, чем деньги которые вы можете получить, продавая монеты, полученные за него. Вот почему люди добавляют новых майнеров каждый день, надеясь превратить электричество в деньги. Однако колебания в стоимости BTC делают майнинг все менее и менее выгодным.

image

Контракты


До сих пор, мы в основном говорили о блокчейне как о хранилище фактов, но он также может исполнять программы. Некоторые блокчейны позволяют каждому факту содержать мини программу. Такие программы реплицируются вместе с фактом, и каждый узел выполняет их, получая факт. В Bitcoin это используется для совершения транзакций с условиями, например: Боб получит 100 BTC от Алисы только если сегодня 29 февраля.

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

Эта идея сопряжения блокчейна с реальным миром при помощи заранее запрограммированных условий и их передачи всем узлам называется умный контракт. Контракт — это обещание, которое стороны подписывают, чтобы закрепить его юридически. Умный контракт – это то же самое, только закрепление происходит «технически», а не «юридически». Благодаря этому отпадает необходимость в нотариусе или любом другом полномочном лице, признаваемом обеими сторонами.

Представьте, что вы хотите сдать ваш дом на неделю за 1000$ c 50%-ой предоплатой. Вы и арендующий подписываете контракт, вероятнее всего, написанный юристом. Вам также нужен банк для получения платежа. В начале недели вы просите о депозите в 5000$; арендующий предоставляет вам чек на него. В конце недели он отказывается заплатить оставшиеся 50%. Вы также узнаете, что он сломал окно, и чек с депозитом ведет на пустой счет. Теперь вам понадобится адвокат, чтобы передать ваш договор на аренду в суд.

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

  • Две недели перед арендой: передача 500$ от арендующего к владельцу
  • Отмена владельцем: передача 500$ от владельца к арендующему;
  • Конец периода аренды: передача 500$ от арендующего к владельцу
  • Доказательство механических повреждений после периода аренды: передача 5000$ от арендующего к владельцу

Добавьте этот умный контракт в блокчейн и больше никаких проблем. Ко времени указанному в контракте произойдет передача денег и, если владелец сможет представить доказательства механических повреждений, он автоматически получит 5000$ (и нет никакой нужды в депозите).

Вероятно, вы задаетесь вопросом, как получить доказательства механических повреждений. Здесь в дело вступает «интернет вещей» (IoT). Для взаимодействия с реальным миром блокчейну необходимы датчики и приводы. Блокчейн революция невозможна без IoT революции.

Такие приложения, опирающиеся на умные контракты, называются децентрализованными приложениями или DApps.

Умные контракты легко расширяются на умную собственность и многие другие умные вещи. Запомнить надо только одно: «умные» означает «нет посредников» или «исполняется технически». Блокчейн – это новый способ ведения бизнеса без посредников – также как продажа музыки в Интернете.

image

Что такое блокчейн. Часть вторая


Как мне кажется, лучший способ понять блокчейн – это взглянуть на него с разных сторон.

Что он делает? Блокчейн позволяет безопасно распространять и/или обрабатывать данные между несколькими лицами через недоверенную сеть. Данными может быть что угодно, но наиболее интересным вариантом данных является возможность передачи информации, которая требует наличия третьей доверенной стороны. Примерами такой информации являются деньги (требуют участия банка), права на собственность (требуют участия нотариуса), договор на заем и т.д. В сущности, блокчейн устраняет необходимость в участии третьего доверенного лица.

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

На что он похож? Блокчейн можно рассматривать как (слабо)синхронизированную базу данных реплицируемую столько же раз, сколько узлов в сети, или как суперкомпьютер, образованный комплексом всех CPU/GPU входящих в него узлов. Вы можете использовать этот суперкомпьютер для хранения и обработки данных, т.е. также как вы можете использовать удаленный API. Отличие только в том, что вам не нужно создавать бэкэнд, и вы можете быть уверены, что данные надежно защищены и обрабатываются в сети должным образом.

Практические следствия


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

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

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

Подсказка: Если у вас есть 20 свободных для более глубокого понимания, посмотрите это прекрасное вводное видео о Bitcoin, которое также объясняет, как работает блокчейн.

Почему это важно


«Блокчейн это самая потрясающая технология из тех, которые я когда либо видел.» Salim Ismail
«Самая интересная интеллектуальная разработка в Интернете за последние 5 лет.» Julian Assange
«Я думаю тот факт, что благодаря Bitcoin вселенной, алгоритм замещает функции [государства] … это действительно очень круто.» Al Gore

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

  • Monegraph позволяет авторам закрепить права на свою работу и установить правила (и выплаты) за использования их работы.
  • La Zooz это децентрализованный Uber. Предлагай свою машину, найди перевозчика без платы Uber’у.
  • Augur – это онлайн букмекер. Делай ставки и получай выигрыш.
  • Storj.io – это P2P хранилище данных. Сдавай свое неиспользуемое место на диске или найди самое дешевое онлайн хранилище.
  • Muse – это распределенная, открытая и прозрачная база данных специально для музыкальной индустрии.
  • Ripple позволяют проводить недорогие трансграничные платежи в банки

На сегодняшний день многие успешные интернет предприятия являются посредниками. Подумайте о Google: им удалось стать посредником между вами и всем интернетом. А Amazon? Они стали посредником между продавцами и покупателями любых типов товаров. Вот почему технология, которая позволяет устранить посредников может взорвать Интернет.

Получат ли выгоду пользователи, которым больше не понадобятся посредники для обмена товарами и услугами? Пока нельзя сказать точно. Интернет и ранее ориентировался на отсутствие посредников. Тем не менее, Google удалось построить свой рынок, будучи посредником. Вот почему крайне важно инвестировать в блокчейн быстро, потому что победители и проигравшие следующего десятилетия определяются прямо сейчас.

Вы не захотите создавать свой блокчейн


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

  • Ethereum: платформа блокчейна с открытым исходным кодом от Ethereum Foundation
  • Hyperledger: другая открытая реализация, только от Linux Foundation. Первая реализация была опубликована совсем недавно.
  • Eris Industries: Инструменты, помогающие использовать Ethereum,Bitcoin или полностью независимые блокчейны, в основном для создания частных сетей. Их инструкции и руководства являются отличной отправной точкой для обзора блокчейна.

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

  • Eris для небольших частных блокчейнов или для того, чтобы поиграться с технологией и общего ознакомления.
  • Ethereum для крупных блокчейн проектов

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

Цифры


Насколько велик блокчейн сегодня? Взглянем на некоторые цифры.

Bitcoin:



Ethereum:


Заключение


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

Когда мы сталкиваемся с неопределенностью, мы знаем отличный способ с ней разобраться: пробовать. Это как раз то, что мы решили делать. Читайте следующую статью в серии, чтобы увидеть, что мы узнали, создавая приложение работающее на блокчейне.

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

Комментарии (50)


  1. nckma
    03.03.2017 11:34
    +5

    Вот вроде бы и понятно написано, но все равно не понятно.
    Алиса передает 10$ Бобу и Чарли => оба факта пока недостоверны. И что дальше?
    Два узла соревнуются в скорости создания блока — это я понимаю. Первый узел вписал свой блок сделав факт передачи Бобу 10$ проверенным. Но когда эта информация дойдет до других узлов, которые все еще пытаются вписать свой блок о передаче 10$ Чарли?

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

    Еще, насчет избавиться от посредников.
    Теперь посредниками становятся майнеры, ведь «Вот почему вы должны платить, чтобы записывать факты в блокчейн».


    1. cyber_ua
      03.03.2017 11:42

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

      У каждого в сети есть история всех транзакций в виде дерева и каждый может проверить есть ли у Алисы 10$, потому что если Алисе не кто не переслал 10$, или она их не на майнила то у нее нет денег по сути, значить и пересылать не чего.
      P.s Я сам только начал разбиратся, поэтому могу быть в чем то не прав)
      P.s.s вот хорошая серия статей на эту тему https://habrahabr.ru/post/319868/


      1. nckma
        03.03.2017 11:50

        Ладно с деньгами. А если это нотариальная сделка. Я сдаю свой дом в аренду, но никто не знает есть ли у меня дом. Я вступаю в сговор с майнером и он подписывает сделку с арендой.


        1. cyber_ua
          03.03.2017 11:59

          Все участники сети должны знать что у вас есть дом иначе они не приймут сделку. Потому что и в жизни не достаточно просто сказать что квартира ваша, нужны документы и подтверждения.


          1. intsurfer
            03.03.2017 12:16

            я правильно понял, получается, что все участники знают, сколько у некоего персонажа денег на счету, какая у него собственность и вообще имеют всю информацию обо всех объектах этих участников?


            1. cyber_ua
              03.03.2017 12:34

              Смотрите тут https://blockexplorer.com/ вы можете посмотреть транзакции в реально времени, берем транзакцию https://blockexplorer.com/tx/052160f15d56c9730af4a11db2f4bc16446140c0f8bb50e252943c2008dcbfcc
              там есть от кого и кому она передана ну и можете на кого-то из них посмотреть.
              П.с если короче то да))


            1. f0rk
              03.03.2017 12:34

              да


            1. Ratix
              03.03.2017 12:42

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


            1. vakimov
              03.03.2017 13:53

              Зависит от логики блокчейн базы. В биткоине все ваши деньги могут лежать на множестве кошельков. То что эти кошельки ваши подтвердить можете только вы, если у вас есть закрытый ключ от них. Больше никаких идентификаторов нет (на сколько я знаю). Если даже какой-то ваш кошелек деанонимизировали, нет проблем перевести деньги на другой и никто не сможет сказать, это вы что-то оплатили или себе же перевели.


            1. DrPass
              04.03.2017 01:55

              Да, но это значительно смягчается тем, что никто не знает, какой участник кем является. Поэтому повсеместное распространение блокчейновых платежных систем и онлайновых сервисов без посредников неплохо нивелируется отсутствием механизмов борьбы с мошенничеством. Грубо говоря, если вы что-то заплатили, а продукт/услугу не получили, то ни принудительно вернуть ваши деньги, ни найти получателя уже не получится.


        1. vakimov
          03.03.2017 14:15

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

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


    1. Ratix
      03.03.2017 13:03

      Не совсем понял ваш вопрос

      Но когда эта информация дойдет до других узлов, которые все еще пытаются вписать свой блок о передаче 10$ Чарли?

      Когда закончится синхронизация блокчейна, ведь такие механизмы существует и в тех же базах данных .
      Да, вы должны платить, но это не значит, что майнеры становятся посредниками. Ведь майнеры не оказывают никаких услуг лично вам, они работают на Блокчейн. Можно сказать, что весь Блокчейн — это посредник, но скорее это просто среда передачи.


    1. equand
      03.03.2017 13:28

      Blockchain это цепочка блоков, где есть вся история использования этих токенов. Обойти ее без атаки 51% невозможно. Соответственно, Алиса уже должна иметь эти деньги на момент отправки транзакции (иначе ее первые же ноды отвергнут и еще в бан добавят) либо намайнив их, либо же получив от другого пользователя.


      Каждый Bitcoin можно отследить от последнего платежа до места и ПУЛА его майнинга. В этом и прелесть этой "БД"...


  1. vadim_ig
    03.03.2017 16:14

    Запомнить надо только одно: «умные» означает «нет посредников» или «исполняется технически»

    лучше такое не запоминать))


  1. JetMaster
    03.03.2017 17:03
    +3

    Вот объяснение для тех, «кто с нуля» https://tjournal.ru/41306-samoe-ponyatnoe-obyasnenie-principa-raboti-blokcheina


  1. noksel
    03.03.2017 18:54

    Вероятно, вы задаетесь вопросом, как получить доказательства механических повреждений. Здесь в дело вступает «интернет вещей» (IoT). Для взаимодействия с реальным миром блокчейну необходимы датчики и приводы. Блокчейн революция невозможна без IoT революции.

    Я конечно за IoT и матрицу всеми руками, но не кажется что на каждый стакан датчик неповесишь? Мне кажется плохой пример.


  1. volk0ff
    03.03.2017 19:21

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


  1. Greendq
    03.03.2017 19:30

    Автор начал про блокчейн и скатился до криптовалют.

    Ну и «Таким образом, блокчейн сам генерирует свои собственные деньги.» — неверное утверждение. Это в реализации криптовалют так. Сам по себе БЧ не обязан использовать криптовалюту вообще.


    1. reinvent
      03.03.2017 20:04

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


      1. Greendq
        03.03.2017 21:03

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


        1. reinvent
          03.03.2017 21:30

          Как раз хотелось бы понять, как эти попутные задачи решаются. Потому что кроме «создайте private blockchain» других решений не видел. А это уже суррогат блокчейна. Сложность (и поэтому безопасность) ключа обеспечивается конкуренцией майнеров, которой не будет в приватной сети. А «внешние» майнеры не работают без вознаграждения, которое должно формироваться понятным образом.


          1. Greendq
            04.03.2017 00:15

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


          1. VolCh
            04.03.2017 13:30

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


            1. reinvent
              04.03.2017 16:14

              Тогда транзакции всех участвующих банков будут лепиться в одну цепочку. Это выглядит довольно революционно


              1. DrPass
                04.03.2017 16:34

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


                1. reinvent
                  04.03.2017 16:43

                  Здесь интересное обсуждение https://habrahabr.ru/company/alfa/blog/323070/#first_unread
                  Не имеет значения, для чего использовать. Важно, что перенесено в децентрализованный блокчейн и как это реализовано.


                  1. DrPass
                    04.03.2017 20:02

                    Да я видел эту статью и обсуждение. Там как раз пример показательный с обеих сторон. С одной стороны, да, у них получилось использовать блокчейн для учёта аккредитивов. С другой стороны, они даже сами обратили внимание на главный вопрос: «Но есть проблема — найти бизнес-кейс для того, чтобы применить блокчейн и не притягивать за уши.»
                    И так на него и не ответили. В том кейсе, который они реализовали, блокчейн используется «for fun». Я это пишу абсолютно объективно, сделка с аккредитивом — это бизнес-процесс с центральным контролёром, и ему в принципе не нужно ничего из возможностей блокчейна. Т.е. у ребят был карт-бланш на выбор технологии автоматизации, вот они и попробовали новинку.

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

                    Я с вами не соглашусь. У любой технологии играет роль лишь её практическая полезность, а не то, что лежит «под капотом». Если брать, например, платежные системы, то пользователь предпочтёт ту, в которой меньше телодвижений для регистрации и осуществления платежей, а не ту, которая технологически более совершенна (а особенности внутреннего устройства вообще напрочь отсутствуют в качестве рассматриваемых характеристик у 99% пользователей).


                    1. reinvent
                      04.03.2017 20:34

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


                      1. DmitrySokolov
                        04.03.2017 21:22

                        Блокчейн нужен банкам для межбанковских расчетов. Потому что все узлы будут равны по функционалу, правам и пр. Как следствие, подключение к сети БЧ будет дешевыми. Чтобы заблокировать узел надо будет контролировать 50% + 1 узлов (в противоположность тому, что сейчас отключить банк от Свифт, Виза и т.п. можно по указу одной большой страны). Плюс много других плюшек являющихся следствием открытости и неизменности данных БЧ.


                        1. DrPass
                          05.03.2017 00:57

                          Блокчейн нужен банкам для межбанковских расчетов. Потому что все узлы будут равны по функционалу, правам и пр. Как следствие, подключение к сети БЧ будет дешевыми.

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


                          1. DmitrySokolov
                            05.03.2017 02:34

                            Откуда мошеннические транзакции в приватной, управляемой и контролируемой сети? (Это так, к слову :)


                            Контролируемый — означает (ключевые свойства),
                            1) что доступна полная и верифицируемая информация о контролируемом объекте (БЧ тут подходит на 100%),
                            2) что при определенном воздействии на объект, от него приходит ожидаемый отклик (БЧ подходит на 99%, из-за некоторых маловероятных событий).


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


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


                            Про арбитра — не понял, зачем он, когда система формализована на 100%. Но это, в принципе, возможно. Надо чтобы решение поддержали 50% + 1 участник (пример из жизни — The DAO fork), это, опять же, лучше, чем какой-то один арбитр.


                            1. DrPass
                              05.03.2017 03:03

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

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

                              А что значит «формализована на 100%»? Формализовать можно только протокол. Арбитр нужен для решения споров. Транзакции же производятся не ради самих себя, все банковские транзакции подразумевают какое-то их отражение в денежном или там материальном выражении. Которое в блокчейн не поместится. Соответственно, если транзакция произошла, а, например, передача её материального эквивалента не состоялась/отменилась/состоялась частично, возникает тот самый спор. Кто его будет разрешать? Ладно, с аккредитивом вопросов нет, тут всё само собой происходит. А если это обычная сделка купли-продажи?
                              Надо чтобы решение поддержали 50% + 1 участник

                              Да, но кто и зачем это будет делать? Банковская система — это живой организм, в котором между десятками тысяч участников ежедневно происходят сотни миллионов транзакций. Кто и как в этом хозяйстве вообще будет заинтересован участвовать в разрешении споров, каждый из которых касается каких-то двух мало кому известных участников?


                              1. VolCh
                                06.03.2017 08:18
                                +1

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

                                Блокчейн по сути — неизменяемая очередь сообщений, стороны могут договориться об использовании этих сообщений в качестве юридически значимых, в частности для фиксации взятия обязательства по передаче материальных объектов в случаях, когда законом допустимо использование аналогов собственноручно подписанных сообщений и достаточно простой письменной формы. Если обязательство взяли, но не не исполнили, то алгоритм действий такой же как если у вас на руках есть бумажное обязательство контрагента с его собственноручной подписью. Грубо, идёте в суд, а он, если что, даёт поручение службе приставов.


                                1. DrPass
                                  06.03.2017 12:38

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


                                  1. VolCh
                                    06.03.2017 13:46

                                    Два основных варианта такой схемы:


                                    • доверительная связь каждого с каждым, у каждого свой корневой сертификат, по сути каждая связь друг от друга независима, может быть реализована как угодно, главное согласовать схему обмена
                                    • доверительная связь каждого с централизованным узлом, который удостоверяет участников и их возможности (грубо — баланс коррсчета) своим сертификатом, хранит мастер-реплику данных, возможно, даже не давая участникам доступа к ней в целом

                                    Блокчейн же схема предполагает удостоверение участников и их возможностей самостоятельно при наличии общей инфраструктуры обмена


                                    1. DrPass
                                      07.03.2017 13:29

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


                                      1. VolCh
                                        07.03.2017 13:30

                                        По опыту работы в банковской и около неё теме, банки не любят регуляторов, монополистов в межбанковских связей и т. п.


                                        1. DrPass
                                          07.03.2017 14:38

                                          Скажем так, банки не любят платить комиссии. А без регуляторов оно все равно не обходится.


                                          1. VolCh
                                            07.03.2017 14:41

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


                                            1. DrPass
                                              08.03.2017 14:49

                                              Да, вы правы. Но блокчейн-то это никак не решит. Все равно будет какая-то межбанковская структура, которая правила вырабатывает и согласовывает с другими участниками. И все равно её придётся кормить. И опять же таки, вопросы подключения участников. Вариант с саморегистрацией «здрасьте, я КредитИнвестПромБанк, примите платежик» участников банковской сети также не устроит. Они захотят, чтобы и аудит новые участники проходили, и стандарты соблюдали. Ну т.е. как раз тот редкий случай предметной области, в которой практически все достоинства блокчейна превращаются в его недостатки. Может, конечно, я чего-то и не замечаю, но я уверен, что банковская среда — это как раз полный антогонист идеологии блокчейна и конкурент, а не место, где он когда-нибудь будет внедрён, по крайней мере, кроме единичных случаев на уровне эксперимента.


                                              1. VolCh
                                                10.03.2017 09:59

                                                Не могу решать за руководства банков, но исторически банковская сфера развивалась именно как самоорганизующаяся распределенная P2P сеть со сложной системой корреспондентских отношений. И банки в целом противились вмешательству госрегуляторов в их деятельность, особенно в виде центральных банков, обязывающих проводить все межбанковские переводы через корсчета у себя. Не вижу особых причин зачем банкам нужны эти супербанки, почему бы каждому банку не желать стать частью распределенного супербанка. Кстати, в США государство не смогло пробить идею центрального банка и роль нашего центрального банка у них по сути выполняет распределенная P2P-сеть.


  1. alz72
    03.03.2017 21:13

    Спасибо — отличная статья, очень интересно !


  1. torrie
    03.03.2017 21:31

    Отличие только в том, что вам не нужно создавать бэкэнд

    Ну, это, насколько понимаю, не совсем так. Серверную часть, хоть и «пирную» писать придётся, иначе как это всё будет работать?

    Storj.io

    То есть, я сдаю место на компе и обязан регулярно держать его включенным, верно?

    По блокчейну есть один вопрос, ответ на который я так и не смог найти. Также, как и storj.io блокчейн требует не полного P2P, а наличия узлов — постоянно включенных серверов, что делает его, безусловно, децентрализованным, но всё же не совсем P2P, так? И распространение подтвержденного блока идёт какое-то время, это всё записывается и где-то хранится(явно не на компах всех пользователей, иначе концов было бы не найти для некоторых операций по причине утраты и тд). Выходит, что это тоже самое что и серверы гугла/cdn/amazon/etc — их много, они связаны. Ну не пойму я причем тут P2P, простите.

    а также с чего начать, если вы хотите создать свой проект

    Я понимаю, что P2P с нуля писать не очень весело, но всё же мне не очень понятно как запустить свой, например, блокчейн проект для подписи документов юрлицами. Пытаюсь давно вникнуть в суть, но такое ощущение, что все «кто в теме»(хипстота блокчейная) юзают имеющиеся Эрис/Эфир/etc не особо задумываясь а как там всё внутри.

    Допустим, делаю я проект на их базе. Данные должны где-то храниться => мне нужен сервер. А раз мне нужен сервер, то не проще ли мне на нём всё и хранить: как Вася дал Пете 15 рублей, а потом тут же Петя дал 10 рублей Тане. Чтобы никто не усомнился, что я транзакцию выкинул, я записываю в каждую последующую часть от предыдущих(аля хэш). Это блокчейн? Нет. Проблему решает? Да. В чем тогда прикол блокчейна-то?!


    1. torrie
      03.03.2017 21:39

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


    1. VolCh
      04.03.2017 15:21

      блокчейн требует не полного P2P, а наличия узлов — постоянно включенных серверов, что делает его, безусловно, децентрализованным, но всё же не совсем P2P, так? И распространение подтвержденного блока идёт какое-то время, это всё записывается и где-то хранится(явно не на компах всех пользователей, иначе концов было бы не найти для некоторых операций по причине утраты и тд). Выходит, что это тоже самое что и серверы гугла/cdn/amazon/etc — их много, они связаны. Ну не пойму я причем тут P2P, простите.

      В общем и в целом, блокчейн требует полного P2P и полные копии данных хранятся на компах пользователей, синхронизируясь с остальными по расписанию или после офлайна (100% онлайна не требуется). Запустите нормальный клиент и ваш комп станет полноценной нодой сети, отправляя ваши транзакции от своего имени. Можете даже майнинг запустить и если вы очень везучий, то можете заработать что-то порядка 5000 долларов каждые 10 минут :) Но обычным пользователям такой юзкейс не особо нравится и потому они используют очень урезанные клиенты, которые обращаются к нодам как к серверам с запросами типа "выдай баланс/список транзакций для такого-то идентификатора" и "переведи с такого-то идентификатора столько-то на такой-то". Есть ещё клиенты, объединяющие вычислительные мощности своих хостов в пулы, выступающие как одна нода, собственно такие пулы и являются основными нодами.


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


  1. ftdgoodluck
    04.03.2017 14:32

    Я был бы признателен, если бы вы (как переводчик) название статьи добавили «на примере bitcoin», потому что заявления справедливы только для биткоина и (возможно) каких-то его форков:

    • Члены сети не обязательно должны быть анонимными
    • Алгоритм консенсуса не обязательно должен быть proof-of-work – как минимум, есть еще proof-of-stake или вообще BFT
    • Блокчейн не обязан иметь свою криптовалюту


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

    P.S. График BTC to USD, заканчивающийся в начале 2016 года, даже комментировать не хочется


  1. akubintsev
    06.03.2017 22:41

    Не очень понятно, зачем мне, как веб-разработчику, блокчейн? Это как-то увеличит производительность приложения? Нет. Упростит тесты? Нет.
    Мне биткоин не интересен в принципе. Много шума вокруг ничем не обеспеченной фикции.


    1. VolCh
      07.03.2017 07:39

      Готовая (условно) платформа для избежания стуаций


      • Только что на этом месте стояла моя ладья! — закричал одноглазый,
        осмотревшись. — А теперь ее уже нет.
      • Нет, значит, и не было! — грубовато сказал Остап.
      • Как же не было? Я ясно помню!
      • Конечно, не было.
      • Куда же она девалась? Вы ее выиграли?
      • Выиграл.
      • Когда? На каком ходу?
      • Что вы мне морочите голову с вашей ладьей? Если сдаетесь, то так и
        говорите!
      • Позвольте, товарищ, у меня все ходы записаны.
      • Контора пишет! — сказал Остап.


      1. akubintsev
        07.03.2017 18:33

        То есть это распределенный сервис логгирования? Пока на ум приходит что-то связанное с WebRTC


        1. VolCh
          07.03.2017 18:46

          По сути да. Причём гарантируется (в рамках консенсуса и криптографии) неизменяемость и соблюдение неких ограничений на включение в лог.