Блокчейн-технологии: принципы и идеология

Классическая архитектура большинства информационных систем (модель “клиент-сервер”) предполагает наличие центрального участника, ведущего сбор, обработку и передачу данных другим участникам.

блокчейн-технологии alter idea

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

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

Поэтому актуальность создания децентрализованных, то есть одноранговых (peer-to-peer или пиринговых) систем всегда была высока. Сложность практической реализации этой задачи обусловлена тем, что с ростом числа участников стремительно увеличивается объём информационного трафика, и соответственно, требуется рост пропускной способности каналов связи между всеми узлами, а не только одним центральным.

Если в иерархической системе существует n узлов помимо центрального, то число каналов связи также равняется n.
В пиринговой системе, где каждый узел связан со всеми остальными узлами, число каналов связи составляет n * (n – 1).

Но по мере удешевления стоимости и увеличения скорости передачи информации распространённость и популярность подобных систем стала динамично расти, примером чему являются торренты.

Одной из технологий работы на основе пиринговых сетей стал блокчейн (“blockchain”), то есть децентрализованное хранение данных, помещённых в связанные между собой блоки.

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

Предположим, что группа лиц решила вести реестр операций: кто кому когда и что одолжил, за что заплатил и т.п.

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

В блокчейн-модели у каждого члена системы есть набор листов (блоков, “block”), на которых в хронологическом порядке ведётся запись сделок. Чтобы зарегистрировать операцию, её участники публичноо ней заявляют, после чего все услышавшие записывают полученные сведения каждый в свой листок.

Листы нумеруются; в начале каждого листа содержится информация о последней сделке предыдущего листа (тем самым синхронизируется момент начала ведения нового документа). Тем самым листы связываются в цепочку (“chain”). Если у кого-то повредились или потерялись его листы либо возникли сомнения в достоверности информации, то он имеет возможность сравнить свои листы с записями других субъектов или скопировать их листы. Чем больше участников системы (то есть экземпляров одного листа), тем выше надёжность системы. В подобной системе становится вообще не нужен центральный контрагент.

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

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

Решением стала цифровая подпись – криптографическая технология проверки подлинности информации и подтверждения её авторства. Основной принцип данной технологии – возможность шифрования и корректной расшифровки информации с помощью закрытого и открытого ключей соответственно.

Например, отправитель шифрует исходную информацию – число 500 – с помощью закрытого ключа вида «разделить на 100 и прибавить 1», получая число 6.

Далее отправитель посылает зашифрованную информацию (число 6) и открытый ключ вида «умножить на 50 и прибавить 200». Получатель, преобразуя зашифрованную информацию с помощью открытого ключа, получает искомую информацию в виде числа 500.

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

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

Так, хеш буквы русского алфавита «ф», созданный на основе алгоритма MD5, приобретает вид 2bfe4581ac6cf8ce4c3e7ee8f07f518b. Афоризм «Всё своё ношу с собой» имеет хеш db2ead70b66b36c3cf40041991fe536b.

Тот же афоризм, в котором буквы «ё» заменены буквами «е», имеет хеш d77be1ddc1fb87ef518ae6252c7e74b3.

Операция, обратная хешированию (то есть восстановление из хеша исходной информации), невозможна.

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

Наконец, изменение хоть одного символа в исходной информации полностью меняет значение хеша.

Цифровая подпись на основе хеширования работает следующим образом:

1. отправитель хеширует сообщение, получая хеш h; 2. отправитель шифрует h закрытым ключом k, получая подпись s; 3. отправитель направляет адресату сообщение, подпись s и открытый ключ p; 4. получатель хеширует сообщение, получая хеш h (как и отправитель в пункте 1); 5. с помощью открытого ключа pполучатель дешифрует подпись s, получая значение h1; 6. если h=h1, то подпись, а значит и сообщение, считаются подлинными.

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

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

Цель создания блоков:

  • присвоение информации постоянного адреса;
  • удобство децентрализованного хранения информации;
  • защита истинной информации от несанкцонированных изменений.

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

Операции в системе представляются в следующем виде: отправитель_сумма_получатель (например, запись «А перевёл Б 100 денежных единиц» выглядит как А_100_Б).

Все операции хешируются. Хеш запись вида «А_100_Б» с использованием упоминавшегося выше алгоритма md5 выглядит как e5b1586b09361eed50602f0cc9d56e142

Допустим, что в системе совершены первые 2 операции с соответствующими хешами.

1. А перевёл Б 100 денежных единиц (А_100_Б). Хеш первой операции (хеш1о): e5b1586b09361eed50602f0cc9d56e14.
2. В перевёл Г 50 денежных единиц (В_50_Г). Хеш2о: e589a092725d01654851ad264d25dc81.

Данные об этих сделках: их содержание и хеши – помещены в блок 1, имеющий структуру хеш1о_хеш2о (e5b1586b09361eed50602f0cc9d56e14_e589a092725d01654851ad264d25dc81).

Его собственный хеш (хеш1б), образованый путём хеширования вышеприведённой структуры (то есть совокупности хешей содержащихся в нём транзакций), выглядит как030c71a237f8d516c724c6d7ee4331f9.

Следующие две операции образуют блок 2:

3. Б_25_ В. Хеш3о: 3859fa215f9f23c60fe14c0743ad0977.
4. Г_20_Д. Хеш4о: 219912c9571da0b47aa2f0c6ff66a2be.

Структура блока 2 выглядит следующим образом: хеш1б_хеш3о_хеш4о (030c71a237f8d516c724c6d7ee4331f9_3859fa215f9f23c60fe14c0743ad0977_219912c9571da0b47aa2f0c6ff66a2be).

Хеш структуры блока 2: 734a3627860c619cfb829236f22e2823.

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

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

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

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

Сформированные блоки рассылаются по участникам блокчейн-системы. Если участник В заявит, что в рамках операции 2 он перевёл Г не 50, а 20 единиц, то большинством (не менее чем 50%+1) голосов участников системы его заявление должно быть и будет опровергнуто. Потому что если бы произошла подобная операция (В_20_Г), то её хеш был бы 58cee00fc833e8284d7f8b205849eb71, а не e589a092725d01654851ad264d25dc81. И тогда хеш блока 1 также изменился бы на 3c5361aca146a2c3afa10d5ebb8b9e1c. По цепочке (“chain”) начали бы меняться хеши всех последующих блоков.

Криптовалюта является усовершенствованным и усложнённым видом блокчейна.

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

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

При совершении транзакции система:

  • 1. даёт ссылку на предыдущую транзакцию отправителя;
    2. прикрепляет подпись и открытый ключ отправителя;
    3. фиксирует адрес, куда должны быть перечислены средства (обладатель одного кошелька может создавать множество адресов, чем достигается высокая анонимность пользователей, пока их средства номинированы и обращаются в виде криптовалют);
    4. устанавливает сумму сделки.

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

После проверки заявки на транзакцию система помещает её в очередь на поиск блока.

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

Для этого в структуре блока предусмотрен нонс (“nonce”) – число, за счёт перебора значений которого достигается хеш, удовлетворяющий требованиям системы.

За счёт этого структура блока выглядит так: хеш предыдущего блока_хеш первой транзакции текущего блока_…_хеш последней тразакции текущего блока_нонс.

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

Процесс нахождения значений нонсов для формирования хеша блока (и тем самым, самого блока) уполномоченными узлами системы в общем смысле называется майнингом (“mining”).

Более узкая трактовка майнинга – передача авторства блока тому узлу, который первым сгенерировал нонс, при этом сложность блока в конкретный момент времени постоянна для всех (так называемый принцип “proof-of-work”). Альтернативой майнингу является форжинг (“forging”), при котором для каждого узла устанавливается свой уровень сложности, обратно пропорциональный объёму криптовалюты на его балансе (принцип “proof-of-stake”).

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

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

Таким образом, блокчейн и криптовалюты созданы на основе технологий электронной (цифровой) подписи и распределённого хранения информации.

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

Источник

Короткий URL: http://alter-idea.info/?p=25372

Добавил: Дата: Окт 6 2017. Рубрика: Идеи и дискурс. Вы можете перейти к обсуждениям записи RSS 2.0. Все комментарии и пинги в настоящее время запрещены.
Loading...
Загрузка...

Комментарии недоступны




Загрузка...








Карта сайта